<?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>223844</bug_id>
          
          <creation_ts>2021-03-27 14:48:36 -0700</creation_ts>
          <short_desc>Allow DisplayRefreshMonitors to be more long-lived objects</short_desc>
          <delta_ts>2021-03-27 19:53:19 -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>WebCore Misc.</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>luiz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1744544</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-27 14:48:36 -0700</bug_when>
    <thetext>Allow DisplayRefreshMonitor to be more long-lived objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744547</commentid>
    <comment_count>1</comment_count>
      <attachid>424470</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-27 14:58:59 -0700</bug_when>
    <thetext>Created attachment 424470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744549</commentid>
    <comment_count>2</comment_count>
      <attachid>424471</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-27 15:07:58 -0700</bug_when>
    <thetext>Created attachment 424471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744550</commentid>
    <comment_count>3</comment_count>
      <attachid>424472</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-27 15:12:49 -0700</bug_when>
    <thetext>Created attachment 424472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744551</commentid>
    <comment_count>4</comment_count>
      <attachid>424472</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-27 15:31:03 -0700</bug_when>
    <thetext>Comment on attachment 424472
Patch

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

R=me assuming bots are happy

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:106
&gt; +    LockHolder lock(mutex());

I think we usually use locker for such variables, e.g:
Auto locker = holdLock(lock());

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:111
&gt; +    auto started = startNotificationMechanism();

I don’t think we need this local. Could write:
If(!startNotifocationMechanism())
    return false;

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:128
&gt; +    ++m_unscheduledFireCount;

Could be merged into the next line.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:135
&gt;          LockHolder lock(m_mutex);

Same comment about locker.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.h:75
&gt; +    Lock&amp; mutex() { return m_mutex; }

Why don’t we call this lock instead of mutex since this is what we call it nowadays?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744554</commentid>
    <comment_count>5</comment_count>
      <attachid>424473</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-27 15:48:03 -0700</bug_when>
    <thetext>Created attachment 424473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744569</commentid>
    <comment_count>6</comment_count>
      <attachid>424477</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-27 18:09:19 -0700</bug_when>
    <thetext>Created attachment 424477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744578</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-27 19:52:43 -0700</bug_when>
    <thetext>Committed r275144: &lt;https://commits.webkit.org/r275144&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424477.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744579</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-27 19:53:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/75926530&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424470</attachid>
            <date>2021-03-27 14:58:59 -0700</date>
            <delta_ts>2021-03-27 15:11:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223844-20210327145859.patch</filename>
            <type>text/plain</type>
            <size>44158</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY1MjI4Yzk0YzVlYWI2
YTU0NGY0MjIzMmE3NGY1N2RlMDRmNDBlNC4uZDQxOGE1NTRhNTE4OGNhNjBlNGFkMTUwN2U3NTUy
M2VkYmZlZDMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTAzLTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IERpc3Bs
YXlSZWZyZXNoTW9uaXRvciB0byBiZSBtb3JlIGxvbmctbGl2ZWQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODQ0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIGJlaGF2
aW9yIGZvciBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIHdhcyB0aGF0IHRoZXkgd2VyZSBjcmVhdGVk
IGFuZCBkZXN0cm95ZWQKKyAgICAgICAgZnJlcXVlbnRseSwgYXMgdGhlaXIgY2xpZW50cyBhcmUg
cmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkLiBJbiBhZGRpdGlvbiwgc29tZSBvZgorICAgICAg
ICB0aGVpciBzdWJjbGFzc2VzIGhhZCBkdXBsaWNhdGVkIGxvZ2ljIHJlbGF0ZWQgdG8gaG93IG9m
dGVuIHRoZXkgZmlyZWQgd2l0aG91dCBjbGllbnRzCisgICAgICAgIGJlZm9yZSB0aGV5IHdlcmUg
cmVtb3ZlZC4KKworICAgICAgICBUaGUgMToxIGNvcnJlc3BvbmRhbmNlIGJldHdlZW4gRGlzcGxh
eVJlZnJlc2hNb25pdG9ycyBhbmQgcGh5c2ljYWwgZGlzcGxheXMgbWFrZXMgdGhlbQorICAgICAg
ICBhIHVzZWZ1bCBwbGFjZSB0byBzdG9yZSBwZXItZGlzcGxheSBpbmZvcm1hdGlvbiAobGlrZSBy
ZWZyZXNoIHJhdGUpLCB3aGljaCBzaG91bGQKKyAgICAgICAgcGVyc2lzdCB3aGV0aGVyIG9yIG5v
dCB0aGV5IGhhdmUgY2xpZW50cywgc28gdGhpcyBjaGFuZ2UgcHJlcGFyZXMgZm9yIHRoYXQuCisg
ICAgICAgIAorICAgICAgICBUaGUgbWFpbiBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggYXJlOgorICAg
ICAgICAgIDEuIFByb3ZpZGUgdmlydHVhbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpL3N0
b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmdW5jdGlvbnMgb24KKyAgICAgICAgICAgICBEaXNw
bGF5UmVmcmVzaE1vbml0b3IgdGhhdCBzdWJjbGFzc2VzIGNhbiB1c2UgdG8gc3RhcnQgdGhlaXIg
Q1ZEaXNwbGF5TGluayBvciByZWxhdGVkCisgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KKwor
ICAgICAgICAgIDIuIFByb3ZpZGUgc29tZSBzaGFyZWQgbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQg
bG9naWMgdGhhdCBzdWJjbGFzc2VzIGNhbiB0dW5lIHRvCisgICAgICAgICAgICAgcHJvdmlkZSB0
aGUgaHlzdGVyZXNpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIHN0YXJ0L3N0b3Agb2YgdGhlIHVuZGVy
bHlpbmcKKyAgICAgICAgICAgICBub3RpZmljYXRpb24gbWVjaGFuaXNtLgorCisgICAgICAgICAz
LiBQcm92aWRlIGEgc2hhcmVkIGRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2goKSBmdW5jdGlvbiB0
aGF0IG1vc3QgaW1wbGVtZW50YXRpb25zCisgICAgICAgICAgICBjYW4gdXNlLgorCisgICAgICAg
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIgbm8gbG9uZ2VyIGRlc3Ryb3lzIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcnMgd2hlbiB0aGV5IGxvc2UKKyAgICAgICAgYWxsIHRoZWlyIGNsaWVudHMu
IFRoaXMgbWVhbnMgdGhhdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIGFyZSBuZXZlciByZW1vdmVk
LCBidXQgdGhlcmUKKyAgICAgICAgc2hvdWxkIG9ubHkgZXZlciBiZSBhcyBtYW55IGFzIHRoZXJl
IGFyZSBwaHlzaWNhbCBkaXNwbGF5cywgYW5kIHRoZXkgYXJlIG9ubHkKKyAgICAgICAgYWN0aXZl
IGlmIGJlaW5nIHNjaGVkdWxlZCBieSBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3Rv
cCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpm
aXJlZEFuZFJlYWNoZWRNYXhVbnNjaGVkdWxlZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJl
c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpzZXRNYXhVbnNjaGVk
dWxlZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6
Om11dGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxh
eUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yOjpzaG91bGRCZVRlcm1pbmF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnNldElzQWN0aXZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXI6OnVucmVnaXN0ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheVdhc1VwZGF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjp+RGlzcGxheVJlZnJlc2hN
b25pdG9yR3RrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uRnJhbWVDbG9ja1VwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpzdGFydE5vdGlmaWNhdGlvbk1lY2hh
bmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3BO
b3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yR3RrOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ckd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJl
c2hNb25pdG9ySU9TLm1tOgorICAgICAgICAoLVtXZWJEaXNwbGF5TGlua0hhbmRsZXIgc2V0UGF1
c2VkOl0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpEaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TOjp+RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcE5vdGlmaWNhdGlvbk1l
Y2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnJl
cXVlc3RSZWZyZXNoQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TOjpkaXNwbGF5TGlua0ZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6TGVn
YWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlm
aWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpzdGFy
dE5vdGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3JXaW46OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxh
eUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oOgorCiAyMDIxLTAzLTI3ICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogU2VuZCByZXBvcnQgdG8g
Ym90aCBjbGljayBzb3VyY2UgYW5kIGF0dHJpYnV0aW9uIGRlc3RpbmF0aW9uIHdlYnNpdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggY2Q3NjEzMDU3MjU5NmFhZjdmOTc4ZjJmMjMwZDFlMzIwMWIyZjExNy4uYTY5MTM4
YzE1YjhmNTc0NmRjNTVhZWE3MzhiZDI3MWUwMmU4YWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MSBAQAorMjAyMS0wMy0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KworICAgICAgICBBbGxvdyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgdG8gYmUgbW9yZSBsb25nLWxp
dmVkIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBleGlzdGluZyBiZWhhdmlvciBmb3IgRGlzcGxheVJlZnJlc2hNb25pdG9ycyB3YXMg
dGhhdCB0aGV5IHdlcmUgY3JlYXRlZCBhbmQgZGVzdHJveWVkCisgICAgICAgIGZyZXF1ZW50bHks
IGFzIHRoZWlyIGNsaWVudHMgYXJlIHJlZ2lzdGVyZWQgYW5kIHVucmVnaXN0ZXJlZC4gSW4gYWRk
aXRpb24sIHNvbWUgb2YKKyAgICAgICAgdGhlaXIgc3ViY2xhc3NlcyBoYWQgZHVwbGljYXRlZCBs
b2dpYyByZWxhdGVkIHRvIGhvdyBvZnRlbiB0aGV5IGZpcmVkIHdpdGhvdXQgY2xpZW50cworICAg
ICAgICBiZWZvcmUgdGhleSB3ZXJlIHJlbW92ZWQuCisKKyAgICAgICAgVGhlIDE6MSBjb3JyZXNw
b25kYW5jZSBiZXR3ZWVuIERpc3BsYXlSZWZyZXNoTW9uaXRvcnMgYW5kIHBoeXNpY2FsIGRpc3Bs
YXlzIG1ha2VzIHRoZW0KKyAgICAgICAgYSB1c2VmdWwgcGxhY2UgdG8gc3RvcmUgcGVyLWRpc3Bs
YXkgaW5mb3JtYXRpb24gKGxpa2UgcmVmcmVzaCByYXRlKSwgd2hpY2ggc2hvdWxkCisgICAgICAg
IHBlcnNpc3Qgd2hldGhlciBvciBub3QgdGhleSBoYXZlIGNsaWVudHMsIHNvIHRoaXMgY2hhbmdl
IHByZXBhcmVzIGZvciB0aGF0LgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlcyBp
biB0aGlzIHBhdGNoIGFyZToKKyAgICAgICAgICAxLiBQcm92aWRlIHZpcnR1YWwgc3RhcnROb3Rp
ZmljYXRpb25NZWNoYW5pc20oKS9zdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZnVuY3Rpb25z
IG9uCisgICAgICAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yIHRoYXQgc3ViY2xhc3NlcyBj
YW4gdXNlIHRvIHN0YXJ0IHRoZWlyIENWRGlzcGxheUxpbmsgb3IgcmVsYXRlZAorICAgICAgICAg
ICAgIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgICAyLiBQcm92aWRlIHNvbWUgc2hhcmVkIG1h
eFVuc2NoZWR1bGVkRmlyZUNvdW50IGxvZ2ljIHRoYXQgc3ViY2xhc3NlcyBjYW4gdHVuZSB0bwor
ICAgICAgICAgICAgIHByb3ZpZGUgdGhlIGh5c3RlcmVzaXMgdXNlZCB0byBjb250cm9sIHRoZSBz
dGFydC9zdG9wIG9mIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgbm90aWZpY2F0aW9uIG1l
Y2hhbmlzbS4KKworICAgICAgICAgMy4gUHJvdmlkZSBhIHNoYXJlZCBkaXNwYXRjaERpc3BsYXlE
aWRSZWZyZXNoKCkgZnVuY3Rpb24gdGhhdCBtb3N0IGltcGxlbWVudGF0aW9ucworICAgICAgICAg
ICAgY2FuIHVzZS4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAg
ICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
RGlzcGxheVJlZnJlc2hNb25pdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9EaXNwbGF5
TGluay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpEaXNwbGF5TGluayk6Cisg
ICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjp+RGlzcGxheUxpbmspOgorICAgICAgICAoV2Vi
S2l0OjpEaXNwbGF5TGluazo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5
TGluazo6bm90aWZ5T2JzZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVz
aENhbGxiYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAg
KFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZy
ZXNoKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtG
aXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMuaDoKKwogMjAyMS0wMy0yNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFNlbmQgcmVwb3J0IHRvIGJvdGgg
Y2xpY2sgc291cmNlIGFuZCBhdHRyaWJ1dGlvbiBkZXN0aW5hdGlvbiB3ZWJzaXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDczNGY5NGIxMGZmYmJlODE3YWZkMjE2
M2UwYzgzMzUwZjAwZDUyYmUuLmIyN2ZkMzYwMTI0MDk5NjM1NTA0ZjUyNzE4ODA2NTg3YzM4NWE1
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzcsNiArMTM3
LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgeyB9CiAKKyAgICBib29sIHN0
YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZv
aWQgc3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsIHsgfQorCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IEVtcHR5RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCkKICAgICAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci5jcHAKaW5kZXggODI2NDk2Y2JkNDg1ZTEwZmJkOWIzNDc2MWYwMGUyNzgwZDQ5
ZGJmMi4uYjcwODNhNGMyZTdkMGNmNWU5NDVlYzhjNDc4NGQ1YzA3Yzk5NWIxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwCkBAIC00NCw2ICs0NCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y29uc3RleHByIHVuc2lnbmVkIG1heFVuc2NoZWR1bGVkRmlyZUNvdW50IHsgMSB9OworCiBSZWZQ
dHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZURl
ZmF1bHREaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTgwLDYgKzgyLDEyIEBAIERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkK
IAogRGlzcGxheVJlZnJlc2hNb25pdG9yOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yKCkgPSBkZWZh
dWx0OwogCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3RvcCgpCit7CisgICAgc3RvcE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSgpOworICAgIHNldElzU2NoZWR1bGVkKGZhbHNlKTsKK30KKwog
dm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmFkZENsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQmIGNsaWVudCkKIHsKICAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwpAQCAtODks
MjMgKzk3LDY4IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZW1vdmVDbGllbnQoRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgaWYgKG1fY2xpZW50c1Rv
QmVOb3RpZmllZCkKICAgICAgICAgbV9jbGllbnRzVG9CZU5vdGlmaWVkLT5yZW1vdmUoJmNsaWVu
dCk7CisKICAgICByZXR1cm4gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAotdm9pZCBE
aXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKCkKK2Jvb2wgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluUnVuTG9vcCgpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CisgICAgCisgICAg
aWYgKGlzU2NoZWR1bGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYXV0byBzdGFy
dGVkID0gc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKTsKKyAgICBpZiAoIXN0YXJ0ZWQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZmlyZWRBbmRSZWFj
aGVkTWF4VW5zY2hlZHVsZWRGaXJlQ291bnQoKQoreworICAgIEFTU0VSVChtdXRleCgpLmlzTG9j
a2VkKCkpOworCisgICAgaWYgKGlzU2NoZWR1bGVkKCkpIHsKKyAgICAgICAgbV91bnNjaGVkdWxl
ZEZpcmVDb3VudCA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICArK21f
dW5zY2hlZHVsZWRGaXJlQ291bnQ7CisgICAgcmV0dXJuIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQg
PiBtX21heFVuc2NoZWR1bGVkRmlyZUNvdW50OworfQogCit2b2lkIERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9tdXRleCk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFt
IDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3IgIiA8PCB0aGlzIDw8ICIgZGlzcGxheURpZFJlZnJl
c2ggZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQoKSA8PCAiIHNjaGVkdWxlZCAiIDw8IG1fc2No
ZWR1bGVkIDw8ICIgdW5zY2hlZHVsZWRGaXJlQ291bnQgIiA8PCBtX3Vuc2NoZWR1bGVkRmlyZUNv
dW50KTsKLSAgICAgICAgaWYgKCFtX3NjaGVkdWxlZCkKLSAgICAgICAgICAgICsrbV91bnNjaGVk
dWxlZEZpcmVDb3VudDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV91bnNjaGVkdWxlZEZp
cmVDb3VudCA9IDA7CiAKLSAgICAgICAgbV9zY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgLy8g
VGhpcyBtYXkgYmUgb2ZmIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgaWYgKCFpc1ByZXZpb3Vz
RnJhbWVEb25lKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTE9HX1dJVEhfU1RS
RUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxh
eUxpbmtGaXJlZCBmb3IgZGlzcGxheSAiIDw8IGRpc3BsYXlJRCgpIDw8ICIgLSBzY2hlZHVsZWQg
IiA8PCBpc1NjaGVkdWxlZCgpIDw8ICIgdW5zY2hlZHVsZWRGaXJlQ291bnQgIiA8PCBtX3Vuc2No
ZWR1bGVkRmlyZUNvdW50IDw8ICIgb2YgIiA8PCBtX21heFVuc2NoZWR1bGVkRmlyZUNvdW50KTsK
KyAgICAgICAgaWYgKGZpcmVkQW5kUmVhY2hlZE1heFVuc2NoZWR1bGVkRmlyZUNvdW50KCkpIHsK
KyAgICAgICAgICAgIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNldElzU2NoZWR1bGVkKGZhbHNlKTsKKyAgICAg
ICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7CiAgICAgfQorICAgIGRpc3BhdGNoRGlz
cGxheURpZFJlZnJlc2goKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3Bh
dGNoRGlzcGxheURpZFJlZnJlc2goKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgZGlzcGxheURpZFJlZnJlc2goKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6
OmRpc3BsYXlEaWRSZWZyZXNoKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgLy8gVGhlIGNhbGwgYmFjayBjYW4gY2F1c2UgYWxsIG91ciBjbGllbnRzIHRvIGJlIHVucmVn
aXN0ZXJlZCwgc28gd2UgbmVlZCB0byBwcm90ZWN0CiAgICAgLy8gYWdhaW5zdCBkZWxldGlvbiB1
bnRpbCB0aGUgZW5kIG9mIHRoZSBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCmluZGV4IDc5M2NlNGU2
YWM2ZDczMDA0ZDM5ODlkMzA1ZWUwZTIxMWJiYmMzMzcuLmNmZjAzMGNmOTVjZDBhMDcxNjU5NGM0
MzE0MTUwYWVmYzcwNmRlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCkBAIC00MiwxNiArNDIsMTQgQEAg
Y2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PERpc3BsYXlSZWZyZXNoTW9uaXRvcj4KIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPERpc3Bs
YXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlKERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqLCBQ
bGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RGlzcGxheVJl
ZnJlc2hNb25pdG9yKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIHsg
fQorICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1BlclNlY29uZCkg
eyB9CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBjYWxsYmFjayByZXF1ZXN0IHdhcyBzY2hlZHVs
ZWQsIGZhbHNlIGlmIGl0IGNvdWxkbid0IGJlCiAgICAgLy8gKGUuZy4sIGhhcmR3YXJlIHJlZnJl
c2ggaXMgbm90IGF2YWlsYWJsZSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxs
YmFjaygpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgeyB9CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKTsKIAogICAgIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKICAgICAKQEAgLTYxLDIz
ICs1OSwyNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIAotICAgIGJvb2wgc2hvdWxkQmVUZXJt
aW5hdGVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBtYXhJbmFjdGl2ZUZpcmVD
b3VudCA9IDE7Ci0gICAgICAgIHJldHVybiAhbV9zY2hlZHVsZWQgJiYgbV91bnNjaGVkdWxlZEZp
cmVDb3VudCA+IG1heEluYWN0aXZlRmlyZUNvdW50OwotICAgIH0KLQogICAgIHN0YXRpYyBSZWZQ
dHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25p
dG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZGlzcGxheUxpbmtGaXJlZCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKIAogICAgIGZy
aWVuZCBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOwotICAgIAotICAgIExvY2sm
IG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQogCi0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZlOyB9Ci0gICAgdm9pZCBzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkg
eyBtX2FjdGl2ZSA9IGFjdGl2ZTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCk7CisKKyAgICB2b2lkIHNldE1heFVuc2NoZWR1bGVk
RmlyZUNvdW50KHVuc2lnbmVkIGNvdW50KSB7IG1fbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQgPSBj
b3VudDsgfQorICAgIGJvb2wgZmlyZWRBbmRSZWFjaGVkTWF4VW5zY2hlZHVsZWRGaXJlQ291bnQo
KTsKKworICAgIExvY2smIG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQorICAgIAorICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgc3RhcnQgd2FzIHN1Y2Nlc3NmdWwuCisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgPSAwOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkg
PSAwOwogCiAgICAgYm9vbCBpc1NjaGVkdWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZWR1bGVk
OyB9CiAgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIHNjaGVkdWxlZCkgeyBtX3NjaGVkdWxl
ZCA9IHNjaGVkdWxlZDsgfQpAQCAtOTIsMTIgKzkxLDE0IEBAIHByaXZhdGU6CiAKICAgICBIYXNo
U2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+IG1fY2xpZW50czsKICAgICBIYXNoU2V0
PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+KiBtX2NsaWVudHNUb0JlTm90aWZpZWQgeyBu
dWxscHRyIH07Ci0gICAgTG9jayBtX211dGV4OwogICAgIFBsYXRmb3JtRGlzcGxheUlEIG1fZGlz
cGxheUlEIHsgMCB9OwotICAgIGludCBtX3Vuc2NoZWR1bGVkRmlyZUNvdW50IHsgMCB9OyAvLyBO
dW1iZXIgb2YgdGltZXMgdGhlIGRpc3BsYXkgbGluayBoYXMgZmlyZWQgd2l0aCBubyBjbGllbnRz
LgotICAgIGJvb2wgbV9hY3RpdmUgeyB0cnVlIH07CisKKyAgICBMb2NrIG1fbXV0ZXg7CiAgICAg
Ym9vbCBtX3NjaGVkdWxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3ByZXZpb3VzRnJhbWVEb25l
IHsgdHJ1ZSB9OworICAgIAorICAgIHVuc2lnbmVkIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgeyAw
IH07CisgICAgdW5zaWduZWQgbV9tYXhVbnNjaGVkdWxlZEZpcmVDb3VudCB7IDAgfTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKaW5kZXggZThkZmVjN2ExZDU0MzM0
YWY1Mjc1OGM4OWMwNjNlYjUyNWE1ZWM3MC4uMmMzOTdiOTk4ZmJmMWU2NWZlOWJkMWYxMmQ4MzMz
ZWY3YmNiZDRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKQEAgLTcyLDEx
ICs3Miw5IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6dW5yZWdpc3RlckNs
aWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQmCiAgICAgYXV0byBpbmRleCA9IGZpbmRN
b25pdG9yRm9yRGlzcGxheUlEKGNsaWVudERpc3BsYXlJRCk7CiAgICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQogICAgICAgICByZXR1cm47CisKICAgICBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25p
dG9yPiBtb25pdG9yID0gbV9tb25pdG9yc1tpbmRleF0ubW9uaXRvcjsKLSAgICBpZiAobW9uaXRv
ci0+cmVtb3ZlQ2xpZW50KGNsaWVudCkpIHsKLSAgICAgICAgaWYgKCFtb25pdG9yLT5oYXNDbGll
bnRzKCkpCi0gICAgICAgICAgICBtX21vbml0b3JzLnJlbW92ZShpbmRleCk7Ci0gICAgfQorICAg
IG1vbml0b3ItPnJlbW92ZUNsaWVudChjbGllbnQpOwogfQogCiB2b2lkIERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXI6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChEaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQmIGNsaWVudCwgRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZCkKQEAgLTk0LDE2ICs5Miw5IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlcjo6c2NoZWR1bGVBbmltYXRpb24oRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmRp
c3BsYXlEaWRSZWZyZXNoKERpc3BsYXlSZWZyZXNoTW9uaXRvciYgbW9uaXRvcikKK3ZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2goRGlzcGxheVJlZnJl
c2hNb25pdG9yJikKIHsKLSAgICBpZiAoIW1vbml0b3Iuc2hvdWxkQmVUZXJtaW5hdGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFt
IDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpkaXNwbGF5RGlkUmVmcmVzaCgpIC0g
ZGVzdHJveWluZyBtb25pdG9yICIgPDwgJm1vbml0b3IpOwotCi0gICAgbV9tb25pdG9ycy5yZW1v
dmVGaXJzdE1hdGNoaW5nKFsmXShhdXRvJiBtb25pdG9yV3JhcHBlcikgewotICAgICAgICByZXR1
cm4gbW9uaXRvcldyYXBwZXIubW9uaXRvciA9PSAmbW9uaXRvcjsKLSAgICB9KTsKKyAgICAvLyBN
YXliZSB3ZSBzaG91bGQgcmVtb3ZlIG1vbml0b3JzIHRoYXQgaGF2ZW4ndCBiZWVuIGFjdGl2ZSBm
b3Igc29tZSB0aW1lLgogfQogCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIERpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCYgY2xpZW50KQpAQCAtMTIwLDcgKzExMSw3IEBAIHZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmRpc3Bs
YXlXYXNVcGRhdGVkKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKICAgICBhdXRvKiBt
b25pdG9yID0gbW9uaXRvckZvckRpc3BsYXlJRChkaXNwbGF5SUQpOwotICAgIGlmIChtb25pdG9y
ICYmIG1vbml0b3ItPmhhc1JlcXVlc3RlZFJlZnJlc2hDYWxsYmFjaygpKQorICAgIGlmIChtb25p
dG9yKQogICAgICAgICBtb25pdG9yLT5kaXNwbGF5TGlua0ZpcmVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1v
bml0b3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckd0ay5jcHAKaW5kZXggNzhjZjVkZjNhNzg0ZWI3YWM2MDRmNTQzMmQ5
ZDZmOTJlNjJkYjhmMy4uNWVlNzQ3NDdlMmM4NmNmNDI3YTYzNWNlMDIzMGE5NDM3YmEwZjQyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0ay5jcHAKQEAgLTM5LDYgKzM5LDE2IEBAIERp
c3BsYXlSZWZyZXNoTW9uaXRvckd0azo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCkKIH0KIAogRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjp+RGlz
cGxheVJlZnJlc2hNb25pdG9yR3RrKCkKK3sKKyAgICBBU1NFRVJUKCFtX3dpbmRvdyk7Cit9CisK
K3N0YXRpYyB2b2lkIG9uRnJhbWVDbG9ja1VwZGF0ZShHZGtGcmFtZUNsb2NrKiwgRGlzcGxheVJl
ZnJlc2hNb25pdG9yR3RrKiBtb25pdG9yKQoreworICAgIG1vbml0b3ItPmRpc3BsYXlMaW5rRmly
ZWQoKTsKK30KKworYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3AoKQogewogICAg
IGlmICghbV93aW5kb3cpCiAgICAgICAgIHJldHVybjsKQEAgLTQ2LDUwICs1Niw0NCBAQCBEaXNw
bGF5UmVmcmVzaE1vbml0b3JHdGs6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsoKQogICAgIGF1
dG8qIGZyYW1lQ2xvY2sgPSBndGtfd2lkZ2V0X2dldF9mcmFtZV9jbG9jayhtX3dpbmRvdyk7CiAg
ICAgQVNTRVJUKGZyYW1lQ2xvY2spOwogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
bWF0Y2hlZChmcmFtZUNsb2NrLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCBudWxscHRyLCBu
dWxscHRyLCB0aGlzKTsKLSAgICBnZGtfZnJhbWVfY2xvY2tfZW5kX3VwZGF0aW5nKGZyYW1lQ2xv
Y2spOwotICAgIGd0a193aWRnZXRfZGVzdHJveShtX3dpbmRvdyk7Ci19CiAKLXN0YXRpYyB2b2lk
IG9uRnJhbWVDbG9ja1VwZGF0ZShHZGtGcmFtZUNsb2NrKiwgRGlzcGxheVJlZnJlc2hNb25pdG9y
R3RrKiBtb25pdG9yKQotewotICAgIG1vbml0b3ItPmRpc3BsYXlMaW5rRmlyZWQoKTsKKyAgICBn
dGtfd2lkZ2V0X2Rlc3Ryb3kobV93aW5kb3cpOworICAgIG1fd2luZG93ID0gbnVsbHB0cjsKIH0K
IAotYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2so
KQorYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFu
aXNtKCkKIHsKLSAgICBpZiAoIWlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobV9jbG9ja0lzQWN0aXZlKQorICAgICAgICByZXR1cm47CiAKKyAgICBHZGtGcmFtZUNs
b2NrKiBmcmFtZUNsb2NrOwogICAgIGlmICghbV93aW5kb3cpIHsKICAgICAgICAgLy8gR2RrRnJh
bWVDbG9ja0lkbGUgaXMgcHJpdmF0ZSBpbiBHREssIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgdG9w
bGV2ZWwgdG8gZ2V0IGl0cyBmcmFtZSBjbG9jay4KICAgICAgICAgbV93aW5kb3cgPSBndGtfb2Zm
c2NyZWVuX3dpbmRvd19uZXcoKTsKICAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fd2luZG93
KTsKIAotICAgICAgICBhdXRvKiBmcmFtZUNsb2NrID0gZ3RrX3dpZGdldF9nZXRfZnJhbWVfY2xv
Y2sobV93aW5kb3cpOworICAgICAgICBmcmFtZUNsb2NrID0gZ3RrX3dpZGdldF9nZXRfZnJhbWVf
Y2xvY2sobV93aW5kb3cpOwogICAgICAgICBBU1NFUlQoZnJhbWVDbG9jayk7Ci0KICAgICAgICAg
Z19zaWduYWxfY29ubmVjdChmcmFtZUNsb2NrLCAidXBkYXRlIiwgR19DQUxMQkFDSyhvbkZyYW1l
Q2xvY2tVcGRhdGUpLCB0aGlzKTsKLSAgICAgICAgZ2RrX2ZyYW1lX2Nsb2NrX2JlZ2luX3VwZGF0
aW5nKGZyYW1lQ2xvY2spOworICAgIH0gZWxzZQorICAgICAgICBmcmFtZUNsb2NrID0gZ3RrX3dp
ZGdldF9nZXRfZnJhbWVfY2xvY2sobV93aW5kb3cpOwogCi0gICAgICAgIHNldElzQWN0aXZlKHRy
dWUpOwotICAgIH0KKyAgICBBU1NFUlQoZnJhbWVDbG9jayk7CisgICAgZ2RrX2ZyYW1lX2Nsb2Nr
X2JlZ2luX3VwZGF0aW5nKGZyYW1lQ2xvY2spOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG11dGV4
KCkpOwotICAgIHNldElzU2NoZWR1bGVkKHRydWUpOwotICAgIHJldHVybiB0cnVlOworICAgIG1f
Y2xvY2tJc0FjdGl2ZSA9IHRydWU7CiB9CiAKLXZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yR3Rr
OjpkaXNwbGF5TGlua0ZpcmVkKCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpzdG9w
Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
ayhtdXRleCgpKTsKLSAgICAgICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7Ci0g
ICAgfQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgZGlzcGxheURpZFJlZnJlc2go
KTsKKyAgICBpZiAoIW1fY2xvY2tJc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byogZnJhbWVDbG9jayA9IGd0a193aWRnZXRfZ2V0X2ZyYW1lX2Nsb2NrKG1fd2luZG93KTsKKyAg
ICBBU1NFUlQoZnJhbWVDbG9jayk7CisgICAgZ2RrX2ZyYW1lX2Nsb2NrX2VuZF91cGRhdGluZyhm
cmFtZUNsb2NrKTsKKworICAgIG1fY2xvY2tJc0FjdGl2ZSA9IGZhbHNlOyAgICAKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0ay5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0ay5oCmluZGV4IDUz
Y2FiN2YxYzViMzZhYjgyZTFjNGYzNTI3YzliZDA2YzZlYzE5N2MuLjkxZGZmYzFlMDMzYzBjODYy
ZDE4MDBmMDZkODUzNWJhNTViOWYzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmgK
QEAgLTQyLDEzICs0MiwxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVz
aE1vbml0b3JHdGsoKTsKIAotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIG92ZXJyaWRlOwot
ICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvckd0ayhQbGF0Zm9ybURpc3BsYXlJRCk7
CiAKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVj
aGFuaXNtKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmlu
YWw7CisKICAgICBHdGtXaWRnZXQqIG1fd2luZG93IHsgbnVsbHB0ciB9OworICAgIGJvb2wgbV9j
bG9ja0lzQWN0aXZlIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAppbmRleCBmOTlkNjRlNmMwYjU2OTg1NDUzZTFkZDUy
MDk3NmIyMGYyYjAyYzJkLi4xMDUwOGU4OTBkNTAwNDAxYTdjYTMwZjE0NDNlYzEzMDcxZDQ0Njhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oCkBAIC00MywxNCArNDMsMTcgQEAgcHVi
bGljOgogICAgIAogICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUygpOwogCi0g
ICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZXF1ZXN0UmVm
cmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TKFBsYXRmb3JtRGlzcGxheUlEKTsKKworICAgIHZvaWQgc3RvcCgp
IGZpbmFsOworICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKKyAg
ICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKKwogICAgIFJldGFpblB0
cjxXZWJEaXNwbGF5TGlua0hhbmRsZXI+IG1faGFuZGxlcjsKKyAgICBib29sIG1fZGlzcGxheUxp
bmtJc0FjdGl2ZSB7IGZhbHNlIH07CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJ
T1MubW0KaW5kZXggNzFjYjgwZDVmMTRmY2E3YjI5NDY5MmY5YmE3MjliODZjMGFkYjI4OS4uY2Rj
MTZmYzQ2ZGQ4NzMzYTE2MDhmNzY4ZTU5YzUwYWIyYTc5YzdkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJl
c2hNb25pdG9ySU9TLm1tCkBAIC0yOCwxMSArMjgsMTQgQEAKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIK
ICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FEaXNwbGF5TGluay5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogdXNpbmcgV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOworCiBAaW50ZXJmYWNlIFdlYkRpc3BsYXlMaW5r
SGFuZGxlciA6IE5TT2JqZWN0CiB7CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKiBtX21v
bml0b3I7CkBAIC00Miw2ICs0NSw3IEBAIEBpbnRlcmZhY2UgV2ViRGlzcGxheUxpbmtIYW5kbGVy
IDogTlNPYmplY3QKIC0gKGlkKWluaXRXaXRoTW9uaXRvcjooRGlzcGxheVJlZnJlc2hNb25pdG9y
SU9TKiltb25pdG9yOwogLSAodm9pZClzZXRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ6KE5TSW50
ZWdlcilwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7CiAtICh2b2lkKWhhbmRsZURpc3BsYXlMaW5r
OihDQURpc3BsYXlMaW5rICopc2VuZGVyOworLSAodm9pZClzZXRQYXVzZWQ6KEJPT0wpcGF1c2Vk
OwogLSAodm9pZClpbnZhbGlkYXRlOwogCiBAZW5kCkBAIC03OCw2ICs4MiwxMSBAQCAtICh2b2lk
KWhhbmRsZURpc3BsYXlMaW5rOihDQURpc3BsYXlMaW5rICopc2VuZGVyCiAgICAgbV9tb25pdG9y
LT5kaXNwbGF5TGlua0ZpcmVkKCk7CiB9CiAKKy0gKHZvaWQpc2V0UGF1c2VkOihCT09MKXBhdXNl
ZAoreworICAgIFttX2Rpc3BsYXlMaW5rIHNldFBhdXNlZDpwYXVzZWRdOworfQorCiAtICh2b2lk
KWludmFsaWRhdGUKIHsKICAgICBbbV9kaXNwbGF5TGluayBpbnZhbGlkYXRlXTsKQEAgLTg4LDM5
ICs5Nyw1MSBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3RleHByIHVuc2ln
bmVkIG1heFVuc2NoZWR1bGVkRmlyZUNvdW50IHsgMSB9OworCiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1M6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUyhQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQpCiAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQogeworICAgIHNldE1h
eFVuc2NoZWR1bGVkRmlyZUNvdW50KG1heFVuc2NoZWR1bGVkRmlyZUNvdW50KTsKIH0KIAogRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TOjp+RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKCkKK3sKKyAg
ICBBU1NFUlQoIW1faGFuZGxlcik7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9T
OjpzdG9wKCkKIHsKICAgICBbbV9oYW5kbGVyIGludmFsaWRhdGVdOworICAgIG1faGFuZGxlciA9
IG5pbDsKIH0KIAotYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnJlcXVlc3RSZWZyZXNo
Q2FsbGJhY2soKQorYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0
aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBpZiAoIWlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobV9kaXNwbGF5TGlua0lzQWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGlmICghbV9oYW5kbGVyKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNw
bGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZp
Y2F0aW9uTWVjaGFuaXNtIC0gY3JlYXRpbmcgV2ViRGlzcGxheUxpbmtIYW5kbGVyIik7CiAgICAg
ICAgIG1faGFuZGxlciA9IGFkb3B0TlMoW1tXZWJEaXNwbGF5TGlua0hhbmRsZXIgYWxsb2NdIGlu
aXRXaXRoTW9uaXRvcjp0aGlzXSk7Ci0gICAgICAgIHNldElzQWN0aXZlKHRydWUpOwogICAgIH0K
IAotICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5
TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0
aW9uTWVjaGFuaXNtIC0gc3RhcnRpbmcgV2ViRGlzcGxheUxpbmtIYW5kbGVyIik7CisgICAgW21f
aGFuZGxlciBzZXRQYXVzZWQ6Tk9dOworICAgIG1fZGlzcGxheUxpbmtJc0FjdGl2ZSA9IHRydWU7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpk
aXNwbGF5TGlua0ZpcmVkKCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpzdG9wTm90
aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBpZiAoIWlzUHJldmlvdXNGcmFtZURvbmUoKSkK
KyAgICBpZiAoIW1fZGlzcGxheUxpbmtJc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7Ci0gICAgZGlzcGxheURpZFJlZnJlc2goKTsK
KyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiRGlzcGxheVJlZnJl
c2hNb25pdG9ySU9TOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtIC0gcGF1c2luZyBXZWJEaXNw
bGF5TGlua0hhbmRsZXIiKTsKKyAgICBbbV9oYW5kbGVyIHNldFBhdXNlZDpZRVNdOworICAgIG1f
ZGlzcGxheUxpbmtJc0FjdGl2ZSA9IGZhbHNlOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCA0ZGNlZjkzOWMzNmUwZmZkNzg5NDJiNDgw
M2M2NjljM2NiOWRlN2E3Li5jNzQ1ODAwNjFlYzEzMWY2YTA3Njc5ZTY4Y2ZkN2IxNzY2NTMwOWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtMjgs
MTYgKzI4LDIxIEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSA8UXVhcnR6
Q29yZS9RdWFydHpDb3JlLmg+CisjaW5jbHVkZSA8Q29yZVZpZGVvL0NWRGlzcGxheUxpbmsuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25zdGV4cHIgdW5zaWduZWQgbWF4VW5zY2hl
ZHVsZWRGaXJlQ291bnQgeyAyMCB9OworCiBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6
OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyhQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQpCiAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQogewogICAgIEFTU0VS
VCghaXNJbldlYlByb2Nlc3MoKSk7CisgICAgc2V0TWF4VW5zY2hlZHVsZWRGaXJlQ291bnQobWF4
VW5zY2hlZHVsZWRGaXJlQ291bnQpOwogfQogCiBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWM6On5MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMoKQpAQCAtNDcsMTAgKzUyLDggQEAg
TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjp+TGVnYWN5RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjKCkKIAogdm9pZCBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnN0b3AoKQog
ewotICAgIGlmICghbV9kaXNwbGF5TGluaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1ZEaXNw
bGF5TGlua1N0b3AobV9kaXNwbGF5TGluayk7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpz
dG9wKCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkxlZ2Fj
eURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcCBmb3IgZGlwc2xheSAiIDw8IGRpc3BsYXlJ
RCgpIDw8ICIgZGVzdHJveWluZyBkaXNwbGF5IGxpbmsiKTsKICAgICBDVkRpc3BsYXlMaW5rUmVs
ZWFzZShtX2Rpc3BsYXlMaW5rKTsKICAgICBtX2Rpc3BsYXlMaW5rID0gbnVsbHB0cjsKIH0KQEAg
LTYyLDQ3ICs2NSw1MiBAQCBzdGF0aWMgQ1ZSZXR1cm4gZGlzcGxheUxpbmtDYWxsYmFjayhDVkRp
c3BsYXlMaW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCosIGNvbnN0CiAgICAgcmV0dXJuIGtDVlJl
dHVyblN1Y2Nlc3M7CiB9CiAKLWJvb2wgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpy
ZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKK3ZvaWQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCkKIHsKLSAgICBpZiAoIWlzQWN0aXZlKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBpZiAobV9kaXNw
bGF5TGluaykKKyAgICAgICAgICAgIGRpc3BsYXlEaWRSZWZyZXNoKCk7CisgICAgfSk7Cit9CiAK
K2Jvb2wgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlmaWNhdGlvbk1l
Y2hhbmlzbSgpCit7CiAgICAgaWYgKCFtX2Rpc3BsYXlMaW5rKSB7Ci0gICAgICAgIHNldElzQWN0
aXZlKGZhbHNlKTsKLSAgICAgICAgQ1ZSZXR1cm4gZXJyb3IgPSBDVkRpc3BsYXlMaW5rQ3JlYXRl
V2l0aENHRGlzcGxheShkaXNwbGF5SUQoKSwgJm1fZGlzcGxheUxpbmspOworICAgICAgICBhdXRv
IGVycm9yID0gQ1ZEaXNwbGF5TGlua0NyZWF0ZVdpdGhDR0Rpc3BsYXkoZGlzcGxheUlEKCksICZt
X2Rpc3BsYXlMaW5rKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGVycm9yID0gQ1ZEaXNwbGF5TGlua1NldE91dHB1dENhbGxiYWNrKG1f
ZGlzcGxheUxpbmssIGRpc3BsYXlMaW5rQ2FsbGJhY2ssIHRoaXMpOwogICAgICAgICBpZiAoZXJy
b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgICAgIGVycm9yID0g
Q1ZEaXNwbGF5TGlua1N0YXJ0KG1fZGlzcGxheUxpbmspOworICAgIGlmICghbV9kaXNwbGF5TGlu
a0lzQWN0aXZlKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFt
IDw8ICJMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnN0YXJ0Tm90aWZpY2F0aW9uTWVj
aGFuaXNtIGZvciBkaXNwbGF5ICIgPDwgZGlzcGxheUlEKCkgPDwgIiBzdGFydGluZyBkaXNwbGF5
IGxpbmsiKTsKKworICAgICAgICBhdXRvIGVycm9yID0gQ1ZEaXNwbGF5TGlua1N0YXJ0KG1fZGlz
cGxheUxpbmspOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgc2V0SXNBY3RpdmUodHJ1ZSk7CisgICAgICAgIAorICAgICAgICBtX2Rpc3Bs
YXlMaW5rSXNBY3RpdmUgPSB0cnVlOwogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9jayhtdXRl
eCgpKTsKLSAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlMaW5rRmlyZWQoKQor
dm9pZCBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNo
YW5pc20oKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtdXRleCgpKTsKLSAgICBpZiAoIWlzUHJl
dmlvdXNGcmFtZURvbmUoKSkKKyAgICBpZiAoIW1fZGlzcGxheUxpbmtJc0FjdGl2ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7Ci0KLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gewotICAgICAgICBpZiAobV9kaXNwbGF5TGluaykKLSAgICAgICAgICAgIGRpc3BsYXlE
aWRSZWZyZXNoKCk7Ci0gICAgfSk7CisgICAgaWYgKG1fZGlzcGxheUxpbmspIHsKKyAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkxlZ2FjeURpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSBmb3IgZGlzcGxheSAiIDw8
IGRpc3BsYXlJRCgpIDw8ICIgc3RvcHBpbmcgZGlzcGxheSBsaW5rIik7CisgICAgICAgIENWRGlz
cGxheUxpbmtTdG9wKG1fZGlzcGxheUxpbmspOworICAgIH0KKyAgICAgICAgCisgICAgbV9kaXNw
bGF5TGlua0lzQWN0aXZlID0gZmFsc2U7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWMuaAppbmRleCAzM2EzYTc4Yjk1MjFkNjAyZDA3Yzc3Yzg4Nzk0YTk0MDQ4YzUwNjJm
Li44YThiMjgwZTc2N2FiNWMxY2NlZWFkZjZhZmFhYWNhYmU4MTQyNTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xl
Z2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCkBAIC00MywxNiArNDMsMjAgQEAgcHVibGlj
OgogICAgIAogICAgIHZpcnR1YWwgfkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYygpOwog
Ci0gICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCkgZmluYWw7Ci0gICAgYm9vbCByZXF1ZXN0UmVm
cmVzaENhbGxiYWNrKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wKCkgZmluYWw7Ci0KIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKFBsYXRmb3JtRGlz
cGxheUlEKTsKIAorICAgIHZvaWQgZGlzcGF0Y2hEaXNwbGF5RGlkUmVmcmVzaCgpIGZpbmFsOwor
CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyAgICBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVj
aGFuaXNtKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmlu
YWw7CisKICAgICBDVkRpc3BsYXlMaW5rUmVmIG1fZGlzcGxheUxpbmsgeyBudWxscHRyIH07Cisg
ICAgYm9vbCBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgeyBmYWxzZSB9OwogfTsKIAotfQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
cldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJl
ZnJlc2hNb25pdG9yV2luLmNwcAppbmRleCAyZmE0NzAwMzlhZmY3OWY3ZDUxMDVhOGJlM2QzODM4
NGRjNGY5ZDI0Li5iOTYyNDc1ZjEyMGJlMzQ5ZGYzMDNmMjRhNjM1YzJlNTliNTJjMTYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJl
c2hNb25pdG9yV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcApAQCAtMzUsMjcgKzM1LDIxIEBAIFJlZlB0
cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4+IERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6Y3Jl
YXRlKFBsYXRmb3JtRGlzcGxhCiAKIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yV2luKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICA6IERpc3Bs
YXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpCi0gICAgLCBtX3RpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCkKKyAg
ICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpkaXNwbGF5TGlua0ZpcmVkKQogewogfQogCi1ib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcldp
bjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcldp
bjo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKQogewotICAgIGlmICghaXNBY3RpdmUoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDE2X21zKTsK
LSAgICBzZXRJc0FjdGl2ZSh0cnVlKTsKLSAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICBp
ZiAoIW1fdGltZXIuaXNBY3RpdmUpCisgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMTZf
bXMpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
V2luOjpkaXNwbGF5TGlua0ZpcmVkKCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpz
dG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBpZiAoIWlzUHJldmlvdXNGcmFtZURv
bmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxz
ZSk7Ci0gICAgZGlzcGxheURpZFJlZnJlc2goKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oCmluZGV4
IGEyMTg4ZTJhMTExNTZjZTY3Y2E0OGFlYTdlMjBlZjk2NjM1Mjc4YzIuLmVmZTU3NmUyZjRjNDIw
Zjg4ZWI2ZWQ4NjVjYWY2ZjhiMTBmYjFiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2lu
LmgKQEAgLTM0LDExICszNCwxMiBAQCBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4gOiBw
dWJsaWMgRGlzcGxheVJlZnJlc2hNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRy
PERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbj4gY3JlYXRlKFBsYXRmb3JtRGlzcGxheUlEKTsKIAot
ICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVzdFJl
ZnJlc2hDYWxsYmFjaygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERpc3Bs
YXlSZWZyZXNoTW9uaXRvcldpbihQbGF0Zm9ybURpc3BsYXlJRCk7CisKKyAgICBib29sIHN0YXJ0
Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9u
TWVjaGFuaXNtKCkgZmluYWw7CisKICAgICBSdW5Mb29wOjpUaW1lcjxEaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4+IG1fdGltZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
aW5kZXggYjVhOWRhZWQwNWQyODBmYzY2OGZhZTBlOTljMzExMDBjODdjMjhmZi4uMDMyYzQ1YzNi
YmU3MWZlM2ZhZjNjY2Q1ZWYxZGY4MmY1YTFmYTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRE
aXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yOjppbnZhbGlkYXRlKCkKICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiB9CiAKKy8vIEZJ
WE1FOiBSZWZhY3RvciB0byBzaGFyZSBtb3JlIGNvZGUgd2l0aCBEaXNwbGF5UmVmcmVzaE1vbml0
b3I6OmRpc3BsYXlMaW5rRmlyZWQoKS4KIHZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0
b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQogewogICAgIGJvb2wgc2hvdWxkSGFuZGxlRGlz
cGxheVJlZnJlc2hOb3RpZmljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgKaW5kZXggYTU5ZThlYTAwZTRmMmNhZWU4NWVlZjc2YmM4OGJlN2JkODFjMGFmYS4uYjQ5
YThiMmRiZWYwNDlhN2U0NDEzZDJlODJkZTk1MWQyNzdjZTYzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvci5oCkBAIC01Nyw2ICs1Nyw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQsIENs
aWVudCYpOwogCisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5h
bCB7IH0KKwogICAgIHZvaWQgZGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOwogICAgIFJ1bkxvb3A6
OlRpbWVyPFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yPiBtX2Rpc3BsYXlSZWZyZXNoVGlt
ZXI7CiAgICAgQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
RGlzcGxheUxpbmsuY3BwCmluZGV4IDA5NWMwOWNiN2RmNjI5NDZmNWU0NzRhZWM2NjM4MWY1NjA1
OGYxOTAuLmJmNzg2Mjc3MzYyZTMwOWRhYzkyNjYwYjYyOTdhN2UxZjBhNTkwNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcApAQCAtMjksOCArMjksMTAg
QEAKICNpZiBIQVZFKENWRElTUExBWUxJTkspCiAKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQwLDYgKzQy
LDggQEAgY29uc3RleHByIHVuc2lnbmVkIG1heEZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMgeyAy
MCB9OwogRGlzcGxheUxpbms6OkRpc3BsYXlMaW5rKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCkKICAgICA6IG1fZGlzcGxheUlEKGRpc3BsYXlJRCkKIHsKKyAgICBMT0dfV0lU
SF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gQ3JlYXRpbmcgRGlzcGxheUxp
bmsgZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQpOworCiAgICAgLy8gRklYTUU6IFdlIGNhbiBn
ZXQgaGVyZSB3aXRoIGRpc3BsYXlJRCA9PSAwICh3ZWJraXQub3JnL2IvMjEyMTIwKSwgaW4gd2hp
Y2ggY2FzZSBDVkRpc3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlzcGxheSgpCiAgICAgLy8gcHJvYmFi
bHkgZGVmYXVsdHMgdG8gdGhlIG1haW4gc2NyZWVuLgogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikp
OwpAQCAtNTgsNiArNjIsOCBAQCBEaXNwbGF5TGluazo6RGlzcGxheUxpbmsoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogCiBEaXNwbGF5TGluazo6fkRpc3BsYXlMaW5rKCkK
IHsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gRGVz
dHJveWluZyBEaXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEKTsKKwogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmlj
YXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAgIEFTU0VSVChtX2Rpc3BsYXlMaW5rKTsKICAgICBp
ZiAoIW1fZGlzcGxheUxpbmspCkBAIC04NSw2ICs5MSw3IEBAIHZvaWQgRGlzcGxheUxpbms6OmFk
ZE9ic2VydmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGlzcGxheUxpbmtPYnNlcnZl
cklECiAgICAgfQogCiAgICAgaWYgKCFDVkRpc3BsYXlMaW5rSXNSdW5uaW5nKG1fZGlzcGxheUxp
bmspKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJb
VUkgXSBEaXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgc3RhcnRp
bmcgQ1ZEaXNwbGF5TGluayIpOwogICAgICAgICBDVlJldHVybiBlcnJvciA9IENWRGlzcGxheUxp
bmtTdGFydChtX2Rpc3BsYXlMaW5rKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCJDb3VsZCBub3Qgc3RhcnQgdGhlIGRpc3BsYXkgbGluazogJWQiLCBlcnJv
cik7CkBAIC0xMzQsMTMgKzE0MSwxNiBAQCB2b2lkIERpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZl
cnNEaXNwbGF5V2FzUmVmcmVzaGVkKCkKIAogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb2JzZXJ2
ZXJzTG9jayk7CiAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAo
KyttX2ZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMgPj0gbWF4RmlyZUNvdW50V2l0aG91dE9ic2Vy
dmVycykKKyAgICAgICAgaWYgKCsrbV9maXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJzID49IG1heEZp
cmVDb3VudFdpdGhvdXRPYnNlcnZlcnMpIHsKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShE
aXNwbGF5TGluaywgc3RyZWFtIDw8ICJbVUkgXSBEaXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8
IG1fZGlzcGxheUlEIDw8ICIgZmlyZWQgIiA8PCBtX2ZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMg
PDwgIiB0aW1lcyB3aXRoIG5vIG9ic2VydmVyczsgc3RvcHBpbmcgQ1ZEaXNwbGF5TGluayIpOwog
ICAgICAgICAgICAgQ1ZEaXNwbGF5TGlua1N0b3AobV9kaXNwbGF5TGluayk7CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2ZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMg
PSAwOwogCiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9vYnNlcnZlcnMua2V5cygpKSB7
CisgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbVUkgXSBE
aXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgc2VuZGluZyBmb3Ig
Y29ubmVjdGlvbiAiIDw8IGNvbm5lY3Rpb24tPnVuaXF1ZUlEKCkgPDwgIiBvbiBiYWNrZ3JvdW5k
IHF1ZXVlICIgPDwgc2hvdWxkU2VuZElQQ09uQmFja2dyb3VuZFF1ZXVlKTsKICAgICAgICAgaWYg
KHNob3VsZFNlbmRJUENPbkJhY2tncm91bmRRdWV1ZSkKICAgICAgICAgICAgIGNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6RGlzcGxheVdhc1JlZnJlc2hlZChtX2Rp
c3BsYXlJRCksIDApOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5kZXggNzZk
YmNiZTA1MTdhMTM5MTY5MzA0ODMxMmQwZTAxOTVlM2UxY2Q0ZC4uNjg1NTUzODE4ZjRiYmZkZWMz
ZGMyNTkzOTMxMzU3ZjNkZDk5ZmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaApAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJl
c2hNb25pdG9yKCk7CiAKICAgICB2b2lkIHNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChXZWJD
b3JlOjpGcmFtZXNQZXJTZWNvbmQpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hD
YWxsYmFjaygpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIGZp
bmFsOwogCiAgICAgdm9pZCBkaWRVcGRhdGVMYXllcnMoKTsKICAgICB2b2lkIHVwZGF0ZURyYXdp
bmdBcmVhKFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhJik7CkBAIC00OSw2ICs0OSw5IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJl
c2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYSYpOwogCisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBm
aW5hbCB7IH0KKwogICAgIFdlYWtQdHI8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+IG1fZHJh
d2luZ0FyZWE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9y
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQppbmRleCBmZmJmYzA1ODFhZWQ0
ZTNhYzIzZjA3Y2ExYTQyZGUyMzk4NzUxZDU1Li43NTkyZjU2MTAzZjIwYmM5ZmJlNzFhZjViNGQ0
NmJhMmNjMzM3OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0KQEAgLTI2LDYgKzI2LDkgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJl
c2hNb25pdG9yLmgiCiAKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTQ5LDEzICs1MiwxNCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZy
ZXNoTW9uaXRvcjo6c2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1BlcgogCiBib29s
IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxs
YmFjaygpCiB7Ci0gICAgaWYgKCFtX2RyYXdpbmdBcmVhIHx8ICFpc0FjdGl2ZSgpKQorICAgIGlm
ICghbV9kcmF3aW5nQXJlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFpc1Nj
aGVkdWxlZCgpKQorICAgIGlmICghaXNTY2hlZHVsZWQoKSkgeworICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJl
c2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrIC0gdHJpZ2dlcmluZyB1cGRhdGUiKTsK
ICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWEmPigqbV9kcmF3aW5nQXJlYS5nZXQoKSku
dHJpZ2dlclJlbmRlcmluZ1VwZGF0ZSgpOworICAgIH0KIAotICAgIHNldElzQWN0aXZlKHRydWUp
OwogICAgIHNldElzU2NoZWR1bGVkKHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCA3NTVjY2U2ZjcwNDQyYWRkMDQ3MGMzYjY3
YTFkOTI3MmI1ZTBhZTBkLi5mNGEyNDdmNmU3NTQzZTg1Y2U0MGNhNzFjNDY4M2MyNGFkMTYxZGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtMzksNDkgKzM5LDYxIEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisvLyBBdm9p
ZCByZXBlYXRlZCBzdGFydC9zdG9wIElQQyB3aGVuIHJlc2NoZWR1bGVkIGluc2lkZSB0aGUgY2Fs
bGJhY2suCitjb25zdGV4cHIgdW5zaWduZWQgbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQgeyAxIH07
CisKIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICA6IERpc3BsYXlSZWZyZXNoTW9uaXRvcihk
aXNwbGF5SUQpCiAgICAgLCBtX29ic2VydmVySUQoRGlzcGxheUxpbmtPYnNlcnZlcklEOjpnZW5l
cmF0ZSgpKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAgIHNldE1heFVuc2No
ZWR1bGVkRmlyZUNvdW50KG1heFVuc2NoZWR1bGVkRmlyZUNvdW50KTsKIH0KIAogRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKCkKIHsKLSAgICBpZiAo
bV9oYXNTZW50TWVzc2FnZSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTdG9w
RGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSksIDApOworICAgIC8vIHN0b3Ao
KSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICBBU1NFUlQoIW1fZGlzcGxheUxpbmtJc0Fj
dGl2ZSk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwYXRjaERpc3Bs
YXlEaWRSZWZyZXNoKCkKK3sKKyAgICBpZiAoIW1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxv
b3ApCisgICAgICAgIHJldHVybjsKKworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGF0
Y2hEaXNwbGF5RGlkUmVmcmVzaCgpOwogfQogCi1ib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKQogewotICAgIGlmICghaXNBY3RpdmUoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2Rpc3BsYXlMaW5rSXNBY3RpdmUpCisg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFtX2hhc1NlbnRNZXNzYWdlKSB7Ci0gICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGluayhtX29ic2VydmVy
SUQsIGRpc3BsYXlJRCgpKSwgMCk7Ci0gICAgICAgIG1faGFzU2VudE1lc3NhZ2UgPSB0cnVlOwor
ICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2sgLSBzdGFydGluZyIpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGluayhtX29ic2VydmVySUQsIGRp
c3BsYXlJRCgpKSwgMCk7CisgICAgaWYgKCFtX3J1bkxvb3BPYnNlcnZlcikgeworICAgICAgICAv
LyBUaGUgUnVuTG9vcE9ic2VydmVyIHJlcGVhdHMuCiAgICAgICAgIG1fcnVuTG9vcE9ic2VydmVy
ID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3RoaXNdKCkg
ewogICAgICAgICAgICAgbV9maXJzdENhbGxiYWNrSW5DdXJyZW50UnVubG9vcCA9IHRydWU7CiAg
ICAgICAgIH0pOwotICAgICAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpKTsKICAgICB9Ci0gICAgCi0gICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7CisK
KyAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKTsK
KyAgICBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgPSB0cnVlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVkKCkKK3Zv
aWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBpZiAoIW1fZmlyc3RDYWxsYmFj
a0luQ3VycmVudFJ1bmxvb3ApCisgICAgaWYgKCFtX2Rpc3BsYXlMaW5rSXNBY3RpdmUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3AgPSBmYWxz
ZTsKLQotICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlMaW5rRmlyZWQoKSBmb3IgZGlzcGxheSAiIDw8IGRp
c3BsYXlJRCgpKTsKLQotICAgIGRpc3BsYXlEaWRSZWZyZXNoKCk7CisgICAgTE9HX1dJVEhfU1RS
RUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVx
dWVzdFJlZnJlc2hDYWxsYmFjayAtIHN0b3BwaW5nIik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpTdG9wRGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSksIDApOwor
ICAgIG1fcnVuTG9vcE9ic2VydmVyLT5pbnZhbGlkYXRlKCk7CisgICAgCisgICAgbV9kaXNwbGF5
TGlua0lzQWN0aXZlID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5oCmluZGV4IDUzYTE1ZmViMjkwMzcwNzNhM2YzMDIyODRmZjUy
OWRmZWI0MzZhMWMuLjJlNjVjNGMwMjhkNzI0MGZmZTIzMWQ1MjExZTE5OGY1Y2JmZDNjYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgKQEAgLTM5LDIwICszOSwyMSBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMoZGlzcGxheUlEKSk7CiAgICAgfQotICAgIAorCiAgICAgdmlydHVhbCB+RGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjKCk7Ci0gICAgCi0gICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCkgZmlu
YWw7Ci0gICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgZmluYWw7Ci0gICAgCisKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheUlEKTsKLSAgICAKLSAgICBib29sIGhhc1JlcXVlc3RlZFJlZnJlc2hDYWxs
YmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFzU2VudE1lc3NhZ2U7IH0KKworICAgIHZv
aWQgZGlzcGF0Y2hEaXNwbGF5RGlkUmVmcmVzaCgpIGZpbmFsOworCisgICAgYm9vbCBzdGFydE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3RvcE5vdGlmaWNhdGlvbk1l
Y2hhbmlzbSgpIGZpbmFsOwogCiAgICAgRGlzcGxheUxpbmtPYnNlcnZlcklEIG1fb2JzZXJ2ZXJJ
RDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPiBtX3J1bkxv
b3BPYnNlcnZlcjsKLSAgICBib29sIG1faGFzU2VudE1lc3NhZ2UgeyBmYWxzZSB9OworCisgICAg
Ym9vbCBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9maXJzdENh
bGxiYWNrSW5DdXJyZW50UnVubG9vcCB7IGZhbHNlIH07CiB9OwogCg==
</data>
<flag name="commit-queue"
          id="444151"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424471</attachid>
            <date>2021-03-27 15:07:58 -0700</date>
            <delta_ts>2021-03-27 16:00:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223844-20210327150757.patch</filename>
            <type>text/plain</type>
            <size>44162</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY1MjI4Yzk0YzVlYWI2
YTU0NGY0MjIzMmE3NGY1N2RlMDRmNDBlNC4uZDQxOGE1NTRhNTE4OGNhNjBlNGFkMTUwN2U3NTUy
M2VkYmZlZDMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTAzLTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IERpc3Bs
YXlSZWZyZXNoTW9uaXRvciB0byBiZSBtb3JlIGxvbmctbGl2ZWQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODQ0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIGJlaGF2
aW9yIGZvciBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIHdhcyB0aGF0IHRoZXkgd2VyZSBjcmVhdGVk
IGFuZCBkZXN0cm95ZWQKKyAgICAgICAgZnJlcXVlbnRseSwgYXMgdGhlaXIgY2xpZW50cyBhcmUg
cmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkLiBJbiBhZGRpdGlvbiwgc29tZSBvZgorICAgICAg
ICB0aGVpciBzdWJjbGFzc2VzIGhhZCBkdXBsaWNhdGVkIGxvZ2ljIHJlbGF0ZWQgdG8gaG93IG9m
dGVuIHRoZXkgZmlyZWQgd2l0aG91dCBjbGllbnRzCisgICAgICAgIGJlZm9yZSB0aGV5IHdlcmUg
cmVtb3ZlZC4KKworICAgICAgICBUaGUgMToxIGNvcnJlc3BvbmRhbmNlIGJldHdlZW4gRGlzcGxh
eVJlZnJlc2hNb25pdG9ycyBhbmQgcGh5c2ljYWwgZGlzcGxheXMgbWFrZXMgdGhlbQorICAgICAg
ICBhIHVzZWZ1bCBwbGFjZSB0byBzdG9yZSBwZXItZGlzcGxheSBpbmZvcm1hdGlvbiAobGlrZSBy
ZWZyZXNoIHJhdGUpLCB3aGljaCBzaG91bGQKKyAgICAgICAgcGVyc2lzdCB3aGV0aGVyIG9yIG5v
dCB0aGV5IGhhdmUgY2xpZW50cywgc28gdGhpcyBjaGFuZ2UgcHJlcGFyZXMgZm9yIHRoYXQuCisg
ICAgICAgIAorICAgICAgICBUaGUgbWFpbiBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggYXJlOgorICAg
ICAgICAgIDEuIFByb3ZpZGUgdmlydHVhbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpL3N0
b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmdW5jdGlvbnMgb24KKyAgICAgICAgICAgICBEaXNw
bGF5UmVmcmVzaE1vbml0b3IgdGhhdCBzdWJjbGFzc2VzIGNhbiB1c2UgdG8gc3RhcnQgdGhlaXIg
Q1ZEaXNwbGF5TGluayBvciByZWxhdGVkCisgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KKwor
ICAgICAgICAgIDIuIFByb3ZpZGUgc29tZSBzaGFyZWQgbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQg
bG9naWMgdGhhdCBzdWJjbGFzc2VzIGNhbiB0dW5lIHRvCisgICAgICAgICAgICAgcHJvdmlkZSB0
aGUgaHlzdGVyZXNpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIHN0YXJ0L3N0b3Agb2YgdGhlIHVuZGVy
bHlpbmcKKyAgICAgICAgICAgICBub3RpZmljYXRpb24gbWVjaGFuaXNtLgorCisgICAgICAgICAz
LiBQcm92aWRlIGEgc2hhcmVkIGRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2goKSBmdW5jdGlvbiB0
aGF0IG1vc3QgaW1wbGVtZW50YXRpb25zCisgICAgICAgICAgICBjYW4gdXNlLgorCisgICAgICAg
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIgbm8gbG9uZ2VyIGRlc3Ryb3lzIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcnMgd2hlbiB0aGV5IGxvc2UKKyAgICAgICAgYWxsIHRoZWlyIGNsaWVudHMu
IFRoaXMgbWVhbnMgdGhhdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIGFyZSBuZXZlciByZW1vdmVk
LCBidXQgdGhlcmUKKyAgICAgICAgc2hvdWxkIG9ubHkgZXZlciBiZSBhcyBtYW55IGFzIHRoZXJl
IGFyZSBwaHlzaWNhbCBkaXNwbGF5cywgYW5kIHRoZXkgYXJlIG9ubHkKKyAgICAgICAgYWN0aXZl
IGlmIGJlaW5nIHNjaGVkdWxlZCBieSBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3Rv
cCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpm
aXJlZEFuZFJlYWNoZWRNYXhVbnNjaGVkdWxlZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJl
c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpzZXRNYXhVbnNjaGVk
dWxlZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6
Om11dGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxh
eUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yOjpzaG91bGRCZVRlcm1pbmF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnNldElzQWN0aXZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXI6OnVucmVnaXN0ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheVdhc1VwZGF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjp+RGlzcGxheVJlZnJlc2hN
b25pdG9yR3RrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uRnJhbWVDbG9ja1VwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpzdGFydE5vdGlmaWNhdGlvbk1lY2hh
bmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3BO
b3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yR3RrOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ckd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJl
c2hNb25pdG9ySU9TLm1tOgorICAgICAgICAoLVtXZWJEaXNwbGF5TGlua0hhbmRsZXIgc2V0UGF1
c2VkOl0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpEaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TOjp+RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcE5vdGlmaWNhdGlvbk1l
Y2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnJl
cXVlc3RSZWZyZXNoQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TOjpkaXNwbGF5TGlua0ZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6TGVn
YWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlm
aWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpzdGFy
dE5vdGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3JXaW46OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxh
eUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oOgorCiAyMDIxLTAzLTI3ICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogU2VuZCByZXBvcnQgdG8g
Ym90aCBjbGljayBzb3VyY2UgYW5kIGF0dHJpYnV0aW9uIGRlc3RpbmF0aW9uIHdlYnNpdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggY2Q3NjEzMDU3MjU5NmFhZjdmOTc4ZjJmMjMwZDFlMzIwMWIyZjExNy4uYTY5MTM4
YzE1YjhmNTc0NmRjNTVhZWE3MzhiZDI3MWUwMmU4YWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MSBAQAorMjAyMS0wMy0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KworICAgICAgICBBbGxvdyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgdG8gYmUgbW9yZSBsb25nLWxp
dmVkIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBleGlzdGluZyBiZWhhdmlvciBmb3IgRGlzcGxheVJlZnJlc2hNb25pdG9ycyB3YXMg
dGhhdCB0aGV5IHdlcmUgY3JlYXRlZCBhbmQgZGVzdHJveWVkCisgICAgICAgIGZyZXF1ZW50bHks
IGFzIHRoZWlyIGNsaWVudHMgYXJlIHJlZ2lzdGVyZWQgYW5kIHVucmVnaXN0ZXJlZC4gSW4gYWRk
aXRpb24sIHNvbWUgb2YKKyAgICAgICAgdGhlaXIgc3ViY2xhc3NlcyBoYWQgZHVwbGljYXRlZCBs
b2dpYyByZWxhdGVkIHRvIGhvdyBvZnRlbiB0aGV5IGZpcmVkIHdpdGhvdXQgY2xpZW50cworICAg
ICAgICBiZWZvcmUgdGhleSB3ZXJlIHJlbW92ZWQuCisKKyAgICAgICAgVGhlIDE6MSBjb3JyZXNw
b25kYW5jZSBiZXR3ZWVuIERpc3BsYXlSZWZyZXNoTW9uaXRvcnMgYW5kIHBoeXNpY2FsIGRpc3Bs
YXlzIG1ha2VzIHRoZW0KKyAgICAgICAgYSB1c2VmdWwgcGxhY2UgdG8gc3RvcmUgcGVyLWRpc3Bs
YXkgaW5mb3JtYXRpb24gKGxpa2UgcmVmcmVzaCByYXRlKSwgd2hpY2ggc2hvdWxkCisgICAgICAg
IHBlcnNpc3Qgd2hldGhlciBvciBub3QgdGhleSBoYXZlIGNsaWVudHMsIHNvIHRoaXMgY2hhbmdl
IHByZXBhcmVzIGZvciB0aGF0LgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlcyBp
biB0aGlzIHBhdGNoIGFyZToKKyAgICAgICAgICAxLiBQcm92aWRlIHZpcnR1YWwgc3RhcnROb3Rp
ZmljYXRpb25NZWNoYW5pc20oKS9zdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZnVuY3Rpb25z
IG9uCisgICAgICAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yIHRoYXQgc3ViY2xhc3NlcyBj
YW4gdXNlIHRvIHN0YXJ0IHRoZWlyIENWRGlzcGxheUxpbmsgb3IgcmVsYXRlZAorICAgICAgICAg
ICAgIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgICAyLiBQcm92aWRlIHNvbWUgc2hhcmVkIG1h
eFVuc2NoZWR1bGVkRmlyZUNvdW50IGxvZ2ljIHRoYXQgc3ViY2xhc3NlcyBjYW4gdHVuZSB0bwor
ICAgICAgICAgICAgIHByb3ZpZGUgdGhlIGh5c3RlcmVzaXMgdXNlZCB0byBjb250cm9sIHRoZSBz
dGFydC9zdG9wIG9mIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgbm90aWZpY2F0aW9uIG1l
Y2hhbmlzbS4KKworICAgICAgICAgMy4gUHJvdmlkZSBhIHNoYXJlZCBkaXNwYXRjaERpc3BsYXlE
aWRSZWZyZXNoKCkgZnVuY3Rpb24gdGhhdCBtb3N0IGltcGxlbWVudGF0aW9ucworICAgICAgICAg
ICAgY2FuIHVzZS4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAg
ICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
RGlzcGxheVJlZnJlc2hNb25pdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9EaXNwbGF5
TGluay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpEaXNwbGF5TGluayk6Cisg
ICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjp+RGlzcGxheUxpbmspOgorICAgICAgICAoV2Vi
S2l0OjpEaXNwbGF5TGluazo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5
TGluazo6bm90aWZ5T2JzZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVz
aENhbGxiYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAg
KFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZy
ZXNoKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtG
aXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMuaDoKKwogMjAyMS0wMy0yNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFNlbmQgcmVwb3J0IHRvIGJvdGgg
Y2xpY2sgc291cmNlIGFuZCBhdHRyaWJ1dGlvbiBkZXN0aW5hdGlvbiB3ZWJzaXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDczNGY5NGIxMGZmYmJlODE3YWZkMjE2
M2UwYzgzMzUwZjAwZDUyYmUuLmIyN2ZkMzYwMTI0MDk5NjM1NTA0ZjUyNzE4ODA2NTg3YzM4NWE1
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzcsNiArMTM3
LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgeyB9CiAKKyAgICBib29sIHN0
YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZv
aWQgc3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsIHsgfQorCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IEVtcHR5RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCkKICAgICAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci5jcHAKaW5kZXggODI2NDk2Y2JkNDg1ZTEwZmJkOWIzNDc2MWYwMGUyNzgwZDQ5
ZGJmMi4uYjcwODNhNGMyZTdkMGNmNWU5NDVlYzhjNDc4NGQ1YzA3Yzk5NWIxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwCkBAIC00NCw2ICs0NCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y29uc3RleHByIHVuc2lnbmVkIG1heFVuc2NoZWR1bGVkRmlyZUNvdW50IHsgMSB9OworCiBSZWZQ
dHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZURl
ZmF1bHREaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTgwLDYgKzgyLDEyIEBAIERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkK
IAogRGlzcGxheVJlZnJlc2hNb25pdG9yOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yKCkgPSBkZWZh
dWx0OwogCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3RvcCgpCit7CisgICAgc3RvcE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSgpOworICAgIHNldElzU2NoZWR1bGVkKGZhbHNlKTsKK30KKwog
dm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmFkZENsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQmIGNsaWVudCkKIHsKICAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwpAQCAtODks
MjMgKzk3LDY4IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZW1vdmVDbGllbnQoRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgaWYgKG1fY2xpZW50c1Rv
QmVOb3RpZmllZCkKICAgICAgICAgbV9jbGllbnRzVG9CZU5vdGlmaWVkLT5yZW1vdmUoJmNsaWVu
dCk7CisKICAgICByZXR1cm4gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAotdm9pZCBE
aXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKCkKK2Jvb2wgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluUnVuTG9vcCgpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CisgICAgCisgICAg
aWYgKGlzU2NoZWR1bGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYXV0byBzdGFy
dGVkID0gc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKTsKKyAgICBpZiAoIXN0YXJ0ZWQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZmlyZWRBbmRSZWFj
aGVkTWF4VW5zY2hlZHVsZWRGaXJlQ291bnQoKQoreworICAgIEFTU0VSVChtdXRleCgpLmlzTG9j
a2VkKCkpOworCisgICAgaWYgKGlzU2NoZWR1bGVkKCkpIHsKKyAgICAgICAgbV91bnNjaGVkdWxl
ZEZpcmVDb3VudCA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICArK21f
dW5zY2hlZHVsZWRGaXJlQ291bnQ7CisgICAgcmV0dXJuIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQg
PiBtX21heFVuc2NoZWR1bGVkRmlyZUNvdW50OworfQogCit2b2lkIERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9tdXRleCk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFt
IDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3IgIiA8PCB0aGlzIDw8ICIgZGlzcGxheURpZFJlZnJl
c2ggZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQoKSA8PCAiIHNjaGVkdWxlZCAiIDw8IG1fc2No
ZWR1bGVkIDw8ICIgdW5zY2hlZHVsZWRGaXJlQ291bnQgIiA8PCBtX3Vuc2NoZWR1bGVkRmlyZUNv
dW50KTsKLSAgICAgICAgaWYgKCFtX3NjaGVkdWxlZCkKLSAgICAgICAgICAgICsrbV91bnNjaGVk
dWxlZEZpcmVDb3VudDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV91bnNjaGVkdWxlZEZp
cmVDb3VudCA9IDA7CiAKLSAgICAgICAgbV9zY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgLy8g
VGhpcyBtYXkgYmUgb2ZmIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgaWYgKCFpc1ByZXZpb3Vz
RnJhbWVEb25lKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTE9HX1dJVEhfU1RS
RUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxh
eUxpbmtGaXJlZCBmb3IgZGlzcGxheSAiIDw8IGRpc3BsYXlJRCgpIDw8ICIgLSBzY2hlZHVsZWQg
IiA8PCBpc1NjaGVkdWxlZCgpIDw8ICIgdW5zY2hlZHVsZWRGaXJlQ291bnQgIiA8PCBtX3Vuc2No
ZWR1bGVkRmlyZUNvdW50IDw8ICIgb2YgIiA8PCBtX21heFVuc2NoZWR1bGVkRmlyZUNvdW50KTsK
KyAgICAgICAgaWYgKGZpcmVkQW5kUmVhY2hlZE1heFVuc2NoZWR1bGVkRmlyZUNvdW50KCkpIHsK
KyAgICAgICAgICAgIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNldElzU2NoZWR1bGVkKGZhbHNlKTsKKyAgICAg
ICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7CiAgICAgfQorICAgIGRpc3BhdGNoRGlz
cGxheURpZFJlZnJlc2goKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3Bh
dGNoRGlzcGxheURpZFJlZnJlc2goKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgZGlzcGxheURpZFJlZnJlc2goKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6
OmRpc3BsYXlEaWRSZWZyZXNoKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgLy8gVGhlIGNhbGwgYmFjayBjYW4gY2F1c2UgYWxsIG91ciBjbGllbnRzIHRvIGJlIHVucmVn
aXN0ZXJlZCwgc28gd2UgbmVlZCB0byBwcm90ZWN0CiAgICAgLy8gYWdhaW5zdCBkZWxldGlvbiB1
bnRpbCB0aGUgZW5kIG9mIHRoZSBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCmluZGV4IDc5M2NlNGU2
YWM2ZDczMDA0ZDM5ODlkMzA1ZWUwZTIxMWJiYmMzMzcuLmNmZjAzMGNmOTVjZDBhMDcxNjU5NGM0
MzE0MTUwYWVmYzcwNmRlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCkBAIC00MiwxNiArNDIsMTQgQEAg
Y2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PERpc3BsYXlSZWZyZXNoTW9uaXRvcj4KIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPERpc3Bs
YXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlKERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqLCBQ
bGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RGlzcGxheVJl
ZnJlc2hNb25pdG9yKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIHsg
fQorICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1BlclNlY29uZCkg
eyB9CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBjYWxsYmFjayByZXF1ZXN0IHdhcyBzY2hlZHVs
ZWQsIGZhbHNlIGlmIGl0IGNvdWxkbid0IGJlCiAgICAgLy8gKGUuZy4sIGhhcmR3YXJlIHJlZnJl
c2ggaXMgbm90IGF2YWlsYWJsZSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxs
YmFjaygpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgeyB9CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKTsKIAogICAgIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKICAgICAKQEAgLTYxLDIz
ICs1OSwyNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIAotICAgIGJvb2wgc2hvdWxkQmVUZXJt
aW5hdGVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBtYXhJbmFjdGl2ZUZpcmVD
b3VudCA9IDE7Ci0gICAgICAgIHJldHVybiAhbV9zY2hlZHVsZWQgJiYgbV91bnNjaGVkdWxlZEZp
cmVDb3VudCA+IG1heEluYWN0aXZlRmlyZUNvdW50OwotICAgIH0KLQogICAgIHN0YXRpYyBSZWZQ
dHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25p
dG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZGlzcGxheUxpbmtGaXJlZCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKIAogICAgIGZy
aWVuZCBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOwotICAgIAotICAgIExvY2sm
IG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQogCi0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZlOyB9Ci0gICAgdm9pZCBzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkg
eyBtX2FjdGl2ZSA9IGFjdGl2ZTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCk7CisKKyAgICB2b2lkIHNldE1heFVuc2NoZWR1bGVk
RmlyZUNvdW50KHVuc2lnbmVkIGNvdW50KSB7IG1fbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQgPSBj
b3VudDsgfQorICAgIGJvb2wgZmlyZWRBbmRSZWFjaGVkTWF4VW5zY2hlZHVsZWRGaXJlQ291bnQo
KTsKKworICAgIExvY2smIG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQorICAgIAorICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgc3RhcnQgd2FzIHN1Y2Nlc3NmdWwuCisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgPSAwOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkg
PSAwOwogCiAgICAgYm9vbCBpc1NjaGVkdWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZWR1bGVk
OyB9CiAgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIHNjaGVkdWxlZCkgeyBtX3NjaGVkdWxl
ZCA9IHNjaGVkdWxlZDsgfQpAQCAtOTIsMTIgKzkxLDE0IEBAIHByaXZhdGU6CiAKICAgICBIYXNo
U2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+IG1fY2xpZW50czsKICAgICBIYXNoU2V0
PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+KiBtX2NsaWVudHNUb0JlTm90aWZpZWQgeyBu
dWxscHRyIH07Ci0gICAgTG9jayBtX211dGV4OwogICAgIFBsYXRmb3JtRGlzcGxheUlEIG1fZGlz
cGxheUlEIHsgMCB9OwotICAgIGludCBtX3Vuc2NoZWR1bGVkRmlyZUNvdW50IHsgMCB9OyAvLyBO
dW1iZXIgb2YgdGltZXMgdGhlIGRpc3BsYXkgbGluayBoYXMgZmlyZWQgd2l0aCBubyBjbGllbnRz
LgotICAgIGJvb2wgbV9hY3RpdmUgeyB0cnVlIH07CisKKyAgICBMb2NrIG1fbXV0ZXg7CiAgICAg
Ym9vbCBtX3NjaGVkdWxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3ByZXZpb3VzRnJhbWVEb25l
IHsgdHJ1ZSB9OworICAgIAorICAgIHVuc2lnbmVkIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgeyAw
IH07CisgICAgdW5zaWduZWQgbV9tYXhVbnNjaGVkdWxlZEZpcmVDb3VudCB7IDAgfTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKaW5kZXggZThkZmVjN2ExZDU0MzM0
YWY1Mjc1OGM4OWMwNjNlYjUyNWE1ZWM3MC4uMmMzOTdiOTk4ZmJmMWU2NWZlOWJkMWYxMmQ4MzMz
ZWY3YmNiZDRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKQEAgLTcyLDEx
ICs3Miw5IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6dW5yZWdpc3RlckNs
aWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQmCiAgICAgYXV0byBpbmRleCA9IGZpbmRN
b25pdG9yRm9yRGlzcGxheUlEKGNsaWVudERpc3BsYXlJRCk7CiAgICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQogICAgICAgICByZXR1cm47CisKICAgICBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25p
dG9yPiBtb25pdG9yID0gbV9tb25pdG9yc1tpbmRleF0ubW9uaXRvcjsKLSAgICBpZiAobW9uaXRv
ci0+cmVtb3ZlQ2xpZW50KGNsaWVudCkpIHsKLSAgICAgICAgaWYgKCFtb25pdG9yLT5oYXNDbGll
bnRzKCkpCi0gICAgICAgICAgICBtX21vbml0b3JzLnJlbW92ZShpbmRleCk7Ci0gICAgfQorICAg
IG1vbml0b3ItPnJlbW92ZUNsaWVudChjbGllbnQpOwogfQogCiB2b2lkIERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXI6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChEaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQmIGNsaWVudCwgRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZCkKQEAgLTk0LDE2ICs5Miw5IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlcjo6c2NoZWR1bGVBbmltYXRpb24oRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmRp
c3BsYXlEaWRSZWZyZXNoKERpc3BsYXlSZWZyZXNoTW9uaXRvciYgbW9uaXRvcikKK3ZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2goRGlzcGxheVJlZnJl
c2hNb25pdG9yJikKIHsKLSAgICBpZiAoIW1vbml0b3Iuc2hvdWxkQmVUZXJtaW5hdGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFt
IDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpkaXNwbGF5RGlkUmVmcmVzaCgpIC0g
ZGVzdHJveWluZyBtb25pdG9yICIgPDwgJm1vbml0b3IpOwotCi0gICAgbV9tb25pdG9ycy5yZW1v
dmVGaXJzdE1hdGNoaW5nKFsmXShhdXRvJiBtb25pdG9yV3JhcHBlcikgewotICAgICAgICByZXR1
cm4gbW9uaXRvcldyYXBwZXIubW9uaXRvciA9PSAmbW9uaXRvcjsKLSAgICB9KTsKKyAgICAvLyBN
YXliZSB3ZSBzaG91bGQgcmVtb3ZlIG1vbml0b3JzIHRoYXQgaGF2ZW4ndCBiZWVuIGFjdGl2ZSBm
b3Igc29tZSB0aW1lLgogfQogCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIERpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCYgY2xpZW50KQpAQCAtMTIwLDcgKzExMSw3IEBAIHZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmRpc3Bs
YXlXYXNVcGRhdGVkKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKICAgICBhdXRvKiBt
b25pdG9yID0gbW9uaXRvckZvckRpc3BsYXlJRChkaXNwbGF5SUQpOwotICAgIGlmIChtb25pdG9y
ICYmIG1vbml0b3ItPmhhc1JlcXVlc3RlZFJlZnJlc2hDYWxsYmFjaygpKQorICAgIGlmIChtb25p
dG9yKQogICAgICAgICBtb25pdG9yLT5kaXNwbGF5TGlua0ZpcmVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1v
bml0b3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckd0ay5jcHAKaW5kZXggNzhjZjVkZjNhNzg0ZWI3YWM2MDRmNTQzMmQ5
ZDZmOTJlNjJkYjhmMy4uOGY2OTA5Y2QwZDNmNGYxYTg4MTBlZmFlZDM1YjU0MWI4YThhOTMzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0ay5jcHAKQEAgLTM5LDYgKzM5LDE2IEBAIERp
c3BsYXlSZWZyZXNoTW9uaXRvckd0azo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCkKIH0KIAogRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjp+RGlz
cGxheVJlZnJlc2hNb25pdG9yR3RrKCkKK3sKKyAgICBBU1NFUlQoIW1fd2luZG93KTsKK30KKwor
c3RhdGljIHZvaWQgb25GcmFtZUNsb2NrVXBkYXRlKEdka0ZyYW1lQ2xvY2sqLCBEaXNwbGF5UmVm
cmVzaE1vbml0b3JHdGsqIG1vbml0b3IpCit7CisgICAgbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJl
ZCgpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6c3RvcCgpCiB7CiAgICAg
aWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuOwpAQCAtNDYsNTAgKzU2LDQ1IEBAIERpc3Bs
YXlSZWZyZXNoTW9uaXRvckd0azo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvckd0aygpCiAgICAgYXV0
byogZnJhbWVDbG9jayA9IGd0a193aWRnZXRfZ2V0X2ZyYW1lX2Nsb2NrKG1fd2luZG93KTsKICAg
ICBBU1NFUlQoZnJhbWVDbG9jayk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9t
YXRjaGVkKGZyYW1lQ2xvY2ssIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIG51bGxwdHIsIG51
bGxwdHIsIHRoaXMpOwotICAgIGdka19mcmFtZV9jbG9ja19lbmRfdXBkYXRpbmcoZnJhbWVDbG9j
ayk7Ci0gICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fd2luZG93KTsKLX0KIAotc3RhdGljIHZvaWQg
b25GcmFtZUNsb2NrVXBkYXRlKEdka0ZyYW1lQ2xvY2sqLCBEaXNwbGF5UmVmcmVzaE1vbml0b3JH
dGsqIG1vbml0b3IpCi17Ci0gICAgbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJlZCgpOworICAgIGd0
a193aWRnZXRfZGVzdHJveShtX3dpbmRvdyk7CisgICAgbV93aW5kb3cgPSBudWxscHRyOwogfQog
Ci1ib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygp
Citib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5p
c20oKQogewotICAgIGlmICghaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX2Nsb2NrSXNBY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgR2RrRnJh
bWVDbG9jayogZnJhbWVDbG9jazsKICAgICBpZiAoIW1fd2luZG93KSB7CiAgICAgICAgIC8vIEdk
a0ZyYW1lQ2xvY2tJZGxlIGlzIHByaXZhdGUgaW4gR0RLLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBh
IHRvcGxldmVsIHRvIGdldCBpdHMgZnJhbWUgY2xvY2suCiAgICAgICAgIG1fd2luZG93ID0gZ3Rr
X29mZnNjcmVlbl93aW5kb3dfbmV3KCk7CiAgICAgICAgIGd0a193aWRnZXRfcmVhbGl6ZShtX3dp
bmRvdyk7CiAKLSAgICAgICAgYXV0byogZnJhbWVDbG9jayA9IGd0a193aWRnZXRfZ2V0X2ZyYW1l
X2Nsb2NrKG1fd2luZG93KTsKKyAgICAgICAgZnJhbWVDbG9jayA9IGd0a193aWRnZXRfZ2V0X2Zy
YW1lX2Nsb2NrKG1fd2luZG93KTsKICAgICAgICAgQVNTRVJUKGZyYW1lQ2xvY2spOwotCiAgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoZnJhbWVDbG9jaywgInVwZGF0ZSIsIEdfQ0FMTEJBQ0sob25G
cmFtZUNsb2NrVXBkYXRlKSwgdGhpcyk7Ci0gICAgICAgIGdka19mcmFtZV9jbG9ja19iZWdpbl91
cGRhdGluZyhmcmFtZUNsb2NrKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnJhbWVDbG9jayA9IGd0
a193aWRnZXRfZ2V0X2ZyYW1lX2Nsb2NrKG1fd2luZG93KTsKIAotICAgICAgICBzZXRJc0FjdGl2
ZSh0cnVlKTsKLSAgICB9CisgICAgQVNTRVJUKGZyYW1lQ2xvY2spOworICAgIGdka19mcmFtZV9j
bG9ja19iZWdpbl91cGRhdGluZyhmcmFtZUNsb2NrKTsKIAotICAgIExvY2tIb2xkZXIgbG9jayht
dXRleCgpKTsKLSAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICBtX2Nsb2NrSXNBY3RpdmUg
PSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRv
ckd0azo6ZGlzcGxheUxpbmtGaXJlZCgpCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6
c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2sobXV0ZXgoKSk7Ci0gICAgICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2Up
OwotICAgIH0KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGRpc3BsYXlEaWRSZWZy
ZXNoKCk7CisgICAgaWYgKCFtX2Nsb2NrSXNBY3RpdmUpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIGZyYW1lQ2xvY2sgPSBndGtfd2lkZ2V0X2dldF9mcmFtZV9jbG9jayhtX3dpbmRvdyk7
CisgICAgQVNTRVJUKGZyYW1lQ2xvY2spOworICAgIGdka19mcmFtZV9jbG9ja19lbmRfdXBkYXRp
bmcoZnJhbWVDbG9jayk7CisKKyAgICBtX2Nsb2NrSXNBY3RpdmUgPSBmYWxzZTsgICAgCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuaAppbmRl
eCA1M2NhYjdmMWM1YjM2YWI4MmUxYzRmMzUyN2M5YmQwNmM2ZWMxOTdjLi45MWRmZmMxZTAzM2Mw
Yzg2MmQxODAwZjA2ZDg1MzViYTU1YjlmMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0
ay5oCkBAIC00MiwxMyArNDIsMTUgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RGlzcGxheVJl
ZnJlc2hNb25pdG9yR3RrKCk7CiAKLSAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKLQogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsoUGxhdGZvcm1EaXNwbGF5
SUQpOwogCisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlv
bk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgp
IGZpbmFsOworCiAgICAgR3RrV2lkZ2V0KiBtX3dpbmRvdyB7IG51bGxwdHIgfTsKKyAgICBib29s
IG1fY2xvY2tJc0FjdGl2ZSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
b3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgKaW5kZXggZjk5ZDY0ZTZjMGI1Njk4NTQ1M2Ux
ZGQ1MjA5NzZiMjBmMmIwMmMyZC4uMTA1MDhlODkwZDUwMDQwMWE3Y2EzMGYxNDQzZWMxMzA3MWQ0
NDY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaApAQCAtNDMsMTQgKzQzLDE3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoKTsK
IAotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVz
dFJlZnJlc2hDYWxsYmFjaygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUyhQbGF0Zm9ybURpc3BsYXlJRCk7CisKKyAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKKyAgICBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7
CisgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CisKICAgICBSZXRh
aW5QdHI8V2ViRGlzcGxheUxpbmtIYW5kbGVyPiBtX2hhbmRsZXI7CisgICAgYm9vbCBtX2Rpc3Bs
YXlMaW5rSXNBY3RpdmUgeyBmYWxzZSB9OwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25p
dG9ySU9TLm1tCmluZGV4IDcxY2I4MGQ1ZjE0ZmNhN2IyOTQ2OTJmOWJhNzI5Yjg2YzBhZGIyODku
LmNkYzE2ZmM0NmRkODczM2ExNjA4Zjc2OGU1OWM1MGFiMmE3OWM3ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUy5tbQpAQCAtMjgsMTEgKzI4LDE0IEBACiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFk
LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBRGlzcGxheUxpbmsuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIHVzaW5nIFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzsKKwogQGludGVyZmFjZSBXZWJEaXNwbGF5
TGlua0hhbmRsZXIgOiBOU09iamVjdAogewogICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUyog
bV9tb25pdG9yOwpAQCAtNDIsNiArNDUsNyBAQCBAaW50ZXJmYWNlIFdlYkRpc3BsYXlMaW5rSGFu
ZGxlciA6IE5TT2JqZWN0CiAtIChpZClpbml0V2l0aE1vbml0b3I6KERpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUyopbW9uaXRvcjsKIC0gKHZvaWQpc2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOihO
U0ludGVnZXIpcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOwogLSAodm9pZCloYW5kbGVEaXNwbGF5
TGluazooQ0FEaXNwbGF5TGluayAqKXNlbmRlcjsKKy0gKHZvaWQpc2V0UGF1c2VkOihCT09MKXBh
dXNlZDsKIC0gKHZvaWQpaW52YWxpZGF0ZTsKIAogQGVuZApAQCAtNzgsNiArODIsMTEgQEAgLSAo
dm9pZCloYW5kbGVEaXNwbGF5TGluazooQ0FEaXNwbGF5TGluayAqKXNlbmRlcgogICAgIG1fbW9u
aXRvci0+ZGlzcGxheUxpbmtGaXJlZCgpOwogfQogCistICh2b2lkKXNldFBhdXNlZDooQk9PTClw
YXVzZWQKK3sKKyAgICBbbV9kaXNwbGF5TGluayBzZXRQYXVzZWQ6cGF1c2VkXTsKK30KKwogLSAo
dm9pZClpbnZhbGlkYXRlCiB7CiAgICAgW21fZGlzcGxheUxpbmsgaW52YWxpZGF0ZV07CkBAIC04
OCwzOSArOTcsNTEgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NvbnN0ZXhwciB1
bnNpZ25lZCBtYXhVbnNjaGVkdWxlZEZpcmVDb3VudCB7IDEgfTsKKwogRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKQogICAgIDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKIHsKKyAgICBz
ZXRNYXhVbnNjaGVkdWxlZEZpcmVDb3VudChtYXhVbnNjaGVkdWxlZEZpcmVDb3VudCk7CiB9CiAK
IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUygpCit7
CisgICAgQVNTRVJUKCFtX2hhbmRsZXIpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUzo6c3RvcCgpCiB7CiAgICAgW21faGFuZGxlciBpbnZhbGlkYXRlXTsKKyAgICBtX2hhbmRs
ZXIgPSBuaWw7CiB9CiAKLWJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpyZXF1ZXN0UmVm
cmVzaENhbGxiYWNrKCkKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpzdGFydE5vdGlm
aWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgaWYgKCFpc0FjdGl2ZSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fZGlzcGxheUxpbmtJc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBpZiAoIW1faGFuZGxlcikgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
RGlzcGxheUxpbmssIHN0cmVhbSA8PCAiRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpzdGFydE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSAtIGNyZWF0aW5nIFdlYkRpc3BsYXlMaW5rSGFuZGxlciIpOwog
ICAgICAgICBtX2hhbmRsZXIgPSBhZG9wdE5TKFtbV2ViRGlzcGxheUxpbmtIYW5kbGVyIGFsbG9j
XSBpbml0V2l0aE1vbml0b3I6dGhpc10pOwotICAgICAgICBzZXRJc0FjdGl2ZSh0cnVlKTsKICAg
ICB9CiAKLSAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlz
cGxheUxpbmssIHN0cmVhbSA8PCAiRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpzdGFydE5vdGlm
aWNhdGlvbk1lY2hhbmlzbSAtIHN0YXJ0aW5nIFdlYkRpc3BsYXlMaW5rSGFuZGxlciIpOworICAg
IFttX2hhbmRsZXIgc2V0UGF1c2VkOk5PXTsKKyAgICBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgPSB0
cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcklP
Uzo6ZGlzcGxheUxpbmtGaXJlZCgpCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3Rv
cE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25l
KCkpCisgICAgaWYgKCFtX2Rpc3BsYXlMaW5rSXNBY3RpdmUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOwotICAgIGRpc3BsYXlEaWRSZWZyZXNo
KCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSAtIHBhdXNpbmcgV2Vi
RGlzcGxheUxpbmtIYW5kbGVyIik7CisgICAgW21faGFuZGxlciBzZXRQYXVzZWQ6WUVTXTsKKyAg
ICBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgPSBmYWxzZTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2Fj
eURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKaW5kZXggNGRjZWY5MzljMzZlMGZmZDc4OTQy
YjQ4MDNjNjY5YzNjYjlkZTdhNy4uYzc0NTgwMDYxZWMxMzFmNmEwNzY3OWU2OGNmZDdiMTc2NjUz
MDlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xl
Z2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKQEAg
LTI4LDE2ICsyOCwyMSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgotI2luY2x1ZGUgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2luY2x1ZGUgPENvcmVWaWRlby9DVkRpc3BsYXlMaW5r
Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3RleHByIHVuc2lnbmVkIG1heFVu
c2NoZWR1bGVkRmlyZUNvdW50IHsgMjAgfTsKKwogTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjOjpMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKQogICAgIDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKIHsKICAgICBB
U1NFUlQoIWlzSW5XZWJQcm9jZXNzKCkpOworICAgIHNldE1heFVuc2NoZWR1bGVkRmlyZUNvdW50
KG1heFVuc2NoZWR1bGVkRmlyZUNvdW50KTsKIH0KIAogTGVnYWN5RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjp+TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKCkKQEAgLTQ3LDEwICs1Miw4
IEBAIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6fkxlZ2FjeURpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYygpCiAKIHZvaWQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdG9w
KCkKIHsKLSAgICBpZiAoIW1fZGlzcGxheUxpbmspCi0gICAgICAgIHJldHVybjsKLQotICAgIENW
RGlzcGxheUxpbmtTdG9wKG1fZGlzcGxheUxpbmspOworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6c3RvcCgpOworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJM
ZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnN0b3AgZm9yIGRpcHNsYXkgIiA8PCBkaXNw
bGF5SUQoKSA8PCAiIGRlc3Ryb3lpbmcgZGlzcGxheSBsaW5rIik7CiAgICAgQ1ZEaXNwbGF5TGlu
a1JlbGVhc2UobV9kaXNwbGF5TGluayk7CiAgICAgbV9kaXNwbGF5TGluayA9IG51bGxwdHI7CiB9
CkBAIC02Miw0NyArNjUsNTIgQEAgc3RhdGljIENWUmV0dXJuIGRpc3BsYXlMaW5rQ2FsbGJhY2so
Q1ZEaXNwbGF5TGlua1JlZiwgY29uc3QgQ1ZUaW1lU3RhbXAqLCBjb25zdAogICAgIHJldHVybiBr
Q1ZSZXR1cm5TdWNjZXNzOwogfQogCi1ib29sIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCit2b2lkIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6ZGlzcGF0Y2hEaXNwbGF5RGlkUmVmcmVzaCgpCiB7Ci0gICAgaWYgKCFpc0FjdGl2
ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgaWYgKG1f
ZGlzcGxheUxpbmspCisgICAgICAgICAgICBkaXNwbGF5RGlkUmVmcmVzaCgpOworICAgIH0pOwor
fQogCitib29sIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RhcnROb3RpZmljYXRp
b25NZWNoYW5pc20oKQorewogICAgIGlmICghbV9kaXNwbGF5TGluaykgewotICAgICAgICBzZXRJ
c0FjdGl2ZShmYWxzZSk7Ci0gICAgICAgIENWUmV0dXJuIGVycm9yID0gQ1ZEaXNwbGF5TGlua0Ny
ZWF0ZVdpdGhDR0Rpc3BsYXkoZGlzcGxheUlEKCksICZtX2Rpc3BsYXlMaW5rKTsKKyAgICAgICAg
YXV0byBlcnJvciA9IENWRGlzcGxheUxpbmtDcmVhdGVXaXRoQ0dEaXNwbGF5KGRpc3BsYXlJRCgp
LCAmbV9kaXNwbGF5TGluayk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICBlcnJvciA9IENWRGlzcGxheUxpbmtTZXRPdXRwdXRDYWxsYmFj
ayhtX2Rpc3BsYXlMaW5rLCBkaXNwbGF5TGlua0NhbGxiYWNrLCB0aGlzKTsKICAgICAgICAgaWYg
KGVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgICAgICBlcnJv
ciA9IENWRGlzcGxheUxpbmtTdGFydChtX2Rpc3BsYXlMaW5rKTsKKyAgICBpZiAoIW1fZGlzcGxh
eUxpbmtJc0FjdGl2ZSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0
cmVhbSA8PCAiTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlmaWNhdGlv
bk1lY2hhbmlzbSBmb3IgZGlzcGxheSAiIDw8IGRpc3BsYXlJRCgpIDw8ICIgc3RhcnRpbmcgZGlz
cGxheSBsaW5rIik7CisKKyAgICAgICAgYXV0byBlcnJvciA9IENWRGlzcGxheUxpbmtTdGFydCht
X2Rpc3BsYXlMaW5rKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgIHNldElzQWN0aXZlKHRydWUpOworICAgICAgICAKKyAgICAgICAgbV9k
aXNwbGF5TGlua0lzQWN0aXZlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2so
bXV0ZXgoKSk7Ci0gICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVk
KCkKK3ZvaWQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdG9wTm90aWZpY2F0aW9u
TWVjaGFuaXNtKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7Ci0gICAgaWYgKCFp
c1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgaWYgKCFtX2Rpc3BsYXlMaW5rSXNBY3RpdmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOwotCi0g
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKLSAgICAgICAgaWYgKG1fZGlzcGxheUxpbmspCi0gICAgICAgICAgICBkaXNw
bGF5RGlkUmVmcmVzaCgpOwotICAgIH0pOworICAgIGlmIChtX2Rpc3BsYXlMaW5rKSB7CisgICAg
ICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJMZWdhY3lEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20gZm9yIGRpc3BsYXkg
IiA8PCBkaXNwbGF5SUQoKSA8PCAiIHN0b3BwaW5nIGRpc3BsYXkgbGluayIpOworICAgICAgICBD
VkRpc3BsYXlMaW5rU3RvcChtX2Rpc3BsYXlMaW5rKTsKKyAgICB9CisgICAgICAgIAorICAgIG1f
ZGlzcGxheUxpbmtJc0FjdGl2ZSA9IGZhbHNlOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJl
c2hNb25pdG9yTWFjLmgKaW5kZXggMzNhM2E3OGI5NTIxZDYwMmQwN2M3N2M4ODc5NGE5NDA0OGM1
MDYyZi4uOGE4YjI4MGU3NjdhYjVjMWNjZWVhZGY2YWZhYWFjYWJlODE0MjUyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaApAQCAtNDMsMTYgKzQzLDIwIEBAIHB1
YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMo
KTsKIAotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIGZpbmFsOwotICAgIGJvb2wgcmVxdWVz
dFJlZnJlc2hDYWxsYmFjaygpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyhQbGF0Zm9y
bURpc3BsYXlJRCk7CiAKKyAgICB2b2lkIGRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2goKSBmaW5h
bDsKKworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlv
bk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgp
IGZpbmFsOworCiAgICAgQ1ZEaXNwbGF5TGlua1JlZiBtX2Rpc3BsYXlMaW5rIHsgbnVsbHB0ciB9
OworICAgIGJvb2wgbV9kaXNwbGF5TGlua0lzQWN0aXZlIHsgZmFsc2UgfTsKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKaW5kZXggMmZhNDcwMDM5YWZmNzlmN2Q1MTA1YThiZTNk
MzgzODRkYzRmOWQyNC4uYjk2MjQ3NWYxMjBiZTM0OWRmMzAzZjI0YTYzNWMyZTU5YjUyYzE2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKQEAgLTM1LDI3ICszNSwyMSBAQCBS
ZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2luPiBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46
OmNyZWF0ZShQbGF0Zm9ybURpc3BsYQogCiBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OkRpc3Bs
YXlSZWZyZXNoTW9uaXRvcldpbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgOiBE
aXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQotICAgICwgbV90aW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OmRpc3BsYXlMaW5rRmlyZWQp
CisgICAgLCBtX3RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkRpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6ZGlzcGxheUxpbmtGaXJlZCkKIHsKIH0KIAotYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW46OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQorYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW46OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBpZiAoIWlzQWN0aXZl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgxNl9t
cyk7Ci0gICAgc2V0SXNBY3RpdmUodHJ1ZSk7Ci0gICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7Cisg
ICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKQorICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5n
KDE2X21zKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9u
aXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCgpCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcldp
bjo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgaWYgKCFpc1ByZXZpb3VzRnJh
bWVEb25lKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUo
ZmFsc2UpOwotICAgIGRpc3BsYXlEaWRSZWZyZXNoKCk7CisgICAgbV90aW1lci5zdG9wKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaApp
bmRleCBhMjE4OGUyYTExMTU2Y2U2N2NhNDhhZWE3ZTIwZWY5NjYzNTI3OGMyLi5lZmU1NzZlMmY0
YzQyMGY4OGViNmVkODY1Y2FmNmY4YjEwZmIxYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
cldpbi5oCkBAIC0zNCwxMSArMzQsMTIgQEAgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yV2lu
IDogcHVibGljIERpc3BsYXlSZWZyZXNoTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4+IGNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJRCk7
CiAKLSAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoKSBvdmVycmlkZTsKLSAgICBib29sIHJlcXVl
c3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBE
aXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQpOworCisgICAgYm9vbCBz
dGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3RvcE5vdGlmaWNh
dGlvbk1lY2hhbmlzbSgpIGZpbmFsOworCiAgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheVJlZnJl
c2hNb25pdG9yV2luPiBtX3RpbWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNw
bGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwCmluZGV4IGI1YTlkYWVkMDVkMjgwZmM2NjhmYWUwZTk5YzMxMTAwYzg3YzI4ZmYuLjAzMmM0
NWMzYmJlNzFmZTNmYWYzY2NkNWVmMWRmODJmNWExZmE1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVh
ZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvci5jcHAKQEAgLTk1LDYgKzk1LDcgQEAgdm9pZCBUaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvcjo6aW52YWxpZGF0ZSgpCiAgICAgbV9jbGllbnQgPSBudWxscHRyOwogfQogCisv
LyBGSVhNRTogUmVmYWN0b3IgdG8gc2hhcmUgbW9yZSBjb2RlIHdpdGggRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpkaXNwbGF5TGlua0ZpcmVkKCkuCiB2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpkaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKIHsKICAgICBib29sIHNob3VsZEhhbmRs
ZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNo
TW9uaXRvci5oCmluZGV4IGE1OWU4ZWEwMGU0ZjJjYWVlODVlZWY3NmJjODhiZTdiZDgxYzBhZmEu
LmI0OWE4YjJkYmVmMDQ5YTdlNDQxM2QyZTgyZGU5NTFkMjc3Y2U2MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5
UmVmcmVzaE1vbml0b3IuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
LCBDbGllbnQmKTsKIAorICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkg
ZmluYWwgeyB9CisKICAgICB2b2lkIGRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKTsKICAgICBSdW5M
b29wOjpUaW1lcjxUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbV9kaXNwbGF5UmVmcmVz
aFRpbWVyOwogICAgIENsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL0Rpc3BsYXlMaW5rLmNwcAppbmRleCAwOTVjMDljYjdkZjYyOTQ2ZjVlNDc0YWVjNjYzODFm
NTYwNThmMTkwLi5iZjc4NjI3NzM2MmUzMDlkYWM5MjY2MGI2Mjk3YTdlMWYwYTU5MDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKQEAgLTI5LDggKzI5
LDEwIEBACiAjaWYgSEFWRShDVkRJU1BMQVlMSU5LKQogCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRj
aGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MCw2
ICs0Miw4IEBAIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhGaXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJz
IHsgMjAgfTsKIERpc3BsYXlMaW5rOjpEaXNwbGF5TGluayhXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQpCiAgICAgOiBtX2Rpc3BsYXlJRChkaXNwbGF5SUQpCiB7CisgICAgTE9H
X1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIltVSSBdIENyZWF0aW5nIERpc3Bs
YXlMaW5rIGZvciBkaXNwbGF5ICIgPDwgZGlzcGxheUlEKTsKKwogICAgIC8vIEZJWE1FOiBXZSBj
YW4gZ2V0IGhlcmUgd2l0aCBkaXNwbGF5SUQgPT0gMCAod2Via2l0Lm9yZy9iLzIxMjEyMCksIGlu
IHdoaWNoIGNhc2UgQ1ZEaXNwbGF5TGlua0NyZWF0ZVdpdGhDR0Rpc3BsYXkoKQogICAgIC8vIHBy
b2JhYmx5IGRlZmF1bHRzIHRvIHRoZSBtYWluIHNjcmVlbi4KICAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2
ZXIpKTsKQEAgLTU4LDYgKzYyLDggQEAgRGlzcGxheUxpbms6OkRpc3BsYXlMaW5rKFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIAogRGlzcGxheUxpbms6On5EaXNwbGF5TGlu
aygpCiB7CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIltVSSBd
IERlc3Ryb3lpbmcgRGlzcGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCk7CisK
ICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21t
dW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKICAgICBBU1NFUlQobV9kaXNwbGF5TGluayk7CiAg
ICAgaWYgKCFtX2Rpc3BsYXlMaW5rKQpAQCAtODUsNiArOTEsNyBAQCB2b2lkIERpc3BsYXlMaW5r
OjphZGRPYnNlcnZlcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERpc3BsYXlMaW5rT2Jz
ZXJ2ZXJJRAogICAgIH0KIAogICAgIGlmICghQ1ZEaXNwbGF5TGlua0lzUnVubmluZyhtX2Rpc3Bs
YXlMaW5rKSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8
PCAiW1VJIF0gRGlzcGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCA8PCAiIHN0
YXJ0aW5nIENWRGlzcGxheUxpbmsiKTsKICAgICAgICAgQ1ZSZXR1cm4gZXJyb3IgPSBDVkRpc3Bs
YXlMaW5rU3RhcnQobV9kaXNwbGF5TGluayk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IHN0YXJ0IHRoZSBkaXNwbGF5IGxpbms6ICVkIiwg
ZXJyb3IpOwpAQCAtMTM0LDEzICsxNDEsMTYgQEAgdm9pZCBEaXNwbGF5TGluazo6bm90aWZ5T2Jz
ZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCgpCiAKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29i
c2VydmVyc0xvY2spOwogICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
aWYgKCsrbV9maXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJzID49IG1heEZpcmVDb3VudFdpdGhvdXRP
YnNlcnZlcnMpCisgICAgICAgIGlmICgrK21fZmlyZUNvdW50V2l0aG91dE9ic2VydmVycyA+PSBt
YXhGaXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJzKSB7CisgICAgICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gRGlzcGxheUxpbmsgZm9yIGRpc3BsYXkg
IiA8PCBtX2Rpc3BsYXlJRCA8PCAiIGZpcmVkICIgPDwgbV9maXJlQ291bnRXaXRob3V0T2JzZXJ2
ZXJzIDw8ICIgdGltZXMgd2l0aCBubyBvYnNlcnZlcnM7IHN0b3BwaW5nIENWRGlzcGxheUxpbmsi
KTsKICAgICAgICAgICAgIENWRGlzcGxheUxpbmtTdG9wKG1fZGlzcGxheUxpbmspOworICAgICAg
ICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9maXJlQ291bnRXaXRob3V0T2JzZXJ2
ZXJzID0gMDsKIAogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fb2JzZXJ2ZXJzLmtleXMo
KSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJ
IF0gRGlzcGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCA8PCAiIHNlbmRpbmcg
Zm9yIGNvbm5lY3Rpb24gIiA8PCBjb25uZWN0aW9uLT51bmlxdWVJRCgpIDw8ICIgb24gYmFja2dy
b3VuZCBxdWV1ZSAiIDw8IHNob3VsZFNlbmRJUENPbkJhY2tncm91bmRRdWV1ZSk7CiAgICAgICAg
IGlmIChzaG91bGRTZW5kSVBDT25CYWNrZ3JvdW5kUXVldWUpCiAgICAgICAgICAgICBjb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6OkRpc3BsYXlXYXNSZWZyZXNoZWQo
bV9kaXNwbGF5SUQpLCAwKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3Bs
YXlSZWZyZXNoTW9uaXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oCmluZGV4
IDc2ZGJjYmUwNTE3YTEzOTE2OTMwNDgzMTJkMGUwMTk1ZTNlMWNkNGQuLjY4NTU1MzgxOGY0YmJm
ZGVjM2RjMjU5MzkzMTM1N2YzZGQ5OWZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcigpOwogCiAgICAgdm9pZCBzZXRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQo
V2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kKSBvdmVycmlkZTsKLSAgICBib29sIHJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKyAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2so
KSBmaW5hbDsKIAogICAgIHZvaWQgZGlkVXBkYXRlTGF5ZXJzKCk7CiAgICAgdm9pZCB1cGRhdGVE
cmF3aW5nQXJlYShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSYpOwpAQCAtNDksNiArNDksOSBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCwgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEmKTsKIAorICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNt
KCkgZmluYWwgeyB9CisKICAgICBXZWFrUHRyPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPiBt
X2RyYXdpbmdBcmVhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9u
aXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0KaW5kZXggZmZiZmMwNTgx
YWVkNGUzYWMyM2YwN2NhMWE0MmRlMjM5ODc1MWQ1NS4uNzU5MmY1NjEwM2YyMGJjOWZiZTcxYWY1
YjRkNDZiYTJjYzMzNzkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tCkBAIC0yNiw2ICsyNiw5
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvci5oIgogCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC00OSwxMyArNTIsMTQgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEaXNwbGF5
UmVmcmVzaE1vbml0b3I6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChGcmFtZXNQZXIKIAog
Ym9vbCBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNo
Q2FsbGJhY2soKQogewotICAgIGlmICghbV9kcmF3aW5nQXJlYSB8fCAhaXNBY3RpdmUoKSkKKyAg
ICBpZiAoIW1fZHJhd2luZ0FyZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICgh
aXNTY2hlZHVsZWQoKSkKKyAgICBpZiAoIWlzU2NoZWR1bGVkKCkpIHsKKyAgICAgICAgTE9HX1dJ
VEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIlJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayAtIHRyaWdnZXJpbmcgdXBkYXRl
Iik7CiAgICAgICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVhJj4oKm1fZHJhd2luZ0FyZWEuZ2V0
KCkpLnRyaWdnZXJSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB9CiAKLSAgICBzZXRJc0FjdGl2ZSh0
cnVlKTsKICAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKaW5kZXggNzU1Y2NlNmY3MDQ0MmFkZDA0NzBj
M2I2N2ExZDkyNzJiNWUwYWUwZC4uZjRhMjQ3ZjZlNzU0M2U4NWNlNDBjYTcxYzQ2ODNjMjRhZDE2
MWRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKQEAgLTM5LDQ5ICszOSw2
MSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorLy8g
QXZvaWQgcmVwZWF0ZWQgc3RhcnQvc3RvcCBJUEMgd2hlbiByZXNjaGVkdWxlZCBpbnNpZGUgdGhl
IGNhbGxiYWNrLgorY29uc3RleHByIHVuc2lnbmVkIG1heFVuc2NoZWR1bGVkRmlyZUNvdW50IHsg
MSB9OworCiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
YyhQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0
b3IoZGlzcGxheUlEKQogICAgICwgbV9vYnNlcnZlcklEKERpc3BsYXlMaW5rT2JzZXJ2ZXJJRDo6
Z2VuZXJhdGUoKSkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBzZXRNYXhV
bnNjaGVkdWxlZEZpcmVDb3VudChtYXhVbnNjaGVkdWxlZEZpcmVDb3VudCk7CiB9CiAKIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYzo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYygpCiB7Ci0gICAg
aWYgKG1faGFzU2VudE1lc3NhZ2UpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
U3RvcERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCkpLCAwKTsKKyAgICAvLyBz
dG9wKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQuCisgICAgQVNTRVJUKCFtX2Rpc3BsYXlMaW5r
SXNBY3RpdmUpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGF0Y2hE
aXNwbGF5RGlkUmVmcmVzaCgpCit7CisgICAgaWYgKCFtX2ZpcnN0Q2FsbGJhY2tJbkN1cnJlbnRS
dW5sb29wKQorICAgICAgICByZXR1cm47CisKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRp
c3BhdGNoRGlzcGxheURpZFJlZnJlc2goKTsKIH0KIAotYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQorYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWM6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBpZiAoIWlzQWN0aXZl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9kaXNwbGF5TGlua0lzQWN0aXZl
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghbV9oYXNTZW50TWVzc2FnZSkgewot
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNl
cnZlcklELCBkaXNwbGF5SUQoKSksIDApOwotICAgICAgICBtX2hhc1NlbnRNZXNzYWdlID0gdHJ1
ZTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrIC0gc3RhcnRpbmciKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklE
LCBkaXNwbGF5SUQoKSksIDApOworICAgIGlmICghbV9ydW5Mb29wT2JzZXJ2ZXIpIHsKKyAgICAg
ICAgLy8gVGhlIFJ1bkxvb3BPYnNlcnZlciByZXBlYXRzLgogICAgICAgICBtX3J1bkxvb3BPYnNl
cnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlz
XSgpIHsKICAgICAgICAgICAgIG1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3AgPSB0cnVl
OwogICAgICAgICB9KTsKLSAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxlKENGUnVu
TG9vcEdldEN1cnJlbnQoKSk7CiAgICAgfQotICAgIAotICAgIHNldElzU2NoZWR1bGVkKHRydWUp
OworCisgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxlKENGUnVuTG9vcEdldEN1cnJlbnQo
KSk7CisgICAgbV9kaXNwbGF5TGlua0lzQWN0aXZlID0gdHJ1ZTsKIAogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtGaXJlZCgp
Cit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlz
bSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgaWYgKCFtX2ZpcnN0Q2Fs
bGJhY2tJbkN1cnJlbnRSdW5sb29wKQorICAgIGlmICghbV9kaXNwbGF5TGlua0lzQWN0aXZlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZpcnN0Q2FsbGJhY2tJbkN1cnJlbnRSdW5sb29wID0g
ZmFsc2U7Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVkKCkgZm9yIGRpc3BsYXkgIiA8
PCBkaXNwbGF5SUQoKSk7Ci0KLSAgICBkaXNwbGF5RGlkUmVmcmVzaCgpOworICAgIExPR19XSVRI
X1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6
OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2sgLSBzdG9wcGluZyIpOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6U3RvcERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCkpLCAw
KTsKKyAgICBtX3J1bkxvb3BPYnNlcnZlci0+aW52YWxpZGF0ZSgpOworICAgIAorICAgIG1fZGlz
cGxheUxpbmtJc0FjdGl2ZSA9IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9E
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaAppbmRleCA1M2ExNWZlYjI5MDM3MDczYTNmMzAyMjg0
ZmY1MjlkZmViNDM2YTFjLi4yZTY1YzRjMDI4ZDcyNDBmZmUyMzFkNTIxMWUxOThmNWNiZmQzY2Mx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCkBAIC0zOSwyMCArMzksMjEgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjKGRpc3BsYXlJRCkpOwogICAgIH0KLSAgICAKKwogICAgIHZpcnR1YWwgfkRpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYygpOwotICAgIAotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgp
IGZpbmFsOwotICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIGZpbmFsOwotICAgIAor
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyhXZWJDb3Jl
OjpQbGF0Zm9ybURpc3BsYXlJRCk7Ci0gICAgCi0gICAgYm9vbCBoYXNSZXF1ZXN0ZWRSZWZyZXNo
Q2FsbGJhY2soKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2hhc1NlbnRNZXNzYWdlOyB9CisKKyAg
ICB2b2lkIGRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2goKSBmaW5hbDsKKworICAgIGJvb2wgc3Rh
cnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BOb3RpZmljYXRp
b25NZWNoYW5pc20oKSBmaW5hbDsKIAogICAgIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCBtX29ic2Vy
dmVySUQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4gbV9y
dW5Mb29wT2JzZXJ2ZXI7Ci0gICAgYm9vbCBtX2hhc1NlbnRNZXNzYWdlIHsgZmFsc2UgfTsKKwor
ICAgIGJvb2wgbV9kaXNwbGF5TGlua0lzQWN0aXZlIHsgZmFsc2UgfTsKICAgICBib29sIG1fZmly
c3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3AgeyBmYWxzZSB9OwogfTsKIAo=
</data>
<flag name="commit-queue"
          id="444156"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424472</attachid>
            <date>2021-03-27 15:12:49 -0700</date>
            <delta_ts>2021-03-27 17:58:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223844-20210327151248.patch</filename>
            <type>text/plain</type>
            <size>44164</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY1MjI4Yzk0YzVlYWI2
YTU0NGY0MjIzMmE3NGY1N2RlMDRmNDBlNC4uZDQxOGE1NTRhNTE4OGNhNjBlNGFkMTUwN2U3NTUy
M2VkYmZlZDMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTAzLTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IERpc3Bs
YXlSZWZyZXNoTW9uaXRvciB0byBiZSBtb3JlIGxvbmctbGl2ZWQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODQ0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIGJlaGF2
aW9yIGZvciBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIHdhcyB0aGF0IHRoZXkgd2VyZSBjcmVhdGVk
IGFuZCBkZXN0cm95ZWQKKyAgICAgICAgZnJlcXVlbnRseSwgYXMgdGhlaXIgY2xpZW50cyBhcmUg
cmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkLiBJbiBhZGRpdGlvbiwgc29tZSBvZgorICAgICAg
ICB0aGVpciBzdWJjbGFzc2VzIGhhZCBkdXBsaWNhdGVkIGxvZ2ljIHJlbGF0ZWQgdG8gaG93IG9m
dGVuIHRoZXkgZmlyZWQgd2l0aG91dCBjbGllbnRzCisgICAgICAgIGJlZm9yZSB0aGV5IHdlcmUg
cmVtb3ZlZC4KKworICAgICAgICBUaGUgMToxIGNvcnJlc3BvbmRhbmNlIGJldHdlZW4gRGlzcGxh
eVJlZnJlc2hNb25pdG9ycyBhbmQgcGh5c2ljYWwgZGlzcGxheXMgbWFrZXMgdGhlbQorICAgICAg
ICBhIHVzZWZ1bCBwbGFjZSB0byBzdG9yZSBwZXItZGlzcGxheSBpbmZvcm1hdGlvbiAobGlrZSBy
ZWZyZXNoIHJhdGUpLCB3aGljaCBzaG91bGQKKyAgICAgICAgcGVyc2lzdCB3aGV0aGVyIG9yIG5v
dCB0aGV5IGhhdmUgY2xpZW50cywgc28gdGhpcyBjaGFuZ2UgcHJlcGFyZXMgZm9yIHRoYXQuCisg
ICAgICAgIAorICAgICAgICBUaGUgbWFpbiBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggYXJlOgorICAg
ICAgICAgIDEuIFByb3ZpZGUgdmlydHVhbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpL3N0
b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmdW5jdGlvbnMgb24KKyAgICAgICAgICAgICBEaXNw
bGF5UmVmcmVzaE1vbml0b3IgdGhhdCBzdWJjbGFzc2VzIGNhbiB1c2UgdG8gc3RhcnQgdGhlaXIg
Q1ZEaXNwbGF5TGluayBvciByZWxhdGVkCisgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KKwor
ICAgICAgICAgIDIuIFByb3ZpZGUgc29tZSBzaGFyZWQgbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQg
bG9naWMgdGhhdCBzdWJjbGFzc2VzIGNhbiB0dW5lIHRvCisgICAgICAgICAgICAgcHJvdmlkZSB0
aGUgaHlzdGVyZXNpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIHN0YXJ0L3N0b3Agb2YgdGhlIHVuZGVy
bHlpbmcKKyAgICAgICAgICAgICBub3RpZmljYXRpb24gbWVjaGFuaXNtLgorCisgICAgICAgICAz
LiBQcm92aWRlIGEgc2hhcmVkIGRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2goKSBmdW5jdGlvbiB0
aGF0IG1vc3QgaW1wbGVtZW50YXRpb25zCisgICAgICAgICAgICBjYW4gdXNlLgorCisgICAgICAg
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIgbm8gbG9uZ2VyIGRlc3Ryb3lzIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcnMgd2hlbiB0aGV5IGxvc2UKKyAgICAgICAgYWxsIHRoZWlyIGNsaWVudHMu
IFRoaXMgbWVhbnMgdGhhdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIGFyZSBuZXZlciByZW1vdmVk
LCBidXQgdGhlcmUKKyAgICAgICAgc2hvdWxkIG9ubHkgZXZlciBiZSBhcyBtYW55IGFzIHRoZXJl
IGFyZSBwaHlzaWNhbCBkaXNwbGF5cywgYW5kIHRoZXkgYXJlIG9ubHkKKyAgICAgICAgYWN0aXZl
IGlmIGJlaW5nIHNjaGVkdWxlZCBieSBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3Rv
cCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpm
aXJlZEFuZFJlYWNoZWRNYXhVbnNjaGVkdWxlZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJl
c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpzZXRNYXhVbnNjaGVk
dWxlZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6
Om11dGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxh
eUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yOjpzaG91bGRCZVRlcm1pbmF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnNldElzQWN0aXZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXI6OnVucmVnaXN0ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheVdhc1VwZGF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjp+RGlzcGxheVJlZnJlc2hN
b25pdG9yR3RrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uRnJhbWVDbG9ja1VwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpzdGFydE5vdGlmaWNhdGlvbk1lY2hh
bmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3BO
b3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yR3RrOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ckd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJl
c2hNb25pdG9ySU9TLm1tOgorICAgICAgICAoLVtXZWJEaXNwbGF5TGlua0hhbmRsZXIgc2V0UGF1
c2VkOl0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpEaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TOjp+RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcE5vdGlmaWNhdGlvbk1l
Y2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnJl
cXVlc3RSZWZyZXNoQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TOjpkaXNwbGF5TGlua0ZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6TGVn
YWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlm
aWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpzdGFy
dE5vdGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3JXaW46OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxh
eUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oOgorCiAyMDIxLTAzLTI3ICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogU2VuZCByZXBvcnQgdG8g
Ym90aCBjbGljayBzb3VyY2UgYW5kIGF0dHJpYnV0aW9uIGRlc3RpbmF0aW9uIHdlYnNpdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggY2Q3NjEzMDU3MjU5NmFhZjdmOTc4ZjJmMjMwZDFlMzIwMWIyZjExNy4uYTY5MTM4
YzE1YjhmNTc0NmRjNTVhZWE3MzhiZDI3MWUwMmU4YWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MSBAQAorMjAyMS0wMy0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KworICAgICAgICBBbGxvdyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgdG8gYmUgbW9yZSBsb25nLWxp
dmVkIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBleGlzdGluZyBiZWhhdmlvciBmb3IgRGlzcGxheVJlZnJlc2hNb25pdG9ycyB3YXMg
dGhhdCB0aGV5IHdlcmUgY3JlYXRlZCBhbmQgZGVzdHJveWVkCisgICAgICAgIGZyZXF1ZW50bHks
IGFzIHRoZWlyIGNsaWVudHMgYXJlIHJlZ2lzdGVyZWQgYW5kIHVucmVnaXN0ZXJlZC4gSW4gYWRk
aXRpb24sIHNvbWUgb2YKKyAgICAgICAgdGhlaXIgc3ViY2xhc3NlcyBoYWQgZHVwbGljYXRlZCBs
b2dpYyByZWxhdGVkIHRvIGhvdyBvZnRlbiB0aGV5IGZpcmVkIHdpdGhvdXQgY2xpZW50cworICAg
ICAgICBiZWZvcmUgdGhleSB3ZXJlIHJlbW92ZWQuCisKKyAgICAgICAgVGhlIDE6MSBjb3JyZXNw
b25kYW5jZSBiZXR3ZWVuIERpc3BsYXlSZWZyZXNoTW9uaXRvcnMgYW5kIHBoeXNpY2FsIGRpc3Bs
YXlzIG1ha2VzIHRoZW0KKyAgICAgICAgYSB1c2VmdWwgcGxhY2UgdG8gc3RvcmUgcGVyLWRpc3Bs
YXkgaW5mb3JtYXRpb24gKGxpa2UgcmVmcmVzaCByYXRlKSwgd2hpY2ggc2hvdWxkCisgICAgICAg
IHBlcnNpc3Qgd2hldGhlciBvciBub3QgdGhleSBoYXZlIGNsaWVudHMsIHNvIHRoaXMgY2hhbmdl
IHByZXBhcmVzIGZvciB0aGF0LgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlcyBp
biB0aGlzIHBhdGNoIGFyZToKKyAgICAgICAgICAxLiBQcm92aWRlIHZpcnR1YWwgc3RhcnROb3Rp
ZmljYXRpb25NZWNoYW5pc20oKS9zdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZnVuY3Rpb25z
IG9uCisgICAgICAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yIHRoYXQgc3ViY2xhc3NlcyBj
YW4gdXNlIHRvIHN0YXJ0IHRoZWlyIENWRGlzcGxheUxpbmsgb3IgcmVsYXRlZAorICAgICAgICAg
ICAgIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgICAyLiBQcm92aWRlIHNvbWUgc2hhcmVkIG1h
eFVuc2NoZWR1bGVkRmlyZUNvdW50IGxvZ2ljIHRoYXQgc3ViY2xhc3NlcyBjYW4gdHVuZSB0bwor
ICAgICAgICAgICAgIHByb3ZpZGUgdGhlIGh5c3RlcmVzaXMgdXNlZCB0byBjb250cm9sIHRoZSBz
dGFydC9zdG9wIG9mIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgbm90aWZpY2F0aW9uIG1l
Y2hhbmlzbS4KKworICAgICAgICAgMy4gUHJvdmlkZSBhIHNoYXJlZCBkaXNwYXRjaERpc3BsYXlE
aWRSZWZyZXNoKCkgZnVuY3Rpb24gdGhhdCBtb3N0IGltcGxlbWVudGF0aW9ucworICAgICAgICAg
ICAgY2FuIHVzZS4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAg
ICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
RGlzcGxheVJlZnJlc2hNb25pdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9EaXNwbGF5
TGluay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpEaXNwbGF5TGluayk6Cisg
ICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjp+RGlzcGxheUxpbmspOgorICAgICAgICAoV2Vi
S2l0OjpEaXNwbGF5TGluazo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5
TGluazo6bm90aWZ5T2JzZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVz
aENhbGxiYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAg
KFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZy
ZXNoKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtG
aXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMuaDoKKwogMjAyMS0wMy0yNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFNlbmQgcmVwb3J0IHRvIGJvdGgg
Y2xpY2sgc291cmNlIGFuZCBhdHRyaWJ1dGlvbiBkZXN0aW5hdGlvbiB3ZWJzaXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDczNGY5NGIxMGZmYmJlODE3YWZkMjE2
M2UwYzgzMzUwZjAwZDUyYmUuLmIyN2ZkMzYwMTI0MDk5NjM1NTA0ZjUyNzE4ODA2NTg3YzM4NWE1
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzcsNiArMTM3
LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgeyB9CiAKKyAgICBib29sIHN0
YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZv
aWQgc3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsIHsgfQorCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IEVtcHR5RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCkKICAgICAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci5jcHAKaW5kZXggODI2NDk2Y2JkNDg1ZTEwZmJkOWIzNDc2MWYwMGUyNzgwZDQ5
ZGJmMi4uYjcwODNhNGMyZTdkMGNmNWU5NDVlYzhjNDc4NGQ1YzA3Yzk5NWIxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwCkBAIC00NCw2ICs0NCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y29uc3RleHByIHVuc2lnbmVkIG1heFVuc2NoZWR1bGVkRmlyZUNvdW50IHsgMSB9OworCiBSZWZQ
dHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZURl
ZmF1bHREaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTgwLDYgKzgyLDEyIEBAIERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkK
IAogRGlzcGxheVJlZnJlc2hNb25pdG9yOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yKCkgPSBkZWZh
dWx0OwogCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3RvcCgpCit7CisgICAgc3RvcE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSgpOworICAgIHNldElzU2NoZWR1bGVkKGZhbHNlKTsKK30KKwog
dm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmFkZENsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQmIGNsaWVudCkKIHsKICAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwpAQCAtODks
MjMgKzk3LDY4IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZW1vdmVDbGllbnQoRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgaWYgKG1fY2xpZW50c1Rv
QmVOb3RpZmllZCkKICAgICAgICAgbV9jbGllbnRzVG9CZU5vdGlmaWVkLT5yZW1vdmUoJmNsaWVu
dCk7CisKICAgICByZXR1cm4gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAotdm9pZCBE
aXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKCkKK2Jvb2wgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluUnVuTG9vcCgpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CisgICAgCisgICAg
aWYgKGlzU2NoZWR1bGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYXV0byBzdGFy
dGVkID0gc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKTsKKyAgICBpZiAoIXN0YXJ0ZWQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZmlyZWRBbmRSZWFj
aGVkTWF4VW5zY2hlZHVsZWRGaXJlQ291bnQoKQoreworICAgIEFTU0VSVChtdXRleCgpLmlzTG9j
a2VkKCkpOworCisgICAgaWYgKGlzU2NoZWR1bGVkKCkpIHsKKyAgICAgICAgbV91bnNjaGVkdWxl
ZEZpcmVDb3VudCA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICArK21f
dW5zY2hlZHVsZWRGaXJlQ291bnQ7CisgICAgcmV0dXJuIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQg
PiBtX21heFVuc2NoZWR1bGVkRmlyZUNvdW50OworfQogCit2b2lkIERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9tdXRleCk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFt
IDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3IgIiA8PCB0aGlzIDw8ICIgZGlzcGxheURpZFJlZnJl
c2ggZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQoKSA8PCAiIHNjaGVkdWxlZCAiIDw8IG1fc2No
ZWR1bGVkIDw8ICIgdW5zY2hlZHVsZWRGaXJlQ291bnQgIiA8PCBtX3Vuc2NoZWR1bGVkRmlyZUNv
dW50KTsKLSAgICAgICAgaWYgKCFtX3NjaGVkdWxlZCkKLSAgICAgICAgICAgICsrbV91bnNjaGVk
dWxlZEZpcmVDb3VudDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV91bnNjaGVkdWxlZEZp
cmVDb3VudCA9IDA7CiAKLSAgICAgICAgbV9zY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgLy8g
VGhpcyBtYXkgYmUgb2ZmIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgaWYgKCFpc1ByZXZpb3Vz
RnJhbWVEb25lKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTE9HX1dJVEhfU1RS
RUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxh
eUxpbmtGaXJlZCBmb3IgZGlzcGxheSAiIDw8IGRpc3BsYXlJRCgpIDw8ICIgLSBzY2hlZHVsZWQg
IiA8PCBpc1NjaGVkdWxlZCgpIDw8ICIgdW5zY2hlZHVsZWRGaXJlQ291bnQgIiA8PCBtX3Vuc2No
ZWR1bGVkRmlyZUNvdW50IDw8ICIgb2YgIiA8PCBtX21heFVuc2NoZWR1bGVkRmlyZUNvdW50KTsK
KyAgICAgICAgaWYgKGZpcmVkQW5kUmVhY2hlZE1heFVuc2NoZWR1bGVkRmlyZUNvdW50KCkpIHsK
KyAgICAgICAgICAgIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNldElzU2NoZWR1bGVkKGZhbHNlKTsKKyAgICAg
ICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7CiAgICAgfQorICAgIGRpc3BhdGNoRGlz
cGxheURpZFJlZnJlc2goKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3Bh
dGNoRGlzcGxheURpZFJlZnJlc2goKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgZGlzcGxheURpZFJlZnJlc2goKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6
OmRpc3BsYXlEaWRSZWZyZXNoKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgLy8gVGhlIGNhbGwgYmFjayBjYW4gY2F1c2UgYWxsIG91ciBjbGllbnRzIHRvIGJlIHVucmVn
aXN0ZXJlZCwgc28gd2UgbmVlZCB0byBwcm90ZWN0CiAgICAgLy8gYWdhaW5zdCBkZWxldGlvbiB1
bnRpbCB0aGUgZW5kIG9mIHRoZSBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCmluZGV4IDc5M2NlNGU2
YWM2ZDczMDA0ZDM5ODlkMzA1ZWUwZTIxMWJiYmMzMzcuLmNmZjAzMGNmOTVjZDBhMDcxNjU5NGM0
MzE0MTUwYWVmYzcwNmRlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCkBAIC00MiwxNiArNDIsMTQgQEAg
Y2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PERpc3BsYXlSZWZyZXNoTW9uaXRvcj4KIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPERpc3Bs
YXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlKERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqLCBQ
bGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RGlzcGxheVJl
ZnJlc2hNb25pdG9yKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIHsg
fQorICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1BlclNlY29uZCkg
eyB9CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBjYWxsYmFjayByZXF1ZXN0IHdhcyBzY2hlZHVs
ZWQsIGZhbHNlIGlmIGl0IGNvdWxkbid0IGJlCiAgICAgLy8gKGUuZy4sIGhhcmR3YXJlIHJlZnJl
c2ggaXMgbm90IGF2YWlsYWJsZSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxs
YmFjaygpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgeyB9CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKTsKIAogICAgIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKICAgICAKQEAgLTYxLDIz
ICs1OSwyNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIAotICAgIGJvb2wgc2hvdWxkQmVUZXJt
aW5hdGVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBtYXhJbmFjdGl2ZUZpcmVD
b3VudCA9IDE7Ci0gICAgICAgIHJldHVybiAhbV9zY2hlZHVsZWQgJiYgbV91bnNjaGVkdWxlZEZp
cmVDb3VudCA+IG1heEluYWN0aXZlRmlyZUNvdW50OwotICAgIH0KLQogICAgIHN0YXRpYyBSZWZQ
dHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25p
dG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZGlzcGxheUxpbmtGaXJlZCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKIAogICAgIGZy
aWVuZCBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOwotICAgIAotICAgIExvY2sm
IG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQogCi0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZlOyB9Ci0gICAgdm9pZCBzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkg
eyBtX2FjdGl2ZSA9IGFjdGl2ZTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCk7CisKKyAgICB2b2lkIHNldE1heFVuc2NoZWR1bGVk
RmlyZUNvdW50KHVuc2lnbmVkIGNvdW50KSB7IG1fbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQgPSBj
b3VudDsgfQorICAgIGJvb2wgZmlyZWRBbmRSZWFjaGVkTWF4VW5zY2hlZHVsZWRGaXJlQ291bnQo
KTsKKworICAgIExvY2smIG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQorICAgIAorICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgc3RhcnQgd2FzIHN1Y2Nlc3NmdWwuCisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgPSAwOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkg
PSAwOwogCiAgICAgYm9vbCBpc1NjaGVkdWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZWR1bGVk
OyB9CiAgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIHNjaGVkdWxlZCkgeyBtX3NjaGVkdWxl
ZCA9IHNjaGVkdWxlZDsgfQpAQCAtOTIsMTIgKzkxLDE0IEBAIHByaXZhdGU6CiAKICAgICBIYXNo
U2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+IG1fY2xpZW50czsKICAgICBIYXNoU2V0
PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+KiBtX2NsaWVudHNUb0JlTm90aWZpZWQgeyBu
dWxscHRyIH07Ci0gICAgTG9jayBtX211dGV4OwogICAgIFBsYXRmb3JtRGlzcGxheUlEIG1fZGlz
cGxheUlEIHsgMCB9OwotICAgIGludCBtX3Vuc2NoZWR1bGVkRmlyZUNvdW50IHsgMCB9OyAvLyBO
dW1iZXIgb2YgdGltZXMgdGhlIGRpc3BsYXkgbGluayBoYXMgZmlyZWQgd2l0aCBubyBjbGllbnRz
LgotICAgIGJvb2wgbV9hY3RpdmUgeyB0cnVlIH07CisKKyAgICBMb2NrIG1fbXV0ZXg7CiAgICAg
Ym9vbCBtX3NjaGVkdWxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3ByZXZpb3VzRnJhbWVEb25l
IHsgdHJ1ZSB9OworICAgIAorICAgIHVuc2lnbmVkIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgeyAw
IH07CisgICAgdW5zaWduZWQgbV9tYXhVbnNjaGVkdWxlZEZpcmVDb3VudCB7IDAgfTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKaW5kZXggZThkZmVjN2ExZDU0MzM0
YWY1Mjc1OGM4OWMwNjNlYjUyNWE1ZWM3MC4uMmMzOTdiOTk4ZmJmMWU2NWZlOWJkMWYxMmQ4MzMz
ZWY3YmNiZDRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKQEAgLTcyLDEx
ICs3Miw5IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6dW5yZWdpc3RlckNs
aWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQmCiAgICAgYXV0byBpbmRleCA9IGZpbmRN
b25pdG9yRm9yRGlzcGxheUlEKGNsaWVudERpc3BsYXlJRCk7CiAgICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQogICAgICAgICByZXR1cm47CisKICAgICBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25p
dG9yPiBtb25pdG9yID0gbV9tb25pdG9yc1tpbmRleF0ubW9uaXRvcjsKLSAgICBpZiAobW9uaXRv
ci0+cmVtb3ZlQ2xpZW50KGNsaWVudCkpIHsKLSAgICAgICAgaWYgKCFtb25pdG9yLT5oYXNDbGll
bnRzKCkpCi0gICAgICAgICAgICBtX21vbml0b3JzLnJlbW92ZShpbmRleCk7Ci0gICAgfQorICAg
IG1vbml0b3ItPnJlbW92ZUNsaWVudChjbGllbnQpOwogfQogCiB2b2lkIERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXI6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChEaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQmIGNsaWVudCwgRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZCkKQEAgLTk0LDE2ICs5Miw5IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlcjo6c2NoZWR1bGVBbmltYXRpb24oRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmRp
c3BsYXlEaWRSZWZyZXNoKERpc3BsYXlSZWZyZXNoTW9uaXRvciYgbW9uaXRvcikKK3ZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2goRGlzcGxheVJlZnJl
c2hNb25pdG9yJikKIHsKLSAgICBpZiAoIW1vbml0b3Iuc2hvdWxkQmVUZXJtaW5hdGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFt
IDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpkaXNwbGF5RGlkUmVmcmVzaCgpIC0g
ZGVzdHJveWluZyBtb25pdG9yICIgPDwgJm1vbml0b3IpOwotCi0gICAgbV9tb25pdG9ycy5yZW1v
dmVGaXJzdE1hdGNoaW5nKFsmXShhdXRvJiBtb25pdG9yV3JhcHBlcikgewotICAgICAgICByZXR1
cm4gbW9uaXRvcldyYXBwZXIubW9uaXRvciA9PSAmbW9uaXRvcjsKLSAgICB9KTsKKyAgICAvLyBN
YXliZSB3ZSBzaG91bGQgcmVtb3ZlIG1vbml0b3JzIHRoYXQgaGF2ZW4ndCBiZWVuIGFjdGl2ZSBm
b3Igc29tZSB0aW1lLgogfQogCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIERpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCYgY2xpZW50KQpAQCAtMTIwLDcgKzExMSw3IEBAIHZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmRpc3Bs
YXlXYXNVcGRhdGVkKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKICAgICBhdXRvKiBt
b25pdG9yID0gbW9uaXRvckZvckRpc3BsYXlJRChkaXNwbGF5SUQpOwotICAgIGlmIChtb25pdG9y
ICYmIG1vbml0b3ItPmhhc1JlcXVlc3RlZFJlZnJlc2hDYWxsYmFjaygpKQorICAgIGlmIChtb25p
dG9yKQogICAgICAgICBtb25pdG9yLT5kaXNwbGF5TGlua0ZpcmVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1v
bml0b3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckd0ay5jcHAKaW5kZXggNzhjZjVkZjNhNzg0ZWI3YWM2MDRmNTQzMmQ5
ZDZmOTJlNjJkYjhmMy4uOGY2OTA5Y2QwZDNmNGYxYTg4MTBlZmFlZDM1YjU0MWI4YThhOTMzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0ay5jcHAKQEAgLTM5LDYgKzM5LDE2IEBAIERp
c3BsYXlSZWZyZXNoTW9uaXRvckd0azo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCkKIH0KIAogRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjp+RGlz
cGxheVJlZnJlc2hNb25pdG9yR3RrKCkKK3sKKyAgICBBU1NFUlQoIW1fd2luZG93KTsKK30KKwor
c3RhdGljIHZvaWQgb25GcmFtZUNsb2NrVXBkYXRlKEdka0ZyYW1lQ2xvY2sqLCBEaXNwbGF5UmVm
cmVzaE1vbml0b3JHdGsqIG1vbml0b3IpCit7CisgICAgbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJl
ZCgpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6c3RvcCgpCiB7CiAgICAg
aWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuOwpAQCAtNDYsNTAgKzU2LDQ1IEBAIERpc3Bs
YXlSZWZyZXNoTW9uaXRvckd0azo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvckd0aygpCiAgICAgYXV0
byogZnJhbWVDbG9jayA9IGd0a193aWRnZXRfZ2V0X2ZyYW1lX2Nsb2NrKG1fd2luZG93KTsKICAg
ICBBU1NFUlQoZnJhbWVDbG9jayk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9t
YXRjaGVkKGZyYW1lQ2xvY2ssIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIG51bGxwdHIsIG51
bGxwdHIsIHRoaXMpOwotICAgIGdka19mcmFtZV9jbG9ja19lbmRfdXBkYXRpbmcoZnJhbWVDbG9j
ayk7Ci0gICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fd2luZG93KTsKLX0KIAotc3RhdGljIHZvaWQg
b25GcmFtZUNsb2NrVXBkYXRlKEdka0ZyYW1lQ2xvY2sqLCBEaXNwbGF5UmVmcmVzaE1vbml0b3JH
dGsqIG1vbml0b3IpCi17Ci0gICAgbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJlZCgpOworICAgIGd0
a193aWRnZXRfZGVzdHJveShtX3dpbmRvdyk7CisgICAgbV93aW5kb3cgPSBudWxscHRyOwogfQog
Ci1ib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygp
Citib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5p
c20oKQogewotICAgIGlmICghaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX2Nsb2NrSXNBY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgR2RrRnJh
bWVDbG9jayogZnJhbWVDbG9jazsKICAgICBpZiAoIW1fd2luZG93KSB7CiAgICAgICAgIC8vIEdk
a0ZyYW1lQ2xvY2tJZGxlIGlzIHByaXZhdGUgaW4gR0RLLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBh
IHRvcGxldmVsIHRvIGdldCBpdHMgZnJhbWUgY2xvY2suCiAgICAgICAgIG1fd2luZG93ID0gZ3Rr
X29mZnNjcmVlbl93aW5kb3dfbmV3KCk7CiAgICAgICAgIGd0a193aWRnZXRfcmVhbGl6ZShtX3dp
bmRvdyk7CiAKLSAgICAgICAgYXV0byogZnJhbWVDbG9jayA9IGd0a193aWRnZXRfZ2V0X2ZyYW1l
X2Nsb2NrKG1fd2luZG93KTsKKyAgICAgICAgZnJhbWVDbG9jayA9IGd0a193aWRnZXRfZ2V0X2Zy
YW1lX2Nsb2NrKG1fd2luZG93KTsKICAgICAgICAgQVNTRVJUKGZyYW1lQ2xvY2spOwotCiAgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoZnJhbWVDbG9jaywgInVwZGF0ZSIsIEdfQ0FMTEJBQ0sob25G
cmFtZUNsb2NrVXBkYXRlKSwgdGhpcyk7Ci0gICAgICAgIGdka19mcmFtZV9jbG9ja19iZWdpbl91
cGRhdGluZyhmcmFtZUNsb2NrKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnJhbWVDbG9jayA9IGd0
a193aWRnZXRfZ2V0X2ZyYW1lX2Nsb2NrKG1fd2luZG93KTsKIAotICAgICAgICBzZXRJc0FjdGl2
ZSh0cnVlKTsKLSAgICB9CisgICAgQVNTRVJUKGZyYW1lQ2xvY2spOworICAgIGdka19mcmFtZV9j
bG9ja19iZWdpbl91cGRhdGluZyhmcmFtZUNsb2NrKTsKIAotICAgIExvY2tIb2xkZXIgbG9jayht
dXRleCgpKTsKLSAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICBtX2Nsb2NrSXNBY3RpdmUg
PSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRv
ckd0azo6ZGlzcGxheUxpbmtGaXJlZCgpCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6
c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2sobXV0ZXgoKSk7Ci0gICAgICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2Up
OwotICAgIH0KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGRpc3BsYXlEaWRSZWZy
ZXNoKCk7CisgICAgaWYgKCFtX2Nsb2NrSXNBY3RpdmUpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIGZyYW1lQ2xvY2sgPSBndGtfd2lkZ2V0X2dldF9mcmFtZV9jbG9jayhtX3dpbmRvdyk7
CisgICAgQVNTRVJUKGZyYW1lQ2xvY2spOworICAgIGdka19mcmFtZV9jbG9ja19lbmRfdXBkYXRp
bmcoZnJhbWVDbG9jayk7CisKKyAgICBtX2Nsb2NrSXNBY3RpdmUgPSBmYWxzZTsgICAgCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuaAppbmRl
eCA1M2NhYjdmMWM1YjM2YWI4MmUxYzRmMzUyN2M5YmQwNmM2ZWMxOTdjLi45MWRmZmMxZTAzM2Mw
Yzg2MmQxODAwZjA2ZDg1MzViYTU1YjlmMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0
ay5oCkBAIC00MiwxMyArNDIsMTUgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RGlzcGxheVJl
ZnJlc2hNb25pdG9yR3RrKCk7CiAKLSAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKLQogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsoUGxhdGZvcm1EaXNwbGF5
SUQpOwogCisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlv
bk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgp
IGZpbmFsOworCiAgICAgR3RrV2lkZ2V0KiBtX3dpbmRvdyB7IG51bGxwdHIgfTsKKyAgICBib29s
IG1fY2xvY2tJc0FjdGl2ZSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
b3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgKaW5kZXggZjk5ZDY0ZTZjMGI1Njk4NTQ1M2Ux
ZGQ1MjA5NzZiMjBmMmIwMmMyZC4uMTA1MDhlODkwZDUwMDQwMWE3Y2EzMGYxNDQzZWMxMzA3MWQ0
NDY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaApAQCAtNDMsMTQgKzQzLDE3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoKTsK
IAotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVz
dFJlZnJlc2hDYWxsYmFjaygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUyhQbGF0Zm9ybURpc3BsYXlJRCk7CisKKyAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKKyAgICBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7
CisgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CisKICAgICBSZXRh
aW5QdHI8V2ViRGlzcGxheUxpbmtIYW5kbGVyPiBtX2hhbmRsZXI7CisgICAgYm9vbCBtX2Rpc3Bs
YXlMaW5rSXNBY3RpdmUgeyBmYWxzZSB9OwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25p
dG9ySU9TLm1tCmluZGV4IDcxY2I4MGQ1ZjE0ZmNhN2IyOTQ2OTJmOWJhNzI5Yjg2YzBhZGIyODku
LmNkYzE2ZmM0NmRkODczM2ExNjA4Zjc2OGU1OWM1MGFiMmE3OWM3ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUy5tbQpAQCAtMjgsMTEgKzI4LDE0IEBACiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFk
LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBRGlzcGxheUxpbmsuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIHVzaW5nIFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzsKKwogQGludGVyZmFjZSBXZWJEaXNwbGF5
TGlua0hhbmRsZXIgOiBOU09iamVjdAogewogICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUyog
bV9tb25pdG9yOwpAQCAtNDIsNiArNDUsNyBAQCBAaW50ZXJmYWNlIFdlYkRpc3BsYXlMaW5rSGFu
ZGxlciA6IE5TT2JqZWN0CiAtIChpZClpbml0V2l0aE1vbml0b3I6KERpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUyopbW9uaXRvcjsKIC0gKHZvaWQpc2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOihO
U0ludGVnZXIpcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOwogLSAodm9pZCloYW5kbGVEaXNwbGF5
TGluazooQ0FEaXNwbGF5TGluayAqKXNlbmRlcjsKKy0gKHZvaWQpc2V0UGF1c2VkOihCT09MKXBh
dXNlZDsKIC0gKHZvaWQpaW52YWxpZGF0ZTsKIAogQGVuZApAQCAtNzgsNiArODIsMTEgQEAgLSAo
dm9pZCloYW5kbGVEaXNwbGF5TGluazooQ0FEaXNwbGF5TGluayAqKXNlbmRlcgogICAgIG1fbW9u
aXRvci0+ZGlzcGxheUxpbmtGaXJlZCgpOwogfQogCistICh2b2lkKXNldFBhdXNlZDooQk9PTClw
YXVzZWQKK3sKKyAgICBbbV9kaXNwbGF5TGluayBzZXRQYXVzZWQ6cGF1c2VkXTsKK30KKwogLSAo
dm9pZClpbnZhbGlkYXRlCiB7CiAgICAgW21fZGlzcGxheUxpbmsgaW52YWxpZGF0ZV07CkBAIC04
OCwzOSArOTcsNTEgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NvbnN0ZXhwciB1
bnNpZ25lZCBtYXhVbnNjaGVkdWxlZEZpcmVDb3VudCB7IDEgfTsKKwogRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKQogICAgIDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKIHsKKyAgICBz
ZXRNYXhVbnNjaGVkdWxlZEZpcmVDb3VudChtYXhVbnNjaGVkdWxlZEZpcmVDb3VudCk7CiB9CiAK
IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUygpCit7
CisgICAgQVNTRVJUKCFtX2hhbmRsZXIpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUzo6c3RvcCgpCiB7CiAgICAgW21faGFuZGxlciBpbnZhbGlkYXRlXTsKKyAgICBtX2hhbmRs
ZXIgPSBuaWw7CiB9CiAKLWJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpyZXF1ZXN0UmVm
cmVzaENhbGxiYWNrKCkKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpzdGFydE5vdGlm
aWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgaWYgKCFpc0FjdGl2ZSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fZGlzcGxheUxpbmtJc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBpZiAoIW1faGFuZGxlcikgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
RGlzcGxheUxpbmssIHN0cmVhbSA8PCAiRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpzdGFydE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSAtIGNyZWF0aW5nIFdlYkRpc3BsYXlMaW5rSGFuZGxlciIpOwog
ICAgICAgICBtX2hhbmRsZXIgPSBhZG9wdE5TKFtbV2ViRGlzcGxheUxpbmtIYW5kbGVyIGFsbG9j
XSBpbml0V2l0aE1vbml0b3I6dGhpc10pOwotICAgICAgICBzZXRJc0FjdGl2ZSh0cnVlKTsKICAg
ICB9CiAKLSAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlz
cGxheUxpbmssIHN0cmVhbSA8PCAiRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpzdGFydE5vdGlm
aWNhdGlvbk1lY2hhbmlzbSAtIHN0YXJ0aW5nIFdlYkRpc3BsYXlMaW5rSGFuZGxlciIpOworICAg
IFttX2hhbmRsZXIgc2V0UGF1c2VkOk5PXTsKKyAgICBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgPSB0
cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcklP
Uzo6ZGlzcGxheUxpbmtGaXJlZCgpCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3Rv
cE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25l
KCkpCisgICAgaWYgKCFtX2Rpc3BsYXlMaW5rSXNBY3RpdmUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOwotICAgIGRpc3BsYXlEaWRSZWZyZXNo
KCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSAtIHBhdXNpbmcgV2Vi
RGlzcGxheUxpbmtIYW5kbGVyIik7CisgICAgW21faGFuZGxlciBzZXRQYXVzZWQ6WUVTXTsKKyAg
ICBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgPSBmYWxzZTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2Fj
eURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKaW5kZXggNGRjZWY5MzljMzZlMGZmZDc4OTQy
YjQ4MDNjNjY5YzNjYjlkZTdhNy4uYzc0NTgwMDYxZWMxMzFmNmEwNzY3OWU2OGNmZDdiMTc2NjUz
MDlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xl
Z2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKQEAg
LTI4LDE2ICsyOCwyMSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgotI2luY2x1ZGUgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2luY2x1ZGUgPENvcmVWaWRlby9DVkRpc3BsYXlMaW5r
Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3RleHByIHVuc2lnbmVkIG1heFVu
c2NoZWR1bGVkRmlyZUNvdW50IHsgMjAgfTsKKwogTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjOjpMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKQogICAgIDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKIHsKICAgICBB
U1NFUlQoIWlzSW5XZWJQcm9jZXNzKCkpOworICAgIHNldE1heFVuc2NoZWR1bGVkRmlyZUNvdW50
KG1heFVuc2NoZWR1bGVkRmlyZUNvdW50KTsKIH0KIAogTGVnYWN5RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjp+TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKCkKQEAgLTQ3LDEwICs1Miw4
IEBAIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6fkxlZ2FjeURpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYygpCiAKIHZvaWQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdG9w
KCkKIHsKLSAgICBpZiAoIW1fZGlzcGxheUxpbmspCi0gICAgICAgIHJldHVybjsKLQotICAgIENW
RGlzcGxheUxpbmtTdG9wKG1fZGlzcGxheUxpbmspOworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6c3RvcCgpOworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJM
ZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnN0b3AgZm9yIGRpcHNsYXkgIiA8PCBkaXNw
bGF5SUQoKSA8PCAiIGRlc3Ryb3lpbmcgZGlzcGxheSBsaW5rIik7CiAgICAgQ1ZEaXNwbGF5TGlu
a1JlbGVhc2UobV9kaXNwbGF5TGluayk7CiAgICAgbV9kaXNwbGF5TGluayA9IG51bGxwdHI7CiB9
CkBAIC02Miw0NyArNjUsNTIgQEAgc3RhdGljIENWUmV0dXJuIGRpc3BsYXlMaW5rQ2FsbGJhY2so
Q1ZEaXNwbGF5TGlua1JlZiwgY29uc3QgQ1ZUaW1lU3RhbXAqLCBjb25zdAogICAgIHJldHVybiBr
Q1ZSZXR1cm5TdWNjZXNzOwogfQogCi1ib29sIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCit2b2lkIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6ZGlzcGF0Y2hEaXNwbGF5RGlkUmVmcmVzaCgpCiB7Ci0gICAgaWYgKCFpc0FjdGl2
ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgaWYgKG1f
ZGlzcGxheUxpbmspCisgICAgICAgICAgICBkaXNwbGF5RGlkUmVmcmVzaCgpOworICAgIH0pOwor
fQogCitib29sIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RhcnROb3RpZmljYXRp
b25NZWNoYW5pc20oKQorewogICAgIGlmICghbV9kaXNwbGF5TGluaykgewotICAgICAgICBzZXRJ
c0FjdGl2ZShmYWxzZSk7Ci0gICAgICAgIENWUmV0dXJuIGVycm9yID0gQ1ZEaXNwbGF5TGlua0Ny
ZWF0ZVdpdGhDR0Rpc3BsYXkoZGlzcGxheUlEKCksICZtX2Rpc3BsYXlMaW5rKTsKKyAgICAgICAg
YXV0byBlcnJvciA9IENWRGlzcGxheUxpbmtDcmVhdGVXaXRoQ0dEaXNwbGF5KGRpc3BsYXlJRCgp
LCAmbV9kaXNwbGF5TGluayk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICBlcnJvciA9IENWRGlzcGxheUxpbmtTZXRPdXRwdXRDYWxsYmFj
ayhtX2Rpc3BsYXlMaW5rLCBkaXNwbGF5TGlua0NhbGxiYWNrLCB0aGlzKTsKICAgICAgICAgaWYg
KGVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgICAgICBlcnJv
ciA9IENWRGlzcGxheUxpbmtTdGFydChtX2Rpc3BsYXlMaW5rKTsKKyAgICBpZiAoIW1fZGlzcGxh
eUxpbmtJc0FjdGl2ZSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0
cmVhbSA8PCAiTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlmaWNhdGlv
bk1lY2hhbmlzbSBmb3IgZGlzcGxheSAiIDw8IGRpc3BsYXlJRCgpIDw8ICIgc3RhcnRpbmcgZGlz
cGxheSBsaW5rIik7CisKKyAgICAgICAgYXV0byBlcnJvciA9IENWRGlzcGxheUxpbmtTdGFydCht
X2Rpc3BsYXlMaW5rKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgIHNldElzQWN0aXZlKHRydWUpOworICAgICAgICAKKyAgICAgICAgbV9k
aXNwbGF5TGlua0lzQWN0aXZlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2so
bXV0ZXgoKSk7Ci0gICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVk
KCkKK3ZvaWQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdG9wTm90aWZpY2F0aW9u
TWVjaGFuaXNtKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7Ci0gICAgaWYgKCFp
c1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgaWYgKCFtX2Rpc3BsYXlMaW5rSXNBY3RpdmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOwotCi0g
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKLSAgICAgICAgaWYgKG1fZGlzcGxheUxpbmspCi0gICAgICAgICAgICBkaXNw
bGF5RGlkUmVmcmVzaCgpOwotICAgIH0pOworICAgIGlmIChtX2Rpc3BsYXlMaW5rKSB7CisgICAg
ICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJMZWdhY3lEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20gZm9yIGRpc3BsYXkg
IiA8PCBkaXNwbGF5SUQoKSA8PCAiIHN0b3BwaW5nIGRpc3BsYXkgbGluayIpOworICAgICAgICBD
VkRpc3BsYXlMaW5rU3RvcChtX2Rpc3BsYXlMaW5rKTsKKyAgICB9CisgICAgICAgIAorICAgIG1f
ZGlzcGxheUxpbmtJc0FjdGl2ZSA9IGZhbHNlOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJl
c2hNb25pdG9yTWFjLmgKaW5kZXggMzNhM2E3OGI5NTIxZDYwMmQwN2M3N2M4ODc5NGE5NDA0OGM1
MDYyZi4uOGE4YjI4MGU3NjdhYjVjMWNjZWVhZGY2YWZhYWFjYWJlODE0MjUyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaApAQCAtNDMsMTYgKzQzLDIwIEBAIHB1
YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMo
KTsKIAotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIGZpbmFsOwotICAgIGJvb2wgcmVxdWVz
dFJlZnJlc2hDYWxsYmFjaygpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyhQbGF0Zm9y
bURpc3BsYXlJRCk7CiAKKyAgICB2b2lkIGRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2goKSBmaW5h
bDsKKworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlv
bk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgp
IGZpbmFsOworCiAgICAgQ1ZEaXNwbGF5TGlua1JlZiBtX2Rpc3BsYXlMaW5rIHsgbnVsbHB0ciB9
OworICAgIGJvb2wgbV9kaXNwbGF5TGlua0lzQWN0aXZlIHsgZmFsc2UgfTsKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKaW5kZXggMmZhNDcwMDM5YWZmNzlmN2Q1MTA1YThiZTNk
MzgzODRkYzRmOWQyNC4uM2EyMGE2Mzc2YTQ5MTFjZGM3ZTk4OWVmODBkNjVhZDc2YjhkNjE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKQEAgLTM1LDI3ICszNSwyMSBAQCBS
ZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2luPiBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46
OmNyZWF0ZShQbGF0Zm9ybURpc3BsYQogCiBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OkRpc3Bs
YXlSZWZyZXNoTW9uaXRvcldpbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgOiBE
aXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQotICAgICwgbV90aW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OmRpc3BsYXlMaW5rRmlyZWQp
CisgICAgLCBtX3RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkRpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6ZGlzcGxheUxpbmtGaXJlZCkKIHsKIH0KIAotYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW46OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQorYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW46OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBpZiAoIWlzQWN0aXZl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgxNl9t
cyk7Ci0gICAgc2V0SXNBY3RpdmUodHJ1ZSk7Ci0gICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7Cisg
ICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRp
bmcoMTZfbXMpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRGlzcGxheVJlZnJlc2hN
b25pdG9yV2luOjpkaXNwbGF5TGlua0ZpcmVkKCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
V2luOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBpZiAoIWlzUHJldmlvdXNG
cmFtZURvbmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9u
ZShmYWxzZSk7Ci0gICAgZGlzcGxheURpZFJlZnJlc2goKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5o
CmluZGV4IGEyMTg4ZTJhMTExNTZjZTY3Y2E0OGFlYTdlMjBlZjk2NjM1Mjc4YzIuLmVmZTU3NmUy
ZjRjNDIwZjg4ZWI2ZWQ4NjVjYWY2ZjhiMTBmYjFiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25p
dG9yV2luLmgKQEAgLTM0LDExICszNCwxMiBAQCBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JX
aW4gOiBwdWJsaWMgRGlzcGxheVJlZnJlc2hNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbj4gY3JlYXRlKFBsYXRmb3JtRGlzcGxheUlE
KTsKIAotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVx
dWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbihQbGF0Zm9ybURpc3BsYXlJRCk7CisKKyAgICBib29s
IHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTm90aWZp
Y2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CisKICAgICBSdW5Mb29wOjpUaW1lcjxEaXNwbGF5UmVm
cmVzaE1vbml0b3JXaW4+IG1fdGltZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAKaW5kZXggYjVhOWRhZWQwNWQyODBmYzY2OGZhZTBlOTljMzExMDBjODdjMjhmZi4uMDMy
YzQ1YzNiYmU3MWZlM2ZhZjNjY2Q1ZWYxZGY4MmY1YTFmYTU0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmNwcApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIFRocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjppbnZhbGlkYXRlKCkKICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiB9CiAK
Ky8vIEZJWE1FOiBSZWZhY3RvciB0byBzaGFyZSBtb3JlIGNvZGUgd2l0aCBEaXNwbGF5UmVmcmVz
aE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQoKS4KIHZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQogewogICAgIGJvb2wgc2hvdWxkSGFu
ZGxlRGlzcGxheVJlZnJlc2hOb3RpZmljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJl
c2hNb25pdG9yLmgKaW5kZXggYTU5ZThlYTAwZTRmMmNhZWU4NWVlZjc2YmM4OGJlN2JkODFjMGFm
YS4uYjQ5YThiMmRiZWYwNDlhN2U0NDEzZDJlODJkZTk1MWQyNzdjZTYzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3Bs
YXlSZWZyZXNoTW9uaXRvci5oCkBAIC01Nyw2ICs1Nyw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5
SUQsIENsaWVudCYpOwogCisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20o
KSBmaW5hbCB7IH0KKwogICAgIHZvaWQgZGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOwogICAgIFJ1
bkxvb3A6OlRpbWVyPFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yPiBtX2Rpc3BsYXlSZWZy
ZXNoVGltZXI7CiAgICAgQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvRGlzcGxheUxpbmsuY3BwCmluZGV4IDA5NWMwOWNiN2RmNjI5NDZmNWU0NzRhZWM2NjM4
MWY1NjA1OGYxOTAuLmJmNzg2Mjc3MzYyZTMwOWRhYzkyNjYwYjYyOTdhN2UxZjBhNTkwNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcApAQCAtMjksOCAr
MjksMTAgQEAKICNpZiBIQVZFKENWRElTUExBWUxJTkspCiAKICNpbmNsdWRlICJFdmVudERpc3Bh
dGNoZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQw
LDYgKzQyLDggQEAgY29uc3RleHByIHVuc2lnbmVkIG1heEZpcmVDb3VudFdpdGhvdXRPYnNlcnZl
cnMgeyAyMCB9OwogRGlzcGxheUxpbms6OkRpc3BsYXlMaW5rKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCkKICAgICA6IG1fZGlzcGxheUlEKGRpc3BsYXlJRCkKIHsKKyAgICBM
T0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gQ3JlYXRpbmcgRGlz
cGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQpOworCiAgICAgLy8gRklYTUU6IFdl
IGNhbiBnZXQgaGVyZSB3aXRoIGRpc3BsYXlJRCA9PSAwICh3ZWJraXQub3JnL2IvMjEyMTIwKSwg
aW4gd2hpY2ggY2FzZSBDVkRpc3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlzcGxheSgpCiAgICAgLy8g
cHJvYmFibHkgZGVmYXVsdHMgdG8gdGhlIG1haW4gc2NyZWVuLgogICAgIEFTU0VSVChoYXNQcm9j
ZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1Nl
cnZlcikpOwpAQCAtNTgsNiArNjIsOCBAQCBEaXNwbGF5TGluazo6RGlzcGxheUxpbmsoV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogCiBEaXNwbGF5TGluazo6fkRpc3BsYXlM
aW5rKCkKIHsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJ
IF0gRGVzdHJveWluZyBEaXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEKTsK
KwogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNv
bW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAgIEFTU0VSVChtX2Rpc3BsYXlMaW5rKTsK
ICAgICBpZiAoIW1fZGlzcGxheUxpbmspCkBAIC04NSw2ICs5MSw3IEBAIHZvaWQgRGlzcGxheUxp
bms6OmFkZE9ic2VydmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGlzcGxheUxpbmtP
YnNlcnZlcklECiAgICAgfQogCiAgICAgaWYgKCFDVkRpc3BsYXlMaW5rSXNSdW5uaW5nKG1fZGlz
cGxheUxpbmspKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFt
IDw8ICJbVUkgXSBEaXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIg
c3RhcnRpbmcgQ1ZEaXNwbGF5TGluayIpOwogICAgICAgICBDVlJldHVybiBlcnJvciA9IENWRGlz
cGxheUxpbmtTdGFydChtX2Rpc3BsYXlMaW5rKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3Qgc3RhcnQgdGhlIGRpc3BsYXkgbGluazogJWQi
LCBlcnJvcik7CkBAIC0xMzQsMTMgKzE0MSwxNiBAQCB2b2lkIERpc3BsYXlMaW5rOjpub3RpZnlP
YnNlcnZlcnNEaXNwbGF5V2FzUmVmcmVzaGVkKCkKIAogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
b2JzZXJ2ZXJzTG9jayk7CiAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkgewotICAgICAg
ICBpZiAoKyttX2ZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMgPj0gbWF4RmlyZUNvdW50V2l0aG91
dE9ic2VydmVycykKKyAgICAgICAgaWYgKCsrbV9maXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJzID49
IG1heEZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMpIHsKKyAgICAgICAgICAgIExPR19XSVRIX1NU
UkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbVUkgXSBEaXNwbGF5TGluayBmb3IgZGlzcGxh
eSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgZmlyZWQgIiA8PCBtX2ZpcmVDb3VudFdpdGhvdXRPYnNl
cnZlcnMgPDwgIiB0aW1lcyB3aXRoIG5vIG9ic2VydmVyczsgc3RvcHBpbmcgQ1ZEaXNwbGF5TGlu
ayIpOwogICAgICAgICAgICAgQ1ZEaXNwbGF5TGlua1N0b3AobV9kaXNwbGF5TGluayk7CisgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2ZpcmVDb3VudFdpdGhvdXRPYnNl
cnZlcnMgPSAwOwogCiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9vYnNlcnZlcnMua2V5
cygpKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJb
VUkgXSBEaXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgc2VuZGlu
ZyBmb3IgY29ubmVjdGlvbiAiIDw8IGNvbm5lY3Rpb24tPnVuaXF1ZUlEKCkgPDwgIiBvbiBiYWNr
Z3JvdW5kIHF1ZXVlICIgPDwgc2hvdWxkU2VuZElQQ09uQmFja2dyb3VuZFF1ZXVlKTsKICAgICAg
ICAgaWYgKHNob3VsZFNlbmRJUENPbkJhY2tncm91bmRRdWV1ZSkKICAgICAgICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6RGlzcGxheVdhc1JlZnJlc2hl
ZChtX2Rpc3BsYXlJRCksIDApOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlz
cGxheVJlZnJlc2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5k
ZXggNzZkYmNiZTA1MTdhMTM5MTY5MzA0ODMxMmQwZTAxOTVlM2UxY2Q0ZC4uNjg1NTUzODE4ZjRi
YmZkZWMzZGMyNTkzOTMxMzU3ZjNkZDk5ZmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaApAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yKCk7CiAKICAgICB2b2lkIHNldFByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZChXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVzdFJl
ZnJlc2hDYWxsYmFjaygpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFj
aygpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRVcGRhdGVMYXllcnMoKTsKICAgICB2b2lkIHVwZGF0
ZURyYXdpbmdBcmVhKFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhJik7CkBAIC00OSw2ICs0OSw5
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYSYpOwogCisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgp
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5p
c20oKSBmaW5hbCB7IH0KKwogICAgIFdlYWtQdHI8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+
IG1fZHJhd2luZ0FyZWE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hN
b25pdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQppbmRleCBmZmJmYzA1
ODFhZWQ0ZTNhYzIzZjA3Y2ExYTQyZGUyMzk4NzUxZDU1Li43NTkyZjU2MTAzZjIwYmM5ZmJlNzFh
ZjViNGQ0NmJhMmNjMzM3OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25p
dG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0KQEAgLTI2LDYgKzI2
LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmgiCiAKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTQ5LDEzICs1MiwxNCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURpc3Bs
YXlSZWZyZXNoTW9uaXRvcjo6c2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1Blcgog
CiBib29sIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJl
c2hDYWxsYmFjaygpCiB7Ci0gICAgaWYgKCFtX2RyYXdpbmdBcmVhIHx8ICFpc0FjdGl2ZSgpKQor
ICAgIGlmICghbV9kcmF3aW5nQXJlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KCFpc1NjaGVkdWxlZCgpKQorICAgIGlmICghaXNTY2hlZHVsZWQoKSkgeworICAgICAgICBMT0df
V0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiUmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrIC0gdHJpZ2dlcmluZyB1cGRh
dGUiKTsKICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWEmPigqbV9kcmF3aW5nQXJlYS5n
ZXQoKSkudHJpZ2dlclJlbmRlcmluZ1VwZGF0ZSgpOworICAgIH0KIAotICAgIHNldElzQWN0aXZl
KHRydWUpOwogICAgIHNldElzU2NoZWR1bGVkKHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCA3NTVjY2U2ZjcwNDQyYWRkMDQ3
MGMzYjY3YTFkOTI3MmI1ZTBhZTBkLi5mNGEyNDdmNmU3NTQzZTg1Y2U0MGNhNzFjNDY4M2MyNGFk
MTYxZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtMzksNDkgKzM5
LDYxIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisv
LyBBdm9pZCByZXBlYXRlZCBzdGFydC9zdG9wIElQQyB3aGVuIHJlc2NoZWR1bGVkIGluc2lkZSB0
aGUgY2FsbGJhY2suCitjb25zdGV4cHIgdW5zaWduZWQgbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQg
eyAxIH07CisKIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6RGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICA6IERpc3BsYXlSZWZyZXNoTW9u
aXRvcihkaXNwbGF5SUQpCiAgICAgLCBtX29ic2VydmVySUQoRGlzcGxheUxpbmtPYnNlcnZlcklE
OjpnZW5lcmF0ZSgpKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAgIHNldE1h
eFVuc2NoZWR1bGVkRmlyZUNvdW50KG1heFVuc2NoZWR1bGVkRmlyZUNvdW50KTsKIH0KIAogRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKCkKIHsKLSAg
ICBpZiAobV9oYXNTZW50TWVzc2FnZSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpTdG9wRGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSksIDApOworICAgIC8v
IHN0b3AoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICBBU1NFUlQoIW1fZGlzcGxheUxp
bmtJc0FjdGl2ZSk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwYXRj
aERpc3BsYXlEaWRSZWZyZXNoKCkKK3sKKyAgICBpZiAoIW1fZmlyc3RDYWxsYmFja0luQ3VycmVu
dFJ1bmxvb3ApCisgICAgICAgIHJldHVybjsKKworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
ZGlzcGF0Y2hEaXNwbGF5RGlkUmVmcmVzaCgpOwogfQogCi1ib29sIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCitib29sIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKQogewotICAgIGlmICghaXNBY3Rp
dmUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2Rpc3BsYXlMaW5rSXNBY3Rp
dmUpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFtX2hhc1NlbnRNZXNzYWdlKSB7
Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGluayhtX29i
c2VydmVySUQsIGRpc3BsYXlJRCgpKSwgMCk7Ci0gICAgICAgIG1faGFzU2VudE1lc3NhZ2UgPSB0
cnVlOworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2sgLSBzdGFydGluZyIpOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGluayhtX29ic2VydmVy
SUQsIGRpc3BsYXlJRCgpKSwgMCk7CisgICAgaWYgKCFtX3J1bkxvb3BPYnNlcnZlcikgeworICAg
ICAgICAvLyBUaGUgUnVuTG9vcE9ic2VydmVyIHJlcGVhdHMuCiAgICAgICAgIG1fcnVuTG9vcE9i
c2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3Ro
aXNdKCkgewogICAgICAgICAgICAgbV9maXJzdENhbGxiYWNrSW5DdXJyZW50UnVubG9vcCA9IHRy
dWU7CiAgICAgICAgIH0pOwotICAgICAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpKTsKICAgICB9Ci0gICAgCi0gICAgc2V0SXNTY2hlZHVsZWQodHJ1
ZSk7CisKKyAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoQ0ZSdW5Mb29wR2V0Q3VycmVu
dCgpKTsKKyAgICBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgPSB0cnVlOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVk
KCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFu
aXNtKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBpZiAoIW1fZmlyc3RD
YWxsYmFja0luQ3VycmVudFJ1bmxvb3ApCisgICAgaWYgKCFtX2Rpc3BsYXlMaW5rSXNBY3RpdmUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3Ag
PSBmYWxzZTsKLQotICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlMaW5rRmlyZWQoKSBmb3IgZGlzcGxheSAi
IDw8IGRpc3BsYXlJRCgpKTsKLQotICAgIGRpc3BsYXlEaWRSZWZyZXNoKCk7CisgICAgTE9HX1dJ
VEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayAtIHN0b3BwaW5nIik7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpTdG9wRGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSks
IDApOworICAgIG1fcnVuTG9vcE9ic2VydmVyLT5pbnZhbGlkYXRlKCk7CisgICAgCisgICAgbV9k
aXNwbGF5TGlua0lzQWN0aXZlID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCmluZGV4IDUzYTE1ZmViMjkwMzcwNzNhM2YzMDIy
ODRmZjUyOWRmZWI0MzZhMWMuLjJlNjVjNGMwMjhkNzI0MGZmZTIzMWQ1MjExZTE5OGY1Y2JmZDNj
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNw
bGF5UmVmcmVzaE1vbml0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgKQEAgLTM5LDIwICszOSwyMSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMoZGlzcGxheUlEKSk7CiAgICAgfQotICAgIAorCiAgICAgdmlydHVhbCB+RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjKCk7Ci0gICAgCi0gICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVk
KCkgZmluYWw7Ci0gICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgZmluYWw7Ci0gICAg
CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKLSAgICAKLSAgICBib29sIGhhc1JlcXVlc3RlZFJlZnJl
c2hDYWxsYmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFzU2VudE1lc3NhZ2U7IH0KKwor
ICAgIHZvaWQgZGlzcGF0Y2hEaXNwbGF5RGlkUmVmcmVzaCgpIGZpbmFsOworCisgICAgYm9vbCBz
dGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3RvcE5vdGlmaWNh
dGlvbk1lY2hhbmlzbSgpIGZpbmFsOwogCiAgICAgRGlzcGxheUxpbmtPYnNlcnZlcklEIG1fb2Jz
ZXJ2ZXJJRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPiBt
X3J1bkxvb3BPYnNlcnZlcjsKLSAgICBib29sIG1faGFzU2VudE1lc3NhZ2UgeyBmYWxzZSB9Owor
CisgICAgYm9vbCBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9m
aXJzdENhbGxiYWNrSW5DdXJyZW50UnVubG9vcCB7IGZhbHNlIH07CiB9OwogCg==
</data>
<flag name="review"
          id="444152"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="444161"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424473</attachid>
            <date>2021-03-27 15:48:03 -0700</date>
            <delta_ts>2021-03-27 18:09:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223844-20210327154802.patch</filename>
            <type>text/plain</type>
            <size>44777</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY1MjI4Yzk0YzVlYWI2
YTU0NGY0MjIzMmE3NGY1N2RlMDRmNDBlNC4uZDU0MjdkODU3ZTIyMmQ2MjRmNjQxOGZlNDdkZDBi
ZjRmOWY4NTZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTAzLTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IERpc3Bs
YXlSZWZyZXNoTW9uaXRvciB0byBiZSBtb3JlIGxvbmctbGl2ZWQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODQ0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIGJlaGF2aW9y
IGZvciBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIHdhcyB0aGF0IHRoZXkgd2VyZSBjcmVhdGVkIGFu
ZCBkZXN0cm95ZWQKKyAgICAgICAgZnJlcXVlbnRseSwgYXMgdGhlaXIgY2xpZW50cyBhcmUgcmVn
aXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkLiBJbiBhZGRpdGlvbiwgc29tZSBvZgorICAgICAgICB0
aGVpciBzdWJjbGFzc2VzIGhhZCBkdXBsaWNhdGVkIGxvZ2ljIHJlbGF0ZWQgdG8gaG93IG9mdGVu
IHRoZXkgZmlyZWQgd2l0aG91dCBjbGllbnRzCisgICAgICAgIGJlZm9yZSB0aGV5IHdlcmUgcmVt
b3ZlZC4KKworICAgICAgICBUaGUgMToxIGNvcnJlc3BvbmRhbmNlIGJldHdlZW4gRGlzcGxheVJl
ZnJlc2hNb25pdG9ycyBhbmQgcGh5c2ljYWwgZGlzcGxheXMgbWFrZXMgdGhlbQorICAgICAgICBh
IHVzZWZ1bCBwbGFjZSB0byBzdG9yZSBwZXItZGlzcGxheSBpbmZvcm1hdGlvbiAobGlrZSByZWZy
ZXNoIHJhdGUpLCB3aGljaCBzaG91bGQKKyAgICAgICAgcGVyc2lzdCB3aGV0aGVyIG9yIG5vdCB0
aGV5IGhhdmUgY2xpZW50cywgc28gdGhpcyBjaGFuZ2UgcHJlcGFyZXMgZm9yIHRoYXQuCisgICAg
ICAgIAorICAgICAgICBUaGUgbWFpbiBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggYXJlOgorICAgICAg
ICAgIDEuIFByb3ZpZGUgdmlydHVhbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpL3N0b3BO
b3RpZmljYXRpb25NZWNoYW5pc20oKSBmdW5jdGlvbnMgb24KKyAgICAgICAgICAgICBEaXNwbGF5
UmVmcmVzaE1vbml0b3IgdGhhdCBzdWJjbGFzc2VzIGNhbiB1c2UgdG8gc3RhcnQgdGhlaXIgQ1ZE
aXNwbGF5TGluayBvciByZWxhdGVkCisgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAgIDIuIFByb3ZpZGUgc29tZSBzaGFyZWQgbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQgbG9n
aWMgdGhhdCBzdWJjbGFzc2VzIGNhbiB0dW5lIHRvCisgICAgICAgICAgICAgcHJvdmlkZSB0aGUg
aHlzdGVyZXNpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIHN0YXJ0L3N0b3Agb2YgdGhlIHVuZGVybHlp
bmcKKyAgICAgICAgICAgICBub3RpZmljYXRpb24gbWVjaGFuaXNtLgorCisgICAgICAgICAzLiBQ
cm92aWRlIGEgc2hhcmVkIGRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2goKSBmdW5jdGlvbiB0aGF0
IG1vc3QgaW1wbGVtZW50YXRpb25zCisgICAgICAgICAgICBjYW4gdXNlLgorCisgICAgICAgIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIgbm8gbG9uZ2VyIGRlc3Ryb3lzIERpc3BsYXlSZWZy
ZXNoTW9uaXRvcnMgd2hlbiB0aGV5IGxvc2UKKyAgICAgICAgYWxsIHRoZWlyIGNsaWVudHMuIFRo
aXMgbWVhbnMgdGhhdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIGFyZSBuZXZlciByZW1vdmVkLCBi
dXQgdGhlcmUKKyAgICAgICAgc2hvdWxkIG9ubHkgZXZlciBiZSBhcyBtYW55IGFzIHRoZXJlIGFy
ZSBwaHlzaWNhbCBkaXNwbGF5cywgYW5kIHRoZXkgYXJlIG9ubHkKKyAgICAgICAgYWN0aXZlIGlm
IGJlaW5nIHNjaGVkdWxlZCBieSBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3RvcCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNo
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpmaXJl
ZEFuZFJlYWNoZWRNYXhVbnNjaGVkdWxlZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJlc2gp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpzZXRNYXhVbnNjaGVkdWxl
ZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6Om11
dGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUxp
bmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3I6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yOjpzaG91bGRCZVRlcm1pbmF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnNldElzQWN0aXZlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6
OnVucmVnaXN0ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheVdhc1VwZGF0ZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjp+RGlzcGxheVJlZnJlc2hNb25p
dG9yR3RrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uRnJhbWVDbG9ja1VwZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlz
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3BOb3Rp
ZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yR3RrOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0
ay5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tOgorICAgICAgICAoLVtXZWJEaXNwbGF5TGlua0hhbmRsZXIgc2V0UGF1c2Vk
Ol0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9ySU9TOjp+RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hh
bmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnJlcXVl
c3RSZWZyZXNoQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9ySU9TOjpkaXNwbGF5TGlua0ZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6TGVnYWN5
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlmaWNh
dGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JX
aW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpzdGFydE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW46OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxp
bmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvcldpbi5oOgorCiAyMDIxLTAzLTI3ICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogU2VuZCByZXBvcnQgdG8gYm90
aCBjbGljayBzb3VyY2UgYW5kIGF0dHJpYnV0aW9uIGRlc3RpbmF0aW9uIHdlYnNpdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggY2Q3NjEzMDU3MjU5NmFhZjdmOTc4ZjJmMjMwZDFlMzIwMWIyZjExNy4uZWNiMmYxNTI4
Y2UzODM4Mjg4ODhlNDNhYWNkYjdlMmE3Y2E3YjQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBA
QAorMjAyMS0wMy0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgdG8gYmUgbW9yZSBsb25nLWxpdmVk
IG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMzg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFRo
ZSBleGlzdGluZyBiZWhhdmlvciBmb3IgRGlzcGxheVJlZnJlc2hNb25pdG9ycyB3YXMgdGhhdCB0
aGV5IHdlcmUgY3JlYXRlZCBhbmQgZGVzdHJveWVkCisgICAgICAgIGZyZXF1ZW50bHksIGFzIHRo
ZWlyIGNsaWVudHMgYXJlIHJlZ2lzdGVyZWQgYW5kIHVucmVnaXN0ZXJlZC4gSW4gYWRkaXRpb24s
IHNvbWUgb2YKKyAgICAgICAgdGhlaXIgc3ViY2xhc3NlcyBoYWQgZHVwbGljYXRlZCBsb2dpYyBy
ZWxhdGVkIHRvIGhvdyBvZnRlbiB0aGV5IGZpcmVkIHdpdGhvdXQgY2xpZW50cworICAgICAgICBi
ZWZvcmUgdGhleSB3ZXJlIHJlbW92ZWQuCisKKyAgICAgICAgVGhlIDE6MSBjb3JyZXNwb25kYW5j
ZSBiZXR3ZWVuIERpc3BsYXlSZWZyZXNoTW9uaXRvcnMgYW5kIHBoeXNpY2FsIGRpc3BsYXlzIG1h
a2VzIHRoZW0KKyAgICAgICAgYSB1c2VmdWwgcGxhY2UgdG8gc3RvcmUgcGVyLWRpc3BsYXkgaW5m
b3JtYXRpb24gKGxpa2UgcmVmcmVzaCByYXRlKSwgd2hpY2ggc2hvdWxkCisgICAgICAgIHBlcnNp
c3Qgd2hldGhlciBvciBub3QgdGhleSBoYXZlIGNsaWVudHMsIHNvIHRoaXMgY2hhbmdlIHByZXBh
cmVzIGZvciB0aGF0LgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlcyBpbiB0aGlz
IHBhdGNoIGFyZToKKyAgICAgICAgICAxLiBQcm92aWRlIHZpcnR1YWwgc3RhcnROb3RpZmljYXRp
b25NZWNoYW5pc20oKS9zdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZnVuY3Rpb25zIG9uCisg
ICAgICAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yIHRoYXQgc3ViY2xhc3NlcyBjYW4gdXNl
IHRvIHN0YXJ0IHRoZWlyIENWRGlzcGxheUxpbmsgb3IgcmVsYXRlZAorICAgICAgICAgICAgIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgICAyLiBQcm92aWRlIHNvbWUgc2hhcmVkIG1heFVuc2No
ZWR1bGVkRmlyZUNvdW50IGxvZ2ljIHRoYXQgc3ViY2xhc3NlcyBjYW4gdHVuZSB0bworICAgICAg
ICAgICAgIHByb3ZpZGUgdGhlIGh5c3RlcmVzaXMgdXNlZCB0byBjb250cm9sIHRoZSBzdGFydC9z
dG9wIG9mIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgbm90aWZpY2F0aW9uIG1lY2hhbmlz
bS4KKworICAgICAgICAgMy4gUHJvdmlkZSBhIHNoYXJlZCBkaXNwYXRjaERpc3BsYXlEaWRSZWZy
ZXNoKCkgZnVuY3Rpb24gdGhhdCBtb3N0IGltcGxlbWVudGF0aW9ucworICAgICAgICAgICAgY2Fu
IHVzZS4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgICogU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpEaXNwbGF5TGluayk6CisgICAgICAg
IChXZWJLaXQ6OkRpc3BsYXlMaW5rOjp+RGlzcGxheUxpbmspOgorICAgICAgICAoV2ViS2l0OjpE
aXNwbGF5TGluazo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGluazo6
bm90aWZ5T2JzZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1v
bml0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxi
YWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJl
c2hNb25pdG9yTWFjOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYktp
dDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKToK
KyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlmaWNh
dGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtGaXJlZCk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMuaDoKKwogMjAyMS0wMy0yNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFNlbmQgcmVwb3J0IHRvIGJvdGggY2xpY2sg
c291cmNlIGFuZCBhdHRyaWJ1dGlvbiBkZXN0aW5hdGlvbiB3ZWJzaXRlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDczNGY5NGIxMGZmYmJlODE3YWZkMjE2M2UwYzgz
MzUwZjAwZDUyYmUuLmIyN2ZkMzYwMTI0MDk5NjM1NTA0ZjUyNzE4ODA2NTg3YzM4NWE1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzcsNiArMTM3LDkgQEAg
cHVibGljOgogICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgeyB9CiAKKyAgICBib29sIHN0YXJ0Tm90
aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgc3Rv
cE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsIHsgfQorCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEVtcHR5RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCkKICAgICAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvci5jcHAKaW5kZXggODI2NDk2Y2JkNDg1ZTEwZmJkOWIzNDc2MWYwMGUyNzgwZDQ5ZGJmMi4u
YjhlZTJjOTliY2M3MGE3OTExZDk4MGEwYWJhNGM1NDc5NzBlYjdiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwCkBAIC00NCw2ICs0NCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3Rl
eHByIHVuc2lnbmVkIG1heFVuc2NoZWR1bGVkRmlyZUNvdW50IHsgMSB9OworCiBSZWZQdHI8RGlz
cGxheVJlZnJlc2hNb25pdG9yPiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZURlZmF1bHRE
aXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTgwLDYgKzgyLDEyIEBAIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIAogRGlz
cGxheVJlZnJlc2hNb25pdG9yOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yKCkgPSBkZWZhdWx0Owog
Cit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3RvcCgpCit7CisgICAgc3RvcE5vdGlmaWNh
dGlvbk1lY2hhbmlzbSgpOworICAgIHNldElzU2NoZWR1bGVkKGZhbHNlKTsKK30KKwogdm9pZCBE
aXNwbGF5UmVmcmVzaE1vbml0b3I6OmFkZENsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQmIGNsaWVudCkKIHsKICAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwpAQCAtODksMjMgKzk3
LDY3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZW1vdmVDbGllbnQoRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgaWYgKG1fY2xpZW50c1RvQmVOb3Rp
ZmllZCkKICAgICAgICAgbV9jbGllbnRzVG9CZU5vdGlmaWVkLT5yZW1vdmUoJmNsaWVudCk7CisK
ICAgICByZXR1cm4gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAotdm9pZCBEaXNwbGF5
UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKCkKK2Jvb2wgRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fbG9jayk7CisgICAgCisgICAgaWYgKGlzU2NoZWR1bGVkKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKCFzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmZpcmVkQW5kUmVhY2hl
ZE1heFVuc2NoZWR1bGVkRmlyZUNvdW50KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKKyAgICBBU1NFUlQobV9sb2NrLmlzTG9ja2VkKCkpOworCisgICAgaWYgKGlzU2NoZWR1bGVk
KCkpIHsKKyAgICAgICAgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA9IDA7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CiAKKyAgICArK21fdW5zY2hlZHVsZWRGaXJlQ291bnQ7CisgICAgcmV0
dXJuIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgPiBtX21heFVuc2NoZWR1bGVkRmlyZUNvdW50Owor
fQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7CiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7Ci0gICAgICAgIExPR19XSVRI
X1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3IgIiA8
PCB0aGlzIDw8ICIgZGlzcGxheURpZFJlZnJlc2ggZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQo
KSA8PCAiIHNjaGVkdWxlZCAiIDw8IG1fc2NoZWR1bGVkIDw8ICIgdW5zY2hlZHVsZWRGaXJlQ291
bnQgIiA8PCBtX3Vuc2NoZWR1bGVkRmlyZUNvdW50KTsKLSAgICAgICAgaWYgKCFtX3NjaGVkdWxl
ZCkKLSAgICAgICAgICAgICsrbV91bnNjaGVkdWxlZEZpcmVDb3VudDsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA9IDA7Ci0KLSAgICAgICAgbV9zY2hl
ZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwor
CisgICAgICAgIC8vIFRoaXMgbWF5IGJlIG9mZiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIGlm
ICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OmRpc3BsYXlMaW5rRmlyZWQgZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQoKSA8PCAi
IC0gc2NoZWR1bGVkICIgPDwgaXNTY2hlZHVsZWQoKSA8PCAiIHVuc2NoZWR1bGVkRmlyZUNvdW50
ICIgPDwgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA8PCAiIG9mICIgPDwgbV9tYXhVbnNjaGVkdWxl
ZEZpcmVDb3VudCk7CisgICAgICAgIGlmIChmaXJlZEFuZFJlYWNoZWRNYXhVbnNjaGVkdWxlZEZp
cmVDb3VudCgpKSB7CisgICAgICAgICAgICBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRJc1NjaGVkdWxlZChm
YWxzZSk7CisgICAgICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOwogICAgIH0KKyAg
ICBkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGRpc3BsYXlEaWRSZWZyZXNoKCk7Cit9CisKK3ZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIC8vIFRoZSBjYWxsIGJhY2sgY2FuIGNhdXNlIGFsbCBvdXIgY2xpZW50
cyB0byBiZSB1bnJlZ2lzdGVyZWQsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdAogICAgIC8vIGFnYWlu
c3QgZGVsZXRpb24gdW50aWwgdGhlIGVuZCBvZiB0aGUgbWV0aG9kLgpAQCAtMTI5LDcgKzE4MSw3
IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCiAgICAg
ICAgIG1fY2xpZW50c1RvQmVOb3RpZmllZCA9IG51bGxwdHI7CiAKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOwogICAgICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKHRydWUpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJl
c2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3IuaAppbmRleCA3OTNjZTRlNmFjNmQ3MzAwNGQzOTg5ZDMwNWVlMGUyMTFiYmJj
MzM3Li42NTUwZDM3MDNmMGYxNmUxOTA4Zjg3OTU5YzM0OGI0ZmZiZDA3ZTRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuaApAQCAtMzksMTkgKzM5LDE4IEBAIGNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvckNs
aWVudDsKIGNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rvcnk7CiAKIGNsYXNzIERpc3Bs
YXlSZWZyZXNoTW9uaXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEaXNwbGF5UmVm
cmVzaE1vbml0b3I+IHsKKyAgICBmcmllbmQgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlcjsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4g
Y3JlYXRlKERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqLCBQbGF0Zm9ybURpc3BsYXlJRCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9yKCk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIHsgfQorICAgIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1BlclNlY29uZCkgeyB9CiAKICAgICAvLyBSZXR1
cm4gdHJ1ZSBpZiBjYWxsYmFjayByZXF1ZXN0IHdhcyBzY2hlZHVsZWQsIGZhbHNlIGlmIGl0IGNv
dWxkbid0IGJlCiAgICAgLy8gKGUuZy4sIGhhcmR3YXJlIHJlZnJlc2ggaXMgbm90IGF2YWlsYWJs
ZSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29s
IHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKTsKIAogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKICAgICAKQEAgLTYxLDIzICs2MCwxOSBAQCBwdWJsaWM6
CiAgICAgCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5SUQ7IH0KIAotICAgIGJvb2wgc2hvdWxkQmVUZXJtaW5hdGVkKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IGludCBtYXhJbmFjdGl2ZUZpcmVDb3VudCA9IDE7Ci0gICAgICAg
IHJldHVybiAhbV9zY2hlZHVsZWQgJiYgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA+IG1heEluYWN0
aXZlRmlyZUNvdW50OwotICAgIH0KLQogICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJlZnJlc2hN
b25pdG9yPiBjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxh
eUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRGlzcGxheVJlZnJl
c2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKIAotICAgIGZyaWVuZCBjbGFzcyBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYW5hZ2VyOwotICAgIAotICAgIExvY2smIG11dGV4KCkgeyByZXR1cm4g
bV9tdXRleDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpc3Bs
YXlEaWRSZWZyZXNoKCk7CisKKyAgICB2b2lkIHNldE1heFVuc2NoZWR1bGVkRmlyZUNvdW50KHVu
c2lnbmVkIGNvdW50KSB7IG1fbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQgPSBjb3VudDsgfQogCi0g
ICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9Ci0gICAgdm9pZCBz
ZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkgeyBtX2FjdGl2ZSA9IGFjdGl2ZTsgfQorICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgc3RhcnQgd2FzIHN1Y2Nlc3NmdWwuCisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgPSAwOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgPSAw
OwogCiAgICAgYm9vbCBpc1NjaGVkdWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZWR1bGVkOyB9
CiAgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIHNjaGVkdWxlZCkgeyBtX3NjaGVkdWxlZCA9
IHNjaGVkdWxlZDsgfQpAQCAtODUsMTkgKzgwLDIxIEBAIHByb3RlY3RlZDoKICAgICBib29sIGlz
UHJldmlvdXNGcmFtZURvbmUoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzRnJhbWVEb25lOyB9
CiAgICAgdm9pZCBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGJvb2wgZG9uZSkgeyBtX3ByZXZpb3Vz
RnJhbWVEb25lID0gZG9uZTsgfQogCi0gICAgdmlydHVhbCBib29sIGhhc1JlcXVlc3RlZFJlZnJl
c2hDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaXNwbGF5RGlkUmVmcmVzaCgpOwogCiBwcml2YXRlOgorICAgIGJvb2wgZmlyZWRBbmRS
ZWFjaGVkTWF4VW5zY2hlZHVsZWRGaXJlQ291bnQoKTsKIAogICAgIEhhc2hTZXQ8RGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIEhhc2hTZXQ8RGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50Kj4qIG1fY2xpZW50c1RvQmVOb3RpZmllZCB7IG51bGxwdHIgfTsKLSAg
ICBMb2NrIG1fbXV0ZXg7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQgeyAwIH07
Ci0gICAgaW50IG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgeyAwIH07IC8vIE51bWJlciBvZiB0aW1l
cyB0aGUgZGlzcGxheSBsaW5rIGhhcyBmaXJlZCB3aXRoIG5vIGNsaWVudHMuCi0gICAgYm9vbCBt
X2FjdGl2ZSB7IHRydWUgfTsKKworICAgIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9zY2hlZHVs
ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9wcmV2aW91c0ZyYW1lRG9uZSB7IHRydWUgfTsKKyAg
ICAKKyAgICB1bnNpZ25lZCBtX3Vuc2NoZWR1bGVkRmlyZUNvdW50IHsgMCB9OworICAgIHVuc2ln
bmVkIG1fbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQgeyAwIH07CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IGU4ZGZlYzdhMWQ1NDMzNGFmNTI3NThjODljMDYz
ZWI1MjVhNWVjNzAuLjJjMzk3Yjk5OGZiZjFlNjVmZTliZDFmMTJkODMzM2VmN2JjYmQ0ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkBAIC03MiwxMSArNzIsOSBAQCB2b2lk
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50JgogICAgIGF1dG8gaW5kZXggPSBmaW5kTW9uaXRvckZvckRpc3Bs
YXlJRChjbGllbnREaXNwbGF5SUQpOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKICAgICAg
ICAgcmV0dXJuOworCiAgICAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRvciA9
IG1fbW9uaXRvcnNbaW5kZXhdLm1vbml0b3I7Ci0gICAgaWYgKG1vbml0b3ItPnJlbW92ZUNsaWVu
dChjbGllbnQpKSB7Ci0gICAgICAgIGlmICghbW9uaXRvci0+aGFzQ2xpZW50cygpKQotICAgICAg
ICAgICAgbV9tb25pdG9ycy5yZW1vdmUoaW5kZXgpOwotICAgIH0KKyAgICBtb25pdG9yLT5yZW1v
dmVDbGllbnQoY2xpZW50KTsKIH0KIAogdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
OjpzZXRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50
JiBjbGllbnQsIEZyYW1lc1BlclNlY29uZCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCkBAIC05
NCwxNiArOTIsOSBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNjaGVkdWxl
QW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpkaXNwbGF5RGlkUmVmcmVz
aChEaXNwbGF5UmVmcmVzaE1vbml0b3ImIG1vbml0b3IpCit2b2lkIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXI6OmRpc3BsYXlEaWRSZWZyZXNoKERpc3BsYXlSZWZyZXNoTW9uaXRvciYpCiB7
Ci0gICAgaWYgKCFtb25pdG9yLnNob3VsZEJlVGVybWluYXRlZCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2goKSAtIGRlc3Ryb3lpbmcgbW9u
aXRvciAiIDw8ICZtb25pdG9yKTsKLQotICAgIG1fbW9uaXRvcnMucmVtb3ZlRmlyc3RNYXRjaGlu
ZyhbJl0oYXV0byYgbW9uaXRvcldyYXBwZXIpIHsKLSAgICAgICAgcmV0dXJuIG1vbml0b3JXcmFw
cGVyLm1vbml0b3IgPT0gJm1vbml0b3I7Ci0gICAgfSk7CisgICAgLy8gTWF5YmUgd2Ugc2hvdWxk
IHJlbW92ZSBtb25pdG9ycyB0aGF0IGhhdmVuJ3QgYmVlbiBhY3RpdmUgZm9yIHNvbWUgdGltZS4K
IH0KIAogdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjp3aW5kb3dTY3JlZW5EaWRD
aGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQmIGNsaWVudCkKQEAgLTEyMCw3ICsxMTEsNyBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXI6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bAogdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpkaXNwbGF5V2FzVXBkYXRlZChQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7CiAgICAgYXV0byogbW9uaXRvciA9IG1vbml0
b3JGb3JEaXNwbGF5SUQoZGlzcGxheUlEKTsKLSAgICBpZiAobW9uaXRvciAmJiBtb25pdG9yLT5o
YXNSZXF1ZXN0ZWRSZWZyZXNoQ2FsbGJhY2soKSkKKyAgICBpZiAobW9uaXRvcikKICAgICAgICAg
bW9uaXRvci0+ZGlzcGxheUxpbmtGaXJlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0
b3JHdGsuY3BwCmluZGV4IDc4Y2Y1ZGYzYTc4NGViN2FjNjA0ZjU0MzJkOWQ2ZjkyZTYyZGI4ZjMu
LjhmNjkwOWNkMGQzZjRmMWE4ODEwZWZhZWQzNWI1NDFiOGE4YTkzMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5
UmVmcmVzaE1vbml0b3JHdGsuY3BwCkBAIC0zOSw2ICszOSwxNiBAQCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JHdGs6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckd0ayhQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQpCiB9CiAKIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6fkRpc3BsYXlSZWZyZXNoTW9u
aXRvckd0aygpCit7CisgICAgQVNTRVJUKCFtX3dpbmRvdyk7Cit9CisKK3N0YXRpYyB2b2lkIG9u
RnJhbWVDbG9ja1VwZGF0ZShHZGtGcmFtZUNsb2NrKiwgRGlzcGxheVJlZnJlc2hNb25pdG9yR3Rr
KiBtb25pdG9yKQoreworICAgIG1vbml0b3ItPmRpc3BsYXlMaW5rRmlyZWQoKTsKK30KKwordm9p
ZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3AoKQogewogICAgIGlmICghbV93aW5kb3cp
CiAgICAgICAgIHJldHVybjsKQEAgLTQ2LDUwICs1Niw0NSBAQCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JHdGs6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsoKQogICAgIGF1dG8qIGZyYW1lQ2xvY2sg
PSBndGtfd2lkZ2V0X2dldF9mcmFtZV9jbG9jayhtX3dpbmRvdyk7CiAgICAgQVNTRVJUKGZyYW1l
Q2xvY2spOwogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChmcmFtZUNs
b2NrLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlzKTsK
LSAgICBnZGtfZnJhbWVfY2xvY2tfZW5kX3VwZGF0aW5nKGZyYW1lQ2xvY2spOwotICAgIGd0a193
aWRnZXRfZGVzdHJveShtX3dpbmRvdyk7Ci19CiAKLXN0YXRpYyB2b2lkIG9uRnJhbWVDbG9ja1Vw
ZGF0ZShHZGtGcmFtZUNsb2NrKiwgRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrKiBtb25pdG9yKQot
ewotICAgIG1vbml0b3ItPmRpc3BsYXlMaW5rRmlyZWQoKTsKKyAgICBndGtfd2lkZ2V0X2Rlc3Ry
b3kobV93aW5kb3cpOworICAgIG1fd2luZG93ID0gbnVsbHB0cjsKIH0KIAotYm9vbCBEaXNwbGF5
UmVmcmVzaE1vbml0b3JHdGs6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQorYm9vbCBEaXNwbGF5
UmVmcmVzaE1vbml0b3JHdGs6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBp
ZiAoIWlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jbG9ja0lz
QWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIEdka0ZyYW1lQ2xvY2sqIGZyYW1l
Q2xvY2s7CiAgICAgaWYgKCFtX3dpbmRvdykgewogICAgICAgICAvLyBHZGtGcmFtZUNsb2NrSWRs
ZSBpcyBwcml2YXRlIGluIEdESywgc28gd2UgbmVlZCB0byBjcmVhdGUgYSB0b3BsZXZlbCB0byBn
ZXQgaXRzIGZyYW1lIGNsb2NrLgogICAgICAgICBtX3dpbmRvdyA9IGd0a19vZmZzY3JlZW5fd2lu
ZG93X25ldygpOwogICAgICAgICBndGtfd2lkZ2V0X3JlYWxpemUobV93aW5kb3cpOwogCi0gICAg
ICAgIGF1dG8qIGZyYW1lQ2xvY2sgPSBndGtfd2lkZ2V0X2dldF9mcmFtZV9jbG9jayhtX3dpbmRv
dyk7CisgICAgICAgIGZyYW1lQ2xvY2sgPSBndGtfd2lkZ2V0X2dldF9mcmFtZV9jbG9jayhtX3dp
bmRvdyk7CiAgICAgICAgIEFTU0VSVChmcmFtZUNsb2NrKTsKLQogICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KGZyYW1lQ2xvY2ssICJ1cGRhdGUiLCBHX0NBTExCQUNLKG9uRnJhbWVDbG9ja1VwZGF0
ZSksIHRoaXMpOwotICAgICAgICBnZGtfZnJhbWVfY2xvY2tfYmVnaW5fdXBkYXRpbmcoZnJhbWVD
bG9jayk7CisgICAgfSBlbHNlCisgICAgICAgIGZyYW1lQ2xvY2sgPSBndGtfd2lkZ2V0X2dldF9m
cmFtZV9jbG9jayhtX3dpbmRvdyk7CiAKLSAgICAgICAgc2V0SXNBY3RpdmUodHJ1ZSk7Ci0gICAg
fQorICAgIEFTU0VSVChmcmFtZUNsb2NrKTsKKyAgICBnZGtfZnJhbWVfY2xvY2tfYmVnaW5fdXBk
YXRpbmcoZnJhbWVDbG9jayk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7Ci0gICAg
c2V0SXNTY2hlZHVsZWQodHJ1ZSk7CisgICAgbV9jbG9ja0lzQWN0aXZlID0gdHJ1ZTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OmRpc3BsYXlM
aW5rRmlyZWQoKQordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3BOb3RpZmljYXRp
b25NZWNoYW5pc20oKQogewotICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG11dGV4KCkp
OwotICAgICAgICBpZiAoIWlzUHJldmlvdXNGcmFtZURvbmUoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKLSAgICB9Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBkaXNwbGF5RGlkUmVmcmVzaCgpOworICAgIGlm
ICghbV9jbG9ja0lzQWN0aXZlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBmcmFtZUNs
b2NrID0gZ3RrX3dpZGdldF9nZXRfZnJhbWVfY2xvY2sobV93aW5kb3cpOworICAgIEFTU0VSVChm
cmFtZUNsb2NrKTsKKyAgICBnZGtfZnJhbWVfY2xvY2tfZW5kX3VwZGF0aW5nKGZyYW1lQ2xvY2sp
OworCisgICAgbV9jbG9ja0lzQWN0aXZlID0gZmFsc2U7ICAgIAogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmgKaW5kZXggNTNjYWI3ZjFjNWIz
NmFiODJlMWM0ZjM1MjdjOWJkMDZjNmVjMTk3Yy4uOTFkZmZjMWUwMzNjMGM4NjJkMTgwMGYwNmQ4
NTM1YmE1NWI5ZjM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuaApAQCAtNDIsMTMg
KzQyLDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZyZXNoTW9uaXRvckd0
aygpOwogCi0gICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBy
ZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrKFBsYXRmb3JtRGlzcGxheUlEKTsKIAorICAgIHZv
aWQgc3RvcCgpIGZpbmFsOworICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBm
aW5hbDsKKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKKwogICAg
IEd0a1dpZGdldCogbV93aW5kb3cgeyBudWxscHRyIH07CisgICAgYm9vbCBtX2Nsb2NrSXNBY3Rp
dmUgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUy5oCmluZGV4IGY5OWQ2NGU2YzBiNTY5ODU0NTNlMWRkNTIwOTc2YjIwZjJi
MDJjMmQuLjEwNTA4ZTg5MGQ1MDA0MDFhN2NhMzBmMTQ0M2VjMTMwNzFkNDQ2OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TLmgKQEAgLTQzLDE0ICs0MywxNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKCk7CiAKLSAgICB2b2lkIGRp
c3BsYXlMaW5rRmlyZWQoKSBvdmVycmlkZTsKLSAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJh
Y2soKSBvdmVycmlkZTsKLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MoUGxhdGZvcm1EaXNwbGF5SUQpOworCisgICAgdm9pZCBzdG9wKCkgZmluYWw7Cisg
ICAgYm9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3Rv
cE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsOworCiAgICAgUmV0YWluUHRyPFdlYkRpc3Bs
YXlMaW5rSGFuZGxlcj4gbV9oYW5kbGVyOworICAgIGJvb2wgbV9kaXNwbGF5TGlua0lzQWN0aXZl
IHsgZmFsc2UgfTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQppbmRl
eCA3MWNiODBkNWYxNGZjYTdiMjk0NjkyZjliYTcyOWI4NmMwYWRiMjg5Li5jZGMxNmZjNDZkZDg3
MzNhMTYwOGY3NjhlNTljNTBhYjJhNzljN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJ
T1MubW0KQEAgLTI4LDExICsyOCwxNCBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAor
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZC5oIgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9DQURpc3BsYXlMaW5rLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgor
I2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiB1c2luZyBXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1M7CisKIEBpbnRlcmZhY2UgV2ViRGlzcGxheUxpbmtIYW5kbGVyIDog
TlNPYmplY3QKIHsKICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MqIG1fbW9uaXRvcjsKQEAg
LTQyLDYgKzQ1LDcgQEAgQGludGVyZmFjZSBXZWJEaXNwbGF5TGlua0hhbmRsZXIgOiBOU09iamVj
dAogLSAoaWQpaW5pdFdpdGhNb25pdG9yOihEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MqKW1vbml0
b3I7CiAtICh2b2lkKXNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZDooTlNJbnRlZ2VyKXByZWZl
cnJlZEZyYW1lc1BlclNlY29uZDsKIC0gKHZvaWQpaGFuZGxlRGlzcGxheUxpbms6KENBRGlzcGxh
eUxpbmsgKilzZW5kZXI7CistICh2b2lkKXNldFBhdXNlZDooQk9PTClwYXVzZWQ7CiAtICh2b2lk
KWludmFsaWRhdGU7CiAKIEBlbmQKQEAgLTc4LDYgKzgyLDExIEBAIC0gKHZvaWQpaGFuZGxlRGlz
cGxheUxpbms6KENBRGlzcGxheUxpbmsgKilzZW5kZXIKICAgICBtX21vbml0b3ItPmRpc3BsYXlM
aW5rRmlyZWQoKTsKIH0KIAorLSAodm9pZClzZXRQYXVzZWQ6KEJPT0wpcGF1c2VkCit7CisgICAg
W21fZGlzcGxheUxpbmsgc2V0UGF1c2VkOnBhdXNlZF07Cit9CisKIC0gKHZvaWQpaW52YWxpZGF0
ZQogewogICAgIFttX2Rpc3BsYXlMaW5rIGludmFsaWRhdGVdOwpAQCAtODgsMzkgKzk3LDUxIEBA
IEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25zdGV4cHIgdW5zaWduZWQgbWF4VW5z
Y2hlZHVsZWRGaXJlQ291bnQgeyAxIH07CisKIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6RGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICA6
IERpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpCiB7CisgICAgc2V0TWF4VW5zY2hlZHVs
ZWRGaXJlQ291bnQobWF4VW5zY2hlZHVsZWRGaXJlQ291bnQpOwogfQogCiBEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1M6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoKQoreworICAgIEFTU0VSVCgh
bV9oYW5kbGVyKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnN0b3AoKQog
ewogICAgIFttX2hhbmRsZXIgaW52YWxpZGF0ZV07CisgICAgbV9oYW5kbGVyID0gbmlsOwogfQog
Ci1ib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygp
Citib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5p
c20oKQogewotICAgIGlmICghaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX2Rpc3BsYXlMaW5rSXNBY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
aWYgKCFtX2hhbmRsZXIpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBz
dHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RhcnROb3RpZmljYXRpb25NZWNo
YW5pc20gLSBjcmVhdGluZyBXZWJEaXNwbGF5TGlua0hhbmRsZXIiKTsKICAgICAgICAgbV9oYW5k
bGVyID0gYWRvcHROUyhbW1dlYkRpc3BsYXlMaW5rSGFuZGxlciBhbGxvY10gaW5pdFdpdGhNb25p
dG9yOnRoaXNdKTsKLSAgICAgICAgc2V0SXNBY3RpdmUodHJ1ZSk7CiAgICAgfQogCi0gICAgc2V0
SXNTY2hlZHVsZWQodHJ1ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJl
YW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5p
c20gLSBzdGFydGluZyBXZWJEaXNwbGF5TGlua0hhbmRsZXIiKTsKKyAgICBbbV9oYW5kbGVyIHNl
dFBhdXNlZDpOT107CisgICAgbV9kaXNwbGF5TGlua0lzQWN0aXZlID0gdHJ1ZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OmRpc3BsYXlMaW5r
RmlyZWQoKQordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnN0b3BOb3RpZmljYXRpb25N
ZWNoYW5pc20oKQogewotICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQorICAgIGlmICgh
bV9kaXNwbGF5TGlua0lzQWN0aXZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRJc1ByZXZp
b3VzRnJhbWVEb25lKGZhbHNlKTsKLSAgICBkaXNwbGF5RGlkUmVmcmVzaCgpOworICAgIExPR19X
SVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JJ
T1M6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20gLSBwYXVzaW5nIFdlYkRpc3BsYXlMaW5rSGFu
ZGxlciIpOworICAgIFttX2hhbmRsZXIgc2V0UGF1c2VkOllFU107CisgICAgbV9kaXNwbGF5TGlu
a0lzQWN0aXZlID0gZmFsc2U7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMuY3BwCmluZGV4IDRkY2VmOTM5YzM2ZTBmZmQ3ODk0MmI0ODAzYzY2OWMzY2I5
ZGU3YTcuLmM3NDU4MDA2MWVjMTMxZjZhMDc2NzllNjhjZmQ3YjE3NjY1MzA5ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCkBAIC0yOCwxNiArMjgsMjEg
QEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlIDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KKyNpbmNsdWRlIDxDb3JlVmlkZW8vQ1ZEaXNwbGF5TGluay5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhVbnNjaGVkdWxlZEZpcmVD
b3VudCB7IDIwIH07CisKIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6TGVnYWN5RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICA6
IERpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpCiB7CiAgICAgQVNTRVJUKCFpc0luV2Vi
UHJvY2VzcygpKTsKKyAgICBzZXRNYXhVbnNjaGVkdWxlZEZpcmVDb3VudChtYXhVbnNjaGVkdWxl
ZEZpcmVDb3VudCk7CiB9CiAKIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6fkxlZ2Fj
eURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYygpCkBAIC00NywxMCArNTIsOCBAQCBMZWdhY3lEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYWM6On5MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMoKQog
CiB2b2lkIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcCgpCiB7Ci0gICAgaWYg
KCFtX2Rpc3BsYXlMaW5rKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDVkRpc3BsYXlMaW5rU3Rv
cChtX2Rpc3BsYXlMaW5rKTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnN0b3AoKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiTGVnYWN5RGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjOjpzdG9wIGZvciBkaXBzbGF5ICIgPDwgZGlzcGxheUlEKCkgPDwgIiBk
ZXN0cm95aW5nIGRpc3BsYXkgbGluayIpOwogICAgIENWRGlzcGxheUxpbmtSZWxlYXNlKG1fZGlz
cGxheUxpbmspOwogICAgIG1fZGlzcGxheUxpbmsgPSBudWxscHRyOwogfQpAQCAtNjIsNDcgKzY1
LDUyIEBAIHN0YXRpYyBDVlJldHVybiBkaXNwbGF5TGlua0NhbGxiYWNrKENWRGlzcGxheUxpbmtS
ZWYsIGNvbnN0IENWVGltZVN0YW1wKiwgY29uc3QKICAgICByZXR1cm4ga0NWUmV0dXJuU3VjY2Vz
czsKIH0KIAotYm9vbCBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2soKQordm9pZCBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3Bh
dGNoRGlzcGxheURpZFJlZnJlc2goKQogewotICAgIGlmICghaXNBY3RpdmUoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlMaW5rKQor
ICAgICAgICAgICAgZGlzcGxheURpZFJlZnJlc2goKTsKKyAgICB9KTsKK30KIAorYm9vbCBMZWdh
Y3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkK
K3sKICAgICBpZiAoIW1fZGlzcGxheUxpbmspIHsKLSAgICAgICAgc2V0SXNBY3RpdmUoZmFsc2Up
OwotICAgICAgICBDVlJldHVybiBlcnJvciA9IENWRGlzcGxheUxpbmtDcmVhdGVXaXRoQ0dEaXNw
bGF5KGRpc3BsYXlJRCgpLCAmbV9kaXNwbGF5TGluayk7CisgICAgICAgIGF1dG8gZXJyb3IgPSBD
VkRpc3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlzcGxheShkaXNwbGF5SUQoKSwgJm1fZGlzcGxheUxp
bmspOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAgICAgZXJyb3IgPSBDVkRpc3BsYXlMaW5rU2V0T3V0cHV0Q2FsbGJhY2sobV9kaXNwbGF5TGlu
aywgZGlzcGxheUxpbmtDYWxsYmFjaywgdGhpcyk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICAgICAgZXJyb3IgPSBDVkRpc3BsYXlM
aW5rU3RhcnQobV9kaXNwbGF5TGluayk7CisgICAgaWYgKCFtX2Rpc3BsYXlMaW5rSXNBY3RpdmUp
IHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkxlZ2Fj
eURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20gZm9y
IGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQoKSA8PCAiIHN0YXJ0aW5nIGRpc3BsYXkgbGluayIpOwor
CisgICAgICAgIGF1dG8gZXJyb3IgPSBDVkRpc3BsYXlMaW5rU3RhcnQobV9kaXNwbGF5TGluayk7
CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBzZXRJc0FjdGl2ZSh0cnVlKTsKKyAgICAgICAgCisgICAgICAgIG1fZGlzcGxheUxpbmtJc0Fj
dGl2ZSA9IHRydWU7CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2NrKG11dGV4KCkpOwotICAg
IHNldElzU2NoZWR1bGVkKHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIExlZ2Fj
eURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtGaXJlZCgpCit2b2lkIExlZ2Fj
eURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiB7
Ci0gICAgTG9ja0hvbGRlciBsb2NrKG11dGV4KCkpOwotICAgIGlmICghaXNQcmV2aW91c0ZyYW1l
RG9uZSgpKQorICAgIGlmICghbV9kaXNwbGF5TGlua0lzQWN0aXZlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKLQotICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0g
ICAgICAgIGlmIChtX2Rpc3BsYXlMaW5rKQotICAgICAgICAgICAgZGlzcGxheURpZFJlZnJlc2go
KTsKLSAgICB9KTsKKyAgICBpZiAobV9kaXNwbGF5TGluaykgeworICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtIGZvciBkaXNwbGF5ICIgPDwgZGlzcGxheUlE
KCkgPDwgIiBzdG9wcGluZyBkaXNwbGF5IGxpbmsiKTsKKyAgICAgICAgQ1ZEaXNwbGF5TGlua1N0
b3AobV9kaXNwbGF5TGluayk7CisgICAgfQorICAgICAgICAKKyAgICBtX2Rpc3BsYXlMaW5rSXNB
Y3RpdmUgPSBmYWxzZTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5o
CmluZGV4IDMzYTNhNzhiOTUyMWQ2MDJkMDdjNzdjODg3OTRhOTQwNDhjNTA2MmYuLjhhOGIyODBl
NzY3YWI1YzFjY2VlYWRmNmFmYWFhY2FiZTgxNDI1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjLmgKQEAgLTQzLDE2ICs0MywyMCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdmlydHVhbCB+TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKCk7CiAKLSAgICB2b2lk
IGRpc3BsYXlMaW5rRmlyZWQoKSBmaW5hbDsKLSAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJh
Y2soKSBmaW5hbDsKLSAgICB2b2lkIHN0b3AoKSBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMoUGxhdGZvcm1EaXNwbGF5SUQpOwog
CisgICAgdm9pZCBkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCkgZmluYWw7CisKKyAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKKworICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBm
aW5hbDsKKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKKwogICAg
IENWRGlzcGxheUxpbmtSZWYgbV9kaXNwbGF5TGluayB7IG51bGxwdHIgfTsKKyAgICBib29sIG1f
ZGlzcGxheUxpbmtJc0FjdGl2ZSB7IGZhbHNlIH07CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW4uY3BwCmluZGV4IDJmYTQ3MDAzOWFmZjc5ZjdkNTEwNWE4YmUzZDM4Mzg0ZGM0ZjlkMjQu
LjNhMjBhNjM3NmE0OTExY2RjN2U5ODllZjgwZDY1YWQ3NmI4ZDYxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5
UmVmcmVzaE1vbml0b3JXaW4uY3BwCkBAIC0zNSwyNyArMzUsMjEgQEAgUmVmUHRyPERpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbj4gRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpjcmVhdGUoUGxhdGZv
cm1EaXNwbGEKIAogRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogICAgIDogRGlzcGxheVJlZnJlc2hN
b25pdG9yKGRpc3BsYXlJRCkKLSAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpkaXNwbGF5TGlua0ZpcmVkKQorICAgICwgbV90aW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlM
aW5rRmlyZWQpCiB7CiB9CiAKLWJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpyZXF1ZXN0
UmVmcmVzaENhbGxiYWNrKCkKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpzdGFydE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgaWYgKCFpc0FjdGl2ZSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgbV90aW1lci5zdGFydE9uZVNob3QoMTZfbXMpOwotICAgIHNldElz
QWN0aXZlKHRydWUpOwotICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIGlmICghbV90aW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDE2X21zKTsKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlz
cGxheUxpbmtGaXJlZCgpCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6c3RvcE5vdGlm
aWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOwotICAg
IGRpc3BsYXlEaWRSZWZyZXNoKCk7CisgICAgbV90aW1lci5zdG9wKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaAppbmRleCBhMjE4OGUy
YTExMTU2Y2U2N2NhNDhhZWE3ZTIwZWY5NjYzNTI3OGMyLi5lZmU1NzZlMmY0YzQyMGY4OGViNmVk
ODY1Y2FmNmY4YjEwZmIxYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oCkBAIC0z
NCwxMSArMzQsMTIgQEAgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luIDogcHVibGljIERp
c3BsYXlSZWZyZXNoTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxEaXNwbGF5
UmVmcmVzaE1vbml0b3JXaW4+IGNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKLSAgICB2b2lk
IGRpc3BsYXlMaW5rRmlyZWQoKSBvdmVycmlkZTsKLSAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2Fs
bGJhY2soKSBvdmVycmlkZTsKLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVz
aE1vbml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQpOworCisgICAgYm9vbCBzdGFydE5vdGlmaWNh
dGlvbk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlz
bSgpIGZpbmFsOworCiAgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2lu
PiBtX3RpbWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bml0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCmluZGV4IGI1
YTlkYWVkMDVkMjgwZmM2NjhmYWUwZTk5YzMxMTAwYzg3YzI4ZmYuLjAzMmM0NWMzYmJlNzFmZTNm
YWYzY2NkNWVmMWRmODJmNWExZmE1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHAKQEAgLTk1LDYgKzk1LDcgQEAgdm9pZCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
aW52YWxpZGF0ZSgpCiAgICAgbV9jbGllbnQgPSBudWxscHRyOwogfQogCisvLyBGSVhNRTogUmVm
YWN0b3IgdG8gc2hhcmUgbW9yZSBjb2RlIHdpdGggRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNw
bGF5TGlua0ZpcmVkKCkuCiB2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNw
bGF5UmVmcmVzaENhbGxiYWNrKCkKIHsKICAgICBib29sIHNob3VsZEhhbmRsZURpc3BsYXlSZWZy
ZXNoTm90aWZpY2F0aW9uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5oCmlu
ZGV4IGE1OWU4ZWEwMGU0ZjJjYWVlODVlZWY3NmJjODhiZTdiZDgxYzBhZmEuLmI0OWE4YjJkYmVm
MDQ5YTdlNDQxM2QyZTgyZGU5NTFkMjc3Y2U2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlz
cGxheVJlZnJlc2hNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0
b3IuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRocmVhZGVkRGlz
cGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBDbGllbnQmKTsK
IAorICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWwgeyB9CisK
ICAgICB2b2lkIGRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKTsKICAgICBSdW5Mb29wOjpUaW1lcjxU
aHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbV9kaXNwbGF5UmVmcmVzaFRpbWVyOwogICAg
IENsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvRGlzcGxheUxpbmsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlM
aW5rLmNwcAppbmRleCAwOTVjMDljYjdkZjYyOTQ2ZjVlNDc0YWVjNjYzODFmNTYwNThmMTkwLi5i
Zjc4NjI3NzM2MmUzMDlkYWM5MjY2MGI2Mjk3YTdlMWYwYTU5MDRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKQEAgLTI5LDggKzI5LDEwIEBACiAjaWYg
SEFWRShDVkRJU1BMQVlMSU5LKQogCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MCw2ICs0Miw4IEBAIGNv
bnN0ZXhwciB1bnNpZ25lZCBtYXhGaXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJzIHsgMjAgfTsKIERp
c3BsYXlMaW5rOjpEaXNwbGF5TGluayhXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQpCiAgICAgOiBtX2Rpc3BsYXlJRChkaXNwbGF5SUQpCiB7CisgICAgTE9HX1dJVEhfU1RSRUFN
KERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIltVSSBdIENyZWF0aW5nIERpc3BsYXlMaW5rIGZvciBk
aXNwbGF5ICIgPDwgZGlzcGxheUlEKTsKKwogICAgIC8vIEZJWE1FOiBXZSBjYW4gZ2V0IGhlcmUg
d2l0aCBkaXNwbGF5SUQgPT0gMCAod2Via2l0Lm9yZy9iLzIxMjEyMCksIGluIHdoaWNoIGNhc2Ug
Q1ZEaXNwbGF5TGlua0NyZWF0ZVdpdGhDR0Rpc3BsYXkoKQogICAgIC8vIHByb2JhYmx5IGRlZmF1
bHRzIHRvIHRoZSBtYWluIHNjcmVlbi4KICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKQEAgLTU4
LDYgKzYyLDggQEAgRGlzcGxheUxpbms6OkRpc3BsYXlMaW5rKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCkKIAogRGlzcGxheUxpbms6On5EaXNwbGF5TGluaygpCiB7CisgICAg
TE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIltVSSBdIERlc3Ryb3lpbmcg
RGlzcGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCk7CisKICAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhX
aW5kb3dTZXJ2ZXIpKTsKICAgICBBU1NFUlQobV9kaXNwbGF5TGluayk7CiAgICAgaWYgKCFtX2Rp
c3BsYXlMaW5rKQpAQCAtODUsNiArOTEsNyBAQCB2b2lkIERpc3BsYXlMaW5rOjphZGRPYnNlcnZl
cihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRAogICAg
IH0KIAogICAgIGlmICghQ1ZEaXNwbGF5TGlua0lzUnVubmluZyhtX2Rpc3BsYXlMaW5rKSkgewor
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gRGlz
cGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCA8PCAiIHN0YXJ0aW5nIENWRGlz
cGxheUxpbmsiKTsKICAgICAgICAgQ1ZSZXR1cm4gZXJyb3IgPSBDVkRpc3BsYXlMaW5rU3RhcnQo
bV9kaXNwbGF5TGluayk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiQ291bGQgbm90IHN0YXJ0IHRoZSBkaXNwbGF5IGxpbms6ICVkIiwgZXJyb3IpOwpAQCAt
MTM0LDEzICsxNDEsMTYgQEAgdm9pZCBEaXNwbGF5TGluazo6bm90aWZ5T2JzZXJ2ZXJzRGlzcGxh
eVdhc1JlZnJlc2hlZCgpCiAKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29ic2VydmVyc0xvY2sp
OwogICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKCsrbV9maXJl
Q291bnRXaXRob3V0T2JzZXJ2ZXJzID49IG1heEZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMpCisg
ICAgICAgIGlmICgrK21fZmlyZUNvdW50V2l0aG91dE9ic2VydmVycyA+PSBtYXhGaXJlQ291bnRX
aXRob3V0T2JzZXJ2ZXJzKSB7CisgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxp
bmssIHN0cmVhbSA8PCAiW1VJIF0gRGlzcGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rpc3Bs
YXlJRCA8PCAiIGZpcmVkICIgPDwgbV9maXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJzIDw8ICIgdGlt
ZXMgd2l0aCBubyBvYnNlcnZlcnM7IHN0b3BwaW5nIENWRGlzcGxheUxpbmsiKTsKICAgICAgICAg
ICAgIENWRGlzcGxheUxpbmtTdG9wKG1fZGlzcGxheUxpbmspOworICAgICAgICB9CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgbV9maXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJzID0gMDsKIAog
ICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fb2JzZXJ2ZXJzLmtleXMoKSkgeworICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gRGlzcGxheUxp
bmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCA8PCAiIHNlbmRpbmcgZm9yIGNvbm5lY3Rp
b24gIiA8PCBjb25uZWN0aW9uLT51bmlxdWVJRCgpIDw8ICIgb24gYmFja2dyb3VuZCBxdWV1ZSAi
IDw8IHNob3VsZFNlbmRJUENPbkJhY2tncm91bmRRdWV1ZSk7CiAgICAgICAgIGlmIChzaG91bGRT
ZW5kSVBDT25CYWNrZ3JvdW5kUXVldWUpCiAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6OkRpc3BsYXlXYXNSZWZyZXNoZWQobV9kaXNwbGF5SUQp
LCAwKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9u
aXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oCmluZGV4IDc2ZGJjYmUwNTE3
YTEzOTE2OTMwNDgzMTJkMGUwMTk1ZTNlMWNkNGQuLjY4NTU1MzgxOGY0YmJmZGVjM2RjMjU5Mzkz
MTM1N2YzZGQ5OWZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
cigpOwogCiAgICAgdm9pZCBzZXRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoV2ViQ29yZTo6RnJh
bWVzUGVyU2Vjb25kKSBvdmVycmlkZTsKLSAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2so
KSBvdmVycmlkZTsKKyAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBmaW5hbDsKIAog
ICAgIHZvaWQgZGlkVXBkYXRlTGF5ZXJzKCk7CiAgICAgdm9pZCB1cGRhdGVEcmF3aW5nQXJlYShS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSYpOwpAQCAtNDksNiArNDksOSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
cihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCwgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEm
KTsKIAorICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWwgeyB9
CisKICAgICBXZWFrUHRyPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPiBtX2RyYXdpbmdBcmVh
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0KaW5kZXggZmZiZmMwNTgxYWVkNGUzYWMyM2Yw
N2NhMWE0MmRlMjM5ODc1MWQ1NS4uNzU5MmY1NjEwM2YyMGJjOWZiZTcxYWY1YjRkNDZiYTJjYzMz
NzkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tCkBAIC0yNiw2ICsyNiw5IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oIgogCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC00OSwxMyArNTIsMTQgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3I6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChGcmFtZXNQZXIKIAogYm9vbCBSZW1vdGVM
YXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQog
ewotICAgIGlmICghbV9kcmF3aW5nQXJlYSB8fCAhaXNBY3RpdmUoKSkKKyAgICBpZiAoIW1fZHJh
d2luZ0FyZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghaXNTY2hlZHVsZWQo
KSkKKyAgICBpZiAoIWlzU2NoZWR1bGVkKCkpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERp
c3BsYXlMaW5rLCBzdHJlYW0gPDwgIlJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayAtIHRyaWdnZXJpbmcgdXBkYXRlIik7CiAgICAgICAg
IHN0YXRpY19jYXN0PERyYXdpbmdBcmVhJj4oKm1fZHJhd2luZ0FyZWEuZ2V0KCkpLnRyaWdnZXJS
ZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB9CiAKLSAgICBzZXRJc0FjdGl2ZSh0cnVlKTsKICAgICBz
ZXRJc1NjaGVkdWxlZCh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYy5jcHAKaW5kZXggNzU1Y2NlNmY3MDQ0MmFkZDA0NzBjM2I2N2ExZDkyNzJi
NWUwYWUwZC4uZjRhMjQ3ZjZlNzU0M2U4NWNlNDBjYTcxYzQ2ODNjMjRhZDE2MWRhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKQEAgLTM5LDQ5ICszOSw2MSBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorLy8gQXZvaWQgcmVwZWF0
ZWQgc3RhcnQvc3RvcCBJUEMgd2hlbiByZXNjaGVkdWxlZCBpbnNpZGUgdGhlIGNhbGxiYWNrLgor
Y29uc3RleHByIHVuc2lnbmVkIG1heFVuc2NoZWR1bGVkRmlyZUNvdW50IHsgMSB9OworCiBEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYWM6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyhQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlE
KQogICAgICwgbV9vYnNlcnZlcklEKERpc3BsYXlMaW5rT2JzZXJ2ZXJJRDo6Z2VuZXJhdGUoKSkK
IHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBzZXRNYXhVbnNjaGVkdWxlZEZp
cmVDb3VudChtYXhVbnNjaGVkdWxlZEZpcmVDb3VudCk7CiB9CiAKIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYygpCiB7Ci0gICAgaWYgKG1faGFzU2Vu
dE1lc3NhZ2UpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RvcERpc3BsYXlM
aW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCkpLCAwKTsKKyAgICAvLyBzdG9wKCkgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQuCisgICAgQVNTRVJUKCFtX2Rpc3BsYXlMaW5rSXNBY3RpdmUpOwor
fQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGF0Y2hEaXNwbGF5RGlkUmVm
cmVzaCgpCit7CisgICAgaWYgKCFtX2ZpcnN0Q2FsbGJhY2tJbkN1cnJlbnRSdW5sb29wKQorICAg
ICAgICByZXR1cm47CisKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BhdGNoRGlzcGxh
eURpZFJlZnJlc2goKTsKIH0KIAotYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVl
c3RSZWZyZXNoQ2FsbGJhY2soKQorYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnN0YXJ0
Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBpZiAoIWlzQWN0aXZlKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9kaXNwbGF5TGlua0lzQWN0aXZlKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghbV9oYXNTZW50TWVzc2FnZSkgewotICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNw
bGF5SUQoKSksIDApOwotICAgICAgICBtX2hhc1NlbnRNZXNzYWdlID0gdHJ1ZTsKKyAgICBMT0df
V0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrIC0gc3RhcnRpbmciKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQo
KSksIDApOworICAgIGlmICghbV9ydW5Mb29wT2JzZXJ2ZXIpIHsKKyAgICAgICAgLy8gVGhlIFJ1
bkxvb3BPYnNlcnZlciByZXBlYXRzLgogICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VV
bmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKICAgICAg
ICAgICAgIG1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3AgPSB0cnVlOwogICAgICAgICB9
KTsKLSAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxlKENGUnVuTG9vcEdldEN1cnJl
bnQoKSk7CiAgICAgfQotICAgIAotICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworCisgICAgbV9y
dW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxlKENGUnVuTG9vcEdldEN1cnJlbnQoKSk7CisgICAgbV9k
aXNwbGF5TGlua0lzQWN0aXZlID0gdHJ1ZTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtGaXJlZCgpCit2b2lkIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgaWYgKCFtX2ZpcnN0Q2FsbGJhY2tJbkN1cnJl
bnRSdW5sb29wKQorICAgIGlmICghbV9kaXNwbGF5TGlua0lzQWN0aXZlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2ZpcnN0Q2FsbGJhY2tJbkN1cnJlbnRSdW5sb29wID0gZmFsc2U7Ci0KLSAg
ICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVkKCkgZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQo
KSk7Ci0KLSAgICBkaXNwbGF5RGlkUmVmcmVzaCgpOworICAgIExPR19XSVRIX1NUUkVBTShEaXNw
bGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2sgLSBzdG9wcGluZyIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
U3RvcERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCkpLCAwKTsKKyAgICBtX3J1
bkxvb3BPYnNlcnZlci0+aW52YWxpZGF0ZSgpOworICAgIAorICAgIG1fZGlzcGxheUxpbmtJc0Fj
dGl2ZSA9IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMuaAppbmRleCA1M2ExNWZlYjI5MDM3MDczYTNmMzAyMjg0ZmY1MjlkZmViNDM2
YTFjLi4yZTY1YzRjMDI4ZDcyNDBmZmUyMzFkNTIxMWUxOThmNWNiZmQzY2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5oCkBAIC0zOSwyMCArMzksMjEgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKGRp
c3BsYXlJRCkpOwogICAgIH0KLSAgICAKKwogICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYygpOwotICAgIAotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIGZpbmFsOwotICAg
IGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIGZpbmFsOwotICAgIAorCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyhXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXlJRCk7Ci0gICAgCi0gICAgYm9vbCBoYXNSZXF1ZXN0ZWRSZWZyZXNoQ2FsbGJhY2soKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2hhc1NlbnRNZXNzYWdlOyB9CisKKyAgICB2b2lkIGRpc3Bh
dGNoRGlzcGxheURpZFJlZnJlc2goKSBmaW5hbDsKKworICAgIGJvb2wgc3RhcnROb3RpZmljYXRp
b25NZWNoYW5pc20oKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20o
KSBmaW5hbDsKIAogICAgIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCBtX29ic2VydmVySUQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4gbV9ydW5Mb29wT2JzZXJ2
ZXI7Ci0gICAgYm9vbCBtX2hhc1NlbnRNZXNzYWdlIHsgZmFsc2UgfTsKKworICAgIGJvb2wgbV9k
aXNwbGF5TGlua0lzQWN0aXZlIHsgZmFsc2UgfTsKICAgICBib29sIG1fZmlyc3RDYWxsYmFja0lu
Q3VycmVudFJ1bmxvb3AgeyBmYWxzZSB9OwogfTsKIAo=
</data>
<flag name="commit-queue"
          id="444157"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424477</attachid>
            <date>2021-03-27 18:09:19 -0700</date>
            <delta_ts>2021-03-27 19:52:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223844-20210327180918.patch</filename>
            <type>text/plain</type>
            <size>46282</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY1MjI4Yzk0YzVlYWI2
YTU0NGY0MjIzMmE3NGY1N2RlMDRmNDBlNC4uZDU0MjdkODU3ZTIyMmQ2MjRmNjQxOGZlNDdkZDBi
ZjRmOWY4NTZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTAzLTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IERpc3Bs
YXlSZWZyZXNoTW9uaXRvciB0byBiZSBtb3JlIGxvbmctbGl2ZWQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODQ0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIGJlaGF2aW9y
IGZvciBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIHdhcyB0aGF0IHRoZXkgd2VyZSBjcmVhdGVkIGFu
ZCBkZXN0cm95ZWQKKyAgICAgICAgZnJlcXVlbnRseSwgYXMgdGhlaXIgY2xpZW50cyBhcmUgcmVn
aXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkLiBJbiBhZGRpdGlvbiwgc29tZSBvZgorICAgICAgICB0
aGVpciBzdWJjbGFzc2VzIGhhZCBkdXBsaWNhdGVkIGxvZ2ljIHJlbGF0ZWQgdG8gaG93IG9mdGVu
IHRoZXkgZmlyZWQgd2l0aG91dCBjbGllbnRzCisgICAgICAgIGJlZm9yZSB0aGV5IHdlcmUgcmVt
b3ZlZC4KKworICAgICAgICBUaGUgMToxIGNvcnJlc3BvbmRhbmNlIGJldHdlZW4gRGlzcGxheVJl
ZnJlc2hNb25pdG9ycyBhbmQgcGh5c2ljYWwgZGlzcGxheXMgbWFrZXMgdGhlbQorICAgICAgICBh
IHVzZWZ1bCBwbGFjZSB0byBzdG9yZSBwZXItZGlzcGxheSBpbmZvcm1hdGlvbiAobGlrZSByZWZy
ZXNoIHJhdGUpLCB3aGljaCBzaG91bGQKKyAgICAgICAgcGVyc2lzdCB3aGV0aGVyIG9yIG5vdCB0
aGV5IGhhdmUgY2xpZW50cywgc28gdGhpcyBjaGFuZ2UgcHJlcGFyZXMgZm9yIHRoYXQuCisgICAg
ICAgIAorICAgICAgICBUaGUgbWFpbiBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggYXJlOgorICAgICAg
ICAgIDEuIFByb3ZpZGUgdmlydHVhbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpL3N0b3BO
b3RpZmljYXRpb25NZWNoYW5pc20oKSBmdW5jdGlvbnMgb24KKyAgICAgICAgICAgICBEaXNwbGF5
UmVmcmVzaE1vbml0b3IgdGhhdCBzdWJjbGFzc2VzIGNhbiB1c2UgdG8gc3RhcnQgdGhlaXIgQ1ZE
aXNwbGF5TGluayBvciByZWxhdGVkCisgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAgIDIuIFByb3ZpZGUgc29tZSBzaGFyZWQgbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQgbG9n
aWMgdGhhdCBzdWJjbGFzc2VzIGNhbiB0dW5lIHRvCisgICAgICAgICAgICAgcHJvdmlkZSB0aGUg
aHlzdGVyZXNpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIHN0YXJ0L3N0b3Agb2YgdGhlIHVuZGVybHlp
bmcKKyAgICAgICAgICAgICBub3RpZmljYXRpb24gbWVjaGFuaXNtLgorCisgICAgICAgICAzLiBQ
cm92aWRlIGEgc2hhcmVkIGRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2goKSBmdW5jdGlvbiB0aGF0
IG1vc3QgaW1wbGVtZW50YXRpb25zCisgICAgICAgICAgICBjYW4gdXNlLgorCisgICAgICAgIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIgbm8gbG9uZ2VyIGRlc3Ryb3lzIERpc3BsYXlSZWZy
ZXNoTW9uaXRvcnMgd2hlbiB0aGV5IGxvc2UKKyAgICAgICAgYWxsIHRoZWlyIGNsaWVudHMuIFRo
aXMgbWVhbnMgdGhhdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIGFyZSBuZXZlciByZW1vdmVkLCBi
dXQgdGhlcmUKKyAgICAgICAgc2hvdWxkIG9ubHkgZXZlciBiZSBhcyBtYW55IGFzIHRoZXJlIGFy
ZSBwaHlzaWNhbCBkaXNwbGF5cywgYW5kIHRoZXkgYXJlIG9ubHkKKyAgICAgICAgYWN0aXZlIGlm
IGJlaW5nIHNjaGVkdWxlZCBieSBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3RvcCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNo
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpmaXJl
ZEFuZFJlYWNoZWRNYXhVbnNjaGVkdWxlZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJlc2gp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpzZXRNYXhVbnNjaGVkdWxl
ZEZpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6Om11
dGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUxp
bmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3I6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yOjpzaG91bGRCZVRlcm1pbmF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnNldElzQWN0aXZlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6
OnVucmVnaXN0ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheVdhc1VwZGF0ZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjp+RGlzcGxheVJlZnJlc2hNb25p
dG9yR3RrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uRnJhbWVDbG9ja1VwZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlz
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OnN0b3BOb3Rp
ZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yR3RrOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0
ay5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tOgorICAgICAgICAoLVtXZWJEaXNwbGF5TGlua0hhbmRsZXIgc2V0UGF1c2Vk
Ol0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9ySU9TOjp+RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hh
bmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnJlcXVl
c3RSZWZyZXNoQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9ySU9TOjpkaXNwbGF5TGlua0ZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6TGVnYWN5
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BhdGNoRGlzcGxheURpZFJlZnJlc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlmaWNh
dGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6ZGlzcGxheUxpbmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JX
aW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpzdGFydE5v
dGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW46OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxp
bmtGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvcldpbi5oOgorCiAyMDIxLTAzLTI3ICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogU2VuZCByZXBvcnQgdG8gYm90
aCBjbGljayBzb3VyY2UgYW5kIGF0dHJpYnV0aW9uIGRlc3RpbmF0aW9uIHdlYnNpdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggY2Q3NjEzMDU3MjU5NmFhZjdmOTc4ZjJmMjMwZDFlMzIwMWIyZjExNy4uZWNiMmYxNTI4
Y2UzODM4Mjg4ODhlNDNhYWNkYjdlMmE3Y2E3YjQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBA
QAorMjAyMS0wMy0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgdG8gYmUgbW9yZSBsb25nLWxpdmVk
IG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMzg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFRo
ZSBleGlzdGluZyBiZWhhdmlvciBmb3IgRGlzcGxheVJlZnJlc2hNb25pdG9ycyB3YXMgdGhhdCB0
aGV5IHdlcmUgY3JlYXRlZCBhbmQgZGVzdHJveWVkCisgICAgICAgIGZyZXF1ZW50bHksIGFzIHRo
ZWlyIGNsaWVudHMgYXJlIHJlZ2lzdGVyZWQgYW5kIHVucmVnaXN0ZXJlZC4gSW4gYWRkaXRpb24s
IHNvbWUgb2YKKyAgICAgICAgdGhlaXIgc3ViY2xhc3NlcyBoYWQgZHVwbGljYXRlZCBsb2dpYyBy
ZWxhdGVkIHRvIGhvdyBvZnRlbiB0aGV5IGZpcmVkIHdpdGhvdXQgY2xpZW50cworICAgICAgICBi
ZWZvcmUgdGhleSB3ZXJlIHJlbW92ZWQuCisKKyAgICAgICAgVGhlIDE6MSBjb3JyZXNwb25kYW5j
ZSBiZXR3ZWVuIERpc3BsYXlSZWZyZXNoTW9uaXRvcnMgYW5kIHBoeXNpY2FsIGRpc3BsYXlzIG1h
a2VzIHRoZW0KKyAgICAgICAgYSB1c2VmdWwgcGxhY2UgdG8gc3RvcmUgcGVyLWRpc3BsYXkgaW5m
b3JtYXRpb24gKGxpa2UgcmVmcmVzaCByYXRlKSwgd2hpY2ggc2hvdWxkCisgICAgICAgIHBlcnNp
c3Qgd2hldGhlciBvciBub3QgdGhleSBoYXZlIGNsaWVudHMsIHNvIHRoaXMgY2hhbmdlIHByZXBh
cmVzIGZvciB0aGF0LgorICAgICAgICAKKyAgICAgICAgVGhlIG1haW4gY2hhbmdlcyBpbiB0aGlz
IHBhdGNoIGFyZToKKyAgICAgICAgICAxLiBQcm92aWRlIHZpcnR1YWwgc3RhcnROb3RpZmljYXRp
b25NZWNoYW5pc20oKS9zdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZnVuY3Rpb25zIG9uCisg
ICAgICAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yIHRoYXQgc3ViY2xhc3NlcyBjYW4gdXNl
IHRvIHN0YXJ0IHRoZWlyIENWRGlzcGxheUxpbmsgb3IgcmVsYXRlZAorICAgICAgICAgICAgIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgICAyLiBQcm92aWRlIHNvbWUgc2hhcmVkIG1heFVuc2No
ZWR1bGVkRmlyZUNvdW50IGxvZ2ljIHRoYXQgc3ViY2xhc3NlcyBjYW4gdHVuZSB0bworICAgICAg
ICAgICAgIHByb3ZpZGUgdGhlIGh5c3RlcmVzaXMgdXNlZCB0byBjb250cm9sIHRoZSBzdGFydC9z
dG9wIG9mIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgbm90aWZpY2F0aW9uIG1lY2hhbmlz
bS4KKworICAgICAgICAgMy4gUHJvdmlkZSBhIHNoYXJlZCBkaXNwYXRjaERpc3BsYXlEaWRSZWZy
ZXNoKCkgZnVuY3Rpb24gdGhhdCBtb3N0IGltcGxlbWVudGF0aW9ucworICAgICAgICAgICAgY2Fu
IHVzZS4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgICogU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpEaXNwbGF5TGluayk6CisgICAgICAg
IChXZWJLaXQ6OkRpc3BsYXlMaW5rOjp+RGlzcGxheUxpbmspOgorICAgICAgICAoV2ViS2l0OjpE
aXNwbGF5TGluazo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGluazo6
bm90aWZ5T2JzZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1v
bml0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxi
YWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJl
c2hNb25pdG9yTWFjOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKToKKyAgICAgICAgKFdlYktp
dDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKToK
KyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFydE5vdGlmaWNh
dGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtGaXJlZCk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMuaDoKKwogMjAyMS0wMy0yNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFNlbmQgcmVwb3J0IHRvIGJvdGggY2xpY2sg
c291cmNlIGFuZCBhdHRyaWJ1dGlvbiBkZXN0aW5hdGlvbiB3ZWJzaXRlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDczNGY5NGIxMGZmYmJlODE3YWZkMjE2M2UwYzgz
MzUwZjAwZDUyYmUuLmIyN2ZkMzYwMTI0MDk5NjM1NTA0ZjUyNzE4ODA2NTg3YzM4NWE1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzcsNiArMTM3LDkgQEAg
cHVibGljOgogICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgeyB9CiAKKyAgICBib29sIHN0YXJ0Tm90
aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgc3Rv
cE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsIHsgfQorCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEVtcHR5RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCkKICAgICAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvci5jcHAKaW5kZXggODI2NDk2Y2JkNDg1ZTEwZmJkOWIzNDc2MWYwMGUyNzgwZDQ5ZGJmMi4u
YjhlZTJjOTliY2M3MGE3OTExZDk4MGEwYWJhNGM1NDc5NzBlYjdiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwCkBAIC00NCw2ICs0NCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3Rl
eHByIHVuc2lnbmVkIG1heFVuc2NoZWR1bGVkRmlyZUNvdW50IHsgMSB9OworCiBSZWZQdHI8RGlz
cGxheVJlZnJlc2hNb25pdG9yPiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZURlZmF1bHRE
aXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTgwLDYgKzgyLDEyIEBAIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIAogRGlz
cGxheVJlZnJlc2hNb25pdG9yOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yKCkgPSBkZWZhdWx0Owog
Cit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c3RvcCgpCit7CisgICAgc3RvcE5vdGlmaWNh
dGlvbk1lY2hhbmlzbSgpOworICAgIHNldElzU2NoZWR1bGVkKGZhbHNlKTsKK30KKwogdm9pZCBE
aXNwbGF5UmVmcmVzaE1vbml0b3I6OmFkZENsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQmIGNsaWVudCkKIHsKICAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwpAQCAtODksMjMgKzk3
LDY3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZW1vdmVDbGllbnQoRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgaWYgKG1fY2xpZW50c1RvQmVOb3Rp
ZmllZCkKICAgICAgICAgbV9jbGllbnRzVG9CZU5vdGlmaWVkLT5yZW1vdmUoJmNsaWVudCk7CisK
ICAgICByZXR1cm4gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAotdm9pZCBEaXNwbGF5
UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKCkKK2Jvb2wgRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fbG9jayk7CisgICAgCisgICAgaWYgKGlzU2NoZWR1bGVkKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKCFzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmZpcmVkQW5kUmVhY2hl
ZE1heFVuc2NoZWR1bGVkRmlyZUNvdW50KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKKyAgICBBU1NFUlQobV9sb2NrLmlzTG9ja2VkKCkpOworCisgICAgaWYgKGlzU2NoZWR1bGVk
KCkpIHsKKyAgICAgICAgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA9IDA7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CiAKKyAgICArK21fdW5zY2hlZHVsZWRGaXJlQ291bnQ7CisgICAgcmV0
dXJuIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgPiBtX21heFVuc2NoZWR1bGVkRmlyZUNvdW50Owor
fQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7CiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7Ci0gICAgICAgIExPR19XSVRI
X1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3IgIiA8
PCB0aGlzIDw8ICIgZGlzcGxheURpZFJlZnJlc2ggZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQo
KSA8PCAiIHNjaGVkdWxlZCAiIDw8IG1fc2NoZWR1bGVkIDw8ICIgdW5zY2hlZHVsZWRGaXJlQ291
bnQgIiA8PCBtX3Vuc2NoZWR1bGVkRmlyZUNvdW50KTsKLSAgICAgICAgaWYgKCFtX3NjaGVkdWxl
ZCkKLSAgICAgICAgICAgICsrbV91bnNjaGVkdWxlZEZpcmVDb3VudDsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA9IDA7Ci0KLSAgICAgICAgbV9zY2hl
ZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwor
CisgICAgICAgIC8vIFRoaXMgbWF5IGJlIG9mZiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIGlm
ICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OmRpc3BsYXlMaW5rRmlyZWQgZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQoKSA8PCAi
IC0gc2NoZWR1bGVkICIgPDwgaXNTY2hlZHVsZWQoKSA8PCAiIHVuc2NoZWR1bGVkRmlyZUNvdW50
ICIgPDwgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA8PCAiIG9mICIgPDwgbV9tYXhVbnNjaGVkdWxl
ZEZpcmVDb3VudCk7CisgICAgICAgIGlmIChmaXJlZEFuZFJlYWNoZWRNYXhVbnNjaGVkdWxlZEZp
cmVDb3VudCgpKSB7CisgICAgICAgICAgICBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRJc1NjaGVkdWxlZChm
YWxzZSk7CisgICAgICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOwogICAgIH0KKyAg
ICBkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGRpc3BsYXlEaWRSZWZyZXNoKCk7Cit9CisKK3ZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIC8vIFRoZSBjYWxsIGJhY2sgY2FuIGNhdXNlIGFsbCBvdXIgY2xpZW50
cyB0byBiZSB1bnJlZ2lzdGVyZWQsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdAogICAgIC8vIGFnYWlu
c3QgZGVsZXRpb24gdW50aWwgdGhlIGVuZCBvZiB0aGUgbWV0aG9kLgpAQCAtMTI5LDcgKzE4MSw3
IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCiAgICAg
ICAgIG1fY2xpZW50c1RvQmVOb3RpZmllZCA9IG51bGxwdHI7CiAKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOwogICAgICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKHRydWUpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJl
c2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3IuaAppbmRleCA3OTNjZTRlNmFjNmQ3MzAwNGQzOTg5ZDMwNWVlMGUyMTFiYmJj
MzM3Li41ZTY1NmQ3MDJiZDJkM2FjMGFmMDM3YzViMmVmZWI1ZjAwYWQ4ZDMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuaApAQCAtMzksMTkgKzM5LDE4IEBAIGNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvckNs
aWVudDsKIGNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rvcnk7CiAKIGNsYXNzIERpc3Bs
YXlSZWZyZXNoTW9uaXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEaXNwbGF5UmVm
cmVzaE1vbml0b3I+IHsKKyAgICBmcmllbmQgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlcjsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4g
Y3JlYXRlKERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqLCBQbGF0Zm9ybURpc3BsYXlJRCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9yKCk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgpIHsgfQorICAgIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1BlclNlY29uZCkgeyB9CiAKICAgICAvLyBSZXR1
cm4gdHJ1ZSBpZiBjYWxsYmFjayByZXF1ZXN0IHdhcyBzY2hlZHVsZWQsIGZhbHNlIGlmIGl0IGNv
dWxkbid0IGJlCiAgICAgLy8gKGUuZy4sIGhhcmR3YXJlIHJlZnJlc2ggaXMgbm90IGF2YWlsYWJs
ZSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29s
IHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKTsKIAogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKICAgICAKQEAgLTYxLDIzICs2MCwyMCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5SUQ7IH0KIAotICAgIGJvb2wgc2hvdWxkQmVUZXJtaW5hdGVkKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IGludCBtYXhJbmFjdGl2ZUZpcmVDb3VudCA9IDE7Ci0gICAgICAg
IHJldHVybiAhbV9zY2hlZHVsZWQgJiYgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA+IG1heEluYWN0
aXZlRmlyZUNvdW50OwotICAgIH0KLQogICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJlZnJlc2hN
b25pdG9yPiBjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxh
eUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlzcGxheUxpbmtGaXJlZCgp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRGlzcGxheVJlZnJl
c2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKIAotICAgIGZyaWVuZCBjbGFzcyBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYW5hZ2VyOwotICAgIAotICAgIExvY2smIG11dGV4KCkgeyByZXR1cm4g
bV9tdXRleDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpc3Bs
YXlEaWRSZWZyZXNoKCk7CisKKyAgICBMb2NrJiBsb2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9Cisg
ICAgdm9pZCBzZXRNYXhVbnNjaGVkdWxlZEZpcmVDb3VudCh1bnNpZ25lZCBjb3VudCkgeyBtX21h
eFVuc2NoZWR1bGVkRmlyZUNvdW50ID0gY291bnQ7IH0KIAotICAgIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2ZTsgfQotICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCBhY3Rp
dmUpIHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHN0
YXJ0IHdhcyBzdWNjZXNzZnVsLgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBzdGFy
dE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgc3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpID0gMDsKIAogICAgIGJvb2wgaXNTY2hl
ZHVsZWQoKSBjb25zdCB7IHJldHVybiBtX3NjaGVkdWxlZDsgfQogICAgIHZvaWQgc2V0SXNTY2hl
ZHVsZWQoYm9vbCBzY2hlZHVsZWQpIHsgbV9zY2hlZHVsZWQgPSBzY2hlZHVsZWQ7IH0KQEAgLTg1
LDE5ICs4MSwyMSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1ByZXZpb3VzRnJhbWVEb25lKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmV2aW91c0ZyYW1lRG9uZTsgfQogICAgIHZvaWQgc2V0SXNQcmV2
aW91c0ZyYW1lRG9uZShib29sIGRvbmUpIHsgbV9wcmV2aW91c0ZyYW1lRG9uZSA9IGRvbmU7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBoYXNSZXF1ZXN0ZWRSZWZyZXNoQ2FsbGJhY2soKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGxheURpZFJlZnJl
c2goKTsKIAogcHJpdmF0ZToKKyAgICBib29sIGZpcmVkQW5kUmVhY2hlZE1heFVuc2NoZWR1bGVk
RmlyZUNvdW50KCk7CiAKICAgICBIYXNoU2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+
IG1fY2xpZW50czsKICAgICBIYXNoU2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+KiBt
X2NsaWVudHNUb0JlTm90aWZpZWQgeyBudWxscHRyIH07Ci0gICAgTG9jayBtX211dGV4OwogICAg
IFBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEIHsgMCB9OwotICAgIGludCBtX3Vuc2NoZWR1
bGVkRmlyZUNvdW50IHsgMCB9OyAvLyBOdW1iZXIgb2YgdGltZXMgdGhlIGRpc3BsYXkgbGluayBo
YXMgZmlyZWQgd2l0aCBubyBjbGllbnRzLgotICAgIGJvb2wgbV9hY3RpdmUgeyB0cnVlIH07CisK
KyAgICBMb2NrIG1fbG9jazsKICAgICBib29sIG1fc2NoZWR1bGVkIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fcHJldmlvdXNGcmFtZURvbmUgeyB0cnVlIH07CisgICAgCisgICAgdW5zaWduZWQgbV91
bnNjaGVkdWxlZEZpcmVDb3VudCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heFVuc2NoZWR1bGVk
RmlyZUNvdW50IHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNw
cAppbmRleCBlOGRmZWM3YTFkNTQzMzRhZjUyNzU4Yzg5YzA2M2ViNTI1YTVlYzcwLi4yYzM5N2I5
OThmYmYxZTY1ZmU5YmQxZjEyZDgzMzNlZjdiY2JkNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JNYW5hZ2VyLmNwcApAQCAtNzIsMTEgKzcyLDkgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYW5hZ2VyOjp1bnJlZ2lzdGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYK
ICAgICBhdXRvIGluZGV4ID0gZmluZE1vbml0b3JGb3JEaXNwbGF5SUQoY2xpZW50RGlzcGxheUlE
KTsKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKKwogICAgIFJl
ZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IG1vbml0b3IgPSBtX21vbml0b3JzW2luZGV4XS5t
b25pdG9yOwotICAgIGlmIChtb25pdG9yLT5yZW1vdmVDbGllbnQoY2xpZW50KSkgewotICAgICAg
ICBpZiAoIW1vbml0b3ItPmhhc0NsaWVudHMoKSkKLSAgICAgICAgICAgIG1fbW9uaXRvcnMucmVt
b3ZlKGluZGV4KTsKLSAgICB9CisgICAgbW9uaXRvci0+cmVtb3ZlQ2xpZW50KGNsaWVudCk7CiB9
CiAKIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2V0UHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYgY2xpZW50LCBGcmFtZXNQZXJT
ZWNvbmQgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKQpAQCAtOTQsMTYgKzkyLDkgQEAgYm9vbCBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzY2hlZHVsZUFuaW1hdGlvbihEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2goRGlzcGxheVJlZnJlc2hNb25p
dG9yJiBtb25pdG9yKQordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpkaXNwbGF5
RGlkUmVmcmVzaChEaXNwbGF5UmVmcmVzaE1vbml0b3ImKQogewotICAgIGlmICghbW9uaXRvci5z
aG91bGRCZVRlcm1pbmF0ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HX1dJVEhfU1RS
RUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6
OmRpc3BsYXlEaWRSZWZyZXNoKCkgLSBkZXN0cm95aW5nIG1vbml0b3IgIiA8PCAmbW9uaXRvcik7
Ci0KLSAgICBtX21vbml0b3JzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZdKGF1dG8mIG1vbml0b3JX
cmFwcGVyKSB7Ci0gICAgICAgIHJldHVybiBtb25pdG9yV3JhcHBlci5tb25pdG9yID09ICZtb25p
dG9yOwotICAgIH0pOworICAgIC8vIE1heWJlIHdlIHNob3VsZCByZW1vdmUgbW9uaXRvcnMgdGhh
dCBoYXZlbid0IGJlZW4gYWN0aXZlIGZvciBzb21lIHRpbWUuCiB9CiAKIHZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlEIGRpc3BsYXlJRCwgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50JiBjbGllbnQpCkBAIC0x
MjAsNyArMTExLDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjp3aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGwKIHZvaWQgRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheVdhc1VwZGF0ZWQoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKQogewogICAgIGF1dG8qIG1vbml0b3IgPSBtb25pdG9yRm9yRGlzcGxheUlEKGRpc3Bs
YXlJRCk7Ci0gICAgaWYgKG1vbml0b3IgJiYgbW9uaXRvci0+aGFzUmVxdWVzdGVkUmVmcmVzaENh
bGxiYWNrKCkpCisgICAgaWYgKG1vbml0b3IpCiAgICAgICAgIG1vbml0b3ItPmRpc3BsYXlMaW5r
RmlyZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmNwcAppbmRleCA3OGNm
NWRmM2E3ODRlYjdhYzYwNGY1NDMyZDlkNmY5MmU2MmRiOGYzLi44ZjY5MDljZDBkM2Y0ZjFhODgx
MGVmYWVkMzViNTQxYjhhOGE5MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmNw
cApAQCAtMzksNiArMzksMTYgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpEaXNwbGF5UmVm
cmVzaE1vbml0b3JHdGsoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogfQogCiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JHdGs6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsoKQoreworICAgIEFT
U0VSVCghbV93aW5kb3cpOworfQorCitzdGF0aWMgdm9pZCBvbkZyYW1lQ2xvY2tVcGRhdGUoR2Rr
RnJhbWVDbG9jayosIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0ayogbW9uaXRvcikKK3sKKyAgICBt
b25pdG9yLT5kaXNwbGF5TGlua0ZpcmVkKCk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25p
dG9yR3RrOjpzdG9wKCkKIHsKICAgICBpZiAoIW1fd2luZG93KQogICAgICAgICByZXR1cm47CkBA
IC00Niw1MCArNTYsNDUgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjp+RGlzcGxheVJlZnJl
c2hNb25pdG9yR3RrKCkKICAgICBhdXRvKiBmcmFtZUNsb2NrID0gZ3RrX3dpZGdldF9nZXRfZnJh
bWVfY2xvY2sobV93aW5kb3cpOwogICAgIEFTU0VSVChmcmFtZUNsb2NrKTsKICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQoZnJhbWVDbG9jaywgR19TSUdOQUxfTUFUQ0hf
REFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7Ci0gICAgZ2RrX2ZyYW1lX2Nsb2Nr
X2VuZF91cGRhdGluZyhmcmFtZUNsb2NrKTsKLSAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV93aW5k
b3cpOwotfQogCi1zdGF0aWMgdm9pZCBvbkZyYW1lQ2xvY2tVcGRhdGUoR2RrRnJhbWVDbG9jayos
IERpc3BsYXlSZWZyZXNoTW9uaXRvckd0ayogbW9uaXRvcikKLXsKLSAgICBtb25pdG9yLT5kaXNw
bGF5TGlua0ZpcmVkKCk7CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fd2luZG93KTsKKyAgICBt
X3dpbmRvdyA9IG51bGxwdHI7CiB9CiAKLWJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpy
ZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpz
dGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiB7Ci0gICAgaWYgKCFpc0FjdGl2ZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2xvY2tJc0FjdGl2ZSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAKKyAgICBHZGtGcmFtZUNsb2NrKiBmcmFtZUNsb2NrOwogICAgIGlmICghbV93
aW5kb3cpIHsKICAgICAgICAgLy8gR2RrRnJhbWVDbG9ja0lkbGUgaXMgcHJpdmF0ZSBpbiBHREss
IHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgdG9wbGV2ZWwgdG8gZ2V0IGl0cyBmcmFtZSBjbG9jay4K
ICAgICAgICAgbV93aW5kb3cgPSBndGtfb2Zmc2NyZWVuX3dpbmRvd19uZXcoKTsKICAgICAgICAg
Z3RrX3dpZGdldF9yZWFsaXplKG1fd2luZG93KTsKIAotICAgICAgICBhdXRvKiBmcmFtZUNsb2Nr
ID0gZ3RrX3dpZGdldF9nZXRfZnJhbWVfY2xvY2sobV93aW5kb3cpOworICAgICAgICBmcmFtZUNs
b2NrID0gZ3RrX3dpZGdldF9nZXRfZnJhbWVfY2xvY2sobV93aW5kb3cpOwogICAgICAgICBBU1NF
UlQoZnJhbWVDbG9jayk7Ci0KICAgICAgICAgZ19zaWduYWxfY29ubmVjdChmcmFtZUNsb2NrLCAi
dXBkYXRlIiwgR19DQUxMQkFDSyhvbkZyYW1lQ2xvY2tVcGRhdGUpLCB0aGlzKTsKLSAgICAgICAg
Z2RrX2ZyYW1lX2Nsb2NrX2JlZ2luX3VwZGF0aW5nKGZyYW1lQ2xvY2spOworICAgIH0gZWxzZQor
ICAgICAgICBmcmFtZUNsb2NrID0gZ3RrX3dpZGdldF9nZXRfZnJhbWVfY2xvY2sobV93aW5kb3cp
OwogCi0gICAgICAgIHNldElzQWN0aXZlKHRydWUpOwotICAgIH0KKyAgICBBU1NFUlQoZnJhbWVD
bG9jayk7CisgICAgZ2RrX2ZyYW1lX2Nsb2NrX2JlZ2luX3VwZGF0aW5nKGZyYW1lQ2xvY2spOwog
Ci0gICAgTG9ja0hvbGRlciBsb2NrKG11dGV4KCkpOwotICAgIHNldElzU2NoZWR1bGVkKHRydWUp
OworICAgIG1fY2xvY2tJc0FjdGl2ZSA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpkaXNwbGF5TGlua0ZpcmVkKCkKK3ZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yR3RrOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAg
ICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtdXRleCgpKTsKLSAgICAgICAgaWYgKCFpc1By
ZXZpb3VzRnJhbWVEb25lKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc2V0SXNQ
cmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7Ci0gICAgfQotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgZGlzcGxheURpZFJlZnJlc2goKTsKKyAgICBpZiAoIW1fY2xvY2tJc0FjdGl2ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogZnJhbWVDbG9jayA9IGd0a193aWRnZXRfZ2V0
X2ZyYW1lX2Nsb2NrKG1fd2luZG93KTsKKyAgICBBU1NFUlQoZnJhbWVDbG9jayk7CisgICAgZ2Rr
X2ZyYW1lX2Nsb2NrX2VuZF91cGRhdGluZyhmcmFtZUNsb2NrKTsKKworICAgIG1fY2xvY2tJc0Fj
dGl2ZSA9IGZhbHNlOyAgICAKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvckd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckd0ay5oCmluZGV4IDUzY2FiN2YxYzViMzZhYjgyZTFjNGYzNTI3YzliZDA2
YzZlYzE5N2MuLjkxZGZmYzFlMDMzYzBjODYyZDE4MDBmMDZkODUzNWJhNTViOWYzNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EaXNwbGF5UmVmcmVz
aE1vbml0b3JHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
RGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmgKQEAgLTQyLDEzICs0MiwxNSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JHdGsoKTsKIAotICAgIHZvaWQgZGlz
cGxheUxpbmtGaXJlZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFj
aygpIG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9u
aXRvckd0ayhQbGF0Zm9ybURpc3BsYXlJRCk7CiAKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAg
ICBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CisgICAgdm9pZCBzdG9w
Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CisKICAgICBHdGtXaWRnZXQqIG1fd2luZG93
IHsgbnVsbHB0ciB9OworICAgIGJvb2wgbV9jbG9ja0lzQWN0aXZlIHsgZmFsc2UgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAppbmRl
eCBmOTlkNjRlNmMwYjU2OTg1NDUzZTFkZDUyMDk3NmIyMGYyYjAyYzJkLi4xMDUwOGU4OTBkNTAw
NDAxYTdjYTMwZjE0NDNlYzEzMDcxZDQ0NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklP
Uy5oCkBAIC00MywxNCArNDMsMTcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgfkRpc3Bs
YXlSZWZyZXNoTW9uaXRvcklPUygpOwogCi0gICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCkgb3Zl
cnJpZGU7Ci0gICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7Ci0KIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKFBsYXRmb3JtRGlz
cGxheUlEKTsKKworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIGJvb2wgc3RhcnROb3RpZmlj
YXRpb25NZWNoYW5pc20oKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5p
c20oKSBmaW5hbDsKKwogICAgIFJldGFpblB0cjxXZWJEaXNwbGF5TGlua0hhbmRsZXI+IG1faGFu
ZGxlcjsKKyAgICBib29sIG1fZGlzcGxheUxpbmtJc0FjdGl2ZSB7IGZhbHNlIH07CiB9OwogCi19
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0KaW5kZXggNzFjYjgwZDVmMTRmY2E3YjI5
NDY5MmY5YmE3MjliODZjMGFkYjI4OS4uY2RjMTZmYzQ2ZGQ4NzMzYTE2MDhmNzY4ZTU5YzUwYWIy
YTc5YzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9z
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tCkBAIC0yOCwxMSArMjgs
MTQgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FEaXNwbGF5
TGluay5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIAogdXNpbmcgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOwor
CiBAaW50ZXJmYWNlIFdlYkRpc3BsYXlMaW5rSGFuZGxlciA6IE5TT2JqZWN0CiB7CiAgICAgRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TKiBtX21vbml0b3I7CkBAIC00Miw2ICs0NSw3IEBAIEBpbnRl
cmZhY2UgV2ViRGlzcGxheUxpbmtIYW5kbGVyIDogTlNPYmplY3QKIC0gKGlkKWluaXRXaXRoTW9u
aXRvcjooRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKiltb25pdG9yOwogLSAodm9pZClzZXRQcmVm
ZXJyZWRGcmFtZXNQZXJTZWNvbmQ6KE5TSW50ZWdlcilwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7
CiAtICh2b2lkKWhhbmRsZURpc3BsYXlMaW5rOihDQURpc3BsYXlMaW5rICopc2VuZGVyOworLSAo
dm9pZClzZXRQYXVzZWQ6KEJPT0wpcGF1c2VkOwogLSAodm9pZClpbnZhbGlkYXRlOwogCiBAZW5k
CkBAIC03OCw2ICs4MiwxMSBAQCAtICh2b2lkKWhhbmRsZURpc3BsYXlMaW5rOihDQURpc3BsYXlM
aW5rICopc2VuZGVyCiAgICAgbV9tb25pdG9yLT5kaXNwbGF5TGlua0ZpcmVkKCk7CiB9CiAKKy0g
KHZvaWQpc2V0UGF1c2VkOihCT09MKXBhdXNlZAoreworICAgIFttX2Rpc3BsYXlMaW5rIHNldFBh
dXNlZDpwYXVzZWRdOworfQorCiAtICh2b2lkKWludmFsaWRhdGUKIHsKICAgICBbbV9kaXNwbGF5
TGluayBpbnZhbGlkYXRlXTsKQEAgLTg4LDM5ICs5Nyw1MSBAQCBAZW5kCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY29uc3RleHByIHVuc2lnbmVkIG1heFVuc2NoZWR1bGVkRmlyZUNvdW50IHsg
MSB9OworCiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklP
UyhQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0
b3IoZGlzcGxheUlEKQogeworICAgIHNldE1heFVuc2NoZWR1bGVkRmlyZUNvdW50KG1heFVuc2No
ZWR1bGVkRmlyZUNvdW50KTsKIH0KIAogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjp+RGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TKCkKK3sKKyAgICBBU1NFUlQoIW1faGFuZGxlcik7Cit9CisKK3Zv
aWQgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpzdG9wKCkKIHsKICAgICBbbV9oYW5kbGVyIGlu
dmFsaWRhdGVdOworICAgIG1faGFuZGxlciA9IG5pbDsKIH0KIAotYm9vbCBEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1M6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQorYm9vbCBEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBpZiAoIWlz
QWN0aXZlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9kaXNwbGF5TGlua0lz
QWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghbV9oYW5kbGVyKSB7Cisg
ICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtIC0gY3JlYXRpbmcgV2Vi
RGlzcGxheUxpbmtIYW5kbGVyIik7CiAgICAgICAgIG1faGFuZGxlciA9IGFkb3B0TlMoW1tXZWJE
aXNwbGF5TGlua0hhbmRsZXIgYWxsb2NdIGluaXRXaXRoTW9uaXRvcjp0aGlzXSk7Ci0gICAgICAg
IHNldElzQWN0aXZlKHRydWUpOwogICAgIH0KIAotICAgIHNldElzU2NoZWR1bGVkKHRydWUpOwor
ICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1M6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtIC0gc3RhcnRpbmcgV2ViRGlz
cGxheUxpbmtIYW5kbGVyIik7CisgICAgW21faGFuZGxlciBzZXRQYXVzZWQ6Tk9dOworICAgIG1f
ZGlzcGxheUxpbmtJc0FjdGl2ZSA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpkaXNwbGF5TGlua0ZpcmVkKCkKK3ZvaWQgRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBp
ZiAoIWlzUHJldmlvdXNGcmFtZURvbmUoKSkKKyAgICBpZiAoIW1fZGlzcGxheUxpbmtJc0FjdGl2
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7
Ci0gICAgZGlzcGxheURpZFJlZnJlc2goKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxp
bmssIHN0cmVhbSA8PCAiRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpzdG9wTm90aWZpY2F0aW9u
TWVjaGFuaXNtIC0gcGF1c2luZyBXZWJEaXNwbGF5TGlua0hhbmRsZXIiKTsKKyAgICBbbV9oYW5k
bGVyIHNldFBhdXNlZDpZRVNdOworICAgIG1fZGlzcGxheUxpbmtJc0FjdGl2ZSA9IGZhbHNlOwog
fQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRl
eCA0ZGNlZjkzOWMzNmUwZmZkNzg5NDJiNDgwM2M2NjljM2NiOWRlN2E3Li5jNzQ1ODAwNjFlYzEz
MWY2YTA3Njc5ZTY4Y2ZkN2IxNzY2NTMwOWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtMjgsMTYgKzI4LDIxIEBACiAKICNpZiBQTEFURk9STShN
QUMpCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmgiCi0jaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW5jbHVkZSA8
Q29yZVZpZGVvL0NWRGlzcGxheUxpbmsuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
b25zdGV4cHIgdW5zaWduZWQgbWF4VW5zY2hlZHVsZWRGaXJlQ291bnQgeyAyMCB9OworCiBMZWdh
Y3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1h
YyhQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0
b3IoZGlzcGxheUlEKQogewogICAgIEFTU0VSVCghaXNJbldlYlByb2Nlc3MoKSk7CisgICAgc2V0
TWF4VW5zY2hlZHVsZWRGaXJlQ291bnQobWF4VW5zY2hlZHVsZWRGaXJlQ291bnQpOwogfQogCiBM
ZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6On5MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMoKQpAQCAtNDcsMTAgKzUyLDggQEAgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
Ojp+TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKCkKIAogdm9pZCBMZWdhY3lEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWM6OnN0b3AoKQogewotICAgIGlmICghbV9kaXNwbGF5TGluaykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ1ZEaXNwbGF5TGlua1N0b3AobV9kaXNwbGF5TGluayk7Cisg
ICAgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpzdG9wKCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKERp
c3BsYXlMaW5rLCBzdHJlYW0gPDwgIkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3Rv
cCBmb3IgZGlwc2xheSAiIDw8IGRpc3BsYXlJRCgpIDw8ICIgZGVzdHJveWluZyBkaXNwbGF5IGxp
bmsiKTsKICAgICBDVkRpc3BsYXlMaW5rUmVsZWFzZShtX2Rpc3BsYXlMaW5rKTsKICAgICBtX2Rp
c3BsYXlMaW5rID0gbnVsbHB0cjsKIH0KQEAgLTYyLDQ3ICs2NSw1MiBAQCBzdGF0aWMgQ1ZSZXR1
cm4gZGlzcGxheUxpbmtDYWxsYmFjayhDVkRpc3BsYXlMaW5rUmVmLCBjb25zdCBDVlRpbWVTdGFt
cCosIGNvbnN0CiAgICAgcmV0dXJuIGtDVlJldHVyblN1Y2Nlc3M7CiB9CiAKLWJvb2wgTGVnYWN5
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKK3ZvaWQg
TGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNo
KCkKIHsKLSAgICBpZiAoIWlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0geworICAgICAgICBpZiAobV9kaXNwbGF5TGluaykKKyAgICAgICAgICAgIGRpc3BsYXlE
aWRSZWZyZXNoKCk7CisgICAgfSk7Cit9CiAKK2Jvb2wgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjpzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCit7CiAgICAgaWYgKCFtX2Rpc3Bs
YXlMaW5rKSB7Ci0gICAgICAgIHNldElzQWN0aXZlKGZhbHNlKTsKLSAgICAgICAgQ1ZSZXR1cm4g
ZXJyb3IgPSBDVkRpc3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlzcGxheShkaXNwbGF5SUQoKSwgJm1f
ZGlzcGxheUxpbmspOworICAgICAgICBhdXRvIGVycm9yID0gQ1ZEaXNwbGF5TGlua0NyZWF0ZVdp
dGhDR0Rpc3BsYXkoZGlzcGxheUlEKCksICZtX2Rpc3BsYXlMaW5rKTsKICAgICAgICAgaWYgKGVy
cm9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGVycm9yID0gQ1ZEaXNw
bGF5TGlua1NldE91dHB1dENhbGxiYWNrKG1fZGlzcGxheUxpbmssIGRpc3BsYXlMaW5rQ2FsbGJh
Y2ssIHRoaXMpOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogCi0gICAgICAgIGVycm9yID0gQ1ZEaXNwbGF5TGlua1N0YXJ0KG1fZGlzcGxheUxp
bmspOworICAgIGlmICghbV9kaXNwbGF5TGlua0lzQWN0aXZlKSB7CisgICAgICAgIExPR19XSVRI
X1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWM6OnN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtIGZvciBkaXNwbGF5ICIgPDwgZGlzcGxh
eUlEKCkgPDwgIiBzdGFydGluZyBkaXNwbGF5IGxpbmsiKTsKKworICAgICAgICBhdXRvIGVycm9y
ID0gQ1ZEaXNwbGF5TGlua1N0YXJ0KG1fZGlzcGxheUxpbmspOwogICAgICAgICBpZiAoZXJyb3Ip
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc2V0SXNBY3RpdmUodHJ1ZSk7
CisgICAgICAgIAorICAgICAgICBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgPSB0cnVlOwogICAgIH0K
IAotICAgIExvY2tIb2xkZXIgbG9jayhtdXRleCgpKTsKLSAgICBzZXRJc1NjaGVkdWxlZCh0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWM6OmRpc3BsYXlMaW5rRmlyZWQoKQordm9pZCBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKQogewotICAgIExvY2tIb2xkZXIgbG9j
ayhtdXRleCgpKTsKLSAgICBpZiAoIWlzUHJldmlvdXNGcmFtZURvbmUoKSkKKyAgICBpZiAoIW1f
ZGlzcGxheUxpbmtJc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0SXNQcmV2aW91
c0ZyYW1lRG9uZShmYWxzZSk7Ci0KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBpZiAobV9kaXNwbGF5
TGluaykKLSAgICAgICAgICAgIGRpc3BsYXlEaWRSZWZyZXNoKCk7Ci0gICAgfSk7CisgICAgaWYg
KG1fZGlzcGxheUxpbmspIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBz
dHJlYW0gPDwgIkxlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcE5vdGlmaWNhdGlv
bk1lY2hhbmlzbSBmb3IgZGlzcGxheSAiIDw8IGRpc3BsYXlJRCgpIDw8ICIgc3RvcHBpbmcgZGlz
cGxheSBsaW5rIik7CisgICAgICAgIENWRGlzcGxheUxpbmtTdG9wKG1fZGlzcGxheUxpbmspOwor
ICAgIH0KKyAgICAgICAgCisgICAgbV9kaXNwbGF5TGlua0lzQWN0aXZlID0gZmFsc2U7CiB9CiAK
LX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaAppbmRleCAzM2EzYTc4Yjk1MjFk
NjAyZDA3Yzc3Yzg4Nzk0YTk0MDQ4YzUwNjJmLi44YThiMjgwZTc2N2FiNWMxY2NlZWFkZjZhZmFh
YWNhYmU4MTQyNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5o
CkBAIC00MywxNiArNDMsMjAgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgfkxlZ2FjeURp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYygpOwogCi0gICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCkg
ZmluYWw7Ci0gICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgZmluYWw7Ci0gICAgdm9p
ZCBzdG9wKCkgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTGVnYWN5RGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjKFBsYXRmb3JtRGlzcGxheUlEKTsKIAorICAgIHZvaWQgZGlzcGF0Y2hE
aXNwbGF5RGlkUmVmcmVzaCgpIGZpbmFsOworCisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyAg
ICBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CisgICAgdm9pZCBzdG9w
Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CisKICAgICBDVkRpc3BsYXlMaW5rUmVmIG1f
ZGlzcGxheUxpbmsgeyBudWxscHRyIH07CisgICAgYm9vbCBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUg
eyBmYWxzZSB9OwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcAppbmRleCAyZmE0
NzAwMzlhZmY3OWY3ZDUxMDVhOGJlM2QzODM4NGRjNGY5ZDI0Li4zYTIwYTYzNzZhNDkxMWNkYzdl
OTg5ZWY4MGQ2NWFkNzZiOGQ2MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNw
cApAQCAtMzUsMjcgKzM1LDIxIEBAIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4+IERp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6Y3JlYXRlKFBsYXRmb3JtRGlzcGxhCiAKIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbjo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luKFBsYXRmb3JtRGlzcGxh
eUlEIGRpc3BsYXlJRCkKICAgICA6IERpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpCi0g
ICAgLCBtX3RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkRpc3BsYXlSZWZyZXNoTW9uaXRv
cldpbjo6ZGlzcGxheUxpbmtGaXJlZCkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5TGlua0ZpcmVkKQogewogfQogCi1i
b29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCiti
b29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20o
KQogewotICAgIGlmICghaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1f
dGltZXIuc3RhcnRPbmVTaG90KDE2X21zKTsKLSAgICBzZXRJc0FjdGl2ZSh0cnVlKTsKLSAgICBz
ZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAg
ICAgbV90aW1lci5zdGFydFJlcGVhdGluZygxNl9tcyk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OmRpc3BsYXlMaW5rRmlyZWQoKQordm9p
ZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKQog
ewotICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKLSAgICBkaXNwbGF5RGlkUmVmcmVzaCgp
OworICAgIG1fdGltZXIuc3RvcCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJl
c2hNb25pdG9yV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlz
cGxheVJlZnJlc2hNb25pdG9yV2luLmgKaW5kZXggYTIxODhlMmExMTE1NmNlNjdjYTQ4YWVhN2Uy
MGVmOTY2MzUyNzhjMi4uZWZlNTc2ZTJmNGM0MjBmODhlYjZlZDg2NWNhZjZmOGIxMGZiMWI2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaApAQCAtMzQsMTEgKzM0LDEyIEBAIGNsYXNz
IERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbiA6IHB1YmxpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3Ig
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2luPiBj
cmVhdGUoUGxhdGZvcm1EaXNwbGF5SUQpOwogCi0gICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7Ci0K
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luKFBsYXRmb3Jt
RGlzcGxheUlEKTsKKworICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKKwogICAgIFJ1
bkxvb3A6OlRpbWVyPERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbj4gbV90aW1lcjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVh
ZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAppbmRleCBiNWE5ZGFlZDA1ZDI4MGZjNjY4ZmFl
MGU5OWMzMTEwMGM4N2MyOGZmLi44YzJhNzA4NDAyYzBmMzk5ZTY3NzVmODY0YThhZDIwYzdhOGY3
ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IGJvb2wgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJh
Y2soKQogCiAgICAgYm9vbCBwcmV2aW91c0ZyYW1lRG9uZSB7IGZhbHNlIH07CiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtdXRleCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhsb2NrKCkpOwogICAgICAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKICAgICAgICAg
cHJldmlvdXNGcmFtZURvbmUgPSBpc1ByZXZpb3VzRnJhbWVEb25lKCk7CiAgICAgfQpAQCAtNzEs
NyArNzEsNyBAQCBib29sIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVm
cmVzaENhbGxiYWNrKCkKIAogYm9vbCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVx
dWlyZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
dXRleCgpKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2soKSk7CiAgICAgcmV0dXJu
IGlzU2NoZWR1bGVkKCkgJiYgaXNQcmV2aW91c0ZyYW1lRG9uZSgpOwogfQogCkBAIC04Nyw3ICs4
Nyw3IEBAIHZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmludmFsaWRhdGUoKQog
ICAgIG1fZGlzcGxheVJlZnJlc2hUaW1lci5zdG9wKCk7CiAgICAgYm9vbCB3YXNTY2hlZHVsZWQg
PSBmYWxzZTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4KCkpOworICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2soKSk7CiAgICAgICAgIHdhc1NjaGVkdWxl
ZCA9IGlzU2NoZWR1bGVkKCk7CiAgICAgfQogICAgIGlmICh3YXNTY2hlZHVsZWQpCkBAIC05NSwx
MSArOTUsMTIgQEAgdm9pZCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6aW52YWxpZGF0
ZSgpCiAgICAgbV9jbGllbnQgPSBudWxscHRyOwogfQogCisvLyBGSVhNRTogUmVmYWN0b3IgdG8g
c2hhcmUgbW9yZSBjb2RlIHdpdGggRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5TGlua0Zp
cmVkKCkuCiB2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVz
aENhbGxiYWNrKCkKIHsKICAgICBib29sIHNob3VsZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZp
Y2F0aW9uIHsgZmFsc2UgfTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4
KCkpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2soKSk7CiAgICAgICAgIHNo
b3VsZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uID0gaXNTY2hlZHVsZWQoKSAmJiBp
c1ByZXZpb3VzRnJhbWVEb25lKCk7CiAgICAgICAgIGlmIChzaG91bGRIYW5kbGVEaXNwbGF5UmVm
cmVzaE5vdGlmaWNhdGlvbikKICAgICAgICAgICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFs
c2UpOwpAQCAtMTExLDcgKzExMiw3IEBAIHZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0
b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQogICAgIC8vIFJldHJpZXZlIHRoZSBzY2hlZHVs
ZWQgc3RhdHVzIGZvciB0aGlzIERpc3BsYXlSZWZyZXNoTW9uaXRvci4KICAgICBib29sIGhhc0Jl
ZW5SZXNjaGVkdWxlZCB7IGZhbHNlIH07CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtdXRleCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKCkpOwogICAg
ICAgICBoYXNCZWVuUmVzY2hlZHVsZWQgPSBpc1NjaGVkdWxlZCgpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlz
cGxheVJlZnJlc2hNb25pdG9yLmgKaW5kZXggYTU5ZThlYTAwZTRmMmNhZWU4NWVlZjc2YmM4OGJl
N2JkODFjMGFmYS4uYjQ5YThiMmRiZWYwNDlhN2U0NDEzZDJlODJkZTk1MWQyNzdjZTYzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5oCkBAIC01Nyw2ICs1Nyw5IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZv
cm1EaXNwbGF5SUQsIENsaWVudCYpOwogCisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hh
bmlzbSgpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25N
ZWNoYW5pc20oKSBmaW5hbCB7IH0KKwogICAgIHZvaWQgZGlzcGxheVJlZnJlc2hDYWxsYmFjaygp
OwogICAgIFJ1bkxvb3A6OlRpbWVyPFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yPiBtX2Rp
c3BsYXlSZWZyZXNoVGltZXI7CiAgICAgQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCmluZGV4IDA5NWMwOWNiN2RmNjI5NDZmNWU0
NzRhZWM2NjM4MWY1NjA1OGYxOTAuLmJmNzg2Mjc3MzYyZTMwOWRhYzkyNjYwYjYyOTdhN2UxZjBh
NTkwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGlu
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcApA
QCAtMjksOCArMjksMTAgQEAKICNpZiBIQVZFKENWRElTUExBWUxJTkspCiAKICNpbmNsdWRlICJF
dmVudERpc3BhdGNoZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTQwLDYgKzQyLDggQEAgY29uc3RleHByIHVuc2lnbmVkIG1heEZpcmVDb3VudFdpdGhv
dXRPYnNlcnZlcnMgeyAyMCB9OwogRGlzcGxheUxpbms6OkRpc3BsYXlMaW5rKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICA6IG1fZGlzcGxheUlEKGRpc3BsYXlJRCkK
IHsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gQ3Jl
YXRpbmcgRGlzcGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQpOworCiAgICAgLy8g
RklYTUU6IFdlIGNhbiBnZXQgaGVyZSB3aXRoIGRpc3BsYXlJRCA9PSAwICh3ZWJraXQub3JnL2Iv
MjEyMTIwKSwgaW4gd2hpY2ggY2FzZSBDVkRpc3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlzcGxheSgp
CiAgICAgLy8gcHJvYmFibHkgZGVmYXVsdHMgdG8gdGhlIG1haW4gc2NyZWVuLgogICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0
aFdpbmRvd1NlcnZlcikpOwpAQCAtNTgsNiArNjIsOCBAQCBEaXNwbGF5TGluazo6RGlzcGxheUxp
bmsoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogCiBEaXNwbGF5TGluazo6
fkRpc3BsYXlMaW5rKCkKIHsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVh
bSA8PCAiW1VJIF0gRGVzdHJveWluZyBEaXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8IG1fZGlz
cGxheUlEKTsKKwogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxl
Z2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAgIEFTU0VSVChtX2Rpc3Bs
YXlMaW5rKTsKICAgICBpZiAoIW1fZGlzcGxheUxpbmspCkBAIC04NSw2ICs5MSw3IEBAIHZvaWQg
RGlzcGxheUxpbms6OmFkZE9ic2VydmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGlz
cGxheUxpbmtPYnNlcnZlcklECiAgICAgfQogCiAgICAgaWYgKCFDVkRpc3BsYXlMaW5rSXNSdW5u
aW5nKG1fZGlzcGxheUxpbmspKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlu
aywgc3RyZWFtIDw8ICJbVUkgXSBEaXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8IG1fZGlzcGxh
eUlEIDw8ICIgc3RhcnRpbmcgQ1ZEaXNwbGF5TGluayIpOwogICAgICAgICBDVlJldHVybiBlcnJv
ciA9IENWRGlzcGxheUxpbmtTdGFydChtX2Rpc3BsYXlMaW5rKTsKICAgICAgICAgaWYgKGVycm9y
KQogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3Qgc3RhcnQgdGhlIGRpc3BsYXkg
bGluazogJWQiLCBlcnJvcik7CkBAIC0xMzQsMTMgKzE0MSwxNiBAQCB2b2lkIERpc3BsYXlMaW5r
Ojpub3RpZnlPYnNlcnZlcnNEaXNwbGF5V2FzUmVmcmVzaGVkKCkKIAogICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fb2JzZXJ2ZXJzTG9jayk7CiAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkg
ewotICAgICAgICBpZiAoKyttX2ZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMgPj0gbWF4RmlyZUNv
dW50V2l0aG91dE9ic2VydmVycykKKyAgICAgICAgaWYgKCsrbV9maXJlQ291bnRXaXRob3V0T2Jz
ZXJ2ZXJzID49IG1heEZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMpIHsKKyAgICAgICAgICAgIExP
R19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbVUkgXSBEaXNwbGF5TGluayBm
b3IgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgZmlyZWQgIiA8PCBtX2ZpcmVDb3VudFdp
dGhvdXRPYnNlcnZlcnMgPDwgIiB0aW1lcyB3aXRoIG5vIG9ic2VydmVyczsgc3RvcHBpbmcgQ1ZE
aXNwbGF5TGluayIpOwogICAgICAgICAgICAgQ1ZEaXNwbGF5TGlua1N0b3AobV9kaXNwbGF5TGlu
ayk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2ZpcmVDb3VudFdp
dGhvdXRPYnNlcnZlcnMgPSAwOwogCiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9vYnNl
cnZlcnMua2V5cygpKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3Ry
ZWFtIDw8ICJbVUkgXSBEaXNwbGF5TGluayBmb3IgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8
ICIgc2VuZGluZyBmb3IgY29ubmVjdGlvbiAiIDw8IGNvbm5lY3Rpb24tPnVuaXF1ZUlEKCkgPDwg
IiBvbiBiYWNrZ3JvdW5kIHF1ZXVlICIgPDwgc2hvdWxkU2VuZElQQ09uQmFja2dyb3VuZFF1ZXVl
KTsKICAgICAgICAgaWYgKHNob3VsZFNlbmRJUENPbkJhY2tncm91bmRRdWV1ZSkKICAgICAgICAg
ICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6RGlzcGxheVdh
c1JlZnJlc2hlZChtX2Rpc3BsYXlJRCksIDApOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgKaW5kZXggNzZkYmNiZTA1MTdhMTM5MTY5MzA0ODMxMmQwZTAxOTVlM2UxY2Q0ZC4uNjg1
NTUzODE4ZjRiYmZkZWMzZGMyNTkzOTMxMzU3ZjNkZDk5ZmFkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3IuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTGF5ZXJU
cmVlRGlzcGxheVJlZnJlc2hNb25pdG9yKCk7CiAKICAgICB2b2lkIHNldFByZWZlcnJlZEZyYW1l
c1BlclNlY29uZChXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQpIG92ZXJyaWRlOwotICAgIGJvb2wg
cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWVzdFJlZnJl
c2hDYWxsYmFjaygpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRVcGRhdGVMYXllcnMoKTsKICAgICB2
b2lkIHVwZGF0ZURyYXdpbmdBcmVhKFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhJik7CkBAIC00
OSw2ICs0OSw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVtb3RlTGF5ZXJU
cmVlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYSYpOwogCisgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlvbk1l
Y2hhbmlzbSgpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHN0b3BOb3RpZmljYXRp
b25NZWNoYW5pc20oKSBmaW5hbCB7IH0KKwogICAgIFdlYWtQdHI8UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE+IG1fZHJhd2luZ0FyZWE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQppbmRl
eCBmZmJmYzA1ODFhZWQ0ZTNhYzIzZjA3Y2ExYTQyZGUyMzk4NzUxZDU1Li43NTkyZjU2MTAzZjIw
YmM5ZmJlNzFhZjViNGQ0NmJhMmNjMzM3OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJl
ZnJlc2hNb25pdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0KQEAg
LTI2LDYgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJU
cmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ5LDEzICs1MiwxNCBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZy
YW1lc1BlcgogCiBib29sIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVx
dWVzdFJlZnJlc2hDYWxsYmFjaygpCiB7Ci0gICAgaWYgKCFtX2RyYXdpbmdBcmVhIHx8ICFpc0Fj
dGl2ZSgpKQorICAgIGlmICghbV9kcmF3aW5nQXJlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKCFpc1NjaGVkdWxlZCgpKQorICAgIGlmICghaXNTY2hlZHVsZWQoKSkgeworICAg
ICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiUmVtb3RlTGF5ZXJU
cmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrIC0gdHJpZ2dl
cmluZyB1cGRhdGUiKTsKICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWEmPigqbV9kcmF3
aW5nQXJlYS5nZXQoKSkudHJpZ2dlclJlbmRlcmluZ1VwZGF0ZSgpOworICAgIH0KIAotICAgIHNl
dElzQWN0aXZlKHRydWUpOwogICAgIHNldElzU2NoZWR1bGVkKHRydWUpOwogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCA3NTVjY2U2Zjcw
NDQyYWRkMDQ3MGMzYjY3YTFkOTI3MmI1ZTBhZTBkLi5mNGEyNDdmNmU3NTQzZTg1Y2U0MGNhNzFj
NDY4M2MyNGFkMTYxZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAt
MzksNDkgKzM5LDYxIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCisvLyBBdm9pZCByZXBlYXRlZCBzdGFydC9zdG9wIElQQyB3aGVuIHJlc2NoZWR1bGVk
IGluc2lkZSB0aGUgY2FsbGJhY2suCitjb25zdGV4cHIgdW5zaWduZWQgbWF4VW5zY2hlZHVsZWRG
aXJlQ291bnQgeyAxIH07CisKIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6RGlzcGxheVJlZnJl
c2hNb25pdG9yTWFjKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICA6IERpc3BsYXlS
ZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpCiAgICAgLCBtX29ic2VydmVySUQoRGlzcGxheUxpbmtP
YnNlcnZlcklEOjpnZW5lcmF0ZSgpKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwor
ICAgIHNldE1heFVuc2NoZWR1bGVkRmlyZUNvdW50KG1heFVuc2NoZWR1bGVkRmlyZUNvdW50KTsK
IH0KIAogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
KCkKIHsKLSAgICBpZiAobV9oYXNTZW50TWVzc2FnZSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpTdG9wRGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSksIDAp
OworICAgIC8vIHN0b3AoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICBBU1NFUlQoIW1f
ZGlzcGxheUxpbmtJc0FjdGl2ZSk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
OjpkaXNwYXRjaERpc3BsYXlEaWRSZWZyZXNoKCkKK3sKKyAgICBpZiAoIW1fZmlyc3RDYWxsYmFj
a0luQ3VycmVudFJ1bmxvb3ApCisgICAgICAgIHJldHVybjsKKworICAgIERpc3BsYXlSZWZyZXNo
TW9uaXRvcjo6ZGlzcGF0Y2hEaXNwbGF5RGlkUmVmcmVzaCgpOwogfQogCi1ib29sIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCitib29sIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYzo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKQogewotICAgIGlm
ICghaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2Rpc3BsYXlM
aW5rSXNBY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFtX2hhc1NlbnRN
ZXNzYWdlKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5
TGluayhtX29ic2VydmVySUQsIGRpc3BsYXlJRCgpKSwgMCk7Ci0gICAgICAgIG1faGFzU2VudE1l
c3NhZ2UgPSB0cnVlOworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8
ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2sgLSBzdGFy
dGluZyIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGluayht
X29ic2VydmVySUQsIGRpc3BsYXlJRCgpKSwgMCk7CisgICAgaWYgKCFtX3J1bkxvb3BPYnNlcnZl
cikgeworICAgICAgICAvLyBUaGUgUnVuTG9vcE9ic2VydmVyIHJlcGVhdHMuCiAgICAgICAgIG1f
cnVuTG9vcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BF
bnRyeSwgW3RoaXNdKCkgewogICAgICAgICAgICAgbV9maXJzdENhbGxiYWNrSW5DdXJyZW50UnVu
bG9vcCA9IHRydWU7CiAgICAgICAgIH0pOwotICAgICAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2No
ZWR1bGUoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKTsKICAgICB9Ci0gICAgCi0gICAgc2V0SXNTY2hl
ZHVsZWQodHJ1ZSk7CisKKyAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpKTsKKyAgICBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgPSB0cnVlOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5
TGlua0ZpcmVkKCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdG9wTm90aWZpY2F0
aW9uTWVjaGFuaXNtKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBpZiAo
IW1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3ApCisgICAgaWYgKCFtX2Rpc3BsYXlMaW5r
SXNBY3RpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZmlyc3RDYWxsYmFja0luQ3VycmVu
dFJ1bmxvb3AgPSBmYWxzZTsKLQotICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3Ry
ZWFtIDw8ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlMaW5rRmlyZWQoKSBmb3Ig
ZGlzcGxheSAiIDw8IGRpc3BsYXlJRCgpKTsKLQotICAgIGRpc3BsYXlEaWRSZWZyZXNoKCk7Cisg
ICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayAtIHN0b3BwaW5nIik7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTdG9wRGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNw
bGF5SUQoKSksIDApOworICAgIG1fcnVuTG9vcE9ic2VydmVyLT5pbnZhbGlkYXRlKCk7CisgICAg
CisgICAgbV9kaXNwbGF5TGlua0lzQWN0aXZlID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCmluZGV4IDUzYTE1ZmViMjkwMzcw
NzNhM2YzMDIyODRmZjUyOWRmZWI0MzZhMWMuLjJlNjVjNGMwMjhkNzI0MGZmZTIzMWQ1MjExZTE5
OGY1Y2JmZDNjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgKQEAgLTM5LDIwICsz
OSwyMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYWMoZGlzcGxheUlEKSk7CiAgICAgfQotICAgIAorCiAgICAgdmly
dHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKCk7Ci0gICAgCi0gICAgdm9pZCBkaXNwbGF5
TGlua0ZpcmVkKCkgZmluYWw7Ci0gICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgZmlu
YWw7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKLSAgICAKLSAgICBib29sIGhhc1JlcXVl
c3RlZFJlZnJlc2hDYWxsYmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFzU2VudE1lc3Nh
Z2U7IH0KKworICAgIHZvaWQgZGlzcGF0Y2hEaXNwbGF5RGlkUmVmcmVzaCgpIGZpbmFsOworCisg
ICAgYm9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsOworICAgIHZvaWQgc3Rv
cE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsOwogCiAgICAgRGlzcGxheUxpbmtPYnNlcnZl
cklEIG1fb2JzZXJ2ZXJJRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UnVuTG9vcE9i
c2VydmVyPiBtX3J1bkxvb3BPYnNlcnZlcjsKLSAgICBib29sIG1faGFzU2VudE1lc3NhZ2UgeyBm
YWxzZSB9OworCisgICAgYm9vbCBtX2Rpc3BsYXlMaW5rSXNBY3RpdmUgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9maXJzdENhbGxiYWNrSW5DdXJyZW50UnVubG9vcCB7IGZhbHNlIH07CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>