<?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>185111</bug_id>
          
          <creation_ts>2018-04-28 01:19:19 -0700</creation_ts>
          <short_desc>PSON: Make WebKitTestRunner work with process swap on navigation turned on</short_desc>
          <delta_ts>2018-05-01 21:05:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1418777</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-28 01:19:19 -0700</bug_when>
    <thetext>Add the basic support for running layout tests with process-swap-on-navigation turned on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418778</commentid>
    <comment_count>1</comment_count>
      <attachid>339062</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-28 01:46:38 -0700</bug_when>
    <thetext>Created attachment 339062
Adds the basic support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418779</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-28 01:47:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/39815667&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418795</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-04-28 09:12:54 -0700</bug_when>
    <thetext>What is the performance impact of this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418914</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-29 11:40:41 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #3)
&gt; What is the performance impact of this change?

I&apos;m gonna measure that on Monday. I suspect one extra IPC wouldn&apos;t do much but I agree that&apos;s one concerning aspect of this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418915</commentid>
    <comment_count>5</comment_count>
      <attachid>339062</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-29 11:41:09 -0700</bug_when>
    <thetext>Comment on attachment 339062
Adds the basic support

Gotta rebase to trunk :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419070</commentid>
    <comment_count>6</comment_count>
      <attachid>339135</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-30 12:15:54 -0700</bug_when>
    <thetext>Created attachment 339135
Updated for ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419100</commentid>
    <comment_count>7</comment_count>
      <attachid>339143</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-30 13:36:54 -0700</bug_when>
    <thetext>Created attachment 339143
Added forgotten WhatToDump.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419354</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-01 11:00:07 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #4)
&gt; (In reply to Alexey Proskuryakov from comment #3)
&gt; &gt; What is the performance impact of this change?
&gt; 
&gt; I&apos;m gonna measure that on Monday. I suspect one extra IPC wouldn&apos;t do much
&gt; but I agree that&apos;s one concerning aspect of this change.

Appears to be ~1% increase in debug build, which is probably negligible.
Without pach:
Mon Apr 30 19:19:03 PDT 2018
Mon Apr 30 21:23:21 PDT 2018
7458000

With patch:
Mon Apr 30 21:23:57 PDT 2018
Mon Apr 30 23:29:30 PDT 2018
7533000
1% increase

Gonna measure release build next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419517</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-01 19:25:29 -0700</bug_when>
    <thetext>Without patch:
Tue May  1 12:44:48 PDT 2018
Tue May  1 14:01:22 PDT 2018
4594000

Tue May  1 15:01:39 PDT 2018
Tue May  1 16:18:45 PDT 2018
4626000

~0.6% increase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419523</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-01 20:02:58 -0700</bug_when>
    <thetext>Ping reviewers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419540</commentid>
    <comment_count>11</comment_count>
      <attachid>339143</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-01 21:05:46 -0700</bug_when>
    <thetext>Comment on attachment 339143
Added forgotten WhatToDump.h

Clearing flags on attachment: 339143

Committed r231222: &lt;https://trac.webkit.org/changeset/231222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419541</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-01 21:05:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339062</attachid>
            <date>2018-04-28 01:46:38 -0700</date>
            <delta_ts>2018-04-30 12:15:53 -0700</delta_ts>
            <desc>Adds the basic support</desc>
            <filename>bug-185111-20180428014637.patch</filename>
            <type>text/plain</type>
            <size>32280</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzMTEzMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDcwIEBACisyMDE4LTA0LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFBTT046IE1ha2UgV2ViS2l0VGVzdFJ1bm5lciB3b3JrIHdpdGggcHJvY2VzcyBz
d2FwIG9uIG5hdmlnYXRpb24gdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODUxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIGJhc2ljIHN1cHBvcnQgZm9yIHJ1bm5pbmcgbGF5
b3V0IHRlc3RzIHdpdGggcHJvY2Vzcy1zd2FwLW9uLW5hdmlnYXRpb24gdHVybmVkIG9uLgorCisg
ICAgICAgIEZpcnN0LCBtb3ZlIG1fd2hhdFRvRHVtcCwgbV9kdW1wUGl4ZWxzLCBtX3dhaXRUb0R1
bXAsIGFuZCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgZnJvbSBXZWJDb250ZW50IHByb2Nlc3MK
KyAgICAgICAgdG8gVUkgcHJvY2VzcyBzbyB0aGF0IGNhbGxzIHRvIHdhaXRVbnRpbERvbmUsIGR1
bXBBc1RleHQsIGV0Yy4uLiBwZXJzaXN0IGFjcm9zcyBwcm9jZXNzIHN3YXBzLgorCisgICAgICAg
IEluIGFkZGl0aW9uLCBpbml0aWFsaXplIHRoZSBpbmplY3RlZCBidW5kbGUgaW5zaWRlIGEgbmV3
IFdlYkNvbnRlbnQgcHJvY2VzcyB3aGVuIHRoZSBmaXJzdCBwYWdlIGlzIGNyZWF0ZWQuCisgICAg
ICAgIFRoaXMgaW5zdGFudGlhdGVzIG9iamVjdHMgc3VjaCBhcyBUZXN0UnVubmVyLCBHQ0NvbnRy
b2xsZXIsIGV0Yy4uLiBpbiB0aGUgbmV3IHByb2Nlc3MuIFRoZSBpbml0aWFsaXphdGlvbgorICAg
ICAgICBjYW4ndCBiZSBkb25lIGluIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcgYmVjYXVz
ZSBzb21lIHN0ZXBzIGluIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplIHJlcXVpcmUKKyAgICAg
ICAgdGhlIGN1cnJlbnQgUGFnZUdyb3VwIGFuZCBQYWdlIG9iamVjdHMuIFdlIGF2b2lkIGNsZWFy
aW5nIGRhdGFiYXNlcyBhbmQgYXBwIGNhY2hlIGluIHRoaXMgY2FzZS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZSk6IFNlbmQgIkluaXRpYWxpemF0
aW9uIiBtZXNzYWdlIHRvIFVJIHByb2Nlc3MuIFRoaXMgbWVzc2FnZSByZXR1cm5zCisgICAgICAg
IGFsbCB0aGUgZGljdGlvbmFyeSB2YWx1ZXMgdXN1YWxseSBwcmVzZW50IGluICJCZWdpblRlc3Qi
IG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGFzIHdlbGwgYXMgIlJlc3VtZVRlc3RpbmciCisgICAg
ICAgIGJvb2xlYW4gd2hpY2ggaXMgc2V0IHdoZW4gdGhpcyBwcm9jZXNzIHdhcyBjcmVhdGVkIGFz
IGEgcmVzdWx0IG9mIGEgcHJvY2VzcyBzd2FwIG9uIG5hdmdhdGlvbi4gSW52b2tlCisgICAgICAg
IGJlZ2luVGVzdGluZyB3aXRoIEJlZ2luZ1Rlc3RpbmdNb2RlOjpSZXN1bWUgd2hlbiB0aGlzIGJv
b2xlYW4gaXMgc2V0LgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2VUb1BhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5n
KTogRG9uJ3QgY2xlYXIgZGF0YWJhc2UsIGFwcCBjYWNoZSwgZXRjLi4uIHdoZW4gaW5pdGlhbGl6
aW5nIGFuIGluamVjdGVkCisgICAgICAgIGJ1bmRsZSBhZnRlciBhIHByb2Nlc3Mgc3dhcCBvbiBu
YXZpZ2F0aW9uLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6ZHVtcCk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZnJhbWVEaWRDaGFu
Z2VMb2NhdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZER1bXBQaXhlbHMgY29uc3QpOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0RHVtcFBpeGVscyk6IEFkZGVkLgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpkdW1wQXNUZXh0KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6d2hhdFRvRHVtcCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
ZXRXaGF0VG9EdW1wKTogQWRkZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OndhaXRVbnRp
bERvbmUpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRXYWl0VW50aWxEb25lKTogQWRk
ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZFdhaXRVbnRpbERvbmUpOiBBZGRl
ZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmZvcmNlSW1tZWRpYXRlQ29tcGxldGlvbik6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OnNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MpOiBBZGRlZC4KKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyk6IEFkZGVk
LgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRBdWRpb1Jlc3VsdCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OmR1bXBDaGlsZEZyYW1lc0FzVGV4dCk6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKTogTW92ZWQgdG8gY3BwLgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjp3aGF0VG9EdW1wIGNvbnN0KTogTW92ZWQgdG8gY3BwLgorICAg
ICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaG91bGREdW1wTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaG91bGREdW1wUGl4ZWxzIGNvbnN0
KTogTW92ZWQgdG8gY3BwLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaG91bGREdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzIGNvbnN0KTogTW92ZWQgdG8gY3BwLgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjp3YWl0VG9EdW1wIGNvbnN0KTogUmVuYW1lZCB0byBzaG91bGRXYWl0VW50aWxEb25l
IGFuZCBtb3ZlZCB0byBjcHAuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbik6
IEluaXRpYWxpemUgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzIGhlcmUuCisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Y3JlYXRlVGVzdFNldHRpbmdzRGlj
dGlvbmFyeSk6IEV4dHJhY3RlZCBmcm9tIGludm9rZSgpLgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6aW52b2tlKTogU2V0cyBtX3N0YXJ0ZWRUZXN0aW5nIHRvIHRydWUgaW1tZWRpYXRl
bHkgYWZ0ZSBzZW5kaW5nICJCZWdpblRlc3QiIG1lc3NhZ2UuCisgICAgICAgIG1fc3RhcnRlZFRl
c3RpbmcgaXMgbGF0ZXIgdXNlZCBpbiBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlIHRvIGRldGVjdCB3aGV0aGVyIGEgZ2l2ZW4KKyAgICAgICAgIkluaXRpYWxp
emF0aW9uIiBtZXNzYWdlIGlzIHNlbnQgZnJvbSBhIHJlZ3VsYXIgV2ViQ29udGVudCBwcm9jZXNz
IChtX3N0YXJ0ZWRUZXN0aW5nIGlzIGZhbHNlKSBvciB0aGUgb25lCisgICAgICAgIHN0YXJ0ZWQg
YXMgYSByZXN1bHQgb2YgYSBwcm9jZXNzIHN3YXAgb24gbmF2aWdhdGlvbiAobV9zdGFydGVkVGVz
dGluZyBpcyB0cnVlKS4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBBZGRlZCBhIGJ1bmNoIG9mIG5l
dyBtZXNzZ2FlcyB0bworICAgICAgICBzdXBwb3J0IGluaXRpYWxpemluZyB0aGUgaW5qZWN0ZWQg
YnVuZGxlIGluIGEgcHJvY2VzcyBzd2FwcGVkIGFmdGVyIG5hdmlnYXRpb24gYW5kIHNldC9nZXQg
bWVzc2FnZXMgZm9yCisgICAgICAgIHRoZSBzdGF0ZXMgd2hpY2ggbXVzdCBwZXJzaXN0IGFjcm9z
cyBwcm9jZXNzIHN3YXBzIHdpdGhpbiBhIHRlc3QuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVz
dFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTA0LTI3ICBTdGVwaGFu
IFN6YWJvICA8c3RlcGhhbi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFN1
cHBvcnQgLS1uby1jb3B5IGZvciBqc2MgdGVzdHMgaW4gd2luY2Fpcm8gdGVzdHMsIGFkZCBjb3B5
aW5nIG9mIGRsbHMgZm9yIGNvcHkgY2FzZQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAJKHJldmlzaW9uIDIzMTEyMikKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw5IEBA
IFRlc3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbihXS1VSTFJlZiAKICAgICBXS1N0cmluZ0dl
dFVURjhDU3RyaW5nKHVybFN0cmluZy5nZXQoKSwgdXJsVmVjdG9yLmRhdGEoKSwgc3RyaW5nTGVu
Z3RoICsgMSk7CiAKICAgICBtX3VybFN0cmluZyA9IFN0cmluZyh1cmxWZWN0b3IuZGF0YSgpLCBz
dHJpbmdMZW5ndGgpOworCisgICAgLy8gRklYTUU6IEF2b2lkIG11dGF0aW5nIHRoZSBzZXR0aW5n
IHZpYSBhIHRlc3QgZGlyZWN0b3J5IGxpa2UgdGhpcy4KKyAgICBtX2R1bXBGcmFtZUxvYWRDYWxs
YmFja3MgPSB1cmxDb250YWlucygibG9hZGluZy8iKTsKIH0KIAogVGVzdEludm9jYXRpb246On5U
ZXN0SW52b2NhdGlvbigpCkBAIC0xMTIsMzcgKzExNSwxNSBAQCBkb3VibGUgVGVzdEludm9jYXRp
b246OnNob3J0VGltZW91dCgpIGNvCiAgICAgcmV0dXJuIG1fdGltZW91dCAvIDEwMDAuIC8gNDsK
IH0KIAotYm9vbCBUZXN0SW52b2NhdGlvbjo6c2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVzKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gdXJsQ29udGFpbnMoImxvYWRpbmcvIik7Ci19Ci0KIGJvb2wg
VGVzdEludm9jYXRpb246OnNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3MoKSBjb25zdAog
ewogICAgIHJldHVybiB1cmxDb250YWlucygiZ2xvYmFsaGlzdG9yeS8iKTsKIH0KIAotdm9pZCBU
ZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKK1dLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlS
ZWY+IFRlc3RJbnZvY2F0aW9uOjpjcmVhdGVUZXN0U2V0dGluZ3NEaWN0aW9uYXJ5KCkKIHsKLSAg
ICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29uZmlndXJlVmlld0ZvclRlc3QoKnRoaXMp
OwotCi0gICAgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBmYWxzZSk7Ci0KLSAgICBtX3RleHRPdXRwdXQu
Y2xlYXIoKTsKLQotICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTaG91bGRMb2dI
aXN0b3J5Q2xpZW50Q2FsbGJhY2tzKHNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3MoKSk7
Ci0KLSAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29udGV4
dEdldENvb2tpZU1hbmFnZXIoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSks
IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbik7Ci0K
LSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNsZWFyIG91dCB2aXNpdGVkIGxpbmtzIGhlcmUuCi0K
LSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCZWdpblRlc3QiKSk7CiAgICAgV0tSZXRhaW5QdHI8
V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gYmVnaW5UZXN0TWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdL
TXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gZHVtcEZyYW1lTG9hZERlbGVnYXRlc0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkR1bXBGcmFtZUxvYWREZWxlZ2F0ZXMiKSk7Ci0gICAgV0tSZXRhaW5QdHI8
V0tCb29sZWFuUmVmPiBkdW1wRnJhbWVMb2FkRGVsZWdhdGVzVmFsdWUgPSBhZG9wdFdLKFdLQm9v
bGVhbkNyZWF0ZShzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMoKSkpOwotICAgIFdLRGljdGlv
bmFyeVNldEl0ZW0oYmVnaW5UZXN0TWVzc2FnZUJvZHkuZ2V0KCksIGR1bXBGcmFtZUxvYWREZWxl
Z2F0ZXNLZXkuZ2V0KCksIGR1bXBGcmFtZUxvYWREZWxlZ2F0ZXNWYWx1ZS5nZXQoKSk7Ci0KICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlRmxleGlibGVWaWV3cG9ydEtleSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUZsZXhpYmxlVmlld3BvcnQiKSk7
CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiB1c2VGbGV4aWJsZVZpZXdwb3J0VmFsdWUg
PSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShvcHRpb25zKCkudXNlRmxleGlibGVWaWV3cG9ydCkp
OwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oYmVnaW5UZXN0TWVzc2FnZUJvZHkuZ2V0KCksIHVz
ZUZsZXhpYmxlVmlld3BvcnRLZXkuZ2V0KCksIHVzZUZsZXhpYmxlVmlld3BvcnRWYWx1ZS5nZXQo
KSk7CkBAIC0xNjIsOSArMTQzLDMwIEBAIHZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCiAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycktleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkR1bXBKU0NvbnNvbGVMb2dJ
blN0ZEVyciIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IGR1bXBKU0NvbnNvbGVM
b2dJblN0ZEVyclZhbHVlID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUobV9kdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VC
b2R5LmdldCgpLCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnJLZXkuZ2V0KCksIGR1bXBKU0NvbnNv
bGVMb2dJblN0ZEVyclZhbHVlLmdldCgpKTsKKyAgICAKKyAgICByZXR1cm4gYmVnaW5UZXN0TWVz
c2FnZUJvZHk7Cit9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCit7CisgICAgVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbmZpZ3VyZVZpZXdGb3JUZXN0KCp0aGlzKTsKKwor
ICAgIFdLUGFnZVNldEFkZHNWaXNpdGVkTGlua3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
Lm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworCisgICAgbV90ZXh0T3V0cHV0LmNsZWFy
KCk7CisKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTG9nSGlzdG9y
eUNsaWVudENhbGxiYWNrcyhzaG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKCkpOworCisg
ICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0NvbnRleHRHZXRD
b29raWVNYW5hZ2VyKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCkpLCBrV0tI
VFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pOworCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBjbGVhciBvdXQgdmlzaXRlZCBsaW5rcyBoZXJlLgorCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiQmVnaW5UZXN0IikpOworICAgIGF1dG8gYmVnaW5UZXN0TWVz
c2FnZUJvZHkgPSBjcmVhdGVUZXN0U2V0dGluZ3NEaWN0aW9uYXJ5KCk7CiAgICAgV0tQYWdlUG9z
dE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBiZWdpblRlc3RNZXNzYWdlQm9k
eS5nZXQoKSk7CiAKKyAgICBtX3N0YXJ0ZWRUZXN0aW5nID0gdHJ1ZTsKKwogICAgIGJvb2wgc2hv
dWxkT3BlbkV4dGVybmFsVVJMcyA9IGZhbHNlOwogCiAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLnJ1blVudGlsKG1fZ290SW5pdGlhbFJlc3BvbnNlLCBUZXN0Q29udHJvbGxlcjo6bm9U
aW1lb3V0KTsKQEAgLTc2OSw2ICs3NzEsNDYgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VGcgogCiBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJJbml0aWFsaXphdGlvbiIpKSB7Cisg
ICAgICAgIGF1dG8gc2V0dGluZ3MgPSBjcmVhdGVUZXN0U2V0dGluZ3NEaWN0aW9uYXJ5KCk7Cisg
ICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiByZXN1bWVUZXN0aW5nS2V5ID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVzdW1lVGVzdGluZyIpKTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiByZXN1bWVUZXN0aW5nVmFsdWUgPSBhZG9wdFdL
KFdLQm9vbGVhbkNyZWF0ZShtX3N0YXJ0ZWRUZXN0aW5nKSk7CisgICAgICAgIFdLRGljdGlvbmFy
eVNldEl0ZW0oc2V0dGluZ3MuZ2V0KCksIHJlc3VtZVRlc3RpbmdLZXkuZ2V0KCksIHJlc3VtZVRl
c3RpbmdWYWx1ZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBzZXR0aW5nczsKKyAgICB9CisKKyAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldER1bXBQ
aXhlbHMiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdL
Qm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAgbV9kdW1wUGl4ZWxzID0gV0tCb29sZWFuR2V0
VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSkpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJHZXREdW1wUGl4ZWxzIikpCisgICAgICAgIHJldHVybiBXS1JldGFp
blB0cjxXS1R5cGVSZWY+KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZShtX2R1bXBQaXhlbHMpKTsK
KworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0
V2hhdFRvRHVtcCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkg
PT0gV0tVSW50NjRHZXRUeXBlSUQoKSk7CisgICAgICAgIG1fd2hhdFRvRHVtcCA9IHN0YXRpY19j
YXN0PFdoYXRUb0R1bXA+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+
KG1lc3NhZ2VCb2R5KSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRXaGF0VG9EdW1w
IikpCisgICAgICAgIHJldHVybiBXS1JldGFpblB0cjxXS1R5cGVSZWY+KEFkb3B0V0ssIFdLVUlu
dDY0Q3JlYXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3doYXRUb0R1bXApKSk7CisKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFdhaXRVbnRp
bERvbmUiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdL
Qm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAgbV93YWl0VW50aWxEb25lID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFu
UmVmPihtZXNzYWdlQm9keSkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiR2V0V2FpdFVu
dGlsRG9uZSIpKQorICAgICAgICByZXR1cm4gV0tSZXRhaW5QdHI8V0tUeXBlUmVmPihBZG9wdFdL
LCBXS0Jvb2xlYW5DcmVhdGUobV93YWl0VW50aWxEb25lKSk7CisKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldER1bXBGcmFtZUxvYWRDYWxsYmFj
a3MiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9v
bGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tC
b29sZWFuUmVmPihtZXNzYWdlQm9keSkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiR2V0
RHVtcEZyYW1lTG9hZENhbGxiYWNrcyIpKQorICAgICAgICByZXR1cm4gV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPihBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUobV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KSk7CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlNldFdpbmRvd0lzS2V5IikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VC
b2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLQm9vbGVhblJlZiBpc0tl
eVZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCShyZXZpc2lvbiAyMzExMjIpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlRl
c3RPcHRpb25zLmgiCiAjaW5jbHVkZSAiVUlTY3JpcHRDb250ZXh0LmgiCisjaW5jbHVkZSAiV2hh
dFRvRHVtcC5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHN0
cmluZz4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc3LDYgKzc4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAgICAgCiBw
cml2YXRlOgorICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZVRl
c3RTZXR0aW5nc0RpY3Rpb25hcnkoKTsKKwogICAgIHZvaWQgZHVtcFJlc3VsdHMoKTsKICAgICBz
dGF0aWMgdm9pZCBkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4
dFRvU3RkZXJyID0gMCwgYm9vbCBzZWVuRXJyb3IgPSBmYWxzZSk7CiAgICAgZW51bSBjbGFzcyBT
bmFwc2hvdFJlc3VsdFR5cGUgeyBXZWJWaWV3LCBXZWJDb250ZW50cyB9OwpAQCAtOTMsNyArOTYs
NiBAQCBwcml2YXRlOgogICAgIH07CiAgICAgc3RhdGljIHZvaWQgcnVuVUlTaWRlU2NyaXB0QWZ0
ZXJVcGRhdGVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KTsKIAotICAgIGJvb2wg
c2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVzKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRMb2dI
aXN0b3J5Q2xpZW50Q2FsbGJhY2tzKCkgY29uc3Q7CiAKICAgICB2b2lkIHJ1blVJU2lkZVNjcmlw
dChXS1N0cmluZ1JlZiwgdW5zaWduZWQgY2FsbGJhY2tJRCk7CkBAIC0xMTEsMTMgKzExMywxNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgeyBmYWxzZSB9
OwogCiAgICAgLy8gSW52b2NhdGlvbiBzdGF0ZQorICAgIGJvb2wgbV9zdGFydGVkVGVzdGluZyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2dvdEluaXRpYWxSZXNwb25zZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2dvdEZpbmFsTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2dvdFJlcGFpbnQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9lcnJvciB7IGZhbHNlIH07CiAKKyAgICBib29sIG1fd2Fp
dFVudGlsRG9uZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3Mg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9kdW1wUGl4ZWxzIHsgZmFsc2UgfTsKICAgICBib29sIG1f
cGl4ZWxSZXN1bHRJc1BlbmRpbmcgeyBmYWxzZSB9OworICAgIFdoYXRUb0R1bXAgbV93aGF0VG9E
dW1wIHsgV2hhdFRvRHVtcDo6UmVuZGVyVHJlZSB9OwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Rl
eHRPdXRwdXQ7CiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBtX2F1ZGlvUmVzdWx0OwpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIzMTEyMikKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjAsOSArMTIwLDI1IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5k
bGUKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSkKIHsKKyAgICBib29sIGlzTWFpblBhZ2UgPSBtX3BhZ2VzLmlzRW1wdHkoKTsKICAgICBt
X3BhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkQnVuZGxlUGFnZT4ocGFnZSkp
OwogCiAgICAgc2V0VXBJbmplY3RlZEJ1bmRsZUNsaWVudHMocGFnZSk7CisKKyAgICBpZiAoIWlz
TWFpblBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtZXNzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklu
aXRpYWxpemF0aW9uIikpOworICAgIFdLVHlwZVJlZiByZXN1bHQgPSAwOworICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShtX2J1bmRsZSwgbWVzc3NhZ2VOYW1lLmdldCgpLCAwLCAm
cmVzdWx0KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmVzdWx0KSA9PSBXS0RpY3Rpb25hcnlH
ZXRUeXBlSUQoKSk7CisgICAgV0tEaWN0aW9uYXJ5UmVmIGluaXRpYWxpemF0aW9uRGljdGlvbmFy
eSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4ocmVzdWx0KTsKKworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiByZXN1bWVUZXN0aW5nS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJSZXN1bWVUZXN0aW5nIikpOworICAgIFdLVHlwZVJlZiByZXN1bWVU
ZXN0aW5nVmFsdWUgPSBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXRpYWxpemF0aW9uRGlj
dGlvbmFyeSwgcmVzdW1lVGVzdGluZ0tleS5nZXQoKSk7CisgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KHJlc3VtZVRlc3RpbmdWYWx1ZSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgIGlmIChX
S0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJlc3VtZVRlc3RpbmdW
YWx1ZSkpKQorICAgICAgICBiZWdpblRlc3RpbmcoaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5LCBC
ZWdpbmdUZXN0aW5nTW9kZTo6UmVzdW1lKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6d2ls
bERlc3Ryb3lQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQpAQCAtMTk3LDcgKzIxMyw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG8KICAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGFja01lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJCZWdpblRlc3QiKSk7CiAgICAgICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNz
YWdlKHBhZ2UsIGFja01lc3NhZ2VOYW1lLmdldCgpLCBhY2tNZXNzYWdlQm9keS5nZXQoKSk7CiAK
LSAgICAgICAgYmVnaW5UZXN0aW5nKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSk7CisgICAgICAgIGJl
Z2luVGVzdGluZyhtZXNzYWdlQm9keURpY3Rpb25hcnksIEJlZ2luZ1Rlc3RpbmdNb2RlOjpOZXcp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzIsNyArMzQ4LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUbwogICAgIH0KIAogICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiV29ya1F1ZXVlUHJvY2Vzc2VkQ2Fs
bGJhY2siKSkgewotICAgICAgICBpZiAoIXRvcExvYWRpbmdGcmFtZSgpICYmICFtX3Rlc3RSdW5u
ZXItPndhaXRUb0R1bXAoKSkKKyAgICAgICAgaWYgKCF0b3BMb2FkaW5nRnJhbWUoKSAmJiAhbV90
ZXN0UnVubmVyLT5zaG91bGRXYWl0VW50aWxEb25lKCkpCiAgICAgICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6cGFnZSgpLT5kdW1wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNzksNyAr
Mzk1LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZTo6Ym9vbGVhbkZvcktleShXS0RpYwogICAgIHJl
dHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHZhbHVlKSk7
CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZyhXS0RpY3Rpb25hcnlSZWYg
c2V0dGluZ3MpCit2b2lkIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoV0tEaWN0aW9uYXJ5
UmVmIHNldHRpbmdzLCBCZWdpbmdUZXN0aW5nTW9kZSB0ZXN0aW5nTW9kZSkKIHsKICAgICBtX3N0
YXRlID0gVGVzdGluZzsKIApAQCAtNDEzLDcgKzQyOSw2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmJlZ2luVGVzdGluZyhXS0RpY3QKIAogICAgIG1fdGVzdFJ1bm5lci0+c2V0UGx1Z2luc0VuYWJs
ZWQodHJ1ZSk7CiAKLSAgICBtX3Rlc3RSdW5uZXItPnNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxs
YmFja3MoYm9vbGVhbkZvcktleShzZXR0aW5ncywgIkR1bXBGcmFtZUxvYWREZWxlZ2F0ZXMiKSk7
CiAgICAgbV90ZXN0UnVubmVyLT5zZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoZmFsc2UpOwogICAg
IG1fdGVzdFJ1bm5lci0+c2V0WFNTQXVkaXRvckVuYWJsZWQoZmFsc2UpOwogCkBAIC00MzUsNiAr
NDUwLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKFdLRGljdAogCiAgICAg
cGFnZSgpLT5wcmVwYXJlKCk7CiAKKyAgICBpZiAodGVzdGluZ01vZGUgIT0gQmVnaW5nVGVzdGlu
Z01vZGU6Ok5ldykKKyAgICAgICAgcmV0dXJuOworCiAgICAgV0tCdW5kbGVDbGVhckFsbERhdGFi
YXNlcyhtX2J1bmRsZSk7CiAgICAgV0tCdW5kbGVQYWdlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlKHBh
Z2UoKS0+cGFnZSgpKTsKICAgICBXS0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyht
X2J1bmRsZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiAyMzExMjIpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MSw3ICsxNjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKFdLVHlwZVJlZiBpbml0aWFsaXphdGlvblVzZXJEYXRhKTsKICAgICB2b2lkIHJlc2V0
TG9jYWxTZXR0aW5ncygpOwogCi0gICAgdm9pZCBiZWdpblRlc3RpbmcoV0tEaWN0aW9uYXJ5UmVm
IGluaXRpYWxTZXR0aW5ncyk7CisgICAgZW51bSBjbGFzcyBCZWdpbmdUZXN0aW5nTW9kZSB7IE5l
dywgUmVzdW1lIH07CisgICAgdm9pZCBiZWdpblRlc3RpbmcoV0tEaWN0aW9uYXJ5UmVmIGluaXRp
YWxTZXR0aW5ncywgQmVnaW5nVGVzdGluZ01vZGUpOwogCiAgICAgYm9vbCBib29sZWFuRm9yS2V5
KFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsKIApJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcAkocmV2aXNpb24gMjMxMTIyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OTAsMjIgKzg5MCwyMiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCgpCiAgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogCiAgICAgc3dpdGNoIChpbmplY3RlZEJ1bmRsZS50
ZXN0UnVubmVyKCktPndoYXRUb0R1bXAoKSkgewotICAgIGNhc2UgVGVzdFJ1bm5lcjo6UmVuZGVy
VHJlZTogeworICAgIGNhc2UgV2hhdFRvRHVtcDo6UmVuZGVyVHJlZTogewogICAgICAgICBpZiAo
aW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5pc1ByaW50aW5nKCkpCiAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhhZG9wdFdLKFdLQnVuZGxlUGFnZUNvcHlS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nKG1fcGFnZSkpLmdldCgp
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RG
U3RyaW5nKGFkb3B0V0soV0tCdW5kbGVQYWdlQ29weVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKG1fcGFnZSkpLmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNl
IFRlc3RSdW5uZXI6Ok1haW5GcmFtZVRleHQ6CisgICAgY2FzZSBXaGF0VG9EdW1wOjpNYWluRnJh
bWVUZXh0OgogICAgICAgICBkdW1wRnJhbWVUZXh0KFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZSht
X3BhZ2UpLCBzdHJpbmdCdWlsZGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXN0UnVu
bmVyOjpBbGxGcmFtZXNUZXh0OgorICAgIGNhc2UgV2hhdFRvRHVtcDo6QWxsRnJhbWVzVGV4dDoK
ICAgICAgICAgZHVtcEFsbEZyYW1lc1RleHQoc3RyaW5nQnVpbGRlcik7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVGVzdFJ1bm5lcjo6QXVkaW86CisgICAgY2FzZSBXaGF0VG9EdW1wOjpBdWRp
bzoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXN0UnVubmVyOjpET01Bc1dlYkFyY2hpdmU6
CisgICAgY2FzZSBXaGF0VG9EdW1wOjpET01Bc1dlYkFyY2hpdmU6CiAgICAgICAgIGR1bXBET01B
c1dlYkFyY2hpdmUoZnJhbWUsIHN0cmluZ0J1aWxkZXIpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0yMDM1LDcgKzIwMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZnJhbWVEaWRD
aGFuZ2VMCiAKICAgICBpbmplY3RlZEJ1bmRsZS5zZXRUb3BMb2FkaW5nRnJhbWUobnVsbHB0cik7
CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT53YWl0VG9EdW1wKCkpCisg
ICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkV2FpdFVudGlsRG9uZSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuc2hvdWxkUHJvY2Vz
c1dvcmtRdWV1ZSgpKSB7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIzMTEyMikKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDE4ICs2MiwxNSBAQCBSZWY8VGVzdFJ1bm5lcj4gVGVzdFJ1bm5lcjo6Y3Jl
YXRlKCkKIH0KIAogVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCi0gICAgOiBtX3doYXRUb0R1bXAo
UmVuZGVyVHJlZSkKLSAgICAsIG1fc2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKGZh
bHNlKQorICAgIDogbV9zaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX3Nob3VsZER1bXBCYWNrRm9yd2FyZExpc3RzRm9yQWxsV2luZG93cyhmYWxzZSkKICAg
ICAsIG1fc2hvdWxkQWxsb3dFZGl0aW5nKHRydWUpCiAgICAgLCBtX3Nob3VsZENsb3NlRXh0cmFX
aW5kb3dzKGZhbHNlKQogICAgICwgbV9kdW1wRWRpdGluZ0NhbGxiYWNrcyhmYWxzZSkKICAgICAs
IG1fZHVtcFN0YXR1c0NhbGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcFRpdGxlQ2hhbmdlcyhm
YWxzZSkKLSAgICAsIG1fZHVtcFBpeGVscyh0cnVlKQogICAgICwgbV9kdW1wU2VsZWN0aW9uUmVj
dChmYWxzZSkKICAgICAsIG1fZHVtcEZ1bGxTY3JlZW5DYWxsYmFja3MoZmFsc2UpCi0gICAgLCBt
X2R1bXBGcmFtZUxvYWRDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBQcm9ncmVzc0Zpbmlz
aGVkQ2FsbGJhY2soZmFsc2UpCiAgICAgLCBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoZmFs
c2UpCiAgICAgLCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKGZhbHNlKQpAQCAtODEs
NyArNzgsNiBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICAsIG1fZHVtcEFwcGxpY2F0
aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcERhdGFiYXNlQ2Fs
bGJhY2tzKGZhbHNlKQogICAgICwgbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNo
ZVF1b3RhKGZhbHNlKQotICAgICwgbV93YWl0VG9EdW1wKGZhbHNlKQogICAgICwgbV90ZXN0UmVw
YWludChmYWxzZSkKICAgICAsIG1fdGVzdFJlcGFpbnRTd2VlcEhvcml6b250YWxseShmYWxzZSkK
ICAgICAsIG1faXNQcmludGluZyhmYWxzZSkKQEAgLTEyNywxMSArMTIzLDQ0IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6ZGlzcGxheUFuZFRyYWNrUmVwYWludHMKICAgICBXS0J1bmRsZVBhZ2VSZXNldFRy
YWNrZWRSZXBhaW50cyhwYWdlKTsKIH0KIAorYm9vbCBUZXN0UnVubmVyOjpzaG91bGREdW1wUGl4
ZWxzKCkgY29uc3QKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUo
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldER1bXBQaXhlbHMiKSk7
CisgICAgV0tUeXBlUmVmIHJlc3VsdCA9IDA7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIDAsICZyZXN1bHQpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXN1bHQpID09IFdL
Qm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHQpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRE
dW1wUGl4ZWxzKGJvb2wgZHVtcFBpeGVscykKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNl
dER1bXBQaXhlbHMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9k
eShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUoZHVtcFBpeGVscykpOworICAgIFdLQnVuZGxlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIHZv
aWQgVGVzdFJ1bm5lcjo6ZHVtcEFzVGV4dChib29sIGR1bXBQaXhlbHMpCiB7Ci0gICAgaWYgKG1f
d2hhdFRvRHVtcCA8IE1haW5GcmFtZVRleHQpCi0gICAgICAgIG1fd2hhdFRvRHVtcCA9IE1haW5G
cmFtZVRleHQ7Ci0gICAgbV9kdW1wUGl4ZWxzID0gZHVtcFBpeGVsczsKKyAgICBpZiAod2hhdFRv
RHVtcCgpIDwgV2hhdFRvRHVtcDo6TWFpbkZyYW1lVGV4dCkKKyAgICAgICAgc2V0V2hhdFRvRHVt
cChXaGF0VG9EdW1wOjpNYWluRnJhbWVUZXh0KTsKKyAgICBzZXREdW1wUGl4ZWxzKGR1bXBQaXhl
bHMpOworfQorICAgIAorV2hhdFRvRHVtcCBUZXN0UnVubmVyOjp3aGF0VG9EdW1wKCkgY29uc3QK
K3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldFdoYXRUb0R1bXAiKSk7CisgICAgV0tUeXBl
UmVmIHJlc3VsdCA9IDA7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAsICZy
ZXN1bHQpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXN1bHQpID09IFdLVUludDY0R2V0VHlw
ZUlEKCkpOworICAgIGF1dG8gdWludDY0dmFsdWUgPSBXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19j
YXN0PFdLVUludDY0UmVmPihyZXN1bHQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2hhdFRv
RHVtcD4odWludDY0dmFsdWUpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFdoYXRUb0R1bXAo
V2hhdFRvRHVtcCB3aGF0VG9EdW1wKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0V2hh
dFRvRHVtcCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gbWVzc2FnZUJvZHkoQWRv
cHRXSywgV0tVSW50NjRDcmVhdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdoYXRUb0R1bXApKSk7
CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBu
dWxscHRyKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShi
b29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSkKQEAgLTE1NiwxMSArMTg1LDI4IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6d2FpdFVudGlsRG93bmxvYWRGaW5pc2gKIAogdm9pZCBUZXN0UnVubmVyOjp3
YWl0VW50aWxEb25lKCkKIHsKLSAgICBtX3dhaXRUb0R1bXAgPSB0cnVlOworICAgIHNldFdhaXRV
bnRpbERvbmUodHJ1ZSk7CisgICAgLy8gRklYTUU6IFdhdGNoZG9nIHRpbWVyIHNob3VsZCBiZSBt
b3ZlZCB0byBVSSBwcm9jZXNzIGluIG9yZGVyIHRvIHRha2UgdGhlIGVsYXBzZWQgdGltZSBpbiBh
bm90ZWhyIHByb2Nlc3MgaW50byBhY2NvdW50LgogICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkudXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSkKICAgICAgICAgaW5pdGlhbGl6
ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKTsKIH0KIAordm9pZCBUZXN0UnVubmVy
OjpzZXRXYWl0VW50aWxEb25lKGJvb2wgdmFsdWUpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiU2V0V2FpdFVudGlsRG9uZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1l
c3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOworICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQor
Citib29sIFRlc3RSdW5uZXI6OnNob3VsZFdhaXRVbnRpbERvbmUoKSBjb25zdAoreworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkdldFdhaXRVbnRpbERvbmUiKSk7CisgICAgV0tUeXBlUmVmIHJl
c3VsdCA9IDA7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc3NhZ2VOYW1lLmdldCgpLCAwLCAmcmVzdWx0
KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmVzdWx0KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQo
KSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJl
Zj4ocmVzdWx0KSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6d2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXJGaXJlZCgpCiB7CiAgICAgaW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCk7CkBA
IC0xODAsMTQgKzIyNiwxNCBAQCB2b2lkIFRlc3RSdW5uZXI6Om5vdGlmeURvbmUoKQogICAgIGlm
ICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAobV93YWl0VG9EdW1wICYmICFpbmplY3RlZEJ1bmRsZS50b3BMb2FkaW5nRnJhbWUoKSkK
KyAgICBpZiAoc2hvdWxkV2FpdFVudGlsRG9uZSgpICYmICFpbmplY3RlZEJ1bmRsZS50b3BMb2Fk
aW5nRnJhbWUoKSkKICAgICAgICAgaW5qZWN0ZWRCdW5kbGUucGFnZSgpLT5kdW1wKCk7CiAKICAg
ICAvLyBXZSBkb24ndCBjYWxsIGludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpIGhl
cmUsIGV2ZW4gaWYgd2UgY29udGludWUgdG8gd2FpdCBmb3IgYSBsb2FkIHRvIGZpbmlzaC4KICAg
ICAvLyBUaGUgdGVzdCBpcyBzdGlsbCBzdWJqZWN0IHRvIHRpbWVvdXQgY2hlY2tpbmcgLSBpdCBp
cyBiZXR0ZXIgdG8gZGV0ZWN0IGFuIGFzeW5jIHRpbWVvdXQgaW5zaWRlIFdlYktpdFRlc3RSdW5u
ZXIKICAgICAvLyB0aGFuIHRvIGxldCB3ZWJraXRweSBkbyB0aGF0LCBiZWNhdXNlIFdlYktpdFRl
c3RSdW5uZXIgd2lsbCBkdW1wIHBhcnRpYWwgcmVzdWx0cy4KIAotICAgIG1fd2FpdFRvRHVtcCA9
IGZhbHNlOworICAgIHNldFdhaXRVbnRpbERvbmUoZmFsc2UpOwogfQogCiB2b2lkIFRlc3RSdW5u
ZXI6OmZvcmNlSW1tZWRpYXRlQ29tcGxldGlvbigpCkBAIC0xOTYsMTAgKzI0MiwyNiBAQCB2b2lk
IFRlc3RSdW5uZXI6OmZvcmNlSW1tZWRpYXRlQ29tcGxldGlvCiAgICAgaWYgKCFpbmplY3RlZEJ1
bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3dhaXRU
b0R1bXAgJiYgaW5qZWN0ZWRCdW5kbGUucGFnZSgpKQorICAgIGlmIChzaG91bGRXYWl0VW50aWxE
b25lKCkgJiYgaW5qZWN0ZWRCdW5kbGUucGFnZSgpKQogICAgICAgICBpbmplY3RlZEJ1bmRsZS5w
YWdlKCktPmR1bXAoKTsKIAotICAgIG1fd2FpdFRvRHVtcCA9IGZhbHNlOworICAgIHNldFdhaXRV
bnRpbERvbmUoZmFsc2UpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNob3VsZER1bXBGcmFt
ZUxvYWRDYWxsYmFja3MoYm9vbCB2YWx1ZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
ZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzIikpOworICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJl
Zj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKHZhbHVlKSk7CisgICAgV0tC
dW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5i
dW5kbGUoKSwgbWVzc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7
Cit9CisKK2Jvb2wgVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpCit7
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyIpKTsK
KyAgICBXS1R5cGVSZWYgcmVzdWx0ID0gMDsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzc2FnZU5hbWUu
Z2V0KCksIDAsICZyZXN1bHQpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXN1bHQpID09IFdL
Qm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHQpKTsKIH0KIAogdW5zaWduZWQgVGVzdFJ1bm5lcjo6
aW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQoKSBjb25zdApAQCAtNTI3LDggKzU4OSw4IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXVkaW9SZXN1bHQoSlNDb250ZXgKICAgICAvLyBGSVhNRSAo
MTIzMDU4KTogVXNlIGEgSlNDIEFQSSB0byBnZXQgYnVmZmVyIGNvbnRlbnRzIG9uY2Ugc3VjaCBp
cyBleHBvc2VkLgogICAgIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gYXVkaW9EYXRhKEFkb3B0V0ss
IFdLQnVuZGxlQ3JlYXRlV0tEYXRhRnJvbVVJbnQ4QXJyYXkoaW5qZWN0ZWRCdW5kbGUuYnVuZGxl
KCksIGNvbnRleHQsIGRhdGEpKTsKICAgICBpbmplY3RlZEJ1bmRsZS5zZXRBdWRpb1Jlc3VsdChh
dWRpb0RhdGEuZ2V0KCkpOwotICAgIG1fd2hhdFRvRHVtcCA9IEF1ZGlvOwotICAgIG1fZHVtcFBp
eGVscyA9IGZhbHNlOworICAgIHNldFdoYXRUb0R1bXAoV2hhdFRvRHVtcDo6QXVkaW8pOworICAg
IHNldER1bXBQaXhlbHMoZmFsc2UpOwogfQogCiB1bnNpZ25lZCBUZXN0UnVubmVyOjp3aW5kb3dD
b3VudCgpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAkocmV2aXNpb24gMjMxMTIyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiU3RyaW5nRnVu
Y3Rpb25zLmgiCisjaW5jbHVkZSAiV2hhdFRvRHVtcC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlU2NyaXB0V29ybGQu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KQEAgLTY1LDcgKzY2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VGVzdFVSTChXS1VSTFJlZiB1cmwpIHsgbV90ZXN0VVJMID0gdXJs
OyB9CiAgICAgdm9pZCBkdW1wQXNUZXh0KGJvb2wgZHVtcFBpeGVscyk7CiAgICAgdm9pZCB3YWl0
Rm9yUG9saWN5RGVsZWdhdGUoKTsKLSAgICB2b2lkIGR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpIHsg
bV93aGF0VG9EdW1wID0gQWxsRnJhbWVzVGV4dDsgfQorICAgIHZvaWQgZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCkgeyBzZXRXaGF0VG9EdW1wKFdoYXRUb0R1bXA6OkFsbEZyYW1lc1RleHQpOyB9CiAg
ICAgdm9pZCB3YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCk7CiAgICAgdm9pZCB3YWl0VW50aWxE
b25lKCk7CiAgICAgdm9pZCBub3RpZnlEb25lKCk7CkBAIC04NywxMCArODgsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZHVtcFdpbGxDYWNoZVJlc3BvbnNlKCkgeyBtX2R1bXBXaWxsQ2FjaGVSZXNw
b25zZSA9IHRydWU7IH0KICAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxs
YmFja3MoKSB7IG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyA9IHRydWU7
IH0KICAgICB2b2lkIGR1bXBEYXRhYmFzZUNhbGxiYWNrcygpIHsgbV9kdW1wRGF0YWJhc2VDYWxs
YmFja3MgPSB0cnVlOyB9Ci0gICAgdm9pZCBkdW1wRE9NQXNXZWJBcmNoaXZlKCkgeyBtX3doYXRU
b0R1bXAgPSBET01Bc1dlYkFyY2hpdmU7IH0KKyAgICB2b2lkIGR1bXBET01Bc1dlYkFyY2hpdmUo
KSB7IHNldFdoYXRUb0R1bXAoV2hhdFRvRHVtcDo6RE9NQXNXZWJBcmNoaXZlKTsgfQogICAgIHZv
aWQgZHVtcFBvbGljeURlbGVnYXRlQ2FsbGJhY2tzKCkgeyBtX2R1bXBQb2xpY3lDYWxsYmFja3Mg
PSB0cnVlOyB9CiAKLSAgICB2b2lkIHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9v
bCB2YWx1ZSkgeyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSB2YWx1ZTsgfQorICAgIHZvaWQg
c2V0U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyhib29sIHZhbHVlKTsKICAgICB2b2lkIHNl
dFNob3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soYm9vbCB2YWx1ZSkgeyBtX2R1bXBQ
cm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2sgPSB2YWx1ZTsgfQogCiAgICAgLy8gU3BlY2lhbCBvcHRp
b25zLgpAQCAtMTkyLDE4ICsxOTMsMTggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmxvY2tBbGxQ
bHVnaW5zKGJvb2wpOwogICAgIHZvaWQgc2V0UGx1Z2luU3VwcG9ydGVkTW9kZShKU1N0cmluZ1Jl
Zik7CiAKLSAgICBlbnVtIFdoYXRUb0R1bXAgeyBSZW5kZXJUcmVlLCBNYWluRnJhbWVUZXh0LCBB
bGxGcmFtZXNUZXh0LCBBdWRpbywgRE9NQXNXZWJBcmNoaXZlIH07Ci0gICAgV2hhdFRvRHVtcCB3
aGF0VG9EdW1wKCkgY29uc3QgeyByZXR1cm4gbV93aGF0VG9EdW1wOyB9CisgICAgV2hhdFRvRHVt
cCB3aGF0VG9EdW1wKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaGF0VG9EdW1wKFdoYXRUb0R1bXAp
OwogCiAgICAgYm9vbCBzaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9uczsgfQogICAgIGJvb2wg
c2hvdWxkRHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxXaW5kb3dzKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGREdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFdpbmRvd3M7IH0KICAgICBib29sIHNo
b3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wRWRpdGluZ0Nh
bGxiYWNrczsgfQotICAgIGJvb2wgc2hvdWxkRHVtcE1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV93aGF0VG9EdW1wID09IFJlbmRlclRyZWU7IH0KKyAgICBib29sIHNo
b3VsZER1bXBNYWluRnJhbWVTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHdoYXRUb0R1
bXAoKSA9PSBXaGF0VG9EdW1wOjpSZW5kZXJUcmVlOyB9CiAgICAgYm9vbCBzaG91bGREdW1wU3Rh
dHVzQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wU3RhdHVzQ2FsbGJhY2tzOyB9CiAg
ICAgYm9vbCBzaG91bGREdW1wVGl0bGVDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVGl0
bGVDaGFuZ2VzOyB9Ci0gICAgYm9vbCBzaG91bGREdW1wUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4g
bV9kdW1wUGl4ZWxzOyB9CisgICAgYm9vbCBzaG91bGREdW1wUGl4ZWxzKCkgY29uc3Q7CiAgICAg
Ym9vbCBzaG91bGREdW1wRnVsbFNjcmVlbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVt
cEZ1bGxTY3JlZW5DYWxsYmFja3M7IH0KLSAgICBib29sIHNob3VsZER1bXBGcmFtZUxvYWRDYWxs
YmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7IH0KKyAgICBi
b29sIHNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKICAgICBib29sIHNob3VsZER1bXBQ
cm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2R1bXBQcm9ncmVzc0Zp
bmlzaGVkQ2FsbGJhY2s7IH0KICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7IH0KICAgICBi
b29sIHNob3VsZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgY29uc3QgeyByZXR1cm4g
bV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlczsgfQpAQCAtMjE5LDcgKzIyMCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2
aWdhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbE5hdmlnYXRpb24oKTsKIAotICAgIGJvb2wgd2FpdFRvRHVtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2FpdFRvRHVtcDsgfQorICAgIGJvb2wgc2hvdWxkV2FpdFVudGlsRG9uZSgp
IGNvbnN0OwogICAgIHZvaWQgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgpOwogICAgIHZv
aWQgaW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCk7CiAKQEAgLTQ0OSw5ICs0NTAs
MTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAgIHZvaWQg
aW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKTsKIAorICAgIHZvaWQg
c2V0RHVtcFBpeGVscyhib29sKTsKKyAgICB2b2lkIHNldFdhaXRVbnRpbERvbmUoYm9vbCk7CisK
ICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gbV90ZXN0VVJMOyAvLyBTZXQgYnkgSW5qZWN0ZWRC
dW5kbGVQYWdlIG9uY2UgcHJvdmlzaW9uYWwgbG9hZCBzdGFydHMuCiAKLSAgICBXaGF0VG9EdW1w
IG1fd2hhdFRvRHVtcDsKICAgICBib29sIG1fc2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRp
b25zOwogICAgIGJvb2wgbV9zaG91bGREdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFdpbmRvd3M7
CiAKQEAgLTQ2NCw3ICs0NjcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1wUGl4ZWxzOwog
ICAgIGJvb2wgbV9kdW1wU2VsZWN0aW9uUmVjdDsKICAgICBib29sIG1fZHVtcEZ1bGxTY3JlZW5D
YWxsYmFja3M7Ci0gICAgYm9vbCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBt
X2R1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2s7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZUxv
YWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOwpA
QCAtNDczLDcgKzQ3NSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBEYXRhYmFzZUNhbGxi
YWNrczsKICAgICBib29sIG1fZHVtcFBvbGljeUNhbGxiYWNrcyB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2Rpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGE7Ci0gICAgYm9vbCBt
X3dhaXRUb0R1bXA7IC8vIFRydWUgaWYgd2FpdFVudGlsRG9uZSgpIGhhcyBiZWVuIGNhbGxlZCwg
YnV0IG5vdGlmeURvbmUoKSBoYXMgbm90IHlldCBiZWVuIGNhbGxlZC4KICAgICBib29sIG1fdGVz
dFJlcGFpbnQ7CiAgICAgYm9vbCBtX3Rlc3RSZXBhaW50U3dlZXBIb3Jpem9udGFsbHk7CiAgICAg
Ym9vbCBtX2lzUHJpbnRpbmc7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjMxMTIyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0
UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw2
ICszMTYsNyBAQAogCQk4NDFDQzAwRTE4MTE4NUJGMDA0MkU5QjYgLyogT3B0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBXZWJLaXRUZXN0UnVubmVy
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJLaXRU
ZXN0UnVubmVyOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5QjBEMTMy
RTIwMzZEMzQ2MDA4RkM4RkIgLyogV2ViS2l0VGVzdFJ1bm5lckFwcC1pT1MuZW50aXRsZW1lbnRz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5lbnRpdGxlbWVudHM7IHBhdGggPSAiV2ViS2l0VGVzdFJ1
bm5lckFwcC1pT1MuZW50aXRsZW1lbnRzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUIzNkEyNzAyMDk0NTNBMDAwM0UwNjUxIC8qIFdoYXRUb0R1bXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2hhdFRvRHVtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTg1MTAyNzFCOUFERTQ4MDA3NDRBRUIgLyogbGliV2ViS2l0VGVzdFJ1bm5lci5hICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFy
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJXZWJLaXRUZXN0UnVubmVyLmE7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUExODUxMDM4MUI5QURGMjIwMDc0NEFF
QiAvKiBXZWJLaXRUZXN0UnVubmVyLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYktpdFRlc3RS
dW5uZXIueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODUxMDM5MUI5
QURGRjgwMDc0NEFFQiAvKiBXZWJLaXRUZXN0UnVubmVyQXBwLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IFdlYktpdFRlc3RSdW5uZXJBcHAueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04MTYsNiArODE3LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTM3OEQ0NDIyMTMz
NDZEMDAwMDZBNzc3QiAvKiBjb25maWcuaCAqLywKIAkJCQlCQzk5QTQ4NDEyMDg5MDFBMDA3RTlG
MDggLyogU3RyaW5nRnVuY3Rpb25zLmggKi8sCisJCQkJOUIzNkEyNzAyMDk0NTNBMDAwM0UwNjUx
IC8qIFdoYXRUb0R1bXAuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gU2hhcmVkOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339135</attachid>
            <date>2018-04-30 12:15:54 -0700</date>
            <delta_ts>2018-04-30 13:36:53 -0700</delta_ts>
            <desc>Updated for ToT</desc>
            <filename>bug-185111-20180430121554.patch</filename>
            <type>text/plain</type>
            <size>32232</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzMTE2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDcwIEBACisyMDE4LTA0LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFBTT046IE1ha2UgV2ViS2l0VGVzdFJ1bm5lciB3b3JrIHdpdGggcHJvY2VzcyBz
d2FwIG9uIG5hdmlnYXRpb24gdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODUxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIGJhc2ljIHN1cHBvcnQgZm9yIHJ1bm5pbmcgbGF5
b3V0IHRlc3RzIHdpdGggcHJvY2Vzcy1zd2FwLW9uLW5hdmlnYXRpb24gdHVybmVkIG9uLgorCisg
ICAgICAgIEZpcnN0LCBtb3ZlIG1fd2hhdFRvRHVtcCwgbV9kdW1wUGl4ZWxzLCBtX3dhaXRUb0R1
bXAsIGFuZCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgZnJvbSBXZWJDb250ZW50IHByb2Nlc3MK
KyAgICAgICAgdG8gVUkgcHJvY2VzcyBzbyB0aGF0IGNhbGxzIHRvIHdhaXRVbnRpbERvbmUsIGR1
bXBBc1RleHQsIGV0Yy4uLiBwZXJzaXN0IGFjcm9zcyBwcm9jZXNzIHN3YXBzLgorCisgICAgICAg
IEluIGFkZGl0aW9uLCBpbml0aWFsaXplIHRoZSBpbmplY3RlZCBidW5kbGUgaW5zaWRlIGEgbmV3
IFdlYkNvbnRlbnQgcHJvY2VzcyB3aGVuIHRoZSBmaXJzdCBwYWdlIGlzIGNyZWF0ZWQuCisgICAg
ICAgIFRoaXMgaW5zdGFudGlhdGVzIG9iamVjdHMgc3VjaCBhcyBUZXN0UnVubmVyLCBHQ0NvbnRy
b2xsZXIsIGV0Yy4uLiBpbiB0aGUgbmV3IHByb2Nlc3MuIFRoZSBpbml0aWFsaXphdGlvbgorICAg
ICAgICBjYW4ndCBiZSBkb25lIGluIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcgYmVjYXVz
ZSBzb21lIHN0ZXBzIGluIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplIHJlcXVpcmUKKyAgICAg
ICAgdGhlIGN1cnJlbnQgUGFnZUdyb3VwIGFuZCBQYWdlIG9iamVjdHMuIFdlIGF2b2lkIGNsZWFy
aW5nIGRhdGFiYXNlcyBhbmQgYXBwIGNhY2hlIGluIHRoaXMgY2FzZS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZSk6IFNlbmQgIkluaXRpYWxpemF0
aW9uIiBtZXNzYWdlIHRvIFVJIHByb2Nlc3MuIFRoaXMgbWVzc2FnZSByZXR1cm5zCisgICAgICAg
IGFsbCB0aGUgZGljdGlvbmFyeSB2YWx1ZXMgdXN1YWxseSBwcmVzZW50IGluICJCZWdpblRlc3Qi
IG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGFzIHdlbGwgYXMgIlJlc3VtZVRlc3RpbmciCisgICAg
ICAgIGJvb2xlYW4gd2hpY2ggaXMgc2V0IHdoZW4gdGhpcyBwcm9jZXNzIHdhcyBjcmVhdGVkIGFz
IGEgcmVzdWx0IG9mIGEgcHJvY2VzcyBzd2FwIG9uIG5hdmdhdGlvbi4gSW52b2tlCisgICAgICAg
IGJlZ2luVGVzdGluZyB3aXRoIEJlZ2luZ1Rlc3RpbmdNb2RlOjpSZXN1bWUgd2hlbiB0aGlzIGJv
b2xlYW4gaXMgc2V0LgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2VUb1BhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5n
KTogRG9uJ3QgY2xlYXIgZGF0YWJhc2UsIGFwcCBjYWNoZSwgZXRjLi4uIHdoZW4gaW5pdGlhbGl6
aW5nIGFuIGluamVjdGVkCisgICAgICAgIGJ1bmRsZSBhZnRlciBhIHByb2Nlc3Mgc3dhcCBvbiBu
YXZpZ2F0aW9uLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6ZHVtcCk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZnJhbWVEaWRDaGFu
Z2VMb2NhdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZER1bXBQaXhlbHMgY29uc3QpOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0RHVtcFBpeGVscyk6IEFkZGVkLgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpkdW1wQXNUZXh0KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6d2hhdFRvRHVtcCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
ZXRXaGF0VG9EdW1wKTogQWRkZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OndhaXRVbnRp
bERvbmUpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRXYWl0VW50aWxEb25lKTogQWRk
ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZFdhaXRVbnRpbERvbmUpOiBBZGRl
ZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmZvcmNlSW1tZWRpYXRlQ29tcGxldGlvbik6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OnNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MpOiBBZGRlZC4KKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyk6IEFkZGVk
LgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRBdWRpb1Jlc3VsdCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OmR1bXBDaGlsZEZyYW1lc0FzVGV4dCk6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKTogTW92ZWQgdG8gY3BwLgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjp3aGF0VG9EdW1wIGNvbnN0KTogTW92ZWQgdG8gY3BwLgorICAg
ICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaG91bGREdW1wTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaG91bGREdW1wUGl4ZWxzIGNvbnN0
KTogTW92ZWQgdG8gY3BwLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaG91bGREdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzIGNvbnN0KTogTW92ZWQgdG8gY3BwLgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjp3YWl0VG9EdW1wIGNvbnN0KTogUmVuYW1lZCB0byBzaG91bGRXYWl0VW50aWxEb25l
IGFuZCBtb3ZlZCB0byBjcHAuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbik6
IEluaXRpYWxpemUgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzIGhlcmUuCisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Y3JlYXRlVGVzdFNldHRpbmdzRGlj
dGlvbmFyeSk6IEV4dHJhY3RlZCBmcm9tIGludm9rZSgpLgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6aW52b2tlKTogU2V0cyBtX3N0YXJ0ZWRUZXN0aW5nIHRvIHRydWUgaW1tZWRpYXRl
bHkgYWZ0ZSBzZW5kaW5nICJCZWdpblRlc3QiIG1lc3NhZ2UuCisgICAgICAgIG1fc3RhcnRlZFRl
c3RpbmcgaXMgbGF0ZXIgdXNlZCBpbiBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlIHRvIGRldGVjdCB3aGV0aGVyIGEgZ2l2ZW4KKyAgICAgICAgIkluaXRpYWxp
emF0aW9uIiBtZXNzYWdlIGlzIHNlbnQgZnJvbSBhIHJlZ3VsYXIgV2ViQ29udGVudCBwcm9jZXNz
IChtX3N0YXJ0ZWRUZXN0aW5nIGlzIGZhbHNlKSBvciB0aGUgb25lCisgICAgICAgIHN0YXJ0ZWQg
YXMgYSByZXN1bHQgb2YgYSBwcm9jZXNzIHN3YXAgb24gbmF2aWdhdGlvbiAobV9zdGFydGVkVGVz
dGluZyBpcyB0cnVlKS4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBBZGRlZCBhIGJ1bmNoIG9mIG5l
dyBtZXNzZ2FlcyB0bworICAgICAgICBzdXBwb3J0IGluaXRpYWxpemluZyB0aGUgaW5qZWN0ZWQg
YnVuZGxlIGluIGEgcHJvY2VzcyBzd2FwcGVkIGFmdGVyIG5hdmlnYXRpb24gYW5kIHNldC9nZXQg
bWVzc2FnZXMgZm9yCisgICAgICAgIHRoZSBzdGF0ZXMgd2hpY2ggbXVzdCBwZXJzaXN0IGFjcm9z
cyBwcm9jZXNzIHN3YXBzIHdpdGhpbiBhIHRlc3QuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVz
dFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTA0LTMwICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVzZSBXb3JkTG9jayBp
bnN0ZWFkIG9mIHN0ZDo6bXV0ZXggZm9yIFRocmVhZGluZwpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHJldmlzaW9uIDIzMTE2MSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2
ICs3NCw5IEBAIFRlc3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbihXS1VSTFJlZiAKICAgICBX
S1N0cmluZ0dldFVURjhDU3RyaW5nKHVybFN0cmluZy5nZXQoKSwgdXJsVmVjdG9yLmRhdGEoKSwg
c3RyaW5nTGVuZ3RoICsgMSk7CiAKICAgICBtX3VybFN0cmluZyA9IFN0cmluZyh1cmxWZWN0b3Iu
ZGF0YSgpLCBzdHJpbmdMZW5ndGgpOworCisgICAgLy8gRklYTUU6IEF2b2lkIG11dGF0aW5nIHRo
ZSBzZXR0aW5nIHZpYSBhIHRlc3QgZGlyZWN0b3J5IGxpa2UgdGhpcy4KKyAgICBtX2R1bXBGcmFt
ZUxvYWRDYWxsYmFja3MgPSB1cmxDb250YWlucygibG9hZGluZy8iKTsKIH0KIAogVGVzdEludm9j
YXRpb246On5UZXN0SW52b2NhdGlvbigpCkBAIC0xMTIsMzcgKzExNSwxNSBAQCBkb3VibGUgVGVz
dEludm9jYXRpb246OnNob3J0VGltZW91dCgpIGNvCiAgICAgcmV0dXJuIG1fdGltZW91dCAvIDEw
MDAuIC8gNDsKIH0KIAotYm9vbCBUZXN0SW52b2NhdGlvbjo6c2hvdWxkTG9nRnJhbWVMb2FkRGVs
ZWdhdGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdXJsQ29udGFpbnMoImxvYWRpbmcvIik7Ci19
Ci0KIGJvb2wgVGVzdEludm9jYXRpb246OnNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3Mo
KSBjb25zdAogewogICAgIHJldHVybiB1cmxDb250YWlucygiZ2xvYmFsaGlzdG9yeS8iKTsKIH0K
IAotdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKK1dLUmV0YWluUHRyPFdLTXV0YWJsZURp
Y3Rpb25hcnlSZWY+IFRlc3RJbnZvY2F0aW9uOjpjcmVhdGVUZXN0U2V0dGluZ3NEaWN0aW9uYXJ5
KCkKIHsKLSAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29uZmlndXJlVmlld0ZvclRl
c3QoKnRoaXMpOwotCi0gICAgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBmYWxzZSk7Ci0KLSAgICBtX3Rl
eHRPdXRwdXQuY2xlYXIoKTsKLQotICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRT
aG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKHNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxs
YmFja3MoKSk7Ci0KLSAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNv
bnRleHQoKSksIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbik7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNsZWFyIG91dCB2aXNpdGVkIGxpbmtz
IGhlcmUuCi0KLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCZWdpblRlc3QiKSk7CiAgICAgV0tS
ZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gYmVnaW5UZXN0TWVzc2FnZUJvZHkgPSBh
ZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiAKLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gZHVtcEZyYW1lTG9hZERlbGVnYXRlc0tleSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkR1bXBGcmFtZUxvYWREZWxlZ2F0ZXMiKSk7Ci0gICAgV0tS
ZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBkdW1wRnJhbWVMb2FkRGVsZWdhdGVzVmFsdWUgPSBhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMoKSkpOwotICAg
IFdLRGljdGlvbmFyeVNldEl0ZW0oYmVnaW5UZXN0TWVzc2FnZUJvZHkuZ2V0KCksIGR1bXBGcmFt
ZUxvYWREZWxlZ2F0ZXNLZXkuZ2V0KCksIGR1bXBGcmFtZUxvYWREZWxlZ2F0ZXNWYWx1ZS5nZXQo
KSk7Ci0KICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlRmxleGlibGVWaWV3cG9ydEtl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUZsZXhpYmxlVmll
d3BvcnQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiB1c2VGbGV4aWJsZVZpZXdw
b3J0VmFsdWUgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShvcHRpb25zKCkudXNlRmxleGlibGVW
aWV3cG9ydCkpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oYmVnaW5UZXN0TWVzc2FnZUJvZHku
Z2V0KCksIHVzZUZsZXhpYmxlVmlld3BvcnRLZXkuZ2V0KCksIHVzZUZsZXhpYmxlVmlld3BvcnRW
YWx1ZS5nZXQoKSk7CkBAIC0xNjIsOSArMTQzLDMwIEBAIHZvaWQgVGVzdEludm9jYXRpb246Omlu
dm9rZSgpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGR1bXBKU0NvbnNvbGVMb2dJblN0
ZEVycktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkR1bXBKU0Nv
bnNvbGVMb2dJblN0ZEVyciIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IGR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyclZhbHVlID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUobV9kdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGJlZ2luVGVz
dE1lc3NhZ2VCb2R5LmdldCgpLCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnJLZXkuZ2V0KCksIGR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVyclZhbHVlLmdldCgpKTsKKyAgICAKKyAgICByZXR1cm4gYmVn
aW5UZXN0TWVzc2FnZUJvZHk7Cit9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCit7
CisgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbmZpZ3VyZVZpZXdGb3JUZXN0KCp0
aGlzKTsKKworICAgIFdLUGFnZVNldEFkZHNWaXNpdGVkTGlua3MoVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworCisgICAgbV90ZXh0T3V0
cHV0LmNsZWFyKCk7CisKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U2hvdWxk
TG9nSGlzdG9yeUNsaWVudENhbGxiYWNrcyhzaG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tz
KCkpOworCisgICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nv
bnRleHRHZXRDb29raWVNYW5hZ2VyKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0
KCkpLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4p
OworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjbGVhciBvdXQgdmlzaXRlZCBsaW5rcyBoZXJl
LgorCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQmVnaW5UZXN0IikpOworICAgIGF1dG8gYmVn
aW5UZXN0TWVzc2FnZUJvZHkgPSBjcmVhdGVUZXN0U2V0dGluZ3NEaWN0aW9uYXJ5KCk7CiAgICAg
V0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBiZWdpblRlc3RN
ZXNzYWdlQm9keS5nZXQoKSk7CiAKKyAgICBtX3N0YXJ0ZWRUZXN0aW5nID0gdHJ1ZTsKKwogICAg
IGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsVVJMcyA9IGZhbHNlOwogCiAgICAgVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLnJ1blVudGlsKG1fZ290SW5pdGlhbFJlc3BvbnNlLCBUZXN0Q29udHJv
bGxlcjo6bm9UaW1lb3V0KTsKQEAgLTc2OSw2ICs3NzEsNDYgQEAgdm9pZCBUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcgogCiBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7CisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJJbml0aWFsaXphdGlv
biIpKSB7CisgICAgICAgIGF1dG8gc2V0dGluZ3MgPSBjcmVhdGVUZXN0U2V0dGluZ3NEaWN0aW9u
YXJ5KCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiByZXN1bWVUZXN0aW5nS2V5
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVzdW1lVGVzdGluZyIp
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiByZXN1bWVUZXN0aW5nVmFsdWUg
PSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtX3N0YXJ0ZWRUZXN0aW5nKSk7CisgICAgICAgIFdL
RGljdGlvbmFyeVNldEl0ZW0oc2V0dGluZ3MuZ2V0KCksIHJlc3VtZVRlc3RpbmdLZXkuZ2V0KCks
IHJlc3VtZVRlc3RpbmdWYWx1ZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBzZXR0aW5nczsKKyAg
ICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlNldER1bXBQaXhlbHMiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJv
ZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAgbV9kdW1wUGl4ZWxzID0gV0tC
b29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSkpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXREdW1wUGl4ZWxzIikpCisgICAgICAgIHJldHVy
biBXS1JldGFpblB0cjxXS1R5cGVSZWY+KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZShtX2R1bXBQ
aXhlbHMpKTsKKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiU2V0V2hhdFRvRHVtcCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNz
YWdlQm9keSkgPT0gV0tVSW50NjRHZXRUeXBlSUQoKSk7CisgICAgICAgIG1fd2hhdFRvRHVtcCA9
IHN0YXRpY19jYXN0PFdoYXRUb0R1bXA+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tV
SW50NjRSZWY+KG1lc3NhZ2VCb2R5KSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRX
aGF0VG9EdW1wIikpCisgICAgICAgIHJldHVybiBXS1JldGFpblB0cjxXS1R5cGVSZWY+KEFkb3B0
V0ssIFdLVUludDY0Q3JlYXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3doYXRUb0R1bXApKSk7
CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNl
dFdhaXRVbnRpbERvbmUiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJv
ZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAgbV93YWl0VW50aWxEb25lID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8
V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
R2V0V2FpdFVudGlsRG9uZSIpKQorICAgICAgICByZXR1cm4gV0tSZXRhaW5QdHI8V0tUeXBlUmVm
PihBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUobV93YWl0VW50aWxEb25lKSk7CisKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldER1bXBGcmFtZUxv
YWRDYWxsYmFja3MiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkp
ID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAgbV9kdW1wRnJhbWVMb2FkQ2FsbGJh
Y2tzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oV0tCb29sZWFuR2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiR2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyIpKQorICAgICAgICByZXR1cm4gV0tSZXRh
aW5QdHI8V0tUeXBlUmVmPihBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUobV9kdW1wRnJhbWVMb2Fk
Q2FsbGJhY2tzKSk7CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNldFdpbmRvd0lzS2V5IikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLQm9vbGVh
blJlZiBpc0tleVZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCShyZXZpc2lvbiAy
MzExNjEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2lu
Y2x1ZGUgIlRlc3RPcHRpb25zLmgiCiAjaW5jbHVkZSAiVUlTY3JpcHRDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2hhdFRvRHVtcC5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc3LDYgKzc4
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7
CiAgICAgCiBwcml2YXRlOgorICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+
IGNyZWF0ZVRlc3RTZXR0aW5nc0RpY3Rpb25hcnkoKTsKKwogICAgIHZvaWQgZHVtcFJlc3VsdHMo
KTsKICAgICBzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3Qg
Y2hhciogdGV4dFRvU3RkZXJyID0gMCwgYm9vbCBzZWVuRXJyb3IgPSBmYWxzZSk7CiAgICAgZW51
bSBjbGFzcyBTbmFwc2hvdFJlc3VsdFR5cGUgeyBXZWJWaWV3LCBXZWJDb250ZW50cyB9OwpAQCAt
OTMsNyArOTYsNiBAQCBwcml2YXRlOgogICAgIH07CiAgICAgc3RhdGljIHZvaWQgcnVuVUlTaWRl
U2NyaXB0QWZ0ZXJVcGRhdGVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KTsKIAot
ICAgIGJvb2wgc2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVzKCkgY29uc3Q7CiAgICAgYm9vbCBz
aG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKCkgY29uc3Q7CiAKICAgICB2b2lkIHJ1blVJ
U2lkZVNjcmlwdChXS1N0cmluZ1JlZiwgdW5zaWduZWQgY2FsbGJhY2tJRCk7CkBAIC0xMTEsMTMg
KzExMywxNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIg
eyBmYWxzZSB9OwogCiAgICAgLy8gSW52b2NhdGlvbiBzdGF0ZQorICAgIGJvb2wgbV9zdGFydGVk
VGVzdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2dvdEluaXRpYWxSZXNwb25zZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2dvdEZpbmFsTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2dv
dFJlcGFpbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lcnJvciB7IGZhbHNlIH07CiAKKyAgICBi
b29sIG1fd2FpdFVudGlsRG9uZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2R1bXBGcmFtZUxvYWRD
YWxsYmFja3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kdW1wUGl4ZWxzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fcGl4ZWxSZXN1bHRJc1BlbmRpbmcgeyBmYWxzZSB9OworICAgIFdoYXRUb0R1bXAg
bV93aGF0VG9EdW1wIHsgV2hhdFRvRHVtcDo6UmVuZGVyVHJlZSB9OwogCiAgICAgU3RyaW5nQnVp
bGRlciBtX3RleHRPdXRwdXQ7CiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBtX2F1ZGlvUmVz
dWx0OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIzMTE2MSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjAsOSArMTIwLDI1IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxp
emUoV0tCdW5kbGUKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSkKIHsKKyAgICBib29sIGlzTWFpblBhZ2UgPSBtX3BhZ2VzLmlzRW1wdHko
KTsKICAgICBtX3BhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkQnVuZGxlUGFn
ZT4ocGFnZSkpOwogCiAgICAgc2V0VXBJbmplY3RlZEJ1bmRsZUNsaWVudHMocGFnZSk7CisKKyAg
ICBpZiAoIWlzTWFpblBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkluaXRpYWxpemF0aW9uIikpOworICAgIFdLVHlwZVJlZiByZXN1bHQgPSAwOworICAg
IFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShtX2J1bmRsZSwgbWVzc3NhZ2VOYW1lLmdl
dCgpLCAwLCAmcmVzdWx0KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmVzdWx0KSA9PSBXS0Rp
Y3Rpb25hcnlHZXRUeXBlSUQoKSk7CisgICAgV0tEaWN0aW9uYXJ5UmVmIGluaXRpYWxpemF0aW9u
RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4ocmVzdWx0KTsKKworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiByZXN1bWVUZXN0aW5nS2V5KEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZXN1bWVUZXN0aW5nIikpOworICAgIFdLVHlwZVJl
ZiByZXN1bWVUZXN0aW5nVmFsdWUgPSBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXRpYWxp
emF0aW9uRGljdGlvbmFyeSwgcmVzdW1lVGVzdGluZ0tleS5nZXQoKSk7CisgICAgQVNTRVJUKFdL
R2V0VHlwZUlEKHJlc3VtZVRlc3RpbmdWYWx1ZSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOwor
ICAgIGlmIChXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJlc3Vt
ZVRlc3RpbmdWYWx1ZSkpKQorICAgICAgICBiZWdpblRlc3RpbmcoaW5pdGlhbGl6YXRpb25EaWN0
aW9uYXJ5LCBCZWdpbmdUZXN0aW5nTW9kZTo6UmVzdW1lKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1
bmRsZTo6d2lsbERlc3Ryb3lQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQpAQCAtMTk3LDcgKzIx
Myw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG8KICAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGFja01lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCZWdpblRlc3QiKSk7CiAgICAgICAgIFdLQnVuZGxlUGFn
ZVBvc3RNZXNzYWdlKHBhZ2UsIGFja01lc3NhZ2VOYW1lLmdldCgpLCBhY2tNZXNzYWdlQm9keS5n
ZXQoKSk7CiAKLSAgICAgICAgYmVnaW5UZXN0aW5nKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSk7Cisg
ICAgICAgIGJlZ2luVGVzdGluZyhtZXNzYWdlQm9keURpY3Rpb25hcnksIEJlZ2luZ1Rlc3RpbmdN
b2RlOjpOZXcpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzIsNyArMzQ4LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUbwogICAgIH0KIAogICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiV29ya1F1ZXVlUHJv
Y2Vzc2VkQ2FsbGJhY2siKSkgewotICAgICAgICBpZiAoIXRvcExvYWRpbmdGcmFtZSgpICYmICFt
X3Rlc3RSdW5uZXItPndhaXRUb0R1bXAoKSkKKyAgICAgICAgaWYgKCF0b3BMb2FkaW5nRnJhbWUo
KSAmJiAhbV90ZXN0UnVubmVyLT5zaG91bGRXYWl0VW50aWxEb25lKCkpCiAgICAgICAgICAgICBJ
bmplY3RlZEJ1bmRsZTo6cGFnZSgpLT5kdW1wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zNzksNyArMzk1LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZTo6Ym9vbGVhbkZvcktleShXS0Rp
YwogICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+
KHZhbHVlKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZyhXS0RpY3Rp
b25hcnlSZWYgc2V0dGluZ3MpCit2b2lkIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoV0tE
aWN0aW9uYXJ5UmVmIHNldHRpbmdzLCBCZWdpbmdUZXN0aW5nTW9kZSB0ZXN0aW5nTW9kZSkKIHsK
ICAgICBtX3N0YXRlID0gVGVzdGluZzsKIApAQCAtNDEzLDcgKzQyOSw2IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OmJlZ2luVGVzdGluZyhXS0RpY3QKIAogICAgIG1fdGVzdFJ1bm5lci0+c2V0UGx1
Z2luc0VuYWJsZWQodHJ1ZSk7CiAKLSAgICBtX3Rlc3RSdW5uZXItPnNldFNob3VsZER1bXBGcmFt
ZUxvYWRDYWxsYmFja3MoYm9vbGVhbkZvcktleShzZXR0aW5ncywgIkR1bXBGcmFtZUxvYWREZWxl
Z2F0ZXMiKSk7CiAgICAgbV90ZXN0UnVubmVyLT5zZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoZmFs
c2UpOwogICAgIG1fdGVzdFJ1bm5lci0+c2V0WFNTQXVkaXRvckVuYWJsZWQoZmFsc2UpOwogCkBA
IC00MzUsNiArNDUwLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKFdLRGlj
dAogCiAgICAgcGFnZSgpLT5wcmVwYXJlKCk7CiAKKyAgICBpZiAodGVzdGluZ01vZGUgIT0gQmVn
aW5nVGVzdGluZ01vZGU6Ok5ldykKKyAgICAgICAgcmV0dXJuOworCiAgICAgV0tCdW5kbGVDbGVh
ckFsbERhdGFiYXNlcyhtX2J1bmRsZSk7CiAgICAgV0tCdW5kbGVQYWdlQ2xlYXJBcHBsaWNhdGlv
bkNhY2hlKHBhZ2UoKS0+cGFnZSgpKTsKICAgICBXS0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVsaXN0cyhtX2J1bmRsZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiAyMzExNjEpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKFdLVHlwZVJlZiBpbml0aWFsaXphdGlvblVzZXJEYXRhKTsKICAgICB2
b2lkIHJlc2V0TG9jYWxTZXR0aW5ncygpOwogCi0gICAgdm9pZCBiZWdpblRlc3RpbmcoV0tEaWN0
aW9uYXJ5UmVmIGluaXRpYWxTZXR0aW5ncyk7CisgICAgZW51bSBjbGFzcyBCZWdpbmdUZXN0aW5n
TW9kZSB7IE5ldywgUmVzdW1lIH07CisgICAgdm9pZCBiZWdpblRlc3RpbmcoV0tEaWN0aW9uYXJ5
UmVmIGluaXRpYWxTZXR0aW5ncywgQmVnaW5nVGVzdGluZ01vZGUpOwogCiAgICAgYm9vbCBib29s
ZWFuRm9yS2V5KFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsKIApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMjMxMTYxKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OTAsMjIgKzg5MCwyMiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCgp
CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogCiAgICAgc3dpdGNoIChpbmplY3Rl
ZEJ1bmRsZS50ZXN0UnVubmVyKCktPndoYXRUb0R1bXAoKSkgewotICAgIGNhc2UgVGVzdFJ1bm5l
cjo6UmVuZGVyVHJlZTogeworICAgIGNhc2UgV2hhdFRvRHVtcDo6UmVuZGVyVHJlZTogewogICAg
ICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT5pc1ByaW50aW5nKCkpCiAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhhZG9wdFdLKFdLQnVuZGxl
UGFnZUNvcHlSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nKG1fcGFn
ZSkpLmdldCgpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHRvV1RGU3RyaW5nKGFkb3B0V0soV0tCdW5kbGVQYWdlQ29weVJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uKG1fcGFnZSkpLmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBjYXNlIFRlc3RSdW5uZXI6Ok1haW5GcmFtZVRleHQ6CisgICAgY2FzZSBXaGF0VG9EdW1w
OjpNYWluRnJhbWVUZXh0OgogICAgICAgICBkdW1wRnJhbWVUZXh0KFdLQnVuZGxlUGFnZUdldE1h
aW5GcmFtZShtX3BhZ2UpLCBzdHJpbmdCdWlsZGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBUZXN0UnVubmVyOjpBbGxGcmFtZXNUZXh0OgorICAgIGNhc2UgV2hhdFRvRHVtcDo6QWxsRnJh
bWVzVGV4dDoKICAgICAgICAgZHVtcEFsbEZyYW1lc1RleHQoc3RyaW5nQnVpbGRlcik7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgVGVzdFJ1bm5lcjo6QXVkaW86CisgICAgY2FzZSBXaGF0VG9E
dW1wOjpBdWRpbzoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXN0UnVubmVyOjpET01Bc1dl
YkFyY2hpdmU6CisgICAgY2FzZSBXaGF0VG9EdW1wOjpET01Bc1dlYkFyY2hpdmU6CiAgICAgICAg
IGR1bXBET01Bc1dlYkFyY2hpdmUoZnJhbWUsIHN0cmluZ0J1aWxkZXIpOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0yMDM1LDcgKzIwMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZnJhbWVEaWRDaGFuZ2VMCiAKICAgICBpbmplY3RlZEJ1bmRsZS5zZXRUb3BMb2FkaW5nRnJhbWUo
bnVsbHB0cik7CiAKLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT53YWl0VG9E
dW1wKCkpCisgICAgaWYgKGluamVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkV2FpdFVu
dGlsRG9uZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuc2hv
dWxkUHJvY2Vzc1dvcmtRdWV1ZSgpKSB7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIzMTE2MSkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDE4ICs2MiwxNSBAQCBSZWY8VGVzdFJ1bm5lcj4gVGVzdFJ1
bm5lcjo6Y3JlYXRlKCkKIH0KIAogVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCi0gICAgOiBtX3do
YXRUb0R1bXAoUmVuZGVyVHJlZSkKLSAgICAsIG1fc2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9z
aXRpb25zKGZhbHNlKQorICAgIDogbV9zaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMo
ZmFsc2UpCiAgICAgLCBtX3Nob3VsZER1bXBCYWNrRm9yd2FyZExpc3RzRm9yQWxsV2luZG93cyhm
YWxzZSkKICAgICAsIG1fc2hvdWxkQWxsb3dFZGl0aW5nKHRydWUpCiAgICAgLCBtX3Nob3VsZENs
b3NlRXh0cmFXaW5kb3dzKGZhbHNlKQogICAgICwgbV9kdW1wRWRpdGluZ0NhbGxiYWNrcyhmYWxz
ZSkKICAgICAsIG1fZHVtcFN0YXR1c0NhbGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcFRpdGxl
Q2hhbmdlcyhmYWxzZSkKLSAgICAsIG1fZHVtcFBpeGVscyh0cnVlKQogICAgICwgbV9kdW1wU2Vs
ZWN0aW9uUmVjdChmYWxzZSkKICAgICAsIG1fZHVtcEZ1bGxTY3JlZW5DYWxsYmFja3MoZmFsc2Up
Ci0gICAgLCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBQcm9n
cmVzc0ZpbmlzaGVkQ2FsbGJhY2soZmFsc2UpCiAgICAgLCBtX2R1bXBSZXNvdXJjZUxvYWRDYWxs
YmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKGZhbHNl
KQpAQCAtODEsNyArNzgsNiBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICAsIG1fZHVt
cEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcERh
dGFiYXNlQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGlj
YXRpb25DYWNoZVF1b3RhKGZhbHNlKQotICAgICwgbV93YWl0VG9EdW1wKGZhbHNlKQogICAgICwg
bV90ZXN0UmVwYWludChmYWxzZSkKICAgICAsIG1fdGVzdFJlcGFpbnRTd2VlcEhvcml6b250YWxs
eShmYWxzZSkKICAgICAsIG1faXNQcmludGluZyhmYWxzZSkKQEAgLTEyNywxMSArMTIzLDQ0IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6ZGlzcGxheUFuZFRyYWNrUmVwYWludHMKICAgICBXS0J1bmRsZVBh
Z2VSZXNldFRyYWNrZWRSZXBhaW50cyhwYWdlKTsKIH0KIAorYm9vbCBUZXN0UnVubmVyOjpzaG91
bGREdW1wUGl4ZWxzKCkgY29uc3QKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldER1bXBQ
aXhlbHMiKSk7CisgICAgV0tUeXBlUmVmIHJlc3VsdCA9IDA7CisgICAgV0tCdW5kbGVQb3N0U3lu
Y2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIDAsICZyZXN1bHQpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXN1
bHQpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFs
dWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHQpKTsKK30KKwordm9pZCBUZXN0UnVu
bmVyOjpzZXREdW1wUGl4ZWxzKGJvb2wgZHVtcFBpeGVscykKK3sKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlNldER1bXBQaXhlbHMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBt
ZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUoZHVtcFBpeGVscykpOworICAgIFdL
QnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7
Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6ZHVtcEFzVGV4dChib29sIGR1bXBQaXhlbHMpCiB7Ci0g
ICAgaWYgKG1fd2hhdFRvRHVtcCA8IE1haW5GcmFtZVRleHQpCi0gICAgICAgIG1fd2hhdFRvRHVt
cCA9IE1haW5GcmFtZVRleHQ7Ci0gICAgbV9kdW1wUGl4ZWxzID0gZHVtcFBpeGVsczsKKyAgICBp
ZiAod2hhdFRvRHVtcCgpIDwgV2hhdFRvRHVtcDo6TWFpbkZyYW1lVGV4dCkKKyAgICAgICAgc2V0
V2hhdFRvRHVtcChXaGF0VG9EdW1wOjpNYWluRnJhbWVUZXh0KTsKKyAgICBzZXREdW1wUGl4ZWxz
KGR1bXBQaXhlbHMpOworfQorICAgIAorV2hhdFRvRHVtcCBUZXN0UnVubmVyOjp3aGF0VG9EdW1w
KCkgY29uc3QKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldFdoYXRUb0R1bXAiKSk7Cisg
ICAgV0tUeXBlUmVmIHJlc3VsdCA9IDA7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIDAsICZyZXN1bHQpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXN1bHQpID09IFdLVUlu
dDY0R2V0VHlwZUlEKCkpOworICAgIGF1dG8gdWludDY0dmFsdWUgPSBXS1VJbnQ2NEdldFZhbHVl
KHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihyZXN1bHQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2hhdFRvRHVtcD4odWludDY0dmFsdWUpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFdo
YXRUb0R1bXAoV2hhdFRvRHVtcCB3aGF0VG9EdW1wKQoreworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiU2V0V2hhdFRvRHVtcCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gbWVzc2Fn
ZUJvZHkoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdoYXRU
b0R1bXApKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpLCBudWxscHRyKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lE
ZWxlZ2F0ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSkKQEAgLTE1NiwxMSArMTg1LDI4
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6d2FpdFVudGlsRG93bmxvYWRGaW5pc2gKIAogdm9pZCBUZXN0
UnVubmVyOjp3YWl0VW50aWxEb25lKCkKIHsKLSAgICBtX3dhaXRUb0R1bXAgPSB0cnVlOworICAg
IHNldFdhaXRVbnRpbERvbmUodHJ1ZSk7CisgICAgLy8gRklYTUU6IFdhdGNoZG9nIHRpbWVyIHNo
b3VsZCBiZSBtb3ZlZCB0byBVSSBwcm9jZXNzIGluIG9yZGVyIHRvIHRha2UgdGhlIGVsYXBzZWQg
dGltZSBpbiBhbm90ZWhyIHByb2Nlc3MgaW50byBhY2NvdW50LgogICAgIGlmIChJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkudXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSkKICAgICAgICAg
aW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKTsKIH0KIAordm9pZCBU
ZXN0UnVubmVyOjpzZXRXYWl0VW50aWxEb25lKGJvb2wgdmFsdWUpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiU2V0V2FpdFVudGlsRG9uZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xl
YW5SZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOworICAg
IFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkuYnVuZGxlKCksIG1lc3NzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxw
dHIpOworfQorCitib29sIFRlc3RSdW5uZXI6OnNob3VsZFdhaXRVbnRpbERvbmUoKSBjb25zdAor
eworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldFdhaXRVbnRpbERvbmUiKSk7CisgICAgV0tU
eXBlUmVmIHJlc3VsdCA9IDA7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc3NhZ2VOYW1lLmdldCgpLCAw
LCAmcmVzdWx0KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmVzdWx0KSA9PSBXS0Jvb2xlYW5H
ZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdL
Qm9vbGVhblJlZj4ocmVzdWx0KSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6d2FpdFRvRHVtcFdh
dGNoZG9nVGltZXJGaXJlZCgpCiB7CiAgICAgaW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVyKCk7CkBAIC0xODAsMTQgKzIyNiwxNCBAQCB2b2lkIFRlc3RSdW5uZXI6Om5vdGlmeURvbmUo
KQogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAobV93YWl0VG9EdW1wICYmICFpbmplY3RlZEJ1bmRsZS50b3BMb2FkaW5n
RnJhbWUoKSkKKyAgICBpZiAoc2hvdWxkV2FpdFVudGlsRG9uZSgpICYmICFpbmplY3RlZEJ1bmRs
ZS50b3BMb2FkaW5nRnJhbWUoKSkKICAgICAgICAgaW5qZWN0ZWRCdW5kbGUucGFnZSgpLT5kdW1w
KCk7CiAKICAgICAvLyBXZSBkb24ndCBjYWxsIGludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dU
aW1lcigpIGhlcmUsIGV2ZW4gaWYgd2UgY29udGludWUgdG8gd2FpdCBmb3IgYSBsb2FkIHRvIGZp
bmlzaC4KICAgICAvLyBUaGUgdGVzdCBpcyBzdGlsbCBzdWJqZWN0IHRvIHRpbWVvdXQgY2hlY2tp
bmcgLSBpdCBpcyBiZXR0ZXIgdG8gZGV0ZWN0IGFuIGFzeW5jIHRpbWVvdXQgaW5zaWRlIFdlYktp
dFRlc3RSdW5uZXIKICAgICAvLyB0aGFuIHRvIGxldCB3ZWJraXRweSBkbyB0aGF0LCBiZWNhdXNl
IFdlYktpdFRlc3RSdW5uZXIgd2lsbCBkdW1wIHBhcnRpYWwgcmVzdWx0cy4KIAotICAgIG1fd2Fp
dFRvRHVtcCA9IGZhbHNlOworICAgIHNldFdhaXRVbnRpbERvbmUoZmFsc2UpOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OmZvcmNlSW1tZWRpYXRlQ29tcGxldGlvbigpCkBAIC0xOTYsMTAgKzI0Miwy
NiBAQCB2b2lkIFRlc3RSdW5uZXI6OmZvcmNlSW1tZWRpYXRlQ29tcGxldGlvCiAgICAgaWYgKCFp
bmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChtX3dhaXRUb0R1bXAgJiYgaW5qZWN0ZWRCdW5kbGUucGFnZSgpKQorICAgIGlmIChzaG91bGRX
YWl0VW50aWxEb25lKCkgJiYgaW5qZWN0ZWRCdW5kbGUucGFnZSgpKQogICAgICAgICBpbmplY3Rl
ZEJ1bmRsZS5wYWdlKCktPmR1bXAoKTsKIAotICAgIG1fd2FpdFRvRHVtcCA9IGZhbHNlOworICAg
IHNldFdhaXRVbnRpbERvbmUoZmFsc2UpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNob3Vs
ZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCB2YWx1ZSkKK3sKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJTZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzIikpOworICAgIFdLUmV0YWluUHRyPFdL
Qm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKHZhbHVlKSk7
CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5idW5kbGUoKSwgbWVzc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwg
bnVsbHB0cik7Cit9CisKK2Jvb2wgVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxi
YWNrcygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NzYWdlTmFtZShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0RHVtcEZyYW1lTG9hZENhbGxi
YWNrcyIpKTsKKyAgICBXS1R5cGVSZWYgcmVzdWx0ID0gMDsKKyAgICBXS0J1bmRsZVBvc3RTeW5j
aHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNz
c2FnZU5hbWUuZ2V0KCksIDAsICZyZXN1bHQpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXN1
bHQpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFs
dWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHQpKTsKIH0KIAogdW5zaWduZWQgVGVz
dFJ1bm5lcjo6aW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQoKSBjb25zdApAQCAtNTI3LDgg
KzU4OSw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXVkaW9SZXN1bHQoSlNDb250ZXgKICAgICAv
LyBGSVhNRSAoMTIzMDU4KTogVXNlIGEgSlNDIEFQSSB0byBnZXQgYnVmZmVyIGNvbnRlbnRzIG9u
Y2Ugc3VjaCBpcyBleHBvc2VkLgogICAgIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gYXVkaW9EYXRh
KEFkb3B0V0ssIFdLQnVuZGxlQ3JlYXRlV0tEYXRhRnJvbVVJbnQ4QXJyYXkoaW5qZWN0ZWRCdW5k
bGUuYnVuZGxlKCksIGNvbnRleHQsIGRhdGEpKTsKICAgICBpbmplY3RlZEJ1bmRsZS5zZXRBdWRp
b1Jlc3VsdChhdWRpb0RhdGEuZ2V0KCkpOwotICAgIG1fd2hhdFRvRHVtcCA9IEF1ZGlvOwotICAg
IG1fZHVtcFBpeGVscyA9IGZhbHNlOworICAgIHNldFdoYXRUb0R1bXAoV2hhdFRvRHVtcDo6QXVk
aW8pOworICAgIHNldER1bXBQaXhlbHMoZmFsc2UpOwogfQogCiB1bnNpZ25lZCBUZXN0UnVubmVy
Ojp3aW5kb3dDb3VudCgpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkocmV2aXNpb24gMjMxMTYxKQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAi
U3RyaW5nRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiV2hhdFRvRHVtcC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlU2Ny
aXB0V29ybGQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KQEAgLTY1LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGVzdFVSTChXS1VSTFJlZiB1cmwpIHsgbV90ZXN0
VVJMID0gdXJsOyB9CiAgICAgdm9pZCBkdW1wQXNUZXh0KGJvb2wgZHVtcFBpeGVscyk7CiAgICAg
dm9pZCB3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKLSAgICB2b2lkIGR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpIHsgbV93aGF0VG9EdW1wID0gQWxsRnJhbWVzVGV4dDsgfQorICAgIHZvaWQgZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCkgeyBzZXRXaGF0VG9EdW1wKFdoYXRUb0R1bXA6OkFsbEZyYW1lc1Rl
eHQpOyB9CiAgICAgdm9pZCB3YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCk7CiAgICAgdm9pZCB3
YWl0VW50aWxEb25lKCk7CiAgICAgdm9pZCBub3RpZnlEb25lKCk7CkBAIC04NywxMCArODgsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgZHVtcFdpbGxDYWNoZVJlc3BvbnNlKCkgeyBtX2R1bXBXaWxs
Q2FjaGVSZXNwb25zZSA9IHRydWU7IH0KICAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVs
ZWdhdGVDYWxsYmFja3MoKSB7IG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNr
cyA9IHRydWU7IH0KICAgICB2b2lkIGR1bXBEYXRhYmFzZUNhbGxiYWNrcygpIHsgbV9kdW1wRGF0
YWJhc2VDYWxsYmFja3MgPSB0cnVlOyB9Ci0gICAgdm9pZCBkdW1wRE9NQXNXZWJBcmNoaXZlKCkg
eyBtX3doYXRUb0R1bXAgPSBET01Bc1dlYkFyY2hpdmU7IH0KKyAgICB2b2lkIGR1bXBET01Bc1dl
YkFyY2hpdmUoKSB7IHNldFdoYXRUb0R1bXAoV2hhdFRvRHVtcDo6RE9NQXNXZWJBcmNoaXZlKTsg
fQogICAgIHZvaWQgZHVtcFBvbGljeURlbGVnYXRlQ2FsbGJhY2tzKCkgeyBtX2R1bXBQb2xpY3lD
YWxsYmFja3MgPSB0cnVlOyB9CiAKLSAgICB2b2lkIHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxs
YmFja3MoYm9vbCB2YWx1ZSkgeyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSB2YWx1ZTsgfQor
ICAgIHZvaWQgc2V0U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyhib29sIHZhbHVlKTsKICAg
ICB2b2lkIHNldFNob3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soYm9vbCB2YWx1ZSkg
eyBtX2R1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2sgPSB2YWx1ZTsgfQogCiAgICAgLy8gU3Bl
Y2lhbCBvcHRpb25zLgpAQCAtMTkyLDE4ICsxOTMsMTggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
QmxvY2tBbGxQbHVnaW5zKGJvb2wpOwogICAgIHZvaWQgc2V0UGx1Z2luU3VwcG9ydGVkTW9kZShK
U1N0cmluZ1JlZik7CiAKLSAgICBlbnVtIFdoYXRUb0R1bXAgeyBSZW5kZXJUcmVlLCBNYWluRnJh
bWVUZXh0LCBBbGxGcmFtZXNUZXh0LCBBdWRpbywgRE9NQXNXZWJBcmNoaXZlIH07Ci0gICAgV2hh
dFRvRHVtcCB3aGF0VG9EdW1wKCkgY29uc3QgeyByZXR1cm4gbV93aGF0VG9EdW1wOyB9CisgICAg
V2hhdFRvRHVtcCB3aGF0VG9EdW1wKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaGF0VG9EdW1wKFdo
YXRUb0R1bXApOwogCiAgICAgYm9vbCBzaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9uczsgfQog
ICAgIGJvb2wgc2hvdWxkRHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxXaW5kb3dzKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGREdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFdpbmRvd3M7IH0KICAg
ICBib29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1w
RWRpdGluZ0NhbGxiYWNrczsgfQotICAgIGJvb2wgc2hvdWxkRHVtcE1haW5GcmFtZVNjcm9sbFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93aGF0VG9EdW1wID09IFJlbmRlclRyZWU7IH0KKyAg
ICBib29sIHNob3VsZER1bXBNYWluRnJhbWVTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHdoYXRUb0R1bXAoKSA9PSBXaGF0VG9EdW1wOjpSZW5kZXJUcmVlOyB9CiAgICAgYm9vbCBzaG91
bGREdW1wU3RhdHVzQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wU3RhdHVzQ2FsbGJh
Y2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wVGl0bGVDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4g
bV9kdW1wVGl0bGVDaGFuZ2VzOyB9Ci0gICAgYm9vbCBzaG91bGREdW1wUGl4ZWxzKCkgY29uc3Qg
eyByZXR1cm4gbV9kdW1wUGl4ZWxzOyB9CisgICAgYm9vbCBzaG91bGREdW1wUGl4ZWxzKCkgY29u
c3Q7CiAgICAgYm9vbCBzaG91bGREdW1wRnVsbFNjcmVlbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0
dXJuIG1fZHVtcEZ1bGxTY3JlZW5DYWxsYmFja3M7IH0KLSAgICBib29sIHNob3VsZER1bXBGcmFt
ZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7
IH0KKyAgICBib29sIHNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKICAgICBib29sIHNo
b3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2R1bXBQ
cm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2s7IH0KICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZUxv
YWRDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7
IH0KICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlczsgfQpAQCAtMjE5LDcgKzIy
MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTmF2aWdhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJEaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oKTsKIAotICAgIGJvb2wgd2FpdFRvRHVt
cCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FpdFRvRHVtcDsgfQorICAgIGJvb2wgc2hvdWxkV2FpdFVu
dGlsRG9uZSgpIGNvbnN0OwogICAgIHZvaWQgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgp
OwogICAgIHZvaWQgaW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCk7CiAKQEAgLTQ0
OSw5ICs0NTAsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKTsKIAor
ICAgIHZvaWQgc2V0RHVtcFBpeGVscyhib29sKTsKKyAgICB2b2lkIHNldFdhaXRVbnRpbERvbmUo
Ym9vbCk7CisKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gbV90ZXN0VVJMOyAvLyBTZXQgYnkg
SW5qZWN0ZWRCdW5kbGVQYWdlIG9uY2UgcHJvdmlzaW9uYWwgbG9hZCBzdGFydHMuCiAKLSAgICBX
aGF0VG9EdW1wIG1fd2hhdFRvRHVtcDsKICAgICBib29sIG1fc2hvdWxkRHVtcEFsbEZyYW1lU2Ny
b2xsUG9zaXRpb25zOwogICAgIGJvb2wgbV9zaG91bGREdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFs
bFdpbmRvd3M7CiAKQEAgLTQ2NCw3ICs0NjcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1w
UGl4ZWxzOwogICAgIGJvb2wgbV9kdW1wU2VsZWN0aW9uUmVjdDsKICAgICBib29sIG1fZHVtcEZ1
bGxTY3JlZW5DYWxsYmFja3M7Ci0gICAgYm9vbCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7CiAg
ICAgYm9vbCBtX2R1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2s7CiAgICAgYm9vbCBtX2R1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlN
RVR5cGVzOwpAQCAtNDczLDcgKzQ3NSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBEYXRh
YmFzZUNhbGxiYWNrczsKICAgICBib29sIG1fZHVtcFBvbGljeUNhbGxiYWNrcyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2Rpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGE7Ci0g
ICAgYm9vbCBtX3dhaXRUb0R1bXA7IC8vIFRydWUgaWYgd2FpdFVudGlsRG9uZSgpIGhhcyBiZWVu
IGNhbGxlZCwgYnV0IG5vdGlmeURvbmUoKSBoYXMgbm90IHlldCBiZWVuIGNhbGxlZC4KICAgICBi
b29sIG1fdGVzdFJlcGFpbnQ7CiAgICAgYm9vbCBtX3Rlc3RSZXBhaW50U3dlZXBIb3Jpem9udGFs
bHk7CiAgICAgYm9vbCBtX2lzUHJpbnRpbmc7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjMxMTYxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTMxNiw2ICszMTYsNyBAQAogCQk4NDFDQzAwRTE4MTE4NUJGMDA0MkU5QjYgLyogT3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBXZWJLaXRU
ZXN0UnVubmVyICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBXZWJLaXRUZXN0UnVubmVyOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk5QjBEMTMyRTIwMzZEMzQ2MDA4RkM4RkIgLyogV2ViS2l0VGVzdFJ1bm5lckFwcC1pT1MuZW50
aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5lbnRpdGxlbWVudHM7IHBhdGggPSAiV2Vi
S2l0VGVzdFJ1bm5lckFwcC1pT1MuZW50aXRsZW1lbnRzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUIzNkEyNzAyMDk0NTNBMDAwM0UwNjUxIC8qIFdoYXRUb0R1bXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2hhdFRvRHVtcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTg1MTAyNzFCOUFERTQ4MDA3NDRBRUIgLyogbGliV2ViS2l0VGVzdFJ1
bm5lci5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBh
cmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJXZWJLaXRUZXN0UnVubmVy
LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUExODUxMDM4MUI5QURG
MjIwMDc0NEFFQiAvKiBXZWJLaXRUZXN0UnVubmVyLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdl
YktpdFRlc3RSdW5uZXIueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
ODUxMDM5MUI5QURGRjgwMDc0NEFFQiAvKiBXZWJLaXRUZXN0UnVubmVyQXBwLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2Nv
bmZpZzsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJBcHAueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04MTYsNiArODE3LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTM3
OEQ0NDIyMTMzNDZEMDAwMDZBNzc3QiAvKiBjb25maWcuaCAqLywKIAkJCQlCQzk5QTQ4NDEyMDg5
MDFBMDA3RTlGMDggLyogU3RyaW5nRnVuY3Rpb25zLmggKi8sCisJCQkJOUIzNkEyNzAyMDk0NTNB
MDAwM0UwNjUxIC8qIFdoYXRUb0R1bXAuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gU2hhcmVkOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339143</attachid>
            <date>2018-04-30 13:36:54 -0700</date>
            <delta_ts>2018-05-01 21:05:46 -0700</delta_ts>
            <desc>Added forgotten WhatToDump.h</desc>
            <filename>bug-185111-20180430133653.patch</filename>
            <type>text/plain</type>
            <size>34087</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzMTE2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDcyIEBACisyMDE4LTA0LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFBTT046IE1ha2UgV2ViS2l0VGVzdFJ1bm5lciB3b3JrIHdpdGggcHJvY2VzcyBz
d2FwIG9uIG5hdmlnYXRpb24gdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODUxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIGJhc2ljIHN1cHBvcnQgZm9yIHJ1bm5pbmcgbGF5
b3V0IHRlc3RzIHdpdGggcHJvY2Vzcy1zd2FwLW9uLW5hdmlnYXRpb24gdHVybmVkIG9uLgorCisg
ICAgICAgIEZpcnN0LCBtb3ZlIG1fd2hhdFRvRHVtcCwgbV9kdW1wUGl4ZWxzLCBtX3dhaXRUb0R1
bXAsIGFuZCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgZnJvbSBXZWJDb250ZW50IHByb2Nlc3MK
KyAgICAgICAgdG8gVUkgcHJvY2VzcyBzbyB0aGF0IGNhbGxzIHRvIHdhaXRVbnRpbERvbmUsIGR1
bXBBc1RleHQsIGV0Yy4uLiBwZXJzaXN0IGFjcm9zcyBwcm9jZXNzIHN3YXBzLgorCisgICAgICAg
IEluIGFkZGl0aW9uLCBpbml0aWFsaXplIHRoZSBpbmplY3RlZCBidW5kbGUgaW5zaWRlIGEgbmV3
IFdlYkNvbnRlbnQgcHJvY2VzcyB3aGVuIHRoZSBmaXJzdCBwYWdlIGlzIGNyZWF0ZWQuCisgICAg
ICAgIFRoaXMgaW5zdGFudGlhdGVzIG9iamVjdHMgc3VjaCBhcyBUZXN0UnVubmVyLCBHQ0NvbnRy
b2xsZXIsIGV0Yy4uLiBpbiB0aGUgbmV3IHByb2Nlc3MuIFRoZSBpbml0aWFsaXphdGlvbgorICAg
ICAgICBjYW4ndCBiZSBkb25lIGluIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcgYmVjYXVz
ZSBzb21lIHN0ZXBzIGluIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplIHJlcXVpcmUKKyAgICAg
ICAgdGhlIGN1cnJlbnQgUGFnZUdyb3VwIGFuZCBQYWdlIG9iamVjdHMuIFdlIGF2b2lkIGNsZWFy
aW5nIGRhdGFiYXNlcyBhbmQgYXBwIGNhY2hlIGluIHRoaXMgY2FzZS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZSk6IFNlbmQgIkluaXRpYWxpemF0
aW9uIiBtZXNzYWdlIHRvIFVJIHByb2Nlc3MuIFRoaXMgbWVzc2FnZSByZXR1cm5zCisgICAgICAg
IGFsbCB0aGUgZGljdGlvbmFyeSB2YWx1ZXMgdXN1YWxseSBwcmVzZW50IGluICJCZWdpblRlc3Qi
IG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGFzIHdlbGwgYXMgIlJlc3VtZVRlc3RpbmciCisgICAg
ICAgIGJvb2xlYW4gd2hpY2ggaXMgc2V0IHdoZW4gdGhpcyBwcm9jZXNzIHdhcyBjcmVhdGVkIGFz
IGEgcmVzdWx0IG9mIGEgcHJvY2VzcyBzd2FwIG9uIG5hdmdhdGlvbi4gSW52b2tlCisgICAgICAg
IGJlZ2luVGVzdGluZyB3aXRoIEJlZ2luZ1Rlc3RpbmdNb2RlOjpSZXN1bWUgd2hlbiB0aGlzIGJv
b2xlYW4gaXMgc2V0LgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2VUb1BhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5n
KTogRG9uJ3QgY2xlYXIgZGF0YWJhc2UsIGFwcCBjYWNoZSwgZXRjLi4uIHdoZW4gaW5pdGlhbGl6
aW5nIGFuIGluamVjdGVkCisgICAgICAgIGJ1bmRsZSBhZnRlciBhIHByb2Nlc3Mgc3dhcCBvbiBu
YXZpZ2F0aW9uLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6ZHVtcCk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZnJhbWVEaWRDaGFu
Z2VMb2NhdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZER1bXBQaXhlbHMgY29uc3QpOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0RHVtcFBpeGVscyk6IEFkZGVkLgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpkdW1wQXNUZXh0KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6d2hhdFRvRHVtcCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
ZXRXaGF0VG9EdW1wKTogQWRkZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OndhaXRVbnRp
bERvbmUpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRXYWl0VW50aWxEb25lKTogQWRk
ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZFdhaXRVbnRpbERvbmUpOiBBZGRl
ZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmZvcmNlSW1tZWRpYXRlQ29tcGxldGlvbik6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OnNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MpOiBBZGRlZC4KKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyk6IEFkZGVk
LgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRBdWRpb1Jlc3VsdCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OmR1bXBDaGlsZEZyYW1lc0FzVGV4dCk6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKTogTW92ZWQgdG8gY3BwLgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjp3aGF0VG9EdW1wIGNvbnN0KTogTW92ZWQgdG8gY3BwLgorICAg
ICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaG91bGREdW1wTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaG91bGREdW1wUGl4ZWxzIGNvbnN0
KTogTW92ZWQgdG8gY3BwLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaG91bGREdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzIGNvbnN0KTogTW92ZWQgdG8gY3BwLgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjp3YWl0VG9EdW1wIGNvbnN0KTogUmVuYW1lZCB0byBzaG91bGRXYWl0VW50aWxEb25l
IGFuZCBtb3ZlZCB0byBjcHAuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbik6
IEluaXRpYWxpemUgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzIGhlcmUuCisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Y3JlYXRlVGVzdFNldHRpbmdzRGlj
dGlvbmFyeSk6IEV4dHJhY3RlZCBmcm9tIGludm9rZSgpLgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6aW52b2tlKTogU2V0cyBtX3N0YXJ0ZWRUZXN0aW5nIHRvIHRydWUgaW1tZWRpYXRl
bHkgYWZ0ZSBzZW5kaW5nICJCZWdpblRlc3QiIG1lc3NhZ2UuCisgICAgICAgIG1fc3RhcnRlZFRl
c3RpbmcgaXMgbGF0ZXIgdXNlZCBpbiBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlIHRvIGRldGVjdCB3aGV0aGVyIGEgZ2l2ZW4KKyAgICAgICAgIkluaXRpYWxp
emF0aW9uIiBtZXNzYWdlIGlzIHNlbnQgZnJvbSBhIHJlZ3VsYXIgV2ViQ29udGVudCBwcm9jZXNz
IChtX3N0YXJ0ZWRUZXN0aW5nIGlzIGZhbHNlKSBvciB0aGUgb25lCisgICAgICAgIHN0YXJ0ZWQg
YXMgYSByZXN1bHQgb2YgYSBwcm9jZXNzIHN3YXAgb24gbmF2aWdhdGlvbiAobV9zdGFydGVkVGVz
dGluZyBpcyB0cnVlKS4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBBZGRlZCBhIGJ1bmNoIG9mIG5l
dyBtZXNzZ2FlcyB0bworICAgICAgICBzdXBwb3J0IGluaXRpYWxpemluZyB0aGUgaW5qZWN0ZWQg
YnVuZGxlIGluIGEgcHJvY2VzcyBzd2FwcGVkIGFmdGVyIG5hdmlnYXRpb24gYW5kIHNldC9nZXQg
bWVzc2FnZXMgZm9yCisgICAgICAgIHRoZSBzdGF0ZXMgd2hpY2ggbXVzdCBwZXJzaXN0IGFjcm9z
cyBwcm9jZXNzIHN3YXBzIHdpdGhpbiBhIHRlc3QuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVz
dFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvV2hhdFRvRHVtcC5oOgorICAgICAgICAoV1RSOjpXaGF0VG9EdW1wKTogQWRk
ZWQuCisKIDIwMTgtMDQtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CiAKICAgICAgICAgVXNlIFdvcmRMb2NrIGluc3RlYWQgb2Ygc3RkOjptdXRleCBmb3IgVGhyZWFk
aW5nCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2
aXNpb24gMjMxMTYxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDkgQEAgVGVzdEludm9jYXRpb246OlRlc3RJ
bnZvY2F0aW9uKFdLVVJMUmVmIAogICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcodXJsU3RyaW5n
LmdldCgpLCB1cmxWZWN0b3IuZGF0YSgpLCBzdHJpbmdMZW5ndGggKyAxKTsKIAogICAgIG1fdXJs
U3RyaW5nID0gU3RyaW5nKHVybFZlY3Rvci5kYXRhKCksIHN0cmluZ0xlbmd0aCk7CisKKyAgICAv
LyBGSVhNRTogQXZvaWQgbXV0YXRpbmcgdGhlIHNldHRpbmcgdmlhIGEgdGVzdCBkaXJlY3Rvcnkg
bGlrZSB0aGlzLgorICAgIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IHVybENvbnRhaW5zKCJs
b2FkaW5nLyIpOwogfQogCiBUZXN0SW52b2NhdGlvbjo6flRlc3RJbnZvY2F0aW9uKCkKQEAgLTEx
MiwzNyArMTE1LDE1IEBAIGRvdWJsZSBUZXN0SW52b2NhdGlvbjo6c2hvcnRUaW1lb3V0KCkgY28K
ICAgICByZXR1cm4gbV90aW1lb3V0IC8gMTAwMC4gLyA0OwogfQogCi1ib29sIFRlc3RJbnZvY2F0
aW9uOjpzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMoKSBjb25zdAotewotICAgIHJldHVybiB1
cmxDb250YWlucygibG9hZGluZy8iKTsKLX0KLQogYm9vbCBUZXN0SW52b2NhdGlvbjo6c2hvdWxk
TG9nSGlzdG9yeUNsaWVudENhbGxiYWNrcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHVybENvbnRh
aW5zKCJnbG9iYWxoaXN0b3J5LyIpOwogfQogCi12b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZva2Uo
KQorV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gVGVzdEludm9jYXRpb246OmNy
ZWF0ZVRlc3RTZXR0aW5nc0RpY3Rpb25hcnkoKQogewotICAgIFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5jb25maWd1cmVWaWV3Rm9yVGVzdCgqdGhpcyk7Ci0KLSAgICBXS1BhZ2VTZXRBZGRz
VmlzaXRlZExpbmtzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
YWdlKCksIGZhbHNlKTsKLQotICAgIG1fdGV4dE91dHB1dC5jbGVhcigpOwotCi0gICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3Mo
c2hvdWxkTG9nSGlzdG9yeUNsaWVudENhbGxiYWNrcygpKTsKLQotICAgIFdLQ29va2llTWFuYWdl
clNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKSwga1dLSFRUUENvb2tpZUFjY2VwdFBv
bGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgY2xlYXIgb3V0IHZpc2l0ZWQgbGlua3MgaGVyZS4KLQotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkJlZ2luVGVzdCIpKTsKICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVm
PiBiZWdpblRlc3RNZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0
ZSgpKTsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkdW1wRnJhbWVMb2FkRGVsZWdh
dGVzS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRHVtcEZyYW1l
TG9hZERlbGVnYXRlcyIpKTsKLSAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IGR1bXBGcmFt
ZUxvYWREZWxlZ2F0ZXNWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHNob3VsZExvZ0Zy
YW1lTG9hZERlbGVnYXRlcygpKSk7Ci0gICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShiZWdpblRlc3RN
ZXNzYWdlQm9keS5nZXQoKSwgZHVtcEZyYW1lTG9hZERlbGVnYXRlc0tleS5nZXQoKSwgZHVtcEZy
YW1lTG9hZERlbGVnYXRlc1ZhbHVlLmdldCgpKTsKLQogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiB1c2VGbGV4aWJsZVZpZXdwb3J0S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiVXNlRmxleGlibGVWaWV3cG9ydCIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jv
b2xlYW5SZWY+IHVzZUZsZXhpYmxlVmlld3BvcnRWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3Jl
YXRlKG9wdGlvbnMoKS51c2VGbGV4aWJsZVZpZXdwb3J0KSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0
SXRlbShiZWdpblRlc3RNZXNzYWdlQm9keS5nZXQoKSwgdXNlRmxleGlibGVWaWV3cG9ydEtleS5n
ZXQoKSwgdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlLmdldCgpKTsKQEAgLTE2Miw5ICsxNDMsMzAg
QEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIikpOwogICAgIFdLUmV0
YWluUHRyPFdLQm9vbGVhblJlZj4gZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyVmFsdWUgPSBhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVycikpOwogICAgIFdL
RGljdGlvbmFyeVNldEl0ZW0oYmVnaW5UZXN0TWVzc2FnZUJvZHkuZ2V0KCksIGR1bXBKU0NvbnNv
bGVMb2dJblN0ZEVycktleS5nZXQoKSwgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyVmFsdWUuZ2V0
KCkpOworICAgIAorICAgIHJldHVybiBiZWdpblRlc3RNZXNzYWdlQm9keTsKK30KIAordm9pZCBU
ZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuY29uZmlndXJlVmlld0ZvclRlc3QoKnRoaXMpOworCisgICAgV0tQYWdlU2V0QWRkc1Zpc2l0
ZWRMaW5rcyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgp
LCBmYWxzZSk7CisKKyAgICBtX3RleHRPdXRwdXQuY2xlYXIoKTsKKworICAgIFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5zZXRTaG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKHNob3Vs
ZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3MoKSk7CisKKyAgICBXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIoVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSksIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lP
bmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbik7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNs
ZWFyIG91dCB2aXNpdGVkIGxpbmtzIGhlcmUuCisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJC
ZWdpblRlc3QiKSk7CisgICAgYXV0byBiZWdpblRlc3RNZXNzYWdlQm9keSA9IGNyZWF0ZVRlc3RT
ZXR0aW5nc0RpY3Rpb25hcnkoKTsKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpKTsKIAorICAgIG1fc3Rh
cnRlZFRlc3RpbmcgPSB0cnVlOworCiAgICAgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzID0g
ZmFsc2U7CiAKICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuVW50aWwobV9nb3RJ
bml0aWFsUmVzcG9uc2UsIFRlc3RDb250cm9sbGVyOjpub1RpbWVvdXQpOwpAQCAtNzY5LDYgKzc3
MSw0NiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAKIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSkKIHsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIkluaXRpYWxpemF0aW9uIikpIHsKKyAgICAgICAgYXV0byBzZXR0aW5ncyA9
IGNyZWF0ZVRlc3RTZXR0aW5nc0RpY3Rpb25hcnkoKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IHJlc3VtZVRlc3RpbmdLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJSZXN1bWVUZXN0aW5nIikpOworICAgICAgICBXS1JldGFpblB0cjxXS0Jvb2xl
YW5SZWY+IHJlc3VtZVRlc3RpbmdWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG1fc3Rh
cnRlZFRlc3RpbmcpKTsKKyAgICAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShzZXR0aW5ncy5nZXQo
KSwgcmVzdW1lVGVzdGluZ0tleS5nZXQoKSwgcmVzdW1lVGVzdGluZ1ZhbHVlLmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuIHNldHRpbmdzOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0RHVtcFBpeGVscyIpKSB7CisgICAgICAgIEFT
U0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOwor
ICAgICAgICBtX2R1bXBQaXhlbHMgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldER1
bXBQaXhlbHMiKSkKKyAgICAgICAgcmV0dXJuIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4oQWRvcHRX
SywgV0tCb29sZWFuQ3JlYXRlKG1fZHVtcFBpeGVscykpOworCisgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRXaGF0VG9EdW1wIikpIHsKKyAgICAg
ICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1VJbnQ2NEdldFR5cGVJRCgp
KTsKKyAgICAgICAgbV93aGF0VG9EdW1wID0gc3RhdGljX2Nhc3Q8V2hhdFRvRHVtcD4oV0tVSW50
NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4obWVzc2FnZUJvZHkpKSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldFdoYXRUb0R1bXAiKSkKKyAgICAgICAgcmV0dXJuIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4oQWRvcHRXSywgV0tVSW50NjRDcmVhdGUoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1fd2hhdFRvRHVtcCkpKTsKKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0V2FpdFVudGlsRG9uZSIpKSB7CisgICAgICAgIEFT
U0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOwor
ICAgICAgICBtX3dhaXRVbnRpbERvbmUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihXS0Jv
b2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KSkpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRXYWl0VW50aWxEb25lIikpCisgICAgICAgIHJl
dHVybiBXS1JldGFpblB0cjxXS1R5cGVSZWY+KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZShtX3dh
aXRVbnRpbERvbmUpKTsKKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiU2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyIpKSB7CisgICAgICAgIEFTU0VS
VChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAg
ICAgICBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5
KSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
IikpCisgICAgICAgIHJldHVybiBXS1JldGFpblB0cjxXS1R5cGVSZWY+KEFkb3B0V0ssIFdLQm9v
bGVhbkNyZWF0ZShtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MpKTsKKwogICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0V2luZG93SXNLZXkiKSkgewog
ICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5
cGVJRCgpKTsKICAgICAgICAgV0tCb29sZWFuUmVmIGlzS2V5VmFsdWUgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmgJKHJldmlzaW9uIDIzMTE2MSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKICNpbmNsdWRl
ICJVSVNjcmlwdENvbnRleHQuaCIKKyNpbmNsdWRlICJXaGF0VG9EdW1wLmgiCiAjaW5jbHVkZSA8
V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgpAQCAtNzcsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZW1v
dmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKICAgICAKIHByaXZhdGU6CisgICAgV0tSZXRhaW5Q
dHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlVGVzdFNldHRpbmdzRGljdGlvbmFyeSgp
OworCiAgICAgdm9pZCBkdW1wUmVzdWx0cygpOwogICAgIHN0YXRpYyB2b2lkIGR1bXAoY29uc3Qg
Y2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIgPSAwLCBib29sIHNl
ZW5FcnJvciA9IGZhbHNlKTsKICAgICBlbnVtIGNsYXNzIFNuYXBzaG90UmVzdWx0VHlwZSB7IFdl
YlZpZXcsIFdlYkNvbnRlbnRzIH07CkBAIC05Myw3ICs5Niw2IEBAIHByaXZhdGU6CiAgICAgfTsK
ICAgICBzdGF0aWMgdm9pZCBydW5VSVNpZGVTY3JpcHRBZnRlclVwZGF0ZUNhbGxiYWNrKFdLRXJy
b3JSZWYsIHZvaWQqIGNvbnRleHQpOwogCi0gICAgYm9vbCBzaG91bGRMb2dGcmFtZUxvYWREZWxl
Z2F0ZXMoKSBjb25zdDsKICAgICBib29sIHNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3Mo
KSBjb25zdDsKIAogICAgIHZvaWQgcnVuVUlTaWRlU2NyaXB0KFdLU3RyaW5nUmVmLCB1bnNpZ25l
ZCBjYWxsYmFja0lEKTsKQEAgLTExMSwxMyArMTEzLDE3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB7IGZhbHNlIH07CiAKICAgICAvLyBJbnZvY2F0aW9u
IHN0YXRlCisgICAgYm9vbCBtX3N0YXJ0ZWRUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
Z290SW5pdGlhbFJlc3BvbnNlIHsgZmFsc2UgfTsKICAgICBib29sIG1fZ290RmluYWxNZXNzYWdl
IHsgZmFsc2UgfTsKICAgICBib29sIG1fZ290UmVwYWludCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2Vycm9yIHsgZmFsc2UgfTsKIAorICAgIGJvb2wgbV93YWl0VW50aWxEb25lIHsgZmFsc2UgfTsK
KyAgICBib29sIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2R1bXBQaXhlbHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9waXhlbFJlc3VsdElzUGVuZGluZyB7
IGZhbHNlIH07CisgICAgV2hhdFRvRHVtcCBtX3doYXRUb0R1bXAgeyBXaGF0VG9EdW1wOjpSZW5k
ZXJUcmVlIH07CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fdGV4dE91dHB1dDsKICAgICBXS1JldGFp
blB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1bHQ7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1doYXRUb0R1bXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1do
YXRUb0R1bXAuaAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1doYXRU
b0R1bXAuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdUUiB7CisKK2VudW0gY2xhc3MgV2hhdFRvRHVt
cCA6IHVuc2lnbmVkIGNoYXIgeyBSZW5kZXJUcmVlLCBNYWluRnJhbWVUZXh0LCBBbGxGcmFtZXNU
ZXh0LCBBdWRpbywgRE9NQXNXZWJBcmNoaXZlIH07CisKK30KSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CShyZXZpc2lvbiAyMzExNjEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCwyNSBA
QCB2b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlCiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiB7CisgICAgYm9v
bCBpc01haW5QYWdlID0gbV9wYWdlcy5pc0VtcHR5KCk7CiAgICAgbV9wYWdlcy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+KHBhZ2UpKTsKIAogICAgIHNldFVwSW5q
ZWN0ZWRCdW5kbGVDbGllbnRzKHBhZ2UpOworCisgICAgaWYgKCFpc01haW5QYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJbml0aWFsaXphdGlvbiIpKTsK
KyAgICBXS1R5cGVSZWYgcmVzdWx0ID0gMDsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UobV9idW5kbGUsIG1lc3NzYWdlTmFtZS5nZXQoKSwgMCwgJnJlc3VsdCk7CisgICAgQVNT
RVJUKFdLR2V0VHlwZUlEKHJlc3VsdCkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworICAg
IFdLRGljdGlvbmFyeVJlZiBpbml0aWFsaXphdGlvbkRpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxX
S0RpY3Rpb25hcnlSZWY+KHJlc3VsdCk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
cmVzdW1lVGVzdGluZ0tleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
UmVzdW1lVGVzdGluZyIpKTsKKyAgICBXS1R5cGVSZWYgcmVzdW1lVGVzdGluZ1ZhbHVlID0gV0tE
aWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0aWFsaXphdGlvbkRpY3Rpb25hcnksIHJlc3VtZVRl
c3RpbmdLZXkuZ2V0KCkpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXN1bWVUZXN0aW5nVmFs
dWUpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICBpZiAoV0tCb29sZWFuR2V0VmFsdWUo
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bWVUZXN0aW5nVmFsdWUpKSkKKyAgICAgICAg
YmVnaW5UZXN0aW5nKGluaXRpYWxpemF0aW9uRGljdGlvbmFyeSwgQmVnaW5nVGVzdGluZ01vZGU6
OlJlc3VtZSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OndpbGxEZXN0cm95UGFnZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSkKQEAgLTE5Nyw3ICsyMTMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxl
OjpkaWRSZWNlaXZlTWVzc2FnZVRvCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBh
Y2tNZXNzYWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQmVn
aW5UZXN0IikpOwogICAgICAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlLCBhY2tNZXNz
YWdlTmFtZS5nZXQoKSwgYWNrTWVzc2FnZUJvZHkuZ2V0KCkpOwogCi0gICAgICAgIGJlZ2luVGVz
dGluZyhtZXNzYWdlQm9keURpY3Rpb25hcnkpOworICAgICAgICBiZWdpblRlc3RpbmcobWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5LCBCZWdpbmdUZXN0aW5nTW9kZTo6TmV3KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMzMyLDcgKzM0OCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJl
Y2VpdmVNZXNzYWdlVG8KICAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIldvcmtRdWV1ZVByb2Nlc3NlZENhbGxiYWNrIikpIHsKLSAgICAg
ICAgaWYgKCF0b3BMb2FkaW5nRnJhbWUoKSAmJiAhbV90ZXN0UnVubmVyLT53YWl0VG9EdW1wKCkp
CisgICAgICAgIGlmICghdG9wTG9hZGluZ0ZyYW1lKCkgJiYgIW1fdGVzdFJ1bm5lci0+c2hvdWxk
V2FpdFVudGlsRG9uZSgpKQogICAgICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnBhZ2UoKS0+ZHVt
cCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzc5LDcgKzM5NSw3IEBAIGJvb2wgSW5q
ZWN0ZWRCdW5kbGU6OmJvb2xlYW5Gb3JLZXkoV0tEaWMKICAgICByZXR1cm4gV0tCb29sZWFuR2V0
VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPih2YWx1ZSkpOwogfQogCi12b2lkIEluamVj
dGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoV0tEaWN0aW9uYXJ5UmVmIHNldHRpbmdzKQordm9pZCBJ
bmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKFdLRGljdGlvbmFyeVJlZiBzZXR0aW5ncywgQmVn
aW5nVGVzdGluZ01vZGUgdGVzdGluZ01vZGUpCiB7CiAgICAgbV9zdGF0ZSA9IFRlc3Rpbmc7CiAK
QEAgLTQxMyw3ICs0MjksNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoV0tE
aWN0CiAKICAgICBtX3Rlc3RSdW5uZXItPnNldFBsdWdpbnNFbmFibGVkKHRydWUpOwogCi0gICAg
bV90ZXN0UnVubmVyLT5zZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2xlYW5Gb3JL
ZXkoc2V0dGluZ3MsICJEdW1wRnJhbWVMb2FkRGVsZWdhdGVzIikpOwogICAgIG1fdGVzdFJ1bm5l
ci0+c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGZhbHNlKTsKICAgICBtX3Rlc3RSdW5uZXItPnNl
dFhTU0F1ZGl0b3JFbmFibGVkKGZhbHNlKTsKIApAQCAtNDM1LDYgKzQ1MCw5IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZyhXS0RpY3QKIAogICAgIHBhZ2UoKS0+cHJlcGFyZSgp
OwogCisgICAgaWYgKHRlc3RpbmdNb2RlICE9IEJlZ2luZ1Rlc3RpbmdNb2RlOjpOZXcpCisgICAg
ICAgIHJldHVybjsKKwogICAgIFdLQnVuZGxlQ2xlYXJBbGxEYXRhYmFzZXMobV9idW5kbGUpOwog
ICAgIFdLQnVuZGxlUGFnZUNsZWFyQXBwbGljYXRpb25DYWNoZShwYWdlKCktPnBhZ2UoKSk7CiAg
ICAgV0tCdW5kbGVSZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMobV9idW5kbGUpOwpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAkocmV2aXNpb24gMjMxMTYxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyAr
MTYxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShXS1R5cGVSZWYg
aW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CiAgICAgdm9pZCByZXNldExvY2FsU2V0dGluZ3MoKTsK
IAotICAgIHZvaWQgYmVnaW5UZXN0aW5nKFdLRGljdGlvbmFyeVJlZiBpbml0aWFsU2V0dGluZ3Mp
OworICAgIGVudW0gY2xhc3MgQmVnaW5nVGVzdGluZ01vZGUgeyBOZXcsIFJlc3VtZSB9OworICAg
IHZvaWQgYmVnaW5UZXN0aW5nKFdLRGljdGlvbmFyeVJlZiBpbml0aWFsU2V0dGluZ3MsIEJlZ2lu
Z1Rlc3RpbmdNb2RlKTsKIAogICAgIGJvb2wgYm9vbGVhbkZvcktleShXS0RpY3Rpb25hcnlSZWYs
IGNvbnN0IGNoYXIqIGtleSk7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHJldmlz
aW9uIDIzMTE2MSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODkwLDIyICs4OTAsMjIgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXAoKQogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5n
QnVpbGRlcjsKIAogICAgIHN3aXRjaCAoaW5qZWN0ZWRCdW5kbGUudGVzdFJ1bm5lcigpLT53aGF0
VG9EdW1wKCkpIHsKLSAgICBjYXNlIFRlc3RSdW5uZXI6OlJlbmRlclRyZWU6IHsKKyAgICBjYXNl
IFdoYXRUb0R1bXA6OlJlbmRlclRyZWU6IHsKICAgICAgICAgaWYgKGluamVjdGVkQnVuZGxlLnRl
c3RSdW5uZXIoKS0+aXNQcmludGluZygpKQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQodG9XVEZTdHJpbmcoYWRvcHRXSyhXS0J1bmRsZVBhZ2VDb3B5UmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb25Gb3JQcmludGluZyhtX3BhZ2UpKS5nZXQoKSkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhhZG9wdFdLKFdL
QnVuZGxlUGFnZUNvcHlSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihtX3BhZ2UpKS5n
ZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBUZXN0UnVubmVyOjpNYWlu
RnJhbWVUZXh0OgorICAgIGNhc2UgV2hhdFRvRHVtcDo6TWFpbkZyYW1lVGV4dDoKICAgICAgICAg
ZHVtcEZyYW1lVGV4dChXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUobV9wYWdlKSwgc3RyaW5nQnVp
bGRlcik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGVzdFJ1bm5lcjo6QWxsRnJhbWVzVGV4
dDoKKyAgICBjYXNlIFdoYXRUb0R1bXA6OkFsbEZyYW1lc1RleHQ6CiAgICAgICAgIGR1bXBBbGxG
cmFtZXNUZXh0KHN0cmluZ0J1aWxkZXIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRlc3RS
dW5uZXI6OkF1ZGlvOgorICAgIGNhc2UgV2hhdFRvRHVtcDo6QXVkaW86CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVGVzdFJ1bm5lcjo6RE9NQXNXZWJBcmNoaXZlOgorICAgIGNhc2UgV2hhdFRv
RHVtcDo6RE9NQXNXZWJBcmNoaXZlOgogICAgICAgICBkdW1wRE9NQXNXZWJBcmNoaXZlKGZyYW1l
LCBzdHJpbmdCdWlsZGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjAzNSw3ICsyMDM1
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmZyYW1lRGlkQ2hhbmdlTAogCiAgICAgaW5q
ZWN0ZWRCdW5kbGUuc2V0VG9wTG9hZGluZ0ZyYW1lKG51bGxwdHIpOwogCi0gICAgaWYgKGluamVj
dGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+d2FpdFRvRHVtcCgpKQorICAgIGlmIChpbmplY3RlZEJ1
bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZFdhaXRVbnRpbERvbmUoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGluamVjdGVkQnVuZGxlLnNob3VsZFByb2Nlc3NXb3JrUXVldWUoKSkgewpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyMzExNjEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxOCAr
NjIsMTUgQEAgUmVmPFRlc3RSdW5uZXI+IFRlc3RSdW5uZXI6OmNyZWF0ZSgpCiB9CiAKIFRlc3RS
dW5uZXI6OlRlc3RSdW5uZXIoKQotICAgIDogbV93aGF0VG9EdW1wKFJlbmRlclRyZWUpCi0gICAg
LCBtX3Nob3VsZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9ucyhmYWxzZSkKKyAgICA6IG1fc2hv
dWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKGZhbHNlKQogICAgICwgbV9zaG91bGREdW1w
QmFja0ZvcndhcmRMaXN0c0ZvckFsbFdpbmRvd3MoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEFsbG93
RWRpdGluZyh0cnVlKQogICAgICwgbV9zaG91bGRDbG9zZUV4dHJhV2luZG93cyhmYWxzZSkKICAg
ICAsIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBTdGF0dXNDYWxs
YmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBUaXRsZUNoYW5nZXMoZmFsc2UpCi0gICAgLCBtX2R1
bXBQaXhlbHModHJ1ZSkKICAgICAsIG1fZHVtcFNlbGVjdGlvblJlY3QoZmFsc2UpCiAgICAgLCBt
X2R1bXBGdWxsU2NyZWVuQ2FsbGJhY2tzKGZhbHNlKQotICAgICwgbV9kdW1wRnJhbWVMb2FkQ2Fs
bGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKGZhbHNl
KQogICAgICwgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhmYWxzZSkKQEAgLTgxLDcgKzc4LDYgQEAgVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgLCBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVD
YWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBEYXRhYmFzZUNhbGxiYWNrcyhmYWxzZSkKICAg
ICAsIG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YShmYWxzZSkKLSAg
ICAsIG1fd2FpdFRvRHVtcChmYWxzZSkKICAgICAsIG1fdGVzdFJlcGFpbnQoZmFsc2UpCiAgICAg
LCBtX3Rlc3RSZXBhaW50U3dlZXBIb3Jpem9udGFsbHkoZmFsc2UpCiAgICAgLCBtX2lzUHJpbnRp
bmcoZmFsc2UpCkBAIC0xMjcsMTEgKzEyMyw0NCBAQCB2b2lkIFRlc3RSdW5uZXI6OmRpc3BsYXlB
bmRUcmFja1JlcGFpbnRzCiAgICAgV0tCdW5kbGVQYWdlUmVzZXRUcmFja2VkUmVwYWludHMocGFn
ZSk7CiB9CiAKK2Jvb2wgVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcFBpeGVscygpIGNvbnN0Cit7Cisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJHZXREdW1wUGl4ZWxzIikpOworICAgIFdLVHlwZVJlZiBy
ZXN1bHQgPSAwOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwLCAmcmVzdWx0
KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmVzdWx0KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQo
KSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJl
Zj4ocmVzdWx0KSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0RHVtcFBpeGVscyhib29sIGR1
bXBQaXhlbHMpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXREdW1wUGl4ZWxzIikpOwor
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29s
ZWFuQ3JlYXRlKGR1bXBQaXhlbHMpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQo
KSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OmR1
bXBBc1RleHQoYm9vbCBkdW1wUGl4ZWxzKQogewotICAgIGlmIChtX3doYXRUb0R1bXAgPCBNYWlu
RnJhbWVUZXh0KQotICAgICAgICBtX3doYXRUb0R1bXAgPSBNYWluRnJhbWVUZXh0OwotICAgIG1f
ZHVtcFBpeGVscyA9IGR1bXBQaXhlbHM7CisgICAgaWYgKHdoYXRUb0R1bXAoKSA8IFdoYXRUb0R1
bXA6Ok1haW5GcmFtZVRleHQpCisgICAgICAgIHNldFdoYXRUb0R1bXAoV2hhdFRvRHVtcDo6TWFp
bkZyYW1lVGV4dCk7CisgICAgc2V0RHVtcFBpeGVscyhkdW1wUGl4ZWxzKTsKK30KKyAgICAKK1do
YXRUb0R1bXAgVGVzdFJ1bm5lcjo6d2hhdFRvRHVtcCgpIGNvbnN0Cit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJHZXRXaGF0VG9EdW1wIikpOworICAgIFdLVHlwZVJlZiByZXN1bHQgPSAwOwor
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwLCAmcmVzdWx0KTsKKyAgICBBU1NF
UlQoV0tHZXRUeXBlSUQocmVzdWx0KSA9PSBXS1VJbnQ2NEdldFR5cGVJRCgpKTsKKyAgICBhdXRv
IHVpbnQ2NHZhbHVlID0gV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4o
cmVzdWx0KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdoYXRUb0R1bXA+KHVpbnQ2NHZhbHVl
KTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRXaGF0VG9EdW1wKFdoYXRUb0R1bXAgd2hhdFRv
RHVtcCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFdoYXRUb0R1bXAiKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLVUludDY0Q3Jl
YXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3aGF0VG9EdW1wKSkpOworICAgIFdLQnVuZGxlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBlbmFibGVkLCBib29s
IHBlcm1pc3NpdmUpCkBAIC0xNTYsMTEgKzE4NSwyOCBAQCB2b2lkIFRlc3RSdW5uZXI6OndhaXRV
bnRpbERvd25sb2FkRmluaXNoCiAKIHZvaWQgVGVzdFJ1bm5lcjo6d2FpdFVudGlsRG9uZSgpCiB7
Ci0gICAgbV93YWl0VG9EdW1wID0gdHJ1ZTsKKyAgICBzZXRXYWl0VW50aWxEb25lKHRydWUpOwor
ICAgIC8vIEZJWE1FOiBXYXRjaGRvZyB0aW1lciBzaG91bGQgYmUgbW92ZWQgdG8gVUkgcHJvY2Vz
cyBpbiBvcmRlciB0byB0YWtlIHRoZSBlbGFwc2VkIHRpbWUgaW4gYW5vdGVociBwcm9jZXNzIGlu
dG8gYWNjb3VudC4KICAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnVzZVdhaXRU
b0R1bXBXYXRjaGRvZ1RpbWVyKCkpCiAgICAgICAgIGluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hk
b2dUaW1lcklmTmVlZGVkKCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0V2FpdFVudGlsRG9u
ZShib29sIHZhbHVlKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFdhaXRVbnRpbERv
bmUiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdL
LCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKworYm9vbCBUZXN0UnVubmVy
OjpzaG91bGRXYWl0VW50aWxEb25lKCkgY29uc3QKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJHZXRXYWl0VW50aWxEb25lIikpOworICAgIFdLVHlwZVJlZiByZXN1bHQgPSAwOworICAgIFdL
QnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIG1lc3NzYWdlTmFtZS5nZXQoKSwgMCwgJnJlc3VsdCk7CisgICAgQVNTRVJUKFdL
R2V0VHlwZUlEKHJlc3VsdCkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgIHJldHVybiBX
S0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJlc3VsdCkpOworfQor
CiB2b2lkIFRlc3RSdW5uZXI6OndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoKQogewogICAg
IGludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpOwpAQCAtMTgwLDE0ICsyMjYsMTQg
QEAgdm9pZCBUZXN0UnVubmVyOjpub3RpZnlEb25lKCkKICAgICBpZiAoIWluamVjdGVkQnVuZGxl
LmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fd2FpdFRvRHVt
cCAmJiAhaW5qZWN0ZWRCdW5kbGUudG9wTG9hZGluZ0ZyYW1lKCkpCisgICAgaWYgKHNob3VsZFdh
aXRVbnRpbERvbmUoKSAmJiAhaW5qZWN0ZWRCdW5kbGUudG9wTG9hZGluZ0ZyYW1lKCkpCiAgICAg
ICAgIGluamVjdGVkQnVuZGxlLnBhZ2UoKS0+ZHVtcCgpOwogCiAgICAgLy8gV2UgZG9uJ3QgY2Fs
bCBpbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSBoZXJlLCBldmVuIGlmIHdlIGNv
bnRpbnVlIHRvIHdhaXQgZm9yIGEgbG9hZCB0byBmaW5pc2guCiAgICAgLy8gVGhlIHRlc3QgaXMg
c3RpbGwgc3ViamVjdCB0byB0aW1lb3V0IGNoZWNraW5nIC0gaXQgaXMgYmV0dGVyIHRvIGRldGVj
dCBhbiBhc3luYyB0aW1lb3V0IGluc2lkZSBXZWJLaXRUZXN0UnVubmVyCiAgICAgLy8gdGhhbiB0
byBsZXQgd2Via2l0cHkgZG8gdGhhdCwgYmVjYXVzZSBXZWJLaXRUZXN0UnVubmVyIHdpbGwgZHVt
cCBwYXJ0aWFsIHJlc3VsdHMuCiAKLSAgICBtX3dhaXRUb0R1bXAgPSBmYWxzZTsKKyAgICBzZXRX
YWl0VW50aWxEb25lKGZhbHNlKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpmb3JjZUltbWVkaWF0
ZUNvbXBsZXRpb24oKQpAQCAtMTk2LDEwICsyNDIsMjYgQEAgdm9pZCBUZXN0UnVubmVyOjpmb3Jj
ZUltbWVkaWF0ZUNvbXBsZXRpbwogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmlu
ZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV93YWl0VG9EdW1wICYmIGluamVjdGVk
QnVuZGxlLnBhZ2UoKSkKKyAgICBpZiAoc2hvdWxkV2FpdFVudGlsRG9uZSgpICYmIGluamVjdGVk
QnVuZGxlLnBhZ2UoKSkKICAgICAgICAgaW5qZWN0ZWRCdW5kbGUucGFnZSgpLT5kdW1wKCk7CiAK
LSAgICBtX3dhaXRUb0R1bXAgPSBmYWxzZTsKKyAgICBzZXRXYWl0VW50aWxEb25lKGZhbHNlKTsK
K30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJv
b2wgdmFsdWUpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NzYWdlTmFtZShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0RHVtcEZyYW1lTG9hZENh
bGxiYWNrcyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5KEFk
b3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCitib29sIFRlc3RS
dW5uZXI6OnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKQoreworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkdldER1bXBGcmFtZUxvYWRDYWxsYmFja3MiKSk7CisgICAgV0tUeXBlUmVmIHJl
c3VsdCA9IDA7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc3NhZ2VOYW1lLmdldCgpLCAwLCAmcmVzdWx0
KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmVzdWx0KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQo
KSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJl
Zj4ocmVzdWx0KSk7CiB9CiAKIHVuc2lnbmVkIFRlc3RSdW5uZXI6OmltYWdlQ291bnRJbkdlbmVy
YWxQYXN0ZWJvYXJkKCkgY29uc3QKQEAgLTUyNyw4ICs1ODksOCBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldEF1ZGlvUmVzdWx0KEpTQ29udGV4CiAgICAgLy8gRklYTUUgKDEyMzA1OCk6IFVzZSBhIEpT
QyBBUEkgdG8gZ2V0IGJ1ZmZlciBjb250ZW50cyBvbmNlIHN1Y2ggaXMgZXhwb3NlZC4KICAgICBX
S1JldGFpblB0cjxXS0RhdGFSZWY+IGF1ZGlvRGF0YShBZG9wdFdLLCBXS0J1bmRsZUNyZWF0ZVdL
RGF0YUZyb21VSW50OEFycmF5KGluamVjdGVkQnVuZGxlLmJ1bmRsZSgpLCBjb250ZXh0LCBkYXRh
KSk7CiAgICAgaW5qZWN0ZWRCdW5kbGUuc2V0QXVkaW9SZXN1bHQoYXVkaW9EYXRhLmdldCgpKTsK
LSAgICBtX3doYXRUb0R1bXAgPSBBdWRpbzsKLSAgICBtX2R1bXBQaXhlbHMgPSBmYWxzZTsKKyAg
ICBzZXRXaGF0VG9EdW1wKFdoYXRUb0R1bXA6OkF1ZGlvKTsKKyAgICBzZXREdW1wUGl4ZWxzKGZh
bHNlKTsKIH0KIAogdW5zaWduZWQgVGVzdFJ1bm5lcjo6d2luZG93Q291bnQoKQpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJ
KHJldmlzaW9uIDIzMTE2MSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgorI2luY2x1
ZGUgIldoYXRUb0R1bXAuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLUmV0YWluUHRyLmg+CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRlc3RVUkwoV0tVUkxSZWYgdXJsKSB7IG1fdGVzdFVSTCA9IHVybDsgfQogICAgIHZvaWQgZHVt
cEFzVGV4dChib29sIGR1bXBQaXhlbHMpOwogICAgIHZvaWQgd2FpdEZvclBvbGljeURlbGVnYXRl
KCk7Ci0gICAgdm9pZCBkdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSB7IG1fd2hhdFRvRHVtcCA9IEFs
bEZyYW1lc1RleHQ7IH0KKyAgICB2b2lkIGR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpIHsgc2V0V2hh
dFRvRHVtcChXaGF0VG9EdW1wOjpBbGxGcmFtZXNUZXh0KTsgfQogICAgIHZvaWQgd2FpdFVudGls
RG93bmxvYWRGaW5pc2hlZCgpOwogICAgIHZvaWQgd2FpdFVudGlsRG9uZSgpOwogICAgIHZvaWQg
bm90aWZ5RG9uZSgpOwpAQCAtODcsMTAgKzg4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBX
aWxsQ2FjaGVSZXNwb25zZSgpIHsgbV9kdW1wV2lsbENhY2hlUmVzcG9uc2UgPSB0cnVlOyB9CiAg
ICAgdm9pZCBkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkgeyBtX2R1bXBB
cHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1w
RGF0YWJhc2VDYWxsYmFja3MoKSB7IG1fZHVtcERhdGFiYXNlQ2FsbGJhY2tzID0gdHJ1ZTsgfQot
ICAgIHZvaWQgZHVtcERPTUFzV2ViQXJjaGl2ZSgpIHsgbV93aGF0VG9EdW1wID0gRE9NQXNXZWJB
cmNoaXZlOyB9CisgICAgdm9pZCBkdW1wRE9NQXNXZWJBcmNoaXZlKCkgeyBzZXRXaGF0VG9EdW1w
KFdoYXRUb0R1bXA6OkRPTUFzV2ViQXJjaGl2ZSk7IH0KICAgICB2b2lkIGR1bXBQb2xpY3lEZWxl
Z2F0ZUNhbGxiYWNrcygpIHsgbV9kdW1wUG9saWN5Q2FsbGJhY2tzID0gdHJ1ZTsgfQogCi0gICAg
dm9pZCBzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldFNob3VsZER1bXBGcmFt
ZUxvYWRDYWxsYmFja3MoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRTaG91bGREdW1wUHJvZ3Jl
c3NGaW5pc2hlZENhbGxiYWNrKGJvb2wgdmFsdWUpIHsgbV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENh
bGxiYWNrID0gdmFsdWU7IH0KIAogICAgIC8vIFNwZWNpYWwgb3B0aW9ucy4KQEAgLTE5MiwxOCAr
MTkzLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJsb2NrQWxsUGx1Z2lucyhib29sKTsKICAg
ICB2b2lkIHNldFBsdWdpblN1cHBvcnRlZE1vZGUoSlNTdHJpbmdSZWYpOwogCi0gICAgZW51bSBX
aGF0VG9EdW1wIHsgUmVuZGVyVHJlZSwgTWFpbkZyYW1lVGV4dCwgQWxsRnJhbWVzVGV4dCwgQXVk
aW8sIERPTUFzV2ViQXJjaGl2ZSB9OwotICAgIFdoYXRUb0R1bXAgd2hhdFRvRHVtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2hhdFRvRHVtcDsgfQorICAgIFdoYXRUb0R1bXAgd2hhdFRvRHVtcCgpIGNv
bnN0OworICAgIHZvaWQgc2V0V2hhdFRvRHVtcChXaGF0VG9EdW1wKTsKIAogICAgIGJvb2wgc2hv
dWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRE
dW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnM7IH0KICAgICBib29sIHNob3VsZER1bXBCYWNrRm9y
d2FyZExpc3RzRm9yQWxsV2luZG93cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRHVtcEJhY2tG
b3J3YXJkTGlzdHNGb3JBbGxXaW5kb3dzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wRWRpdGluZ0Nh
bGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEVkaXRpbmdDYWxsYmFja3M7IH0KLSAgICBi
b29sIHNob3VsZER1bXBNYWluRnJhbWVTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
d2hhdFRvRHVtcCA9PSBSZW5kZXJUcmVlOyB9CisgICAgYm9vbCBzaG91bGREdW1wTWFpbkZyYW1l
U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB3aGF0VG9EdW1wKCkgPT0gV2hhdFRvRHVt
cDo6UmVuZGVyVHJlZTsgfQogICAgIGJvb2wgc2hvdWxkRHVtcFN0YXR1c0NhbGxiYWNrcygpIGNv
bnN0IHsgcmV0dXJuIG1fZHVtcFN0YXR1c0NhbGxiYWNrczsgfQogICAgIGJvb2wgc2hvdWxkRHVt
cFRpdGxlQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFRpdGxlQ2hhbmdlczsgfQotICAg
IGJvb2wgc2hvdWxkRHVtcFBpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFBpeGVsczsgfQor
ICAgIGJvb2wgc2hvdWxkRHVtcFBpeGVscygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRHVtcEZ1
bGxTY3JlZW5DYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBGdWxsU2NyZWVuQ2FsbGJh
Y2tzOyB9Ci0gICAgYm9vbCBzaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyBy
ZXR1cm4gbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOyB9CisgICAgYm9vbCBzaG91bGREdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKCk7CiAgICAgYm9vbCBzaG91bGREdW1wUHJvZ3Jlc3NGaW5pc2hlZENh
bGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrOyB9
CiAgICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1
cm4gbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUmVz
b3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFJlc291cmNlUmVz
cG9uc2VNSU1FVHlwZXM7IH0KQEAgLTIxOSw3ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uKCk7CiAKLSAgICBib29sIHdhaXRUb0R1bXAoKSBjb25zdCB7IHJldHVybiBtX3dhaXRU
b0R1bXA7IH0KKyAgICBib29sIHNob3VsZFdhaXRVbnRpbERvbmUoKSBjb25zdDsKICAgICB2b2lk
IHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoKTsKICAgICB2b2lkIGludmFsaWRhdGVXYWl0
VG9EdW1wV2F0Y2hkb2dUaW1lcigpOwogCkBAIC00NDksOSArNDUwLDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKICAgICB2b2lkIGluaXRpYWxpemVXYWl0VG9E
dW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCk7CiAKKyAgICB2b2lkIHNldER1bXBQaXhlbHMoYm9v
bCk7CisgICAgdm9pZCBzZXRXYWl0VW50aWxEb25lKGJvb2wpOworCiAgICAgV0tSZXRhaW5QdHI8
V0tVUkxSZWY+IG1fdGVzdFVSTDsgLy8gU2V0IGJ5IEluamVjdGVkQnVuZGxlUGFnZSBvbmNlIHBy
b3Zpc2lvbmFsIGxvYWQgc3RhcnRzLgogCi0gICAgV2hhdFRvRHVtcCBtX3doYXRUb0R1bXA7CiAg
ICAgYm9vbCBtX3Nob3VsZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9uczsKICAgICBib29sIG1f
c2hvdWxkRHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxXaW5kb3dzOwogCkBAIC00NjQsNyArNDY3
LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZHVtcFBpeGVsczsKICAgICBib29sIG1fZHVtcFNl
bGVjdGlvblJlY3Q7CiAgICAgYm9vbCBtX2R1bXBGdWxsU2NyZWVuQ2FsbGJhY2tzOwotICAgIGJv
b2wgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wUHJvZ3Jlc3NGaW5p
c2hlZENhbGxiYWNrOwogICAgIGJvb2wgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOwogICAg
IGJvb2wgbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlczsKQEAgLTQ3Myw3ICs0NzUsNiBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1wRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgYm9vbCBt
X2R1bXBQb2xpY3lDYWxsYmFja3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaXNhbGxvd0luY3Jl
YXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhOwotICAgIGJvb2wgbV93YWl0VG9EdW1wOyAvLyBU
cnVlIGlmIHdhaXRVbnRpbERvbmUoKSBoYXMgYmVlbiBjYWxsZWQsIGJ1dCBub3RpZnlEb25lKCkg
aGFzIG5vdCB5ZXQgYmVlbiBjYWxsZWQuCiAgICAgYm9vbCBtX3Rlc3RSZXBhaW50OwogICAgIGJv
b2wgbV90ZXN0UmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5OwogICAgIGJvb2wgbV9pc1ByaW50aW5n
OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMTE2
MSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAKIAkJODQx
Q0MwMEUxODExODVCRjAwNDJFOUI2IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4REQ3
NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyogV2ViS2l0VGVzdFJ1bm5lciAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lcjsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOUIwRDEzMkUyMDM2RDM0NjAwOEZDOEZC
IC8qIFdlYktpdFRlc3RSdW5uZXJBcHAtaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
cGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gIldlYktpdFRlc3RSdW5uZXJBcHAtaU9TLmVudGl0
bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMzZBMjcwMjA5NDUzQTAw
MDNFMDY1MSAvKiBXaGF0VG9EdW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdoYXRUb0R1bXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4NTEwMjcxQjlB
REU0ODAwNzQ0QUVCIC8qIGxpYldlYktpdFRlc3RSdW5uZXIuYSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXgg
PSAwOyBwYXRoID0gbGliV2ViS2l0VGVzdFJ1bm5lci5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQlBMTg1MTAzODFCOUFERjIyMDA3NDRBRUIgLyogV2ViS2l0VGVzdFJ1
bm5lci54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTg1MTAzOTFCOUFERkY4MDA3NDRBRUIgLyog
V2ViS2l0VGVzdFJ1bm5lckFwcC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJLaXRUZXN0UnVu
bmVyQXBwLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE2LDYgKzgx
Nyw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkzNzhENDQyMjEzMzQ2RDAwMDA2QTc3N0IgLyog
Y29uZmlnLmggKi8sCiAJCQkJQkM5OUE0ODQxMjA4OTAxQTAwN0U5RjA4IC8qIFN0cmluZ0Z1bmN0
aW9ucy5oICovLAorCQkJCTlCMzZBMjcwMjA5NDUzQTAwMDNFMDY1MSAvKiBXaGF0VG9EdW1wLmgg
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>