<?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>226691</bug_id>
          
          <creation_ts>2021-06-05 18:09:24 -0700</creation_ts>
          <short_desc>Turn TextIteratorBehaviorFlag into an enum class and wrap it in OptionSet</short_desc>
          <delta_ts>2021-06-06 21:12:16 -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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767174</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-05 18:09:24 -0700</bug_when>
    <thetext>(Modernize some code)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767234</commentid>
    <comment_count>1</comment_count>
      <attachid>430693</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-06 11:54:03 -0700</bug_when>
    <thetext>Created attachment 430693
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767236</commentid>
    <comment_count>2</comment_count>
      <attachid>430694</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-06 12:08:38 -0700</bug_when>
    <thetext>Created attachment 430694
Fix a typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767290</commentid>
    <comment_count>3</comment_count>
      <attachid>430694</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-06 20:50:09 -0700</bug_when>
    <thetext>Comment on attachment 430694
Fix a typo

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767294</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-06 21:11:17 -0700</bug_when>
    <thetext>Committed r278542 (238540@main): &lt;https://commits.webkit.org/238540@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430694.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767295</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-06 21:12:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/78933338&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430693</attachid>
            <date>2021-06-06 11:54:03 -0700</date>
            <delta_ts>2021-06-06 12:08:36 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-226691-20210606115402.patch</filename>
            <type>text/plain</type>
            <size>67795</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZkOWY1ZDhmM2EzMjQx
MWM5YTUzODM1NTU4YjFjMTRkMzBmOTE3ZS4uZjg5YTIwODgyOGI4YjQ2OTU4NDY5NTcyMThlOTYw
NjE0MDI2NWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMS0wNi0wNiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBUdXJuIFRleHRJ
dGVyYXRvckJlaGF2aW9yRmxhZyBpbnRvIGFuIGVudW0gY2xhc3MgYW5kIHdyYXAgaXQgaW4gT3B0
aW9uU2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjY2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b2Rlcm5pemUgc29tZSBlZGl0aW5nIGNvZGUgYnkgdHVybmluZyBgVGV4dEl0ZXJhdG9yQmVoYXZp
b3JGbGFnYCBpbnRvIGFuIGVudW0gY2xhc3MsIGBUZXh0SXRlcmF0b3JCZWhhdmlvcmAsCisgICAg
ICAgIHdpdGggYW4gZXhwbGljaXQgd2l0aCBvZiAxNiBiaXRzLiBBZGRpdGlvbmFsbHksIHNpbmNl
IHRoaXMgaXMgYSBiaXRtYXNrLCByZWZhY3RvciB2YXJpb3VzIGNvZGVwYXRocyB0byB1c2UKKyAg
ICAgICAgYE9wdGlvblNldDxUZXh0SXRlcmF0b3JCZWhhdmlvcj5gIGluc3RlYWQgb2YgdGhlIHVu
ZGVybHlpbmcgdHlwZS4KKworICAgICAgICBUaGlzIGdpdmVzIHVzIGltcHJvdmVkIHR5cGUgc2Fm
ZXR5IHdoZW4gdXNpbmcgdGhpcyBlbnVtLCBhbmQgYWxzbyBuYXJyb3dzIHRoZSB3aWR0aCBvZiB0
aGlzIGVudW0gdG8gMTYgYml0cworICAgICAgICAoZnJvbSAzMikuIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5leHRCb3VuZGFyeSk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5r
LmNwcDoKKyAgICAgICAgKHJhbmdlTGVuZ3RoRm9yT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAgICAgIChn
ZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6CisgICAgICAgIChvYmplY3RGb2N1c2VkQW5kQ2Fy
ZXRPZmZzZXRVbmlnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6dGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UgY29uc3QpOgorCisgICAgICAgIEZp
eCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlIGVtcHR5IChkZWZhdWx0KSBvcHRpb24gc2V0IGlu
c3RlYWQgb2YgYGZhbHNlYCAod2hpY2ggd2FzIHByZXZpb3VzbHkgaW1wbGljaXRseQorICAgICAg
ICBjb252ZXJ0ZWQgdG8gYFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcmApLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAg
ICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29t
bWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3RlZFRleHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgY29uc3Qp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdt
ZW50OjpSZXBsYWNlbWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0NsaXBwZWRCeUZyYW1lQW5jZXN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEl0ZXJhdG9yOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0Q2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNEZXNjZW5kYW50T2YpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyZW50Tm9kZU9yU2hhZG93SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9k
ZU9mZnNldFplcm8pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpzaG91bGRFbWl0
U3BhY2VCZWZvcmVBbmRBZnRlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9y
OjpoYW5kbGVOb25UZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmV4
aXROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6ZW1pdFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlTm9u
VGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVy
YXRvcjo6ZXhpdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVySXRlcmF0b3I6OkNo
YXJhY3Rlckl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNoYXJhY3RlckNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpoYXNBbnlQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6cGxhaW5UZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpmaW5kSXRlcmF0b3JPcHRpb25zKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hhcmFjdGVyUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3Rl
ckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6aGFzQW55UGxh
aW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IpOgorICAg
ICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaDoKKworICAgICAgICBBZGQgYW4g
YWxpYXMgZm9yIGBPcHRpb25TZXQ8VGV4dEl0ZXJhdG9yQmVoYXZpb3I+YCwgYFRleHRJdGVyYXRv
ckJlaGF2aW9yc2AsIHRvIGhlbHAgd2l0aCByZWFkYWJpbGl0eSB3aGVuCisgICAgICAgIHNwZWNp
Znlpbmcgb3IgY29uc3VsdGluZyB0aGVzZSBmbGFncy4gQWRkaXRpb25hbGx5IHJlbW92ZSB0aGUg
YFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcmAgZW51bSB2YWx1ZQorICAgICAgICBhbHRvZ2V0
aGVyLCBzaW5jZSB3ZSBjYW4gbm93IGp1c3QgdXNlIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIChg
T3B0aW9uU2V0PFRleHRJdGVyYXRvckJlaGF2aW9yPiB7IH1gKSB0byBnZXQgYQorICAgICAgICBz
ZXQgb2YgZW1wdHkgb3B0aW9ucy4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJh
dG9yOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjphcHBl
bmRUcmFpbGluZ1doaXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCb3VuZGFyeSk6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnJl
bmRlcmVkVGV4dFJlc3BlY3RpbmdSYW5nZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKwogMjAyMS0wNi0wNSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIE1v
dmUgRGF0YURldGVjdG9ycyBzb2Z0bGlua2luZyBpbiBEYXRhRGV0ZWN0b3JzU1BJLmggb3V0IGlu
dG8gYSBzZXBhcmF0ZSBQQUwgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIyZmQ3NTVjZDgxOGJlNWU0ODcw
ODA2ZmY2MDUxYThjYzgyMzE1NWUuLjk0MmE1MmQ0YWMwNzA1MGUzM2MzM2JlODFhODQwMmM0Zjg5
NjJiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDYtMDYgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVHVybiBUZXh0SXRlcmF0b3JC
ZWhhdmlvckZsYWcgaW50byBhbiBlbnVtIGNsYXNzIGFuZCB3cmFwIGl0IGluIE9wdGlvblNldAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjkxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYkNv
cmUvQ2hhbmdlTG9nIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlVGV4dExlZ2liaWxpdHlT
Y2FsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6cGxhaW5UZXh0Rm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6
OnJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQpOgorCiAyMDIxLTA2LTA1ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gRGljdGlvbmFy
eSBsb29rdXAgaGlnaGxpZ2h0cyBpbiBpbWFnZSBvdmVybGF5cyBzaG91bGQgaW5jbHVkZSBiYWNr
Z3JvdW5kIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZTEwYWQ5NjNk
MjM2ZWMxM2U5YmQxM2U3YTg0NjA4ZThlOGI1MzFiLi4yYmI1NzUyNjBjYWUzNDBlMThiNzU0OTA1
ZDZmNzVmMjMxMjQ1ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjEtMDYtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgVHVybiBUZXh0SXRlcmF0b3JCZWhhdmlvckZsYWcgaW50byBhbiBlbnVtIGNs
YXNzIGFuZCB3cmFwIGl0IGluIE9wdGlvblNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3JlIGluZm9y
bWF0aW9uLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgX3N0cmluZ0ZvclJhbmdlOl0pOgorCiAyMDIxLTA2LTA1ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gTW92ZSBEYXRhRGV0ZWN0
b3JzIHNvZnRsaW5raW5nIGluIERhdGFEZXRlY3RvcnNTUEkuaCBvdXQgaW50byBhIHNlcGFyYXRl
IFBBTCBoZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCmluZGV4IGY5MjM1MDViYzY1ZTRmYmM4ODc4YzdmMWM2ZjIzNzE0NTdhNDcyZTIuLjQ3
ZDhhYmFmZWZhMzYxNTgwZWJmOGQ1Yjc1ZjQxZWFlZjUyNmRiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTkyMCw3ICsxOTIwLDEw
IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5n
ZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsCiAgICAgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwog
ICAgIGludCBsYXN0U3RhcnRPZmZzZXQgPSAwOwogICAgIAotICAgIFRleHRJdGVyYXRvciBpdGVy
YXRvcihyYW5nZSwgZG9Ob3RFbnRlclRleHRDb250cm9scyA/IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvciA6IFRleHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scyk7CisgICAgVGV4dEl0ZXJh
dG9yQmVoYXZpb3JzIGJlaGF2aW9yczsKKyAgICBpZiAoIWRvTm90RW50ZXJUZXh0Q29udHJvbHMp
CisgICAgICAgIGJlaGF2aW9ycy5hZGQoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVudGVyc1RleHRD
b250cm9scyk7CisgICAgVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKHJhbmdlLCBiZWhhdmlvcnMpOwog
ICAgIAogICAgIC8vIFdoZW4gdGhlIHJhbmdlIGhhcyB6ZXJvIGxlbmd0aCwgdGhlcmUgbWlnaHQg
YmUgcmVwbGFjZWQgbm9kZSBvciBiclRhZyB0aGF0IHdlIG5lZWQgdG8gaW5jcmVtZW50IHRoZSBj
aGFyYWN0ZXJPZmZzZXQuCiAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKQEAgLTIwNzgsNyAr
MjA4MSw3IEBAIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdl
TWF0Y2hlc1RleHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlCiAgICAgaWYgKCFzZWFyY2hSYW5nZSB8
fCBzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBhdXRvIHRhcmdldE9mZnNldCA9IGNoYXJhY3RlckNvdW50KHsgc2VhcmNoUmFuZ2Ut
PnN0YXJ0LCBvcmlnaW5hbFJhbmdlLnN0YXJ0IH0sIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVy
c0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKKyAgICBhdXRvIHRhcmdldE9mZnNldCA9IGNo
YXJhY3RlckNvdW50KHsgc2VhcmNoUmFuZ2UtPnN0YXJ0LCBvcmlnaW5hbFJhbmdlLnN0YXJ0IH0s
IFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBv
c2l0aW9ucyk7CiAgICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KCpzZWFyY2hSYW5nZSwg
bWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CiB9CiAKQEAgLTI3MTYsNyArMjcxOSw3IEBA
IENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpuZXh0Qm91bmRhcnkoY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgQ2hhcmFj
dGVyT2Zmc2V0IGVuZCA9IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShzZWFyY2hS
YW5nZSwgZmFsc2UpOwogICAgIAotICAgIFRleHRJdGVyYXRvciBpdChzZWFyY2hSYW5nZSwgVGV4
dEl0ZXJhdG9yRW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMpOworICAgIFRleHRJdGVy
YXRvciBpdChzZWFyY2hSYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT2JqZWN0UmVw
bGFjZW1lbnRDaGFyYWN0ZXJzKTsKICAgICB1bnNpZ25lZCBuZXh0ID0gZm9yd2FyZFNlYXJjaEZv
ckJvdW5kYXJ5V2l0aFRleHRJdGVyYXRvcihpdCwgc3RyaW5nLCBwcmVmaXhMZW5ndGgsIHNlYXJj
aEZ1bmN0aW9uKTsKICAgICAKICAgICBpZiAoaXQuYXRFbmQoKSAmJiBuZXh0ID09IHN0cmluZy5z
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAppbmRleCA2ZTZlNzY0MDRlZTEzOGIzY2IwNjIzYTVhZWFhZDU0YTdjMWU0
YmE2Li4zNGVhOGY0OGM5MDM4NjBjMWRmM2YzZmU4NmI0NGM3Y2I1NzI3MGQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
QEAgLTMxODIsMTcgKzMxODIsMTcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmVzc2Vk
SXNQcmVzZW50KCkgY29uc3QKICAgICByZXR1cm4gIWdldEF0dHJpYnV0ZShhcmlhX3ByZXNzZWRB
dHRyKS5pc0VtcHR5KCk7CiB9CiAKLVRleHRJdGVyYXRvckJlaGF2aW9yIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OnRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3QKK1RleHRJdGVy
YXRvckJlaGF2aW9ycyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0SXRlcmF0b3JCZWhhdmlvckZv
clRleHRSYW5nZSgpIGNvbnN0CiB7Ci0gICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3Ig
PSBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5OworICAgIFRleHRJdGVyYXRvckJl
aGF2aW9ycyBiZWhhdmlvcnMgeyBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlz
aWJpbGl0eSB9OwogICAgIAogI2lmIFVTRShBVEspCiAgICAgLy8gV2UgbmVlZCB0byBlbWl0IHJl
cGxhY2VkIGVsZW1lbnRzIGZvciBHVEssIGFuZCBwcmVzZW50CiAgICAgLy8gdGhlbSB3aXRoIHRo
ZSAnb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3RlcicgKDB4RkZGQykuCi0gICAgYmVoYXZpb3Ig
PSBzdGF0aWNfY2FzdDxUZXh0SXRlcmF0b3JCZWhhdmlvcj4oYmVoYXZpb3IgfCBUZXh0SXRlcmF0
b3JFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVycyk7CisgICAgYmVoYXZpb3JzLmFkZChU
ZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMpOwog
I2VuZGlmCiAgICAgCi0gICAgcmV0dXJuIGJlaGF2aW9yOworICAgIHJldHVybiBiZWhhdmlvcnM7
CiB9CiAgICAgCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpidXR0b25S
b2xlVHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IGJkNTAxOTY1YTNiZTZlNjM3YjAxYjRiZDFhOTE5MjQ4
OTU4YzNmY2UuLjYwMzJmNjhmY2Y2MjYyMzQ2MjJlODc5M2E2ZDQ2ZmZkYzRjN2Q2OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CkBAIC00MzAsNyArNDMwLDcgQEAgcHVibGljOgogICAgIFBhdGggZWxlbWVudFBhdGgoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBQYXRoKCk7IH0KICAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBUZXh0SXRlcmF0b3JCZWhhdmlv
ciB0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFRleHRJdGVyYXRvckJlaGF2aW9ycyB0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYWluVGV4dFJhbmdlIHNlbGVjdGVkVGV4dFJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9CiAgICAgaW50IGluc2VydGlvblBvaW50TGlu
ZU51bWJlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIC0xOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlLmgKaW5kZXggZmY1YzY0ZmUwOWUwMDM5NzY2YTI2Zjg5NTZiYTExNTJhYmEzYjZiZC4uM2Fm
MjUxMWU2OTQwYzg4Y2NlMzc4ZmIwMWQwNTIyYjM2OTY5YzYxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlLmgKQEAgLTExNzIsNyArMTE3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhdGggZWxl
bWVudFBhdGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgpIGNv
bnN0ID0gMDsKIAotICAgIHZpcnR1YWwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4dEl0ZXJhdG9y
QmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBUZXh0SXRlcmF0
b3JCZWhhdmlvcnMgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGludCBpbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKSBjb25zdCA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVIeXBlcmxpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKaW5kZXggMWUzM2RjY2UyYjg4ZDk1MTVkODAx
NTViYTg5NzQ1ZWFiM2E1NzAzMC4uYzY0YzVkOWE0MjE4N2QzY2Y4NTZmNGFkZjIzOWY2YjRlZDZm
OTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBz
dGF0aWMgZ2ludCByYW5nZUxlbmd0aEZvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmos
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8UwogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIFRoaXMg
aXMgZ29pbmcgdG8gYmUgdGhlIGFjdHVhbCBsZW5ndGggaW4gbW9zdCBvZiB0aGUgY2FzZXMKLSAg
ICBpbnQgYmFzZUxlbmd0aCA9IGNoYXJhY3RlckNvdW50KCpyYW5nZSwgVGV4dEl0ZXJhdG9yRW1p
dHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOworICAgIGludCBiYXNlTGVu
Z3RoID0gY2hhcmFjdGVyQ291bnQoKnJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogCiAgICAgLy8gQ2hlY2sgd2hl
dGhlciB0aGUgY3VycmVudCBoeXBlcmxpbmsgYmVsb25ncyB0byBhIGxpc3QgaXRlbS4KICAgICAv
LyBJZiBzbywgd2UgbmVlZCB0byBjb25zaWRlciB0aGUgbGVuZ3RoIG9mIHRoZSBpdGVtJ3MgbWFy
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXggZTlmYmU5YmQ4MjI5
YTM0ODcyOTIxODY2NTY1YTFkNGM3NDcyZTNmYi4uMzcxNGNhMmM3ODdlYzQ5NjVmZDQwZjAyMThj
ZThhOTFlMmIyMzEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcApAQCAt
NDA3LDkgKzQwNyw5IEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3Qo
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAKICAgICAvLyBTZXQgdmFs
dWVzIGZvciBzdGFydCBvZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlhbCByYW5nZSBsZW5ndGgu
CiAgICAgLy8gVGhlc2UgdmFsdWVzIG1pZ2h0IGJlIGFkanVzdGVkIGxhdGVyIHRvIGNvdmVyIHNw
ZWNpYWwgY2FzZXMuCi0gICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQo
Y29yZU9iamVjdCwgY2hhcmFjdGVyQ291bnQocmFuZ2VJblBhcmVudCwgVGV4dEl0ZXJhdG9yRW1p
dHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICBzdGFydE9mZnNl
dCA9IHdlYkNvcmVPZmZzZXRUb0F0a09mZnNldChjb3JlT2JqZWN0LCBjaGFyYWN0ZXJDb3VudChy
YW5nZUluUGFyZW50LCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2Vl
bkFsbFZpc2libGVQb3NpdGlvbnMpKTsKICAgICBhdXRvIG5vZGVSYW5nZSA9ICptYWtlU2ltcGxl
UmFuZ2Uobm9kZVJhbmdlU3RhcnQsIG5vZGVSYW5nZUVuZCk7Ci0gICAgaW50IHJhbmdlTGVuZ3Ro
ID0gY2hhcmFjdGVyQ291bnQobm9kZVJhbmdlLCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CisgICAgaW50IHJhbmdlTGVuZ3RoID0gY2hhcmFj
dGVyQ291bnQobm9kZVJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJz
QmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogCiAgICAgLy8gU3BlY2lhbCBjYXNlcyB0aGF0
IGFyZSBvbmx5IHJlbGV2YW50IHdoZW4gd29ya2luZyB3aXRoICpfRU5EIGJvdW5kYXJpZXMuCiAg
ICAgaWYgKHNlbGVjdGlvbi5hZmZpbml0eSgpID09IEFmZmluaXR5OjpVcHN0cmVhbSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVV0aWwuY3BwCmluZGV4IDg0YjZjMmQzOWYzZjAzZGE4NWY3M2ZlMDhlY2E1YzY5ZTc0OGJm
YzYuLmM3MDY0NzQ3MzFhNzQ4NjYyMjgyNjA4NDY4OWRmYjA0MmU2ZDc2MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
VXRpbC5jcHAKQEAgLTIzMCwxMCArMjMwLDEwIEBAIEFYQ29yZU9iamVjdCogb2JqZWN0Rm9jdXNl
ZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKEFYQ29yZU9iamVjdCogcmVmZXJlbmNlT2JqZWN0CiAg
ICAgICAgIG9mZnNldCA9IDA7CiAgICAgZWxzZSBpZiAoIWlzU3RhcnRPZkxpbmUoZW5kUG9zaXRp
b24pKSB7CiAgICAgICAgIGF1dG8gcmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb24ucHJldmlvdXMoKSk7Ci0gICAgICAgIG9mZnNldCA9IChyYW5nZSA/IGNo
YXJhY3RlckNvdW50KCpyYW5nZSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFs
bFZpc2libGVQb3NpdGlvbnMpIDogMCkgKyAxOworICAgICAgICBvZmZzZXQgPSAocmFuZ2UgPyBj
aGFyYWN0ZXJDb3VudCgqcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykgOiAwKSArIDE7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgYXV0byByYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3Np
dGlvbik7Ci0gICAgICAgIG9mZnNldCA9IHJhbmdlID8gY2hhcmFjdGVyQ291bnQoKnJhbmdlLCBU
ZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykgOiAw
OworICAgICAgICBvZmZzZXQgPSByYW5nZSA/IGNoYXJhY3RlckNvdW50KCpyYW5nZSwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25z
KSA6IDA7CiAgICAgfQogCiAgICAgcmV0dXJuIGZpcnN0VW5pZ25vcmVkUGFyZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCA5ZjhlNjVjNjhhYjE4OTQ0MjQ5MmZjOWIzZTdmZmYx
MzlmYTU3OTNjLi43ZTRmODQ2MTE5YzZjOWJiNzViYTg0MzRlYWIxMzk5NmRhNjdiYTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMjAyMCwxMCArMjAyMCwxMCBAQCBFbGVtZW50
KiBBWElzb2xhdGVkT2JqZWN0OjphY3Rpb25FbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotVGV4dEl0ZXJhdG9yQmVoYXZpb3IgQVhJc29sYXRlZE9iamVjdDo6dGV4dEl0
ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdAorVGV4dEl0ZXJhdG9yQmVoYXZpb3Jz
IEFYSXNvbGF0ZWRPYmplY3Q6OnRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29u
c3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHsgfTsKIH0KIAogV2lkZ2V0KiBBWElzb2xhdGVkT2JqZWN0Ojp3aWRnZXQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGY2MWNlZjJmNzkyMGVkYTNjMWZkZWM5ZDg0
Y2YxZTEwNDJmYTk5MWUuLmMwMWVmYWQ5ZGJjYmE4YzBhNTEyN2JmM2UwMTczM2QyYjRiNTlhZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTU2OCw3ICs1NjgsNyBAQCBwcml2YXRlOgog
ICAgIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBQYXRoIGVs
ZW1lbnRQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcGF0aEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpQYXRoKTsgfTsKICAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9y
dHNQYXRoKTsgfQotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIHRleHRJdGVyYXRvckJlaGF2aW9y
Rm9yVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3Jz
IHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
V2lkZ2V0KiB3aWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVdpZGdldCBwbGF0
Zm9ybVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBhNjM1ZjYyNDE3Yzc5NjAzNWQ3YjY2ZDU2
NmM5Nzg4MTE2MjIxN2UxLi5lZDVlMTNiOTIxZWExMDA4ODVmNjdhNWQ3ZGQ0Y2EzNjJhODlhNTll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAt
MjQ4LDggKzI0OCw4IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShF
ZGl0aW5nU3R5bGUmIHN0eWxlKQogCiAgICAgYXV0byBzY29wZSA9IG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqc2NvcGVSb290KTsKICAgICBhdXRvIHJhbmdlID0gKm1ha2VTaW1wbGVS
YW5nZSh2aXNpYmxlU3RhcnQsIHZpc2libGVFbmQpOwotICAgIGF1dG8gc3RhcnRJbmRleCA9IGNo
YXJhY3RlckNvdW50KHsgc2NvcGUuc3RhcnQsIHJhbmdlLnN0YXJ0IH0sIFRleHRJdGVyYXRvckVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKLSAgICBhdXRvIGVuZElu
ZGV4ID0gY2hhcmFjdGVyQ291bnQoeyBzY29wZS5zdGFydCwgcmFuZ2UuZW5kIH0sIFRleHRJdGVy
YXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKKyAgICBhdXRv
IHN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJDb3VudCh7IHNjb3BlLnN0YXJ0LCByYW5nZS5zdGFydCB9
LCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQ
b3NpdGlvbnMpOworICAgIGF1dG8gZW5kSW5kZXggPSBjaGFyYWN0ZXJDb3VudCh7IHNjb3BlLnN0
YXJ0LCByYW5nZS5lbmQgfSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3Jh
cGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2libGVQb3Np
dGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5l
eHQoKSk7CkBAIC0yODAsOCArMjgwLDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlC
bG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAgICAgICAgIG5leHRQYXJhZ3JhcGhTdGFy
dCA9IGVuZE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0YXJ0KS5uZXh0KCk7CiAgICAgfQogICAgIAot
ICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmVz
b2x2ZUNoYXJhY3RlckxvY2F0aW9uKHNjb3BlLCBzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0
c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOwotICAgIGF1dG8gZW5kUG9z
aXRpb24gPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2Nh
dGlvbihzY29wZSwgZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgYXV0byBzdGFydFBvc2l0aW9uID0gbWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oc2NvcGUsIHN0YXJ0
SW5kZXgsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlz
aWJsZVBvc2l0aW9ucykpOworICAgIGF1dG8gZW5kUG9zaXRpb24gPSBtYWtlRGVwcmVjYXRlZExl
Z2FjeVBvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihzY29wZSwgZW5kSW5kZXgsIFRl
eHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0
aW9ucykpOwogICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAppbmRleCBlNGNiYWU5ZjUyMzU4ZDYwMTIwMmE4OGE4NDJjZmVlZjU5NmJjMTg0Li4zZmQwNGM3
ZTMxZmE5YjQzOTJjMjU0NDhhOTJmNTQwMWUyYzJjZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTQ0MywxMiArMTQ0MywxMiBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAg
ICAgICAgICAgICBpZiAodmlzaWJsZVN0YXJ0ID49IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUpIHsK
ICAgICAgICAgICAgICAgICBpZiAoYXV0byByYW5nZVRvU2VsZWN0aW9uU3RhcnQgPSBtYWtlU2lt
cGxlUmFuZ2Uoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSwgdmlzaWJsZVN0YXJ0KSkKLSAgICAgICAg
ICAgICAgICAgICAgc3RhcnRJbmRleCA9IGNoYXJhY3RlckNvdW50KCpyYW5nZVRvU2VsZWN0aW9u
U3RhcnQsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IGNoYXJhY3RlckNvdW50KCpy
YW5nZVRvU2VsZWN0aW9uU3RhcnQsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBlbmRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAodmlzaWJsZUVuZCA8PSBlbmRPZlBhcmFn
cmFwaFRvTW92ZSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIHJhbmdlVG9TZWxlY3Rpb25F
bmQgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSwgdmlzaWJsZUVuZCkp
Ci0gICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gY2hhcmFjdGVyQ291bnQoKnJhbmdlVG9T
ZWxlY3Rpb25FbmQsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxl
UG9zaXRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBjaGFyYWN0ZXJDb3Vu
dCgqcmFuZ2VUb1NlbGVjdGlvbkVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFj
dGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KQEAgLTE1MTcsNyArMTUxNyw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAg
ICAgaWYgKCFlZGl0YWJsZVJvb3QpCiAgICAgICAgIGVkaXRhYmxlUm9vdCA9ICZkb2N1bWVudCgp
OwogCi0gICAgYXV0byBkZXN0aW5hdGlvbkluZGV4ID0gY2hhcmFjdGVyQ291bnQoeyB7ICplZGl0
YWJsZVJvb3QsIDAgfSwgKm1ha2VCb3VuZGFyeVBvaW50KGRlc3RpbmF0aW9uKSB9LCBUZXh0SXRl
cmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CisgICAgYXV0
byBkZXN0aW5hdGlvbkluZGV4ID0gY2hhcmFjdGVyQ291bnQoeyB7ICplZGl0YWJsZVJvb3QsIDAg
fSwgKm1ha2VCb3VuZGFyeVBvaW50KGRlc3RpbmF0aW9uKSB9LCBUZXh0SXRlcmF0b3JCZWhhdmlv
cjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogCiAgICAgc2V0
RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZGVzdGluYXRpb24sIG9yaWdpbmFsSXNE
aXJlY3Rpb25hbCkpOwogICAgIEFTU0VSVChlbmRpbmdTZWxlY3Rpb24oKS5pc0NhcmV0T3JSYW5n
ZSgpKTsKQEAgLTE1MzksOCArMTUzOSw4IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1v
dmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAg
ICAgIC8vIGNhdXNlcyBzcGFjZXMgdG8gYmUgY29sbGFwc2VkIGR1cmluZyB0aGUgbW92ZSBvcGVy
YXRpb24uICBUaGlzIHJlc3VsdHMKICAgICAgICAgLy8gaW4gYSBjYWxsIHRvIHJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoIHdpdGggYSBsb2NhdGlvbiBwYXN0IHRoZSBlbmQKICAgICAgICAgLy8g
b2YgdGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVybiBudWxsKS4KLSAgICAgICAgYXV0byBz
dGFydCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0
aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWRpdGFibGVSb290KSwgZGVzdGlu
YXRpb25JbmRleCArICpzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3
ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOwotICAgICAgICBhdXRvIGVuZCA9IG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqZWRpdGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCArICplbmRJ
bmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlv
bnMpKTsKKyAgICAgICAgYXV0byBzdGFydCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24o
cmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygq
ZWRpdGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCArICpzdGFydEluZGV4LCBUZXh0SXRlcmF0
b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsK
KyAgICAgICAgYXV0byBlbmQgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJlc29sdmVD
aGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxl
Um9vdCksIGRlc3RpbmF0aW9uSW5kZXggKyAqZW5kSW5kZXgsIFRleHRJdGVyYXRvckJlaGF2aW9y
OjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOwogICAgICAgICBz
ZXRFbmRpbmdTZWxlY3Rpb24oeyBzdGFydCwgZW5kLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgb3Jp
Z2luYWxJc0RpcmVjdGlvbmFsIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcu
Y3BwCmluZGV4IDM0NTZhNzY5ZjE4NDVlMDk0MTljN2FjNTQxZmQ5ODNjM2MwMjRjNGUuLmJlZmI3
MGY2YzJhMjFmZDYzYjk3MjIyYTg3NTZmZDU0ZTdmZjIxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nLmNwcApAQCAtOTY0LDEwICs5NjQsMTAgQEAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b25Gb3JQYXJhZ3JhcGhJdGVyYXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb3JpZ2luYWwK
ICAgICByZXR1cm4gbmV3U2VsZWN0aW9uOwogfQogCi0vLyBGSVhNRTogaW5kZXhGb3JWaXNpYmxl
UG9zaXRpb24gYW5kIHZpc2libGVQb3NpdGlvbkZvckluZGV4IHVzZSBUZXh0SXRlcmF0b3JzIHRv
IGNvbnZlcnQgYmV0d2VlbiAKLS8vIFZpc2libGVQb3NpdGlvbnMgYW5kIGluZGljZXMuIEJ1dCBU
ZXh0SXRlcmF0b3IgaXRlcmF0aW9uIHVzaW5nIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zIAotLy8gZG9lcyBub3QgZXhhY3RseSBtYXRjaCBWaXNp
YmxlUG9zaXRpb24gaXRlcmF0aW9uLCBzbyB1c2luZyB0aGVtIHRvIHByZXNlcnZlIGEgc2VsZWN0
aW9uIGR1cmluZyBhbiBlZGl0aW5nIAotLy8gb3BlcnRpb24gaXMgdW5yZWxpYWJsZS4gVGV4dEl0
ZXJhdG9yJ3MgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3Np
dGlvbnMgbW9kZSBuZWVkcyB0byBiZSBmaXhlZCwgCisvLyBGSVhNRTogaW5kZXhGb3JWaXNpYmxl
UG9zaXRpb24gYW5kIHZpc2libGVQb3NpdGlvbkZvckluZGV4IHVzZSBUZXh0SXRlcmF0b3JzIHRv
IGNvbnZlcnQgYmV0d2VlbgorLy8gVmlzaWJsZVBvc2l0aW9ucyBhbmQgaW5kaWNlcy4gQnV0IFRl
eHRJdGVyYXRvciBpdGVyYXRpb24gdXNpbmcgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hh
cmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zCisvLyBkb2VzIG5vdCBleGFjdGx5IG1h
dGNoIFZpc2libGVQb3NpdGlvbiBpdGVyYXRpb24sIHNvIHVzaW5nIHRoZW0gdG8gcHJlc2VydmUg
YSBzZWxlY3Rpb24gZHVyaW5nIGFuIGVkaXRpbmcKKy8vIG9wZXJ0aW9uIGlzIHVucmVsaWFibGUu
IFRleHRJdGVyYXRvcidzIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3
ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyBtb2RlIG5lZWRzIHRvIGJlIGZpeGVkLAogLy8gb3IgdGhl
c2UgZnVuY3Rpb25zIG5lZWQgdG8gYmUgY2hhbmdlZCB0byBpdGVyYXRlIHVzaW5nIGFjdHVhbCBW
aXNpYmxlUG9zaXRpb25zLgogLy8gRklYTUU6IERlcGxveSB0aGVzZSBmdW5jdGlvbnMgZXZlcnl3
aGVyZSB0aGF0IFRleHRJdGVyYXRvcnMgYXJlIHVzZWQgdG8gY29udmVydCBiZXR3ZWVuIFZpc2li
bGVQb3NpdGlvbnMgYW5kIGluZGljZXMuCiBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIFJlZlB0cjxDb250YWluZXJOb2Rl
PiYgc2NvcGUpCkBAIC05ODksMTQgKzk4OSwxNyBAQCBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIFJlZlB0cjxDb250YQog
ICAgIH0KIAogICAgIGF1dG8gcmFuZ2UgPSAqbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBv
aW50QmVmb3JlTm9kZUNvbnRlbnRzKCpzY29wZSksIHBvc2l0aW9uKTsKLSAgICByZXR1cm4gY2hh
cmFjdGVyQ291bnQocmFuZ2UsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxW
aXNpYmxlUG9zaXRpb25zKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyQ291bnQocmFuZ2UsIFRleHRJ
dGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9u
cyk7CiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIG9uZSBhYm92
ZS4KIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihOb2RlJiBub2RlLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24p
CiB7CiAgICAgYXV0byByYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQb2ludEJl
Zm9yZU5vZGVDb250ZW50cyhub2RlKSwgdmlzaWJsZVBvc2l0aW9uKTsKLSAgICByZXR1cm4gcmFu
Z2UgPyBjaGFyYWN0ZXJDb3VudCgqcmFuZ2UsIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRl
eHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zIDogVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKSA6IDA7CisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3Jz
IGJlaGF2aW9yczsKKyAgICBpZiAoZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorICAgICAgICBi
ZWhhdmlvcnMuYWRkKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucyk7CisgICAgcmV0dXJuIHJhbmdlID8gY2hhcmFjdGVyQ291bnQo
KnJhbmdlLCBiZWhhdmlvcnMpIDogMDsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9u
LCBpbnQgb2Zmc2V0KQpAQCAtMTAxMyw3ICsxMDE2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUpCiB7CiAg
ICAgaWYgKCFzY29wZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4geyBtYWtlRGVw
cmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VT
ZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgaW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hh
cmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKKyAgICByZXR1cm4geyBtYWtl
RGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgaW5kZXgsIFRleHRJdGVyYXRvckJlaGF2
aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpIH07CiB9CiAK
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRl
cmF0b3IoTm9kZSYgbm9kZSwgaW50IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmlu
ZGV4IDFmYmZkOTNiMjM5MDk3ZmM5YmQ0YTllOGU5MGJjNmM4NWI0NDI4NTAuLmVmZjdhZTlkZjFj
MzgzMzdmNzM3YmVkMGRkMTljY2FkNzY2ODE4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKQEAgLTMyODAsMjUgKzMyODAsMjUgQEAgdm9pZCBFZGl0b3I6OmNoYW5nZVNlbGVjdGlvbkFm
dGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIE8KIAogU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKIHsKLSAgICBUZXh0SXRlcmF0b3JCZWhh
dmlvciBiZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcjsKKyAgICBUZXh0SXRl
cmF0b3JCZWhhdmlvcnMgYmVoYXZpb3JzOwogICAgIGlmIChtX2RvY3VtZW50LnNldHRpbmdzKCku
c2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQoKSkKLSAgICAgICAgYmVoYXZp
b3IgfD0gVGV4dEl0ZXJhdG9yVHJhdmVyc2VzRmxhdFRyZWU7Ci0gICAgcmV0dXJuIHNlbGVjdGVk
VGV4dChiZWhhdmlvcik7CisgICAgICAgIGJlaGF2aW9ycy5hZGQoVGV4dEl0ZXJhdG9yQmVoYXZp
b3I6OlRyYXZlcnNlc0ZsYXRUcmVlKTsKKyAgICByZXR1cm4gc2VsZWN0ZWRUZXh0KGJlaGF2aW9y
cyk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpIGNv
bnN0CiB7Ci0gICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JF
bWl0c0ltYWdlQWx0VGV4dDsKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgYmVoYXZpb3JzID0g
VGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzSW1hZ2VBbHRUZXh0OwogICAgIGlmIChtX2RvY3Vt
ZW50LnNldHRpbmdzKCkuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQoKSkK
LSAgICAgICAgYmVoYXZpb3IgfD0gVGV4dEl0ZXJhdG9yVHJhdmVyc2VzRmxhdFRyZWU7Ci0gICAg
cmV0dXJuIHNlbGVjdGVkVGV4dChiZWhhdmlvcik7CisgICAgICAgIGJlaGF2aW9ycy5hZGQoVGV4
dEl0ZXJhdG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKTsKKyAgICByZXR1cm4gc2VsZWN0
ZWRUZXh0KGJlaGF2aW9ycyk7CiB9CiAKLVN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dChUZXh0
SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikgY29uc3QKK1N0cmluZyBFZGl0b3I6OnNlbGVjdGVk
VGV4dChUZXh0SXRlcmF0b3JCZWhhdmlvcnMgYmVoYXZpb3JzKSBjb25zdAogewogICAgIC8vIFdl
IHJlbW92ZSAnXDAnIGNoYXJhY3RlcnMgYmVjYXVzZSB0aGV5IGFyZSBub3QgdmlzaWJseSByZW5k
ZXJlZCB0byB0aGUgdXNlci4KICAgICBhdXRvIHJhbmdlID0gbV9kb2N1bWVudC5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7Ci0gICAgcmV0dXJuIHJhbmdlID8gcGxhaW5UZXh0
KCpyYW5nZSwgYmVoYXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIikgOiBlbXB0eVN0
cmluZygpOworICAgIHJldHVybiByYW5nZSA/IHBsYWluVGV4dCgqcmFuZ2UsIGJlaGF2aW9ycyku
cmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFJlZlB0
cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihj
b25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNjcyMjgyYTcw
NzkzZDA3OGRiMDBiOGUwZmQ2YzNjM2MxNTM1M2Q4OS4uYjlkNzMwYjY3ZGY5ZmZlM2E5N2ViOGRj
NWNhYTMzYTA5NTQ2MzMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01OTYsNyArNTk2
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYXJrTWlzc3Bl
bGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBib29sIGNoZWNrU3Bl
bGxpbmcpOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiByZXNvbHZlVGV4dENoZWNr
aW5nVHlwZU1hc2soY29uc3QgTm9kZSYgcm9vdEVkaXRhYmxlRWxlbWVudCwgT3B0aW9uU2V0PFRl
eHRDaGVja2luZ1R5cGU+KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZWxlY3RlZFRl
eHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3IpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3JzKSBjb25zdDsKIAogICAgIHZvaWQg
c2VsZWN0Q29tcG9zaXRpb24oKTsKICAgICBlbnVtIFNldENvbXBvc2l0aW9uTW9kZSB7IENvbmZp
cm1Db21wb3NpdGlvbiwgQ2FuY2VsQ29tcG9zaXRpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNDc1MDQ5MzhhZTdj
NTZiZGNmZGI5YzU0ZTY4OWE4MzNiZWU3NDE0Yy4uNTA4YmJmZjk4Y2ViZjMyZmRkY2VlZmEyYTkx
M2E2ODJkOGYzYzU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBSZXBsYWNlbWVudEZyYWdt
ZW50OjpSZXBsYWNlbWVudEZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBjb25z
dCBWaXNpYgogICAgIH0KICAgICAKICAgICBhdXRvIHJhbmdlID0gVmlzaWJsZVNlbGVjdGlvbjo6
c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGhvbGRlci5nZXQoKSkudG9Ob3JtYWxpemVkUmFu
Z2UoKTsKLSAgICBTdHJpbmcgdGV4dCA9IHJhbmdlID8gcGxhaW5UZXh0KCpyYW5nZSwgc3RhdGlj
X2Nhc3Q8VGV4dEl0ZXJhdG9yQmVoYXZpb3I+KFRleHRJdGVyYXRvckVtaXRzT3JpZ2luYWxUZXh0
IHwgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpIDogZW1wdHlTdHJpbmcoKTsK
KyAgICBTdHJpbmcgdGV4dCA9IHJhbmdlID8gcGxhaW5UZXh0KCpyYW5nZSwgeyBUZXh0SXRlcmF0
b3JCZWhhdmlvcjo6RW1pdHNPcmlnaW5hbFRleHQsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpJZ25v
cmVzU3R5bGVWaXNpYmlsaXR5IH0pIDogZW1wdHlTdHJpbmcoKTsKIAogICAgIHJlbW92ZUludGVy
Y2hhbmdlTm9kZXMoaG9sZGVyLmdldCgpKTsKICAgICByZW1vdmVVbnJlbmRlcmVkTm9kZXMoaG9s
ZGVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCAy
NjNhOTAwMDZjYjAwNGIwZmNiZDU1NTU1MTE1ZTZhM2Q0OTEyZWRmLi4wMjlkZjlkOGQ0MjUzMjFh
MGRiZDBjODkxOTI4MTU1MmYyOTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCkBAIC0yNDEsOSArMjQxLDkgQEAgc3RhdGljIHZvaWQgc2V0VXBGdWxseUNsaXBw
ZWRTdGFjayhCaXRTdGFjayYgc3RhY2ssIE5vZGUmIG5vZGUpCiAgICAgcHVzaEZ1bGx5Q2xpcHBl
ZFN0YXRlKHN0YWNrLCBub2RlKTsKIH0KIAotc3RhdGljIGJvb2wgaXNDbGlwcGVkQnlGcmFtZUFu
Y2VzdG9yKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVo
YXZpb3IpCitzdGF0aWMgYm9vbCBpc0NsaXBwZWRCeUZyYW1lQW5jZXN0b3IoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgYmVoYXZpb3JzKQogewotICAgIGlm
ICghKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yQ2xpcHNUb0ZyYW1lQW5jZXN0b3JzKSkKKyAgICBp
ZiAoIWJlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6Q2xpcHNUb0ZyYW1l
QW5jZXN0b3JzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvKiBvd25l
ciA9IGRvY3VtZW50Lm93bmVyRWxlbWVudCgpOyBvd25lcjsgb3duZXIgPSBvd25lci0+ZG9jdW1l
bnQoKS5vd25lckVsZW1lbnQoKSkgewpAQCAtMzM5LDggKzMzOSw4IEBAIHN0YXRpYyBOb2RlKiBm
aXJzdE5vZGUoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIE5vZGVUcmF2
ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKHBvaW50LmNvbnRhaW5lcik7CiB9CiAKLVRleHRJ
dGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgYmVoYXZpb3IpCi0gICAgOiBtX2JlaGF2aW9yKGJlaGF2aW9yKQorVGV4dEl0
ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0
b3JCZWhhdmlvcnMgYmVoYXZpb3JzKQorICAgIDogbV9iZWhhdmlvcnMoYmVoYXZpb3JzKQogewog
ICAgIHJhbmdlLnN0YXJ0LmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7CiAKQEAgLTM1OCw3ICszNTgsNyBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRv
cihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aQog
CiB2b2lkIFRleHRJdGVyYXRvcjo6aW5pdCgpCiB7Ci0gICAgaWYgKGlzQ2xpcHBlZEJ5RnJhbWVB
bmNlc3RvcihtX25vZGUtPmRvY3VtZW50KCksIG1fYmVoYXZpb3IpKQorICAgIGlmIChpc0NsaXBw
ZWRCeUZyYW1lQW5jZXN0b3IobV9ub2RlLT5kb2N1bWVudCgpLCBtX2JlaGF2aW9ycykpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHNldFVwRnVsbHlDbGlwcGVkU3RhY2sobV9mdWxseUNsaXBwZWRT
dGFjaywgKm1fbm9kZSk7CkBAIC0zNzUsMzcgKzM3NSwzNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
aW5pdCgpCiBUZXh0SXRlcmF0b3I6On5UZXh0SXRlcmF0b3IoKSA9IGRlZmF1bHQ7CiAKIC8vIEZJ
WE1FOiBVc2UgQ29tcG9zZWRUcmVlSXRlcmF0b3IgaW5zdGVhZC4gVGhlc2UgZnVuY3Rpb25zIGFy
ZSBtb3JlIGV4cGVuc2l2ZSBiZWNhdXNlIHRoZXkgbWlnaHQgZG8gTyhuKSB3b3JrLgotc3RhdGlj
IGlubGluZSBOb2RlKiBmaXJzdENoaWxkKFRleHRJdGVyYXRvckJlaGF2aW9yIG9wdGlvbnMsIE5v
ZGUmIG5vZGUpCitzdGF0aWMgaW5saW5lIE5vZGUqIGZpcnN0Q2hpbGQoVGV4dEl0ZXJhdG9yQmVo
YXZpb3JzIG9wdGlvbnMsIE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKG9wdGlvbnMg
JiBUZXh0SXRlcmF0b3JUcmF2ZXJzZXNGbGF0VHJlZSkpCisgICAgaWYgKFVOTElLRUxZKG9wdGlv
bnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKSkpCiAg
ICAgICAgIHJldHVybiBmaXJzdENoaWxkSW5Db21wb3NlZFRyZWVJZ25vcmluZ1VzZXJBZ2VudFNo
YWRvdyhub2RlKTsKICAgICByZXR1cm4gbm9kZS5maXJzdENoaWxkKCk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgTm9kZSogbmV4dFNpYmxpbmcoVGV4dEl0ZXJhdG9yQmVoYXZpb3Igb3B0aW9ucywgTm9k
ZSYgbm9kZSkKK3N0YXRpYyBpbmxpbmUgTm9kZSogbmV4dFNpYmxpbmcoVGV4dEl0ZXJhdG9yQmVo
YXZpb3JzIG9wdGlvbnMsIE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKG9wdGlvbnMg
JiBUZXh0SXRlcmF0b3JUcmF2ZXJzZXNGbGF0VHJlZSkpCisgICAgaWYgKFVOTElLRUxZKG9wdGlv
bnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKSkpCiAg
ICAgICAgIHJldHVybiBuZXh0U2libGluZ0luQ29tcG9zZWRUcmVlSWdub3JpbmdVc2VyQWdlbnRT
aGFkb3cobm9kZSk7CiAgICAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmcoKTsKIH0KIAotc3RhdGlj
IGlubGluZSBOb2RlKiBuZXh0Tm9kZShUZXh0SXRlcmF0b3JCZWhhdmlvciBvcHRpb25zLCBOb2Rl
JiBub2RlKQorc3RhdGljIGlubGluZSBOb2RlKiBuZXh0Tm9kZShUZXh0SXRlcmF0b3JCZWhhdmlv
cnMgb3B0aW9ucywgTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoVU5MSUtFTFkob3B0aW9ucyAmIFRl
eHRJdGVyYXRvclRyYXZlcnNlc0ZsYXRUcmVlKSkKKyAgICBpZiAoVU5MSUtFTFkob3B0aW9ucy5j
b250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6VHJhdmVyc2VzRmxhdFRyZWUpKSkKICAgICAg
ICAgcmV0dXJuIG5leHRJbkNvbXBvc2VkVHJlZUlnbm9yaW5nVXNlckFnZW50U2hhZG93KG5vZGUp
OwogICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpOwogfQogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNEZXNjZW5kYW50T2YoVGV4dEl0ZXJhdG9yQmVoYXZpb3Igb3B0aW9ucywgTm9k
ZSYgbm9kZSwgTm9kZSYgcG9zc2libGVBbmNlc3RvcikKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0Rl
c2NlbmRhbnRPZihUZXh0SXRlcmF0b3JCZWhhdmlvcnMgb3B0aW9ucywgTm9kZSYgbm9kZSwgTm9k
ZSYgcG9zc2libGVBbmNlc3RvcikKIHsKLSAgICBpZiAoVU5MSUtFTFkob3B0aW9ucyAmIFRleHRJ
dGVyYXRvclRyYXZlcnNlc0ZsYXRUcmVlKSkKKyAgICBpZiAoVU5MSUtFTFkob3B0aW9ucy5jb250
YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6VHJhdmVyc2VzRmxhdFRyZWUpKSkKICAgICAgICAg
cmV0dXJuIG5vZGUuaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YoJnBvc3NpYmxlQW5j
ZXN0b3IpOwogICAgIHJldHVybiBub2RlLmlzRGVzY2VuZGFudE9mKCZwb3NzaWJsZUFuY2VzdG9y
KTsKIH0KIAotc3RhdGljIGlubGluZSBOb2RlKiBwYXJlbnROb2RlT3JTaGFkb3dIb3N0KFRleHRJ
dGVyYXRvckJlaGF2aW9yIG9wdGlvbnMsIE5vZGUmIG5vZGUpCitzdGF0aWMgaW5saW5lIE5vZGUq
IHBhcmVudE5vZGVPclNoYWRvd0hvc3QoVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIG9wdGlvbnMsIE5v
ZGUmIG5vZGUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKG9wdGlvbnMgJiBUZXh0SXRlcmF0b3JUcmF2
ZXJzZXNGbGF0VHJlZSkpCisgICAgaWYgKFVOTElLRUxZKG9wdGlvbnMuY29udGFpbnMoVGV4dEl0
ZXJhdG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKSkpCiAgICAgICAgIHJldHVybiBub2Rl
LnBhcmVudEluQ29tcG9zZWRUcmVlKCk7CiAgICAgcmV0dXJuIG5vZGUucGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpOwogfQpAQCAtNDgxLDIxICs0ODEsMjEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFk
dmFuY2UoKQogCiAgICAgICAgIC8vIGZpbmQgYSBuZXcgY3VycmVudCBub2RlIHRvIGhhbmRsZSBp
biBkZXB0aC1maXJzdCBtYW5uZXIsCiAgICAgICAgIC8vIGNhbGxpbmcgZXhpdE5vZGUoKSBhcyB3
ZSBjb21lIGJhY2sgdGhydSBhIHBhcmVudCBub2RlCi0gICAgICAgIE5vZGUqIG5leHQgPSBtX2hh
bmRsZWRDaGlsZHJlbiA/IG51bGxwdHIgOiBmaXJzdENoaWxkKG1fYmVoYXZpb3IsICptX25vZGUp
OworICAgICAgICBOb2RlKiBuZXh0ID0gbV9oYW5kbGVkQ2hpbGRyZW4gPyBudWxscHRyIDogZmly
c3RDaGlsZChtX2JlaGF2aW9ycywgKm1fbm9kZSk7CiAgICAgICAgIG1fb2Zmc2V0ID0gMDsKICAg
ICAgICAgaWYgKCFuZXh0KSB7Ci0gICAgICAgICAgICBuZXh0ID0gbmV4dFNpYmxpbmcobV9iZWhh
dmlvciwgKm1fbm9kZSk7CisgICAgICAgICAgICBuZXh0ID0gbmV4dFNpYmxpbmcobV9iZWhhdmlv
cnMsICptX25vZGUpOwogICAgICAgICAgICAgaWYgKCFuZXh0KSB7Ci0gICAgICAgICAgICAgICAg
Ym9vbCBwYXN0RW5kID0gbmV4dE5vZGUobV9iZWhhdmlvciwgKm1fbm9kZSkgPT0gbV9wYXN0RW5k
Tm9kZTsKLSAgICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50Tm9kZU9yU2hh
ZG93SG9zdChtX2JlaGF2aW9yLCAqbV9ub2RlKTsKKyAgICAgICAgICAgICAgICBib29sIHBhc3RF
bmQgPSBuZXh0Tm9kZShtX2JlaGF2aW9ycywgKm1fbm9kZSkgPT0gbV9wYXN0RW5kTm9kZTsKKyAg
ICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50Tm9kZU9yU2hhZG93SG9zdCht
X2JlaGF2aW9ycywgKm1fbm9kZSk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKCFuZXh0ICYmIHBh
cmVudE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChwYXN0RW5kICYmIHBhcmVudE5v
ZGUgPT0gbV9lbmRDb250YWluZXIpIHx8IGlzRGVzY2VuZGFudE9mKG1fYmVoYXZpb3IsICptX2Vu
ZENvbnRhaW5lciwgKnBhcmVudE5vZGUpKQorICAgICAgICAgICAgICAgICAgICBpZiAoKHBhc3RF
bmQgJiYgcGFyZW50Tm9kZSA9PSBtX2VuZENvbnRhaW5lcikgfHwgaXNEZXNjZW5kYW50T2YobV9i
ZWhhdmlvcnMsICptX2VuZENvbnRhaW5lciwgKnBhcmVudE5vZGUpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICBib29sIGhhdmVSZW5kZXJlciA9
IG1fbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZXhpdGVkTm9k
ZSA9IG1fbm9kZTsKICAgICAgICAgICAgICAgICAgICAgbV9ub2RlID0gcGFyZW50Tm9kZTsKICAg
ICAgICAgICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKLSAgICAgICAgICAg
ICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGVPclNoYWRvd0hvc3QobV9iZWhhdmlvciwg
Km1fbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlT3JT
aGFkb3dIb3N0KG1fYmVoYXZpb3JzLCAqbV9ub2RlKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGhhdmVSZW5kZXJlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXROb2RlKGV4aXRlZE5v
ZGUpOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9wb3NpdGlvbk5vZGUpIHsKQEAgLTUwMyw3
ICs1MDMsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2hhbmRsZWRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbmV4
dCA9IG5leHRTaWJsaW5nKG1fYmVoYXZpb3IsICptX25vZGUpOworICAgICAgICAgICAgICAgICAg
ICBuZXh0ID0gbmV4dFNpYmxpbmcobV9iZWhhdmlvcnMsICptX25vZGUpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAobmV4dCAmJiBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBleGl0Tm9kZShtX25vZGUpOwogICAgICAgICAgICAgICAgIH0KQEAgLTU0Myw3ICs1
NDMsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogewogICAgIFRleHQm
IHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKm1fbm9kZSk7CiAKLSAgICBpZiAobV9mdWxseUNs
aXBwZWRTdGFjay50b3AoKSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5
bGVWaXNpYmlsaXR5KSkKKyAgICBpZiAobV9mdWxseUNsaXBwZWRTdGFjay50b3AoKSAmJiAhbV9i
ZWhhdmlvcnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2li
aWxpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiByZW5kZXJlciA9ICp0
ZXh0Tm9kZS5yZW5kZXJlcigpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRv
cklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQorICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhbV9iZWhhdmlvcnMuY29udGFp
bnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpbnQgcmVuZGVyZXJUZXh0TGVuZ3RoID0gcmVu
ZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICBpbnQgZW5kID0gKCZ0ZXh0Tm9kZSA9PSBtX2Vu
ZENvbnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7CkBAIC01ODcsNyArNTg3LDcgQEAg
Ym9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgaGFuZGxlVGV4dE5v
ZGVGaXJzdExldHRlcihkb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSk7CiAK
ICAgICBpZiAoIW1fdGV4dFJ1biAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgJiYgIXNob3VsZEhh
bmRsZUZpcnN0TGV0dGVyKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRv
cklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQorICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhbV9iZWhhdmlvcnMuY29udGFp
bnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxh
cHNlZFNwYWNlID0gdHJ1ZTsgLy8gZW50aXJlIGJsb2NrIGlzIGNvbGxhcHNlZCBzcGFjZQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dFJ1bigpCiAgICAgVGV4dCYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqbV9u
b2RlKTsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gbV9maXJzdExldHRlclRleHQgPyAqbV9maXJz
dExldHRlclRleHQgOiAqdGV4dE5vZGUucmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIuc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3Ig
JiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkgeworICAgIGlmIChyZW5kZXJl
ci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFtX2JlaGF2
aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlzaWJpbGl0
eSkpIHsKICAgICAgICAgbV90ZXh0UnVuID0geyB9OwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNjUxLDcgKzY1MSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzTmV3bGluZU9yVGFiKHJlbmRlcmVyVGV4dFtzdWJydW5F
bmRdKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAoc3VicnVuRW5kID09IHJ1bkVuZCAmJiAobV9iZWhhdmlvciAm
IFRleHRJdGVyYXRvckJlaGF2ZXNBc0lmTm9kZXNGb2xsb3dpbmcpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHN1YnJ1bkVuZCA9PSBydW5FbmQgJiYgbV9iZWhhdmlvcnMuY29udGFpbnMoVGV4dEl0
ZXJhdG9yQmVoYXZpb3I6OkJlaGF2ZXNBc0lmTm9kZXNGb2xsb3dpbmcpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgbGFzdFNwYWNlQ29sbGFwc2VkQnlOZXh0Tm9uVGV4dFJ1biA9ICFuZXh0
VGV4dFJ1biAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgPiBzdWJydW5FbmQgJiYgcmVuZGVyZXJU
ZXh0W3N1YnJ1bkVuZF0gPT0gJyAnOwogICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFNwYWNl
Q29sbGFwc2VkQnlOZXh0Tm9uVGV4dFJ1bikKICAgICAgICAgICAgICAgICAgICAgICAgICsrc3Vi
cnVuRW5kOyAvLyBydW5FbmQgc3RvcHBlZCBiZWZvcmUgbGFzdCBzcGFjZS4gSW5jcmVtZW50IGJ5
IG9uZSB0byByZXN0b3JlIHRoZSBzcGFjZS4KQEAgLTY5Niw3ICs2OTYsNyBAQCBzdGF0aWMgaW5s
aW5lIFJlbmRlclRleHQqIGZpcnN0UmVuZGVyVGV4dEluRmlyc3RMZXR0ZXIoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGZpcgogdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlRmlyc3RMZXR0
ZXIoUmVuZGVyVGV4dEZyYWdtZW50JiByZW5kZXJlcikKIHsKICAgICBpZiAoYXV0byogZmlyc3RM
ZXR0ZXIgPSByZW5kZXJlci5maXJzdExldHRlcigpKSB7Ci0gICAgICAgIGlmIChmaXJzdExldHRl
ci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVo
YXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKKyAgICAgICAgaWYg
KGZpcnN0TGV0dGVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
ICYmICFtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1N0
eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChhdXRvKiBm
aXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZpcnN0TGV0dGVyKGZpcnN0TGV0dGVy
KSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOwpAQCAtNzE0LDcg
KzcxNCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiByZW5kZXJlciA9ICptX25vZGUtPnJlbmRl
cmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlz
aWJpbGl0eSkpCisgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUgJiYgIW1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2
aW9yOjpJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UpIHsKQEAgLTcyMiw3
ICs3MjIsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICgobV9iZWhhdmlvciAmIFRleHRJ
dGVyYXRvckVudGVyc1RleHRDb250cm9scykgJiYgaXM8UmVuZGVyVGV4dENvbnRyb2w+KHJlbmRl
cmVyKSkgeworICAgIGlmIChtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlv
cjo6RW50ZXJzVGV4dENvbnRyb2xzKSAmJiBpczxSZW5kZXJUZXh0Q29udHJvbD4ocmVuZGVyZXIp
KSB7CiAgICAgICAgIGlmIChhdXRvIGlubmVyVGV4dEVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0Q29udHJvbD4ocmVuZGVyZXIpLnRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS5pbm5lclRleHRF
bGVtZW50KCkpIHsKICAgICAgICAgICAgIG1fbm9kZSA9IGlubmVyVGV4dEVsZW1lbnQtPmNvbnRh
aW5pbmdTaGFkb3dSb290KCk7CiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUobV9m
dWxseUNsaXBwZWRTdGFjaywgKm1fbm9kZSk7CkBAIC03MzMsNyArNzMzLDcgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCiAKICAgICBtX2hhc0VtaXR0ZWQgPSB0
cnVlOwogCi0gICAgaWYgKChtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNPYmplY3RSZXBs
YWNlbWVudENoYXJhY3RlcnMpICYmIHJlbmRlcmVyLmlzUmVwbGFjZWQoKSkgeworICAgIGlmICht
X2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNPYmplY3RSZXBs
YWNlbWVudENoYXJhY3RlcnMpICYmIHJlbmRlcmVyLmlzUmVwbGFjZWQoKSkgewogICAgICAgICBl
bWl0Q2hhcmFjdGVyKG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAqbV9ub2RlLT5wYXJlbnRO
b2RlKCksIG1fbm9kZSwgMCwgMSk7CiAgICAgICAgIC8vIERvbid0IHByb2Nlc3Mgc3VidHJlZXMg
Zm9yIGVtYmVkZGVkIG9iamVjdHMuIElmIHRoZSB0ZXh0IHRoZXJlIGlzIHJlcXVpcmVkLAogICAg
ICAgICAvLyBpdCBtdXN0IGJlIGV4cGxpY2l0bHkgYXNrZWQgYnkgc3BlY2lmeWluZyBhIHJhbmdl
IGZhbGxpbmcgaW5zaWRlIGl0cyBib3VuZGFyaWVzLgpAQCAtNzQxLDcgKzc0MSw3IEBAIGJvb2wg
VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFj
dGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSB7CisgICAgaWYgKG1fYmVoYXZpb3JzLmNv
bnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlz
aWJsZVBvc2l0aW9ucykpIHsKICAgICAgICAgLy8gV2Ugd2FudCByZXBsYWNlZCBlbGVtZW50cyB0
byBiZWhhdmUgbGlrZSBwdW5jdHVhdGlvbiBmb3IgYm91bmRhcnkgCiAgICAgICAgIC8vIGZpbmRp
bmcsIGFuZCB0byBzaW1wbHkgdGFrZSB1cCBzcGFjZSBmb3IgdGhlIHNlbGVjdGlvbiBwcmVzZXJ2
YXRpb24gCiAgICAgICAgIC8vIGNvZGUgaW4gbW92ZVBhcmFncmFwaHMsIHNvIHdlIHVzZSBhIGNv
bW1hLgpAQCAtNzU0LDcgKzc1NCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNl
ZEVsZW1lbnQoKQogICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IDA7CiAgICAgbV9wb3NpdGlv
bkVuZE9mZnNldCA9IDE7CiAKLSAgICBpZiAoKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0
c0ltYWdlQWx0VGV4dCkgJiYgaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkgeworICAgIGlmICht
X2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNJbWFnZUFsdFRl
eHQpICYmIGlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpIHsKICAgICAgICAgU3RyaW5nIGFsdFRl
eHQgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4ocmVuZGVyZXIpLmFsdFRleHQoKTsKICAgICAgICAg
aWYgKHVuc2lnbmVkIGxlbmd0aCA9IGFsdFRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgICAgIG1f
bGFzdENoYXJhY3RlciA9IGFsdFRleHRbbGVuZ3RoIC0gMV07CkBAIC05MzEsOSArOTMxLDExIEBA
IHN0YXRpYyBpbnQgbWF4T2Zmc2V0SW5jbHVkaW5nQ29sbGFwc2VkU3BhY2VzKE5vZGUmIG5vZGUp
CiAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgZW1pdCBhIGNoYXJhY3RlciBhcyB3ZSBlbnRl
ciBtX25vZGUgKGlmIGl0J3MgYSBjb250YWluZXIpIG9yIGFzIHdlIGhpdCBpdCAoaWYgaXQncyBh
dG9taWMpLgogYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJlc2VudE5vZGVPZmZzZXRaZXJv
KCkKIHsKLSAgICBpZiAoKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykgJiYgbV9ub2RlLT5yZW5kZXJlcigpICYmIG1fbm9k
ZS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
CisgICAgaWYgKG1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0
c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpIHsKKyAgICAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOyByZW5kZXJlciAmJiByZW5kZXJlci0+
aXNUYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gTGVh
dmUgZWxlbWVudCBwb3NpdGlvbmVkIGZsdXNoIHdpdGggc3RhcnQgb2YgYSBwYXJhZ3JhcGgKICAg
ICAvLyAoZS5nLiBkbyBub3QgaW5zZXJ0IHRhYiBiZWZvcmUgYSB0YWJsZSBjZWxsIGF0IHRoZSBz
dGFydCBvZiBhIHBhcmFncmFwaCkKICAgICBpZiAobV9sYXN0Q2hhcmFjdGVyID09ICdcbicpCkBA
IC05ODcsNyArOTg5LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJlc2VudE5vZGVP
ZmZzZXRaZXJvKCkKIAogYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZEVtaXRTcGFjZUJlZm9yZUFu
ZEFmdGVyTm9kZShOb2RlJiBub2RlKQogewotICAgIHJldHVybiBub2RlLnJlbmRlcmVyKCkgJiYg
bm9kZS5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgKG5vZGUucmVuZGVyZXIoKS0+aXNJbmxpbmUo
KSB8fCAobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxW
aXNpYmxlUG9zaXRpb25zKSk7CisgICAgcmV0dXJuIG5vZGUucmVuZGVyZXIoKSAmJiBub2RlLnJl
bmRlcmVyKCktPmlzVGFibGUoKSAmJiAobm9kZS5yZW5kZXJlcigpLT5pc0lubGluZSgpIHx8IG1f
YmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOwogfQogCiB2b2lkIFRleHRJdGVyYXRvcjo6cmVw
cmVzZW50Tm9kZU9mZnNldFplcm8oKQpAQCAtMTAxNSw5ICsxMDE3LDkgQEAgdm9pZCBUZXh0SXRl
cmF0b3I6OnJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCkKIAogYm9vbCBUZXh0SXRlcmF0b3I6Omhh
bmRsZU5vblRleHROb2RlKCkKIHsKLSAgICBpZiAoc2hvdWxkRW1pdE5ld2xpbmVGb3JOb2RlKG1f
bm9kZSwgbV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzT3JpZ2luYWxUZXh0KSkKKyAgICBp
ZiAoc2hvdWxkRW1pdE5ld2xpbmVGb3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlvcnMuY29udGFpbnMo
VGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT3JpZ2luYWxUZXh0KSkpCiAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJ1xuJywgKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUsIDAsIDEpOwotICAg
IGVsc2UgaWYgKChtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2Vl
bkFsbFZpc2libGVQb3NpdGlvbnMpICYmIG1fbm9kZS0+cmVuZGVyZXIoKSAmJiBtX25vZGUtPnJl
bmRlcmVyKCktPmlzSFIoKSkKKyAgICBlbHNlIGlmIChtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0
SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlv
bnMpICYmIG1fbm9kZS0+cmVuZGVyZXIoKSAmJiBtX25vZGUtPnJlbmRlcmVyKCktPmlzSFIoKSkK
ICAgICAgICAgZW1pdENoYXJhY3RlcignICcsICptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2Rl
LCAwLCAxKTsKICAgICBlbHNlCiAgICAgICAgIHJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCk7CkBA
IC0xMDQyLDcgKzEwNDQsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZXhpdE5vZGUoTm9kZSogZXhp
dGVkTm9kZSkKICAgICAvLyB0aGUgbG9naWMgaW4gX3dlYl9hdHRyaWJ1dGVkU3RyaW5nRnJvbVJh
bmdlIG1hdGNoLiBXZSdsbCBnZXQgdGhhdCBmb3IgZnJlZSB3aGVuIHdlIHN3aXRjaCB0byB1c2UK
ICAgICAvLyBUZXh0SXRlcmF0b3IgaW4gX3dlYl9hdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlLgog
ICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNTQyODQyNz4gZm9yIGFuIGV4YW1wbGUgb2YgaG93
IHRoaXMgbWlzbWF0Y2ggd2lsbCBjYXVzZSBwcm9ibGVtcy4KLSAgICBpZiAobV9sYXN0VGV4dE5v
ZGUgJiYgc2hvdWxkRW1pdE5ld2xpbmVBZnRlck5vZGUoKm1fbm9kZSwgbV9iZWhhdmlvciAmIFRl
eHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgewor
ICAgIGlmIChtX2xhc3RUZXh0Tm9kZSAmJiBzaG91bGRFbWl0TmV3bGluZUFmdGVyTm9kZSgqbV9u
b2RlLCBtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFy
YWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKSkgewogICAgICAgICAvLyB1c2UgZXh0
cmEgbmV3bGluZSB0byByZXByZXNlbnQgbWFyZ2luIGJvdHRvbSwgYXMgbmVlZGVkCiAgICAgICAg
IGJvb2wgYWRkTmV3bGluZSA9IHNob3VsZEVtaXRFeHRyYU5ld2xpbmVGb3JOb2RlKCptX25vZGUp
OwogICAgICAgICAKQEAgLTEwODgsOCArMTA5MCw4IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0
VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0U3RhcnRP
CiAgICAgQVNTRVJUKHRleHRTdGFydE9mZnNldCA8PSB0ZXh0RW5kT2Zmc2V0KTsKIAogICAgIC8v
IEZJWE1FOiBUaGlzIHByb2JhYmx5IHlpZWxkcyB0aGUgd3Jvbmcgb2Zmc2V0cyB3aGVuIHRleHQt
dHJhbnNmb3JtOiBsb3dlcmNhc2UgdHVybnMgYSBzaW5nbGUgY2hhcmFjdGVyIGludG8gdHdvIGNo
YXJhY3RlcnMuCi0gICAgU3RyaW5nIHN0cmluZyA9IChtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9y
RW1pdHNPcmlnaW5hbFRleHQpID8gcmVuZGVyZXIub3JpZ2luYWxUZXh0KCkKLSAgICAgICAgOiAo
KG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5nKSA/
IHJlbmRlcmVyLnRleHRXaXRob3V0Q29udmVydGluZ0JhY2tzbGFzaFRvWWVuU3ltYm9sKCkgOiBy
ZW5kZXJlci50ZXh0KCkpOworICAgIFN0cmluZyBzdHJpbmcgPSBtX2JlaGF2aW9ycy5jb250YWlu
cyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNPcmlnaW5hbFRleHQpID8gcmVuZGVyZXIub3Jp
Z2luYWxUZXh0KCkKKyAgICAgICAgOiAobV9iZWhhdmlvcnMuY29udGFpbnMoVGV4dEl0ZXJhdG9y
QmVoYXZpb3I6OkVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcpID8gcmVuZGVyZXIudGV4dFdp
dGhvdXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2woKSA6IHJlbmRlcmVyLnRleHQoKSk7
CiAKICAgICBBU1NFUlQoc3RyaW5nLmxlbmd0aCgpID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
ZXh0RW5kT2Zmc2V0KSk7CiAKQEAgLTEzMjksNyArMTMzMSw3IEBAIGJvb2wgU2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlTm9uVGV4dE5vZGUoKQogeyAgICAKICAgICAvLyBX
ZSBjYW4gdXNlIGEgbGluZWZlZWQgaW4gcGxhY2Ugb2YgYSB0YWIgYmVjYXVzZSB0aGlzIHNpbXBs
ZSBpdGVyYXRvciBpcyBvbmx5IHVzZWQgdG8KICAgICAvLyBmaW5kIGJvdW5kYXJpZXMsIG5vdCBh
Y3R1YWwgY29udGVudC4gQSBsaW5lZmVlZCBicmVha3Mgd29yZHMsIHNlbnRlbmNlcywgYW5kIHBh
cmFncmFwaHMuCi0gICAgaWYgKHNob3VsZEVtaXROZXdsaW5lRm9yTm9kZShtX25vZGUsIG1fYmVo
YXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c09yaWdpbmFsVGV4dCkgfHwgc2hvdWxkRW1pdE5ld2xp
bmVBZnRlck5vZGUoKm1fbm9kZSkgfHwgc2hvdWxkRW1pdFRhYkJlZm9yZU5vZGUoKm1fbm9kZSkp
IHsKKyAgICBpZiAoc2hvdWxkRW1pdE5ld2xpbmVGb3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlvcnMu
Y29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT3JpZ2luYWxUZXh0KSkgfHwgc2hv
dWxkRW1pdE5ld2xpbmVBZnRlck5vZGUoKm1fbm9kZSkgfHwgc2hvdWxkRW1pdFRhYkJlZm9yZU5v
ZGUoKm1fbm9kZSkpIHsKICAgICAgICAgaWYgKG1fbGFzdENoYXJhY3RlciAhPSAnXG4nKSB7CiAg
ICAgICAgICAgICAvLyBDb3JyZXNwb25kcyB0byB0aGUgc2FtZSBjaGVjayBpbiBUZXh0SXRlcmF0
b3I6OmV4aXROb2RlLgogICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBtX25vZGUtPmNvbXB1
dGVOb2RlSW5kZXgoKTsKQEAgLTEzNDMsNyArMTM0NSw3IEBAIGJvb2wgU2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlTm9uVGV4dE5vZGUoKQogCiB2b2lkIFNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3I6OmV4aXROb2RlKCkKIHsKLSAgICBpZiAoc2hvdWxkRW1pdE5l
d2xpbmVGb3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzT3JpZ2lu
YWxUZXh0KSB8fCBzaG91bGRFbWl0TmV3bGluZUJlZm9yZU5vZGUoKm1fbm9kZSkgfHwgc2hvdWxk
RW1pdFRhYkJlZm9yZU5vZGUoKm1fbm9kZSkpIHsKKyAgICBpZiAoc2hvdWxkRW1pdE5ld2xpbmVG
b3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlvcnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6
OkVtaXRzT3JpZ2luYWxUZXh0KSkgfHwgc2hvdWxkRW1pdE5ld2xpbmVCZWZvcmVOb2RlKCptX25v
ZGUpIHx8IHNob3VsZEVtaXRUYWJCZWZvcmVOb2RlKCptX25vZGUpKSB7CiAgICAgICAgIC8vIFRo
ZSBzdGFydCBvZiB0aGlzIGVtaXR0ZWQgcmFuZ2UgaXMgd3JvbmcuIEVuc3VyaW5nIGNvcnJlY3Ru
ZXNzIHdvdWxkIHJlcXVpcmUKICAgICAgICAgLy8gVmlzaWJsZVBvc2l0aW9ucyBhbmQgc28gd291
bGQgYmUgc2xvdy4gcHJldmlvdXNCb3VuZGFyeSBleHBlY3RzIHRoaXMuCiAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJ1xuJywgKm1fbm9kZSwgMCwgMCk7CkBAIC0xMzgwLDggKzEzODIsOCBAQCBTaW1w
bGVSYW5nZSBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiAK
IC8vIC0tLS0tLS0tCiAKLUNoYXJhY3Rlckl0ZXJhdG9yOjpDaGFyYWN0ZXJJdGVyYXRvcihjb25z
dCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQotICAg
IDogbV91bmRlcmx5aW5nSXRlcmF0b3IocmFuZ2UsIGJlaGF2aW9yKQorQ2hhcmFjdGVySXRlcmF0
b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3JzIGJlaGF2aW9ycykKKyAgICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKHJhbmdl
LCBiZWhhdmlvcnMpCiB7CiAgICAgd2hpbGUgKCFhdEVuZCgpICYmICFtX3VuZGVybHlpbmdJdGVy
YXRvci50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIG1fdW5kZXJseWluZ0l0ZXJhdG9yLmFkdmFu
Y2UoKTsKQEAgLTIzMjgsNyArMjMzMCw3IEBAIHNpemVfdCBTZWFyY2hCdWZmZXI6Omxlbmd0aCgp
IGNvbnN0CiAKIC8vIC0tLS0tLS0tCiAKLXVpbnQ2NF90IGNoYXJhY3RlckNvdW50KGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCit1aW50NjRf
dCBjaGFyYWN0ZXJDb3VudChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJl
aGF2aW9ycyBiZWhhdmlvcnMpCiB7CiAgICAgYXV0byBhZGp1c3RlZFJhbmdlID0gcmFuZ2U7CiAg
ICAgYXV0byBvcmRlcmluZyA9IHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KHJhbmdlLnN0YXJ0LCBy
YW5nZS5lbmQpOwpAQCAtMjMzNyw3ICsyMzM5LDcgQEAgdWludDY0X3QgY2hhcmFjdGVyQ291bnQo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikK
ICAgICBlbHNlIGlmICghaXNfbHQob3JkZXJpbmcpKQogICAgICAgICByZXR1cm4gMDsKICAgICB1
aW50NjRfdCBsZW5ndGggPSAwOwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KGFkanVzdGVkUmFu
Z2UsIGJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKKyAgICBmb3IgKFRleHRJ
dGVyYXRvciBpdChhZGp1c3RlZFJhbmdlLCBiZWhhdmlvcnMpOyAhaXQuYXRFbmQoKTsgaXQuYWR2
YW5jZSgpKQogICAgICAgICBsZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwogICAgIHJldHVy
biBsZW5ndGg7CiB9CkBAIC0yMzU2LDEyICsyMzU4LDEyIEBAIGNvbnN0ZXhwciB1aW50NjRfdCBj
bGFtcGVkQWRkKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCiAgICAgcmV0dXJuIHN1bSA+PSBhID8g
c3VtIDogc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOwogfQogCi1TaW1wbGVS
YW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFy
YWN0ZXJSYW5nZSByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCitTaW1wbGVS
YW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFy
YWN0ZXJSYW5nZSByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykKIHsKICAg
ICBhdXRvIHJlc3VsdFJhbmdlID0gU2ltcGxlUmFuZ2UgeyByYW5nZS5sb2NhdGlvbiA/IHNjb3Bl
LmVuZCA6IHNjb3BlLnN0YXJ0LCAocmFuZ2UubG9jYXRpb24gfHwgcmFuZ2UubGVuZ3RoKSA/IHNj
b3BlLmVuZCA6IHNjb3BlLnN0YXJ0IH07CiAgICAgYXV0byByYW5nZUVuZCA9IGNsYW1wZWRBZGQo
cmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7CiAgICAgdWludDY0X3QgbG9jYXRpb24gPSAw
OwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHNjb3BlLCBiZWhhdmlvcik7ICFpdC5hdEVuZCgp
OyBpdC5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzY29wZSwgYmVoYXZp
b3JzKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGF1dG8gdGV4dFJ1blJhbmdlID0gaXQu
cmFuZ2UoKTsKIApAQCAtMjQwOCwxNiArMjQxMCwxNiBAQCBTaW1wbGVSYW5nZSByZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJSYW5nZSByYW5n
ZQogCiAvLyAtLS0tLS0tLQogCi1ib29sIGhhc0FueVBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQorYm9vbCBoYXNBbnlQbGFp
blRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgYmVo
YXZpb3JzKQogewotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yIHsgcmFuZ2UsIGJlaGF2
aW9yIH07ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICBmb3Ig
KFRleHRJdGVyYXRvciBpdGVyYXRvciB7IHJhbmdlLCBiZWhhdmlvcnMgfTsgIWl0ZXJhdG9yLmF0
RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2UoKSkgewogICAgICAgICBpZiAoIWl0ZXJhdG9yLnRleHQo
KS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1TdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwg
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmlu
ZykKK1N0cmluZyBwbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0
b3JCZWhhdmlvcnMgZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZykKIHsKICAg
ICAvLyBUaGUgaW5pdGlhbCBidWZmZXIgc2l6ZSBjYW4gYmUgY3JpdGljYWwgZm9yIHBlcmZvcm1h
bmNlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODExOTIKICAgICBj
b25zdGV4cHIgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5ID0gMSA8PCAxNTsKQEAgLTI0MjcsMTEg
KzI0MjksMTEgQEAgU3RyaW5nIHBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRl
eHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvciwKICAgICB1bnNpZ25lZCBidWZmZXJM
ZW5ndGggPSAwOwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLnJlc2Vy
dmVDYXBhY2l0eShpbml0aWFsQ2FwYWNpdHkpOwotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIGJl
aGF2aW9yID0gZGVmYXVsdEJlaGF2aW9yOworICAgIFRleHRJdGVyYXRvckJlaGF2aW9ycyBiZWhh
dmlvcnMgPSBkZWZhdWx0QmVoYXZpb3I7CiAgICAgaWYgKCFpc0Rpc3BsYXlTdHJpbmcpCi0gICAg
ICAgIGJlaGF2aW9yID0gc3RhdGljX2Nhc3Q8VGV4dEl0ZXJhdG9yQmVoYXZpb3I+KGJlaGF2aW9y
IHwgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGluZyk7CisgICAgICAgIGJl
aGF2aW9ycy5hZGQoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzVGV4dHNXaXRob3V0VHJhbnNj
b2RpbmcpOwogCi0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UsIGJlaGF2aW9yKTsgIWl0
LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdl
LCBiZWhhdmlvcnMpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIGl0LmFw
cGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7CiAgICAgICAgIGJ1ZmZlckxlbmd0aCAr
PSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgfQpAQCAtMjQ0NywxNiArMjQ0OSwxNiBAQCBTdHJp
bmcgcGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgZGVmYXVsdEJlaGF2aW9yLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBwbGFp
blRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0
SXRlcmF0b3JCZWhhdmlvciBkZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nKQor
U3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9ycyBkZWZhdWx0QmVoYXZpb3JzLCBib29sIGlzRGlz
cGxheVN0cmluZykKIHsKLSAgICByZXR1cm4gcGxhaW5UZXh0KHJhbmdlLCBkZWZhdWx0QmVoYXZp
b3IsIGlzRGlzcGxheVN0cmluZykucmVwbGFjZShub0JyZWFrU3BhY2UsICcgJyk7CisgICAgcmV0
dXJuIHBsYWluVGV4dChyYW5nZSwgZGVmYXVsdEJlaGF2aW9ycywgaXNEaXNwbGF5U3RyaW5nKS5y
ZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsKIH0KIAotc3RhdGljIFRleHRJdGVyYXRvckJlaGF2
aW9yIGZpbmRJdGVyYXRvck9wdGlvbnMoRmluZE9wdGlvbnMgb3B0aW9ucykKK3N0YXRpYyBUZXh0
SXRlcmF0b3JCZWhhdmlvcnMgZmluZEl0ZXJhdG9yT3B0aW9ucyhGaW5kT3B0aW9ucyBvcHRpb25z
KQogewotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIGl0ZXJhdG9yT3B0aW9ucyA9IFRleHRJdGVy
YXRvckVudGVyc1RleHRDb250cm9scyB8IFRleHRJdGVyYXRvckNsaXBzVG9GcmFtZUFuY2VzdG9y
czsKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgaXRlcmF0b3JPcHRpb25zIHsgVGV4dEl0ZXJh
dG9yQmVoYXZpb3I6OkVudGVyc1RleHRDb250cm9scywgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkNs
aXBzVG9GcmFtZUFuY2VzdG9ycyB9OwogICAgIGlmICghb3B0aW9ucy5jb250YWlucyhEb05vdFRy
YXZlcnNlRmxhdFRyZWUpKQotICAgICAgICBpdGVyYXRvck9wdGlvbnMgfD0gVGV4dEl0ZXJhdG9y
VHJhdmVyc2VzRmxhdFRyZWU7CisgICAgICAgIGl0ZXJhdG9yT3B0aW9ucy5hZGQoVGV4dEl0ZXJh
dG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKTsKICAgICByZXR1cm4gaXRlcmF0b3JPcHRp
b25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAyMmM0YjZl
OTJiYzE0MGE3MTMyMTk3YWYwMjRhN2RhM2NlMGYzMzdkLi5jNzE2MjI1Y2YwZDIwOGFlYmU4ZGE5
NjA0NTNkNzFlMTJkODg3ZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgK
QEAgLTM3LDE2ICszNywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJUZXh0
RnJhZ21lbnQ7CiAKIC8vIENoYXJhY3RlciByYW5nZXMgYmFzZWQgb24gY2hhcmFjdGVycyBmcm9t
IHRoZSB0ZXh0IGl0ZXJhdG9yLgotV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgY2hhcmFjdGVyQ291
bnQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvcik7Ci1DaGFyYWN0ZXJSYW5nZSBjaGFyYWN0ZXJSYW5nZShjb25zdCBC
b3VuZGFyeVBvaW50JiBzdGFydCwgY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhh
dmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7Ci1DaGFyYWN0ZXJSYW5nZSBjaGFy
YWN0ZXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc2NvcGUsIGNvbnN0IFNpbXBsZVJhbmdlJiwg
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwotQm91
bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNj
b3BlLCB1aW50NjRfdCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3IpOwotV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJh
bmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzY29wZSwgQ2hhcmFjdGVyUmFuZ2UsIFRleHRJdGVyYXRv
ckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKK1dFQkNPUkVfRVhQT1JU
IHVpbnQ2NF90IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9y
QmVoYXZpb3JzID0geyB9KTsKK0NoYXJhY3RlclJhbmdlIGNoYXJhY3RlclJhbmdlKGNvbnN0IEJv
dW5kYXJ5UG9pbnQmIHN0YXJ0LCBjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2
aW9ycyA9IHsgfSk7CitDaGFyYWN0ZXJSYW5nZSBjaGFyYWN0ZXJSYW5nZShjb25zdCBTaW1wbGVS
YW5nZSYgc2NvcGUsIGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzID0g
eyB9KTsKK0JvdW5kYXJ5UG9pbnQgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKGNvbnN0IFNpbXBs
ZVJhbmdlJiBzY29wZSwgdWludDY0X3QsIFRleHRJdGVyYXRvckJlaGF2aW9ycyA9IHsgfSk7CitX
RUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2lt
cGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJSYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzID0g
eyB9KTsKIAogLy8gVGV4dCBmcm9tIHRoZSB0ZXh0IGl0ZXJhdG9yLgotV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9y
ID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZh
bHNlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJh
bmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ip
OwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShj
b25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVm
YXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKK1dFQkNPUkVfRVhQ
T1JUIFN0cmluZyBwbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhh
dmlvcnMgPSB7IH0sIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOworV0VCQ09SRV9FWFBP
UlQgYm9vbCBoYXNBbnlQbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvcnMgPSB7IH0pOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2lu
Z05vQnJlYWtTcGFjZShjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9ycyA9
IHsgfSwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CiAKIC8vIEZpbmQgd2l0aGluIHRo
ZSBkb2N1bWVudCwgYmFzZWQgb24gdGhlIHRleHQgZnJvbSB0aGUgdGV4dCBpdGVyYXRvci4KIFNp
bXBsZVJhbmdlIGZpbmRQbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucyk7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiBjbGFzcyBUZXh0SXRl
cmF0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFRleHRJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJ
dGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBUZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0
SXRlcmF0b3JCZWhhdmlvcnMgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIH5UZXh0SXRlcmF0
b3IoKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7
IH0KQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogYmFzZU5vZGVGb3JF
bWl0dGluZ05ld0xpbmUoKSBjb25zdDsKIAotICAgIGNvbnN0IFRleHRJdGVyYXRvckJlaGF2aW9y
IG1fYmVoYXZpb3IgeyBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IgfTsKKyAgICBjb25zdCBU
ZXh0SXRlcmF0b3JCZWhhdmlvcnMgbV9iZWhhdmlvcnM7CiAKICAgICAvLyBDdXJyZW50IHBvc2l0
aW9uLCBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0dXJuZWQsIGJ1dCBwb3Np
dGlvbiBhcyB3ZSB3YWxrIHRocm91Z2ggdGhlIERPTSB0cmVlLgogICAgIE5vZGUqIG1fbm9kZSB7
IG51bGxwdHIgfTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZW1pdENo
YXJhY3RlcihVQ2hhciwgTm9kZSYsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7CiAg
ICAgYm9vbCBhZHZhbmNlUmVzcGVjdGluZ1JhbmdlKE5vZGUqKTsKIAotICAgIGNvbnN0IFRleHRJ
dGVyYXRvckJlaGF2aW9yIG1fYmVoYXZpb3IgeyBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ig
fTsKKyAgICBjb25zdCBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgbV9iZWhhdmlvcnM7CiAKICAgICAv
LyBDdXJyZW50IHBvc2l0aW9uLCBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0
dXJuZWQsIGJ1dCBwb3NpdGlvbiBhcyB3ZSB3YWxrIHRocm91Z2ggdGhlIERPTSB0cmVlLgogICAg
IE5vZGUqIG1fbm9kZSB7IG51bGxwdHIgfTsKQEAgLTIyOSw3ICsyMjksNyBAQCBwcml2YXRlOgog
Ly8gY2hhcmFjdGVyIGF0IGEgdGltZSwgb3IgZmFzdGVyLCBhcyBuZWVkZWQuIFVzZWZ1bCBmb3Ig
c2VhcmNoaW5nLgogY2xhc3MgQ2hhcmFjdGVySXRlcmF0b3IgewogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiwg
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJh
bmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzID0geyB9KTsKICAgICAKICAgICBib29sIGF0RW5k
KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nSXRlcmF0b3IuYXRFbmQoKTsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZShpbnQgbnVtQ2hhcmFjdGVycyk7CkBAIC0yODksMTkg
KzI4OSwxOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRMb29rQWhlYWQgeyB0cnVlIH07CiB9
OwogCi1pbmxpbmUgQ2hhcmFjdGVyUmFuZ2UgY2hhcmFjdGVyUmFuZ2UoY29uc3QgQm91bmRhcnlQ
b2ludCYgc3RhcnQsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgYmVoYXZpb3IpCitpbmxpbmUgQ2hhcmFjdGVyUmFuZ2UgY2hhcmFjdGVyUmFuZ2UoY29uc3Qg
Qm91bmRhcnlQb2ludCYgc3RhcnQsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3JzIGJlaGF2aW9ycykKIHsKLSAgICByZXR1cm4geyBjaGFyYWN0ZXJDb3VudCh7
IHN0YXJ0LCByYW5nZS5zdGFydCB9LCBiZWhhdmlvciksIGNoYXJhY3RlckNvdW50KHJhbmdlLCBi
ZWhhdmlvcikgfTsKKyAgICByZXR1cm4geyBjaGFyYWN0ZXJDb3VudCh7IHN0YXJ0LCByYW5nZS5z
dGFydCB9LCBiZWhhdmlvcnMpLCBjaGFyYWN0ZXJDb3VudChyYW5nZSwgYmVoYXZpb3JzKSB9Owog
fQogCi1pbmxpbmUgQ2hhcmFjdGVyUmFuZ2UgY2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFu
Z2UmIHNjb3BlLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9y
IGJlaGF2aW9yKQoraW5saW5lIENoYXJhY3RlclJhbmdlIGNoYXJhY3RlclJhbmdlKGNvbnN0IFNp
bXBsZVJhbmdlJiBzY29wZSwgY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvcnMgYmVoYXZpb3JzKQogewotICAgIHJldHVybiBjaGFyYWN0ZXJSYW5nZShzY29wZS5z
dGFydCwgcmFuZ2UsIGJlaGF2aW9yKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyUmFuZ2Uoc2NvcGUu
c3RhcnQsIHJhbmdlLCBiZWhhdmlvcnMpOwogfQogCi1pbmxpbmUgQm91bmRhcnlQb2ludCByZXNv
bHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCB1aW50NjRfdCBs
b2NhdGlvbiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCitpbmxpbmUgQm91bmRhcnlQ
b2ludCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCB1
aW50NjRfdCBsb2NhdGlvbiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykKIHsKLSAg
ICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNjb3BlLCB7IGxvY2F0aW9uLCAwIH0sIGJl
aGF2aW9yKS5zdGFydDsKKyAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNjb3BlLCB7
IGxvY2F0aW9uLCAwIH0sIGJlaGF2aW9ycykuc3RhcnQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yQmVo
YXZpb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaApp
bmRleCBjMDFmOTdmODJkMjgxZDE2YjhhNjRkOWJiNDRmZjhhYjY4NzA2YTczLi5kNmE5NWZmN2Uw
ZDJhYzNmOWJhOTlkMzQxNGNkMjY4N2MzZjZkNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oCkBAIC0yNSw0MiArMjUsNDIgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+
CiAKLWVudW0gVGV4dEl0ZXJhdG9yQmVoYXZpb3JGbGFnIHsKLSAgICBUZXh0SXRlcmF0b3JEZWZh
dWx0QmVoYXZpb3IgPSAwLAorbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNsYXNzIFRleHRJ
dGVyYXRvckJlaGF2aW9yIDogdWludDE2X3QgewogICAgIC8vIFVzZWQgYnkgc2VsZWN0aW9uIHBy
ZXNlcnZhdGlvbiBjb2RlLiBUaGVyZSBzaG91bGQgYmUgb25lIGNoYXJhY3RlciBlbWl0dGVkIGJl
dHdlZW4gZXZlcnkgVmlzaWJsZVBvc2l0aW9uCiAgICAgLy8gaW4gdGhlIFJhbmdlIHVzZWQgdG8g
Y3JlYXRlIHRoZSBUZXh0SXRlcmF0b3IuCiAgICAgLy8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzYw
Mjg4MTg+OiBUaGlzIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcGhhc2VkIG91
dCB3aGVuIHdlIHJld3JpdGUKICAgICAvLyBtb3ZlUGFyYWdyYXBocyB0byBub3QgY2xvbmUvZGVz
dHJveSBtb3ZlZCBjb250ZW50LgotICAgIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zID0gMSA8PCAwLAorICAgIEVtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zID0gMSA8PCAwLAogCi0gICAgVGV4dEl0ZXJhdG9yRW50ZXJz
VGV4dENvbnRyb2xzID0gMSA8PCAxLAorICAgIEVudGVyc1RleHRDb250cm9scyA9IDEgPDwgMSwK
IAogICAgIC8vIFVzZWQgd2hlbiB3ZSB3YW50IHRleHQgZm9yIGNvcHlpbmcsIHBhc3RpbmcsIGFu
ZCB0cmFuc3Bvc2luZy4KLSAgICBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29k
aW5nID0gMSA8PCAyLAorICAgIEVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcgPSAxIDw8IDIs
CiAKICAgICAvLyBVc2VkIHdoZW4gdGhlIHZpc2liaWxpdHkgb2YgdGhlIHN0eWxlIHNob3VsZCBu
b3QgYWZmZWN0IHRleHQgZ2F0aGVyaW5nLgotICAgIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZp
c2liaWxpdHkgPSAxIDw8IDMsCisgICAgSWdub3Jlc1N0eWxlVmlzaWJpbGl0eSA9IDEgPDwgMywK
IAogICAgIC8vIFVzZWQgd2hlbiBlbWl0dGluZyB0aGUgc3BlY2lhbCAweEZGRkMgY2hhcmFjdGVy
IGlzIHJlcXVpcmVkLiBDaGlsZHJlbiBmb3IgcmVwbGFjZWQgb2JqZWN0cyB3aWxsIGJlIGlnbm9y
ZWQuCi0gICAgVGV4dEl0ZXJhdG9yRW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMgPSAx
IDw8IDQsCisgICAgRW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMgPSAxIDw8IDQsCiAK
ICAgICAvLyBVc2VkIHdoZW4gcGFzdGluZyBpbnNpZGUgcGFzc3dvcmQgZmllbGQuCi0gICAgVGV4
dEl0ZXJhdG9yRW1pdHNPcmlnaW5hbFRleHQgPSAxIDw8IDUsCisgICAgRW1pdHNPcmlnaW5hbFRl
eHQgPSAxIDw8IDUsCiAKLSAgICBUZXh0SXRlcmF0b3JFbWl0c0ltYWdlQWx0VGV4dCA9IDEgPDwg
NiwKKyAgICBFbWl0c0ltYWdlQWx0VGV4dCA9IDEgPDwgNiwKIAotICAgIFRleHRJdGVyYXRvckJl
aGF2ZXNBc0lmTm9kZXNGb2xsb3dpbmcgPSAxIDw8IDcsCisgICAgQmVoYXZlc0FzSWZOb2Rlc0Zv
bGxvd2luZyA9IDEgPDwgNywKIAogICAgIC8vIE1ha2VzIHZpc2libGl0eSB0ZXN0IHRha2UgaW50
byBhY2NvdW50IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmcmFtZS4KLSAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgcHJvYmFibHkgYmUgYWx3YXlzIG9uIHVubGVzcyBUZXh0SXRlcmF0b3JJZ25vcmVz
U3R5bGVWaXNpYmlsaXR5IGlzIHNldC4KLSAgICBUZXh0SXRlcmF0b3JDbGlwc1RvRnJhbWVBbmNl
c3RvcnMgPSAxIDw8IDgsCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGFs
d2F5cyBvbiB1bmxlc3MgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2liaWxp
dHkgaXMgc2V0LgorICAgIENsaXBzVG9GcmFtZUFuY2VzdG9ycyA9IDEgPDwgOCwKIAotICAgIFRl
eHRJdGVyYXRvclRyYXZlcnNlc0ZsYXRUcmVlID0gMSA8PCA5LAorICAgIFRyYXZlcnNlc0ZsYXRU
cmVlID0gMSA8PCA5LAogfTsKIAotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBUZXh0SXRlcmF0b3JC
ZWhhdmlvcjsKK3VzaW5nIFRleHRJdGVyYXRvckJlaGF2aW9ycyA9IE9wdGlvblNldDxUZXh0SXRl
cmF0b3JCZWhhdmlvcj47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXgg
NGFjMzdjOTE0OGMzZTNiNWRkYzdkMDI0ZDhkNzQ2ZTZkMDNhMTBhZC4uYjcyMTg5NjU5ZDI2ZmFi
MWVmMzUzZWIyOTNkYmI2NDQ2ZTNiZGU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBA
QCBzdGF0aWMgYm9vbCBpc05vdFNwYWNlKFVDaGFyIGNoYXJhY3RlcikKIGNsYXNzIFBhcmFncmFw
aENvbnRlbnRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgUGFyYWdyYXBoQ29udGVudEl0ZXJhdG9y
KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKLSAgICAgICAgOiBt
X2l0ZXJhdG9yKCptYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCksIFRleHRJdGVyYXRvcklnbm9y
ZXNTdHlsZVZpc2liaWxpdHkpCisgICAgICAgIDogbV9pdGVyYXRvcigqbWFrZVNpbXBsZVJhbmdl
KHN0YXJ0LCBlbmQpLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlzaWJpbGl0
eSkKICAgICAgICAgLCBtX25vZGUoc3RhcnQuZmlyc3ROb2RlKCkpCiAgICAgICAgICwgbV9wYXN0
RW5kTm9kZShlbmQuZmlyc3ROb2RlKCkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggNTAyNWNhZjkxMWUxYTU4MWZkYWYzZGJmZWUzNmI0
MTNiOTg3NWUxZC4uNDEyMDUwYzgzYjNkNGYyOTIxZDQ2ZmM3NDA3OTA2ZTdlOGI3ZmUzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBAIC0yMzMsNyAr
MjMzLDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjphcHBlbmRUcmFpbGluZ1doaXRlc3BhY2Uo
KQogICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIENoYXJhY3Rlckl0ZXJh
dG9yIGNoYXJJdCgqbWFrZVNpbXBsZVJhbmdlKG1fZW5kLCBtYWtlQm91bmRhcnlQb2ludEFmdGVy
Tm9kZUNvbnRlbnRzKCpzY29wZSkpLCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucyk7CisgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2hhckl0KCptYWtl
U2ltcGxlUmFuZ2UobV9lbmQsIG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlQ29udGVudHMoKnNj
b3BlKSksIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlz
aWJsZVBvc2l0aW9ucyk7CiAgICAgZm9yICg7ICFjaGFySXQuYXRFbmQoKSAmJiBjaGFySXQudGV4
dCgpLmxlbmd0aCgpOyBjaGFySXQuYWR2YW5jZSgxKSkgewogICAgICAgICBVQ2hhciBjID0gY2hh
ckl0LnRleHQoKVswXTsKICAgICAgICAgaWYgKCghaXNTcGFjZU9yTmV3bGluZShjKSAmJiBjICE9
IG5vQnJlYWtTcGFjZSkgfHwgYyA9PSAnXG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwCmluZGV4IDkzZjNmNmQ0YWExZTk3NjIzMjFlYTE1MDk4ODIzMzQ3N2QwZTc0ZWQu
LjgyMWQ0M2RiZDdmMWQwNmE2ZjkyMjVmMTBhYzgxZmMwMjY0MmYyZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTYwMSwxNCArNjAxLDE0IEBAIHN0YXRpYyBW
aXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91
bmRhcnlTZWFyY2hGdW5jCiAgICAgaWYgKCFzZWFyY2hSYW5nZSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIFRleHRJdGVyYXRvciBpdCgqc2VhcmNoUmFuZ2UsIFRleHRJdGVyYXRvckVtaXRz
Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKKyAgICBUZXh0SXRlcmF0b3Ig
aXQoKnNlYXJjaFJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogICAgIHVuc2lnbmVkIG5leHQgPSBmb3J3YXJkU2Vh
cmNoRm9yQm91bmRhcnlXaXRoVGV4dEl0ZXJhdG9yKGl0LCBzdHJpbmcsIHByZWZpeExlbmd0aCwg
c2VhcmNoRnVuY3Rpb24pOwogICAgIAogICAgIGlmIChpdC5hdEVuZCgpICYmIG5leHQgPT0gc3Ry
aW5nLnNpemUoKSkKICAgICAgICAgcG9zID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihz
ZWFyY2hSYW5nZS0+ZW5kKTsKICAgICBlbHNlIGlmIChuZXh0ID4gcHJlZml4TGVuZ3RoKSB7CiAg
ICAgICAgIC8vIFVzZSB0aGUgY2hhcmFjdGVyIGl0ZXJhdG9yIHRvIHRyYW5zbGF0ZSB0aGUgbmV4
dCB2YWx1ZSBpbnRvIGEgRE9NIHBvc2l0aW9uLgotICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBj
aGFySXQoKnNlYXJjaFJhbmdlLCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucyk7CisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNoYXJJdCgqc2Vh
cmNoUmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucyk7CiAgICAgICAgIGNoYXJJdC5hZHZhbmNlKG5leHQgLSBwcmVmaXhM
ZW5ndGggLSAxKTsKICAgICAgICAgaWYgKGNoYXJJdC5hdEVuZCgpKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA2NDAzMGViODdiZjk1MWMw
YmI3MTVkOTQ4YzQ5YzRiODFiZTE4ZjQ0Li5lNWM2OTQ4ZGI3OGQ3YWE2ZWM3NTFlZjFlMGY2ZDcy
MTNmYjZlOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC00NTUsNyArNDU1LDcg
QEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChTdHJpbmdCdWlsZGVy
JiBvdXQsIGNvbnN0IFRleHQmIHRleHQpCiAgICAgCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3I6OnJlbmRlcmVkVGV4dFJlc3BlY3RpbmdSYW5nZShjb25zdCBUZXh0JiB0ZXh0KQogewot
ICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJl
aGF2aW9yOworICAgIFRleHRJdGVyYXRvckJlaGF2aW9ycyBiZWhhdmlvcnM7CiAgICAgUG9zaXRp
b24gc3RhcnQgPSAmdGV4dCA9PSBtX3N0YXJ0LmNvbnRhaW5lck5vZGUoKSA/IG1fc3RhcnQgOiBm
aXJzdFBvc2l0aW9uSW5Ob2RlKGNvbnN0X2Nhc3Q8VGV4dCo+KCZ0ZXh0KSk7CiAgICAgUG9zaXRp
b24gZW5kOwogICAgIGlmICgmdGV4dCA9PSBtX2VuZC5jb250YWluZXJOb2RlKCkpCkBAIC00NjMs
MTEgKzQ2MywxMSBAQCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnJlbmRlcmVkVGV4
dFJlc3BlY3RpbmdSYW5nZShjb25zdCBUZXh0JiB0ZXh0KQogICAgIGVsc2UgewogICAgICAgICBl
bmQgPSBsYXN0UG9zaXRpb25Jbk5vZGUoY29uc3RfY2FzdDxUZXh0Kj4oJnRleHQpKTsKICAgICAg
ICAgaWYgKCFtX2VuZC5pc051bGwoKSkKLSAgICAgICAgICAgIGJlaGF2aW9yID0gVGV4dEl0ZXJh
dG9yQmVoYXZlc0FzSWZOb2Rlc0ZvbGxvd2luZzsKKyAgICAgICAgICAgIGJlaGF2aW9ycy5hZGQo
VGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkJlaGF2ZXNBc0lmTm9kZXNGb2xsb3dpbmcpOwogICAgIH0K
IAogICAgIGF1dG8gcmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCk7Ci0gICAgcmV0
dXJuIHJhbmdlID8gcGxhaW5UZXh0KCpyYW5nZSwgYmVoYXZpb3IpIDogZW1wdHlTdHJpbmcoKTsK
KyAgICByZXR1cm4gcmFuZ2UgPyBwbGFpblRleHQoKnJhbmdlLCBiZWhhdmlvcnMpIDogZW1wdHlT
dHJpbmcoKTsKIH0KIAogU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0ZXh0Q29udGVu
dFJlc3BlY3RpbmdSYW5nZShjb25zdCBUZXh0JiB0ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDYzNTY4MjViMmU2NzhjMDM0ZjZlMGY4MDg5YjIyMDBhODM5MjZmOTgu
LjhmNmUxNDM0MDM5YWU0NjQyMzU0YWJjOGQ1Y2E1ZTM1OTJiNmY4NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBzdGF0aWMgdWludDY0X3Qg
dGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkK
ICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0LCBlbmQpOwogICAgIGlmICgh
cmFuZ2UpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjaGFyYWN0ZXJDb3VudCgqcmFu
Z2UsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25z
KTsKKyAgICByZXR1cm4gY2hhcmFjdGVyQ291bnQoKnJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlv
cjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogfQogCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuY3BwCmluZGV4IDNmZGRlYjgwNDVlMmI4OTY1ZDg4Njc0ZmM2YTYzMGUzZDI3MjYxODcu
LmNkZjUzZjc0NGYwYWVhOWM4Yzk0ZGI4ZTU0NjNjZDdjMTEzNGUwYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RkOjpvcHRpb25hbDxz
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpj
b21wdXRlVGUKICAgICB1bnNpZ25lZCBudW1iZXJPZkl0ZXJhdGlvbnMgPSAwOwogICAgIHVuc2ln
bmVkIHRvdGFsU2FtcGxlZFRleHRMZW5ndGggPSAwOwogCi0gICAgZm9yIChUZXh0SXRlcmF0b3Ig
ZG9jdW1lbnRUZXh0SXRlcmF0b3IgeyBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmRv
Y3VtZW50KSwgVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xzIH07ICFkb2N1bWVudFRleHRJ
dGVyYXRvci5hdEVuZCgpOyBkb2N1bWVudFRleHRJdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICBm
b3IgKFRleHRJdGVyYXRvciBkb2N1bWVudFRleHRJdGVyYXRvciB7IG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqZG9jdW1lbnQpLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW50ZXJzVGV4
dENvbnRyb2xzIH07ICFkb2N1bWVudFRleHRJdGVyYXRvci5hdEVuZCgpOyBkb2N1bWVudFRleHRJ
dGVyYXRvci5hZHZhbmNlKCkpIHsKICAgICAgICAgaWYgKCsrbnVtYmVyT2ZJdGVyYXRpb25zID49
IG1heGltdW1OdW1iZXJPZlRleHRSdW5zVG9Db25zaWRlcikKICAgICAgICAgICAgIGJyZWFrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IDJlMzJjOTA3YWZmMTgxM2YwN2RlZTAzYzQ2MjFmMTgyOTBlMjRlZGEuLmFhZjg4
NzIxMzc3MzAwMjRmNmJhZTNjMWVmYzA2NTgyMjI4MWE1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xNzQsNyArMTc0
LDcgQEAgc3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JDb250ZXh0KGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIAogc3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JEaXNw
bGF5KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGxh
aW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVo
YXZpb3IsIHRydWUpOworICAgIHJldHVybiBXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UocmFuZ2UsIHsgfSwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcGxhaW5UZXh0
Rm9yRGlzcGxheShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCkBAIC0y
MDc5LDcgKzIwNzksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VO
ZWFyUG9zaXRpb25NYXRjaGVzVGV4dChjb25zdCBWaXNpYmxlUG9zaQogICAgIGF1dG8gYm91bmRh
cnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KHBvc2l0aW9uKTsKICAgICBpZiAoIWJvdW5kYXJ5
UG9pbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGZpbmRDbG9z
ZXN0UGxhaW5UZXh0KHJhbmdlLCBtYXRjaFRleHQsIHsgfSwgY2hhcmFjdGVyQ291bnQoeyByYW5n
ZS5zdGFydCwgKmJvdW5kYXJ5UG9pbnQgfSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRl
eHQocmFuZ2UsIG1hdGNoVGV4dCwgeyB9LCBjaGFyYWN0ZXJDb3VudCh7IHJhbmdlLnN0YXJ0LCAq
Ym91bmRhcnlQb2ludCB9LCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0
U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
R2VvbWV0cnk+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBmZDMxMDAzNTAxZmZjYzNjMDFhOTJmOTU3YmMz
NGNkMmRiYTFmODAyLi5jMDQxOWFmYjcwNTFjZGJkZjMwZWExNmUxMjE1ZDMxYTQ1ZDYwZjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTU3Miw3
ICs1NzIsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdGb3JSYW5nZTooRE9NUmFuZ2UgKilyYW5n
ZQogewogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBAIiI7Ci0gICAgcmV0dXJuIHBs
YWluVGV4dChtYWtlU2ltcGxlUmFuZ2UoKmNvcmUocmFuZ2UpKSwgV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKKyAgICByZXR1cm4gcGxhaW5UZXh0KG1ha2VTaW1w
bGVSYW5nZSgqY29yZShyYW5nZSkpLCB7IH0sIHRydWUpOwogfQogCiAtIChPcHRpb25TZXQ8V2Vi
Q29yZTo6UGFpbnRCZWhhdmlvcj4pX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6
KENHQ29udGV4dFJlZiljb250ZXh0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430694</attachid>
            <date>2021-06-06 12:08:38 -0700</date>
            <delta_ts>2021-06-06 21:11:18 -0700</delta_ts>
            <desc>Fix a typo</desc>
            <filename>bug-226691-20210606120837.patch</filename>
            <type>text/plain</type>
            <size>67798</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZkOWY1ZDhmM2EzMjQx
MWM5YTUzODM1NTU4YjFjMTRkMzBmOTE3ZS4uYjZhYzYxYzljMmFkZjViZTcxNzRiMjlhYzE4MWU4
N2VhMmNhZjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMS0wNi0wNiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBUdXJuIFRleHRJ
dGVyYXRvckJlaGF2aW9yRmxhZyBpbnRvIGFuIGVudW0gY2xhc3MgYW5kIHdyYXAgaXQgaW4gT3B0
aW9uU2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjY2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b2Rlcm5pemUgc29tZSBlZGl0aW5nIGNvZGUgYnkgdHVybmluZyBgVGV4dEl0ZXJhdG9yQmVoYXZp
b3JGbGFnYCBpbnRvIGFuIGVudW0gY2xhc3MsIGBUZXh0SXRlcmF0b3JCZWhhdmlvcmAsCisgICAg
ICAgIHdpdGggYW4gZXhwbGljaXQgd2lkdGggb2YgMTYgYml0cy4gQWRkaXRpb25hbGx5LCBzaW5j
ZSB0aGlzIGlzIGEgYml0bWFzaywgcmVmYWN0b3IgdmFyaW91cyBjb2RlcGF0aHMgdG8gdXNlCisg
ICAgICAgIGBPcHRpb25TZXQ8VGV4dEl0ZXJhdG9yQmVoYXZpb3I+YCBpbnN0ZWFkIG9mIHRoZSB1
bmRlcmx5aW5nIHR5cGUuCisKKyAgICAgICAgVGhpcyBnaXZlcyB1cyBpbXByb3ZlZCB0eXBlIHNh
ZmV0eSB3aGVuIHVzaW5nIHRoaXMgZW51bSwgYW5kIGFsc28gbmFycm93cyB0aGUgd2lkdGggb2Yg
dGhpcyBlbnVtIHRvIDE2IGJpdHMKKyAgICAgICAgKGZyb20gMzIpLiBObyBjaGFuZ2UgaW4gYmVo
YXZpb3IuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpuZXh0Qm91bmRhcnkpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRS
YW5nZSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlu
ay5jcHA6CisgICAgICAgIChyYW5nZUxlbmd0aEZvck9iamVjdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAo
Z2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwOgorICAgICAgICAob2JqZWN0Rm9jdXNlZEFuZENh
cmV0T2Zmc2V0VW5pZ25vcmVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlIGNvbnN0KToKKworICAgICAgICBG
aXggdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSBlbXB0eSAoZGVmYXVsdCkgb3B0aW9uIHNldCBp
bnN0ZWFkIG9mIGBmYWxzZWAgKHdoaWNoIHdhcyBwcmV2aW91c2x5IGltcGxpY2l0bHkKKyAgICAg
ICAgY29udmVydGVkIHRvIGBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3JgKS4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENv
bW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0ZWRUZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyIGNvbnN0
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZW1lbnRGcmFn
bWVudDo6UmVwbGFjZW1lbnRGcmFnbWVudCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDbGlwcGVkQnlGcmFtZUFuY2VzdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRJdGVyYXRvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdENoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Om5l
eHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRGVzY2VuZGFudE9mKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcmVudE5vZGVPclNoYWRvd0hvc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVu
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJlc2VudE5v
ZGVPZmZzZXRaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6c2hvdWxkRW1p
dFNwYWNlQmVmb3JlQW5kQWZ0ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6aGFuZGxlTm9uVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpl
eGl0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZU5v
blRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRl
cmF0b3I6OmV4aXROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3Rlckl0ZXJhdG9yOjpD
aGFyYWN0ZXJJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6aGFzQW55UGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWluVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZEl0ZXJhdG9yT3B0aW9ucyk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRl
cmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNoYXJhY3RlckNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OmNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0
ZXJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Omhhc0FueVBs
YWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmg6CisKKyAgICAgICAgQWRkIGFu
IGFsaWFzIGZvciBgT3B0aW9uU2V0PFRleHRJdGVyYXRvckJlaGF2aW9yPmAsIGBUZXh0SXRlcmF0
b3JCZWhhdmlvcnNgLCB0byBoZWxwIHdpdGggcmVhZGFiaWxpdHkgd2hlbgorICAgICAgICBzcGVj
aWZ5aW5nIG9yIGNvbnN1bHRpbmcgdGhlc2UgZmxhZ3MuIEFkZGl0aW9uYWxseSByZW1vdmUgdGhl
IGBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3JgIGVudW0gdmFsdWUKKyAgICAgICAgYWx0b2dl
dGhlciwgc2luY2Ugd2UgY2FuIG5vdyBqdXN0IHVzZSB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciAo
YE9wdGlvblNldDxUZXh0SXRlcmF0b3JCZWhhdmlvcj4geyB9YCkgdG8gZ2V0IGEKKyAgICAgICAg
c2V0IG9mIGVtcHR5IG9wdGlvbnMuCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFncmFwaENvbnRlbnRJdGVy
YXRvcjo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6YXBw
ZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRhcnkpOgorICAgICAgICAqIGVkaXRpbmcv
bWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpy
ZW5kZXJlZFRleHRSZXNwZWN0aW5nUmFuZ2UpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6CisKIDIwMjEtMDYtMDUgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBN
b3ZlIERhdGFEZXRlY3RvcnMgc29mdGxpbmtpbmcgaW4gRGF0YURldGVjdG9yc1NQSS5oIG91dCBp
bnRvIGEgc2VwYXJhdGUgUEFMIGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMmZkNzU1Y2Q4MThiZTVlNDg3
MDgwNmZmNjA1MWE4Y2M4MjMxNTVlLi45NDJhNTJkNGFjMDcwNTBlMzNjMzNiZTgxYTg0MDJjNGY4
OTYyYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA2LTA2ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFR1cm4gVGV4dEl0ZXJhdG9y
QmVoYXZpb3JGbGFnIGludG8gYW4gZW51bSBjbGFzcyBhbmQgd3JhcCBpdCBpbiBPcHRpb25TZXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjY5MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJD
b3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29tcHV0ZVRleHRMZWdpYmlsaXR5
U2NhbGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OnBsYWluVGV4dEZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0
OjpyYW5nZU5lYXJQb3NpdGlvbk1hdGNoZXNUZXh0KToKKwogMjAyMS0wNi0wNSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIERpY3Rpb25h
cnkgbG9va3VwIGhpZ2hsaWdodHMgaW4gaW1hZ2Ugb3ZlcmxheXMgc2hvdWxkIGluY2x1ZGUgYmFj
a2dyb3VuZCBjb250ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOWUxMGFkOTYz
ZDIzNmVjMTNlOWJkMTNlN2E4NDYwOGU4ZThiNTMxYi4uMmJiNTc1MjYwY2FlMzQwZTE4Yjc1NDkw
NWQ2Zjc1ZjIzMTI0NWVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTA2LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFR1cm4gVGV4dEl0ZXJhdG9yQmVoYXZpb3JGbGFnIGludG8gYW4gZW51bSBj
bGFzcyBhbmQgd3JhcCBpdCBpbiBPcHRpb25TZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjY5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBpbmZv
cm1hdGlvbi4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dl
YkZyYW1lIF9zdHJpbmdGb3JSYW5nZTpdKToKKwogMjAyMS0wNi0wNSAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIE1vdmUgRGF0YURldGVj
dG9ycyBzb2Z0bGlua2luZyBpbiBEYXRhRGV0ZWN0b3JzU1BJLmggb3V0IGludG8gYSBzZXBhcmF0
ZSBQQUwgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAppbmRleCBmOTIzNTA1YmM2NWU0ZmJjODg3OGM3ZjFjNmYyMzcxNDU3YTQ3MmUyLi40
N2Q4YWJhZmVmYTM2MTU4MGViZjhkNWI3NWY0MWVhZWY1MjZkYjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE5MjAsNyArMTkyMCwx
MCBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFu
Z2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLAogICAgIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsK
ICAgICBpbnQgbGFzdFN0YXJ0T2Zmc2V0ID0gMDsKICAgICAKLSAgICBUZXh0SXRlcmF0b3IgaXRl
cmF0b3IocmFuZ2UsIGRvTm90RW50ZXJUZXh0Q29udHJvbHMgPyBUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3IgOiBUZXh0SXRlcmF0b3JFbnRlcnNUZXh0Q29udHJvbHMpOworICAgIFRleHRJdGVy
YXRvckJlaGF2aW9ycyBiZWhhdmlvcnM7CisgICAgaWYgKCFkb05vdEVudGVyVGV4dENvbnRyb2xz
KQorICAgICAgICBiZWhhdmlvcnMuYWRkKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbnRlcnNUZXh0
Q29udHJvbHMpOworICAgIFRleHRJdGVyYXRvciBpdGVyYXRvcihyYW5nZSwgYmVoYXZpb3JzKTsK
ICAgICAKICAgICAvLyBXaGVuIHRoZSByYW5nZSBoYXMgemVybyBsZW5ndGgsIHRoZXJlIG1pZ2h0
IGJlIHJlcGxhY2VkIG5vZGUgb3IgYnJUYWcgdGhhdCB3ZSBuZWVkIHRvIGluY3JlbWVudCB0aGUg
Y2hhcmFjdGVyT2Zmc2V0LgogICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7CkBAIC0yMDc4LDcg
KzIwODEsNyBAQCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZQogICAgIGlmICghc2VhcmNoUmFuZ2Ug
fHwgc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgYXV0byB0YXJnZXRPZmZzZXQgPSBjaGFyYWN0ZXJDb3VudCh7IHNlYXJjaFJhbmdl
LT5zdGFydCwgb3JpZ2luYWxSYW5nZS5zdGFydCB9LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CisgICAgYXV0byB0YXJnZXRPZmZzZXQgPSBj
aGFyYWN0ZXJDb3VudCh7IHNlYXJjaFJhbmdlLT5zdGFydCwgb3JpZ2luYWxSYW5nZS5zdGFydCB9
LCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQ
b3NpdGlvbnMpOwogICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dCgqc2VhcmNoUmFuZ2Us
IG1hdGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOwogfQogCkBAIC0yNzE2LDcgKzI3MTksNyBA
QCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dEJvdW5kYXJ5KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYgY2hhcmFjdGVyT2ZmcwogICAgICAgICByZXR1cm4geyB9OwogICAgIENoYXJh
Y3Rlck9mZnNldCBlbmQgPSBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2Uoc2VhcmNo
UmFuZ2UsIGZhbHNlKTsKICAgICAKLSAgICBUZXh0SXRlcmF0b3IgaXQoc2VhcmNoUmFuZ2UsIFRl
eHRJdGVyYXRvckVtaXRzT2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJzKTsKKyAgICBUZXh0SXRl
cmF0b3IgaXQoc2VhcmNoUmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVycyk7CiAgICAgdW5zaWduZWQgbmV4dCA9IGZvcndhcmRTZWFyY2hG
b3JCb3VuZGFyeVdpdGhUZXh0SXRlcmF0b3IoaXQsIHN0cmluZywgcHJlZml4TGVuZ3RoLCBzZWFy
Y2hGdW5jdGlvbik7CiAgICAgCiAgICAgaWYgKGl0LmF0RW5kKCkgJiYgbmV4dCA9PSBzdHJpbmcu
c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKaW5kZXggNmU2ZTc2NDA0ZWUxMzhiM2NiMDYyM2E1YWVhYWQ1NGE3YzFl
NGJhNi4uMzRlYThmNDhjOTAzODYwYzFkZjNmM2ZlODZiNDRjN2NiNTcyNzBkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CkBAIC0zMTgyLDE3ICszMTgyLDE3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3Nl
ZElzUHJlc2VudCgpIGNvbnN0CiAgICAgcmV0dXJuICFnZXRBdHRyaWJ1dGUoYXJpYV9wcmVzc2Vk
QXR0cikuaXNFbXB0eSgpOwogfQogCi1UZXh0SXRlcmF0b3JCZWhhdmlvciBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojp0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0CitUZXh0SXRl
cmF0b3JCZWhhdmlvcnMgQWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4dEl0ZXJhdG9yQmVoYXZpb3JG
b3JUZXh0UmFuZ2UoKSBjb25zdAogewotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9y
ID0gVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eTsKKyAgICBUZXh0SXRlcmF0b3JC
ZWhhdmlvcnMgYmVoYXZpb3JzIHsgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZp
c2liaWxpdHkgfTsKICAgICAKICNpZiBVU0UoQVRLKQogICAgIC8vIFdlIG5lZWQgdG8gZW1pdCBy
ZXBsYWNlZCBlbGVtZW50cyBmb3IgR1RLLCBhbmQgcHJlc2VudAogICAgIC8vIHRoZW0gd2l0aCB0
aGUgJ29iamVjdCByZXBsYWNlbWVudCBjaGFyYWN0ZXInICgweEZGRkMpLgotICAgIGJlaGF2aW9y
ID0gc3RhdGljX2Nhc3Q8VGV4dEl0ZXJhdG9yQmVoYXZpb3I+KGJlaGF2aW9yIHwgVGV4dEl0ZXJh
dG9yRW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMpOworICAgIGJlaGF2aW9ycy5hZGQo
VGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJzKTsK
ICNlbmRpZgogICAgIAotICAgIHJldHVybiBiZWhhdmlvcjsKKyAgICByZXR1cm4gYmVoYXZpb3Jz
OwogfQogICAgIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU9iamVjdDo6YnV0dG9u
Um9sZVR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBiZDUwMTk2NWEzYmU2ZTYzN2IwMWI0YmQxYTkxOTI0
ODk1OGMzZmNlLi42MDMyZjY4ZmNmNjI2MjM0NjIyZTg3OTNhNmQ0NmZmZGM0YzdkNjllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoKICAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2Uo
KSBjb25zdCBvdmVycmlkZTsKICAgICBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfQogICAgIGludCBpbnNlcnRpb25Qb2ludExp
bmVOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAtMTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCmluZGV4IGZmNWM2NGZlMDllMDAzOTc2NmEyNmY4OTU2YmExMTUyYWJhM2I2YmQuLjNh
ZjI1MTFlNjk0MGM4OGNjZTM3OGZiMDFkMDUyMmIzNjk2OWM2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXRoIGVs
ZW1lbnRQYXRoKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BhdGgoKSBj
b25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFRleHRJdGVyYXRvckJlaGF2aW9yIHRleHRJdGVyYXRv
ckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3JzIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBpbnQgaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCkgY29uc3QgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4IDFlMzNkY2NlMmI4OGQ5NTE1ZDgw
MTU1YmE4OTc0NWVhYjNhNTcwMzAuLmM2NGM1ZDlhNDIxODdkM2NmODU2ZjRhZGYyMzlmNmI0ZWQ2
Zjk0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAg
c3RhdGljIGdpbnQgcmFuZ2VMZW5ndGhGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2Jq
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFMKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBUaGlz
IGlzIGdvaW5nIHRvIGJlIHRoZSBhY3R1YWwgbGVuZ3RoIGluIG1vc3Qgb2YgdGhlIGNhc2VzCi0g
ICAgaW50IGJhc2VMZW5ndGggPSBjaGFyYWN0ZXJDb3VudCgqcmFuZ2UsIFRleHRJdGVyYXRvckVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKKyAgICBpbnQgYmFzZUxl
bmd0aCA9IGNoYXJhY3RlckNvdW50KCpyYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRz
Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKIAogICAgIC8vIENoZWNrIHdo
ZXRoZXIgdGhlIGN1cnJlbnQgaHlwZXJsaW5rIGJlbG9uZ3MgdG8gYSBsaXN0IGl0ZW0uCiAgICAg
Ly8gSWYgc28sIHdlIG5lZWQgdG8gY29uc2lkZXIgdGhlIGxlbmd0aCBvZiB0aGUgaXRlbSdzIG1h
cmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4IGU5ZmJlOWJkODIy
OWEzNDg3MjkyMTg2NjU2NWExZDRjNzQ3MmUzZmIuLjM3MTRjYTJjNzg3ZWM0OTY1ZmQ0MGYwMjE4
Y2U4YTkxZTJiMjMxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKQEAg
LTQwNyw5ICs0MDcsOSBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAgICAgLy8gU2V0IHZh
bHVlcyBmb3Igc3RhcnQgb2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2UgbGVuZ3Ro
LgogICAgIC8vIFRoZXNlIHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBjb3ZlciBz
cGVjaWFsIGNhc2VzLgotICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0
KGNvcmVPYmplY3QsIGNoYXJhY3RlckNvdW50KHJhbmdlSW5QYXJlbnQsIFRleHRJdGVyYXRvckVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgc3RhcnRPZmZz
ZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgY2hhcmFjdGVyQ291bnQo
cmFuZ2VJblBhcmVudCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CiAgICAgYXV0byBub2RlUmFuZ2UgPSAqbWFrZVNpbXBs
ZVJhbmdlKG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VFbmQpOwotICAgIGludCByYW5nZUxlbmd0
aCA9IGNoYXJhY3RlckNvdW50KG5vZGVSYW5nZSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJz
QmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOworICAgIGludCByYW5nZUxlbmd0aCA9IGNoYXJh
Y3RlckNvdW50KG5vZGVSYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFjdGVy
c0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZXMgdGhh
dCBhcmUgb25seSByZWxldmFudCB3aGVuIHdvcmtpbmcgd2l0aCAqX0VORCBib3VuZGFyaWVzLgog
ICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBBZmZpbml0eTo6VXBzdHJlYW0pIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVVdGlsLmNwcAppbmRleCA4NGI2YzJkMzlmM2YwM2RhODVmNzNmZTA4ZWNhNWM2OWU3NDhi
ZmM2Li5jNzA2NDc0NzMxYTc0ODY2MjI4MjYwODQ2ODlkZmIwNDJlNmQ3NjA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZVV0aWwuY3BwCkBAIC0yMzAsMTAgKzIzMCwxMCBAQCBBWENvcmVPYmplY3QqIG9iamVjdEZvY3Vz
ZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChBWENvcmVPYmplY3QqIHJlZmVyZW5jZU9iamVjdAog
ICAgICAgICBvZmZzZXQgPSAwOwogICAgIGVsc2UgaWYgKCFpc1N0YXJ0T2ZMaW5lKGVuZFBvc2l0
aW9uKSkgewogICAgICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0UG9zaXRp
b24sIGVuZFBvc2l0aW9uLnByZXZpb3VzKCkpOwotICAgICAgICBvZmZzZXQgPSAocmFuZ2UgPyBj
aGFyYWN0ZXJDb3VudCgqcmFuZ2UsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zKSA6IDApICsgMTsKKyAgICAgICAgb2Zmc2V0ID0gKHJhbmdlID8g
Y2hhcmFjdGVyQ291bnQoKnJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpIDogMCkgKyAxOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGF1dG8gcmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9z
aXRpb24pOwotICAgICAgICBvZmZzZXQgPSByYW5nZSA/IGNoYXJhY3RlckNvdW50KCpyYW5nZSwg
VGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpIDog
MDsKKyAgICAgICAgb2Zmc2V0ID0gcmFuZ2UgPyBjaGFyYWN0ZXJDb3VudCgqcmFuZ2UsIFRleHRJ
dGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9u
cykgOiAwOwogICAgIH0KIAogICAgIHJldHVybiBmaXJzdFVuaWdub3JlZFBhcmVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggOWY4ZTY1YzY4YWIxODk0NDI0OTJmYzliM2U3ZmZm
MTM5ZmE1NzkzYy4uN2U0Zjg0NjExOWM2YzliYjc1YmE4NDM0ZWFiMTM5OTZkYTY3YmE4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTIwMjAsMTAgKzIwMjAsMTAgQEAgRWxlbWVu
dCogQVhJc29sYXRlZE9iamVjdDo6YWN0aW9uRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVRleHRJdGVyYXRvckJlaGF2aW9yIEFYSXNvbGF0ZWRPYmplY3Q6OnRleHRJ
dGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkgY29uc3QKK1RleHRJdGVyYXRvckJlaGF2aW9y
cyBBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB7IH07CiB9CiAKIFdpZGdldCogQVhJc29sYXRlZE9iamVjdDo6d2lkZ2V0KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBmNjFjZWYyZjc5MjBlZGEzYzFmZGVjOWQ4
NGNmMWUxMDQyZmE5OTFlLi5jMDFlZmFkOWRiY2JhOGMwYTUxMjdiZjNlMDE3MzNkMmI0YjU5YWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC01NjgsNyArNTY4LDcgQEAgcHJpdmF0ZToK
ICAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGF0aCBl
bGVtZW50UGF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHBhdGhBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6UGF0aCk7IH07CiAgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBv
cnRzUGF0aCk7IH0KLSAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciB0ZXh0SXRlcmF0b3JCZWhhdmlv
ckZvclRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFRleHRJdGVyYXRvckJlaGF2aW9y
cyB0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFdpZGdldCogd2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1XaWRnZXQgcGxh
dGZvcm1XaWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYTYzNWY2MjQxN2M3OTYwMzVkN2I2NmQ1
NjZjOTc4ODExNjIyMTdlMS4uZWQ1ZTEzYjkyMWVhMTAwODg1ZjY3YTVkN2RkNGNhMzYyYTg5YTU5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAg
LTI0OCw4ICsyNDgsOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUo
RWRpdGluZ1N0eWxlJiBzdHlsZSkKIAogICAgIGF1dG8gc2NvcGUgPSBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKnNjb3BlUm9vdCk7CiAgICAgYXV0byByYW5nZSA9ICptYWtlU2ltcGxl
UmFuZ2UodmlzaWJsZVN0YXJ0LCB2aXNpYmxlRW5kKTsKLSAgICBhdXRvIHN0YXJ0SW5kZXggPSBj
aGFyYWN0ZXJDb3VudCh7IHNjb3BlLnN0YXJ0LCByYW5nZS5zdGFydCB9LCBUZXh0SXRlcmF0b3JF
bWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7Ci0gICAgYXV0byBlbmRJ
bmRleCA9IGNoYXJhY3RlckNvdW50KHsgc2NvcGUuc3RhcnQsIHJhbmdlLmVuZCB9LCBUZXh0SXRl
cmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CisgICAgYXV0
byBzdGFydEluZGV4ID0gY2hhcmFjdGVyQ291bnQoeyBzY29wZS5zdGFydCwgcmFuZ2Uuc3RhcnQg
fSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxl
UG9zaXRpb25zKTsKKyAgICBhdXRvIGVuZEluZGV4ID0gY2hhcmFjdGVyQ291bnQoeyBzY29wZS5z
dGFydCwgcmFuZ2UuZW5kIH0sIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcGFyYWdy
YXBoU3RhcnQoc3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlU3RhcnQpKTsKICAgICBWaXNpYmxlUG9z
aXRpb24gbmV4dFBhcmFncmFwaFN0YXJ0KGVuZE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0YXJ0KS5u
ZXh0KCkpOwpAQCAtMjgwLDggKzI4MCw4IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5
QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUmIHN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3Rh
cnQgPSBlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAK
LSAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJl
c29sdmVDaGFyYWN0ZXJMb2NhdGlvbihzY29wZSwgc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1p
dHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKLSAgICBhdXRvIGVuZFBv
c2l0aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9j
YXRpb24oc2NvcGUsIGVuZEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucykpOworICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IG1ha2VEZXBy
ZWNhdGVkTGVnYWN5UG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKHNjb3BlLCBzdGFy
dEluZGV4LCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZp
c2libGVQb3NpdGlvbnMpKTsKKyAgICBhdXRvIGVuZFBvc2l0aW9uID0gbWFrZURlcHJlY2F0ZWRM
ZWdhY3lQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oc2NvcGUsIGVuZEluZGV4LCBU
ZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3Np
dGlvbnMpKTsKICAgICB1cGRhdGVTdGFydEVuZChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKaW5kZXggZTRjYmFlOWY1MjM1OGQ2MDEyMDJhODhhODQyY2ZlZWY1OTZiYzE4NC4uM2ZkMDRj
N2UzMWZhOWI0MzkyYzI1NDQ4YTkyZjU0MDFlMmMyY2VhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE0NDMsMTIgKzE0NDMsMTIg
QEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwOwog
ICAgICAgICAgICAgaWYgKHZpc2libGVTdGFydCA+PSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gcmFuZ2VUb1NlbGVjdGlvblN0YXJ0ID0gbWFrZVNp
bXBsZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUsIHZpc2libGVTdGFydCkpCi0gICAgICAg
ICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJDb3VudCgqcmFuZ2VUb1NlbGVjdGlv
blN0YXJ0LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0
aW9ucyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJDb3VudCgq
cmFuZ2VUb1NlbGVjdGlvblN0YXJ0LCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZW5kSW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHZpc2libGVFbmQgPD0gZW5kT2ZQYXJh
Z3JhcGhUb01vdmUpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byByYW5nZVRvU2VsZWN0aW9u
RW5kID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUsIHZpc2libGVFbmQp
KQotICAgICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IGNoYXJhY3RlckNvdW50KCpyYW5nZVRv
U2VsZWN0aW9uRW5kLCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJs
ZVBvc2l0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gY2hhcmFjdGVyQ291
bnQoKnJhbmdlVG9TZWxlY3Rpb25FbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJh
Y3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0xNTE3LDcgKzE1MTcsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAog
ICAgIGlmICghZWRpdGFibGVSb290KQogICAgICAgICBlZGl0YWJsZVJvb3QgPSAmZG9jdW1lbnQo
KTsKIAotICAgIGF1dG8gZGVzdGluYXRpb25JbmRleCA9IGNoYXJhY3RlckNvdW50KHsgeyAqZWRp
dGFibGVSb290LCAwIH0sICptYWtlQm91bmRhcnlQb2ludChkZXN0aW5hdGlvbikgfSwgVGV4dEl0
ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOworICAgIGF1
dG8gZGVzdGluYXRpb25JbmRleCA9IGNoYXJhY3RlckNvdW50KHsgeyAqZWRpdGFibGVSb290LCAw
IH0sICptYWtlQm91bmRhcnlQb2ludChkZXN0aW5hdGlvbikgfSwgVGV4dEl0ZXJhdG9yQmVoYXZp
b3I6OkVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKIAogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGRlc3RpbmF0aW9uLCBvcmlnaW5hbElz
RGlyZWN0aW9uYWwpKTsKICAgICBBU1NFUlQoZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJldE9yUmFu
Z2UoKSk7CkBAIC0xNTM5LDggKzE1MzksOCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAg
ICAgICAvLyBjYXVzZXMgc3BhY2VzIHRvIGJlIGNvbGxhcHNlZCBkdXJpbmcgdGhlIG1vdmUgb3Bl
cmF0aW9uLiAgVGhpcyByZXN1bHRzCiAgICAgICAgIC8vIGluIGEgY2FsbCB0byByYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aCB3aXRoIGEgbG9jYXRpb24gcGFzdCB0aGUgZW5kCiAgICAgICAgIC8v
IG9mIHRoZSBkb2N1bWVudCAod2hpY2ggd2lsbCByZXR1cm4gbnVsbCkuCi0gICAgICAgIGF1dG8g
c3RhcnQgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2Nh
dGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRlc3Rp
bmF0aW9uSW5kZXggKyAqc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKLSAgICAgICAgYXV0byBlbmQgPSBtYWtlRGVwcmVj
YXRlZExlZ2FjeVBvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0aW9uSW5kZXggKyAqZW5k
SW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKSk7CisgICAgICAgIGF1dG8gc3RhcnQgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9u
KHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
KmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0aW9uSW5kZXggKyAqc3RhcnRJbmRleCwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7
CisgICAgICAgIGF1dG8gZW5kID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyZXNvbHZl
Q2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplZGl0YWJs
ZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKmVuZEluZGV4LCBUZXh0SXRlcmF0b3JCZWhhdmlv
cjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKICAgICAgICAg
c2V0RW5kaW5nU2VsZWN0aW9uKHsgc3RhcnQsIGVuZCwgQWZmaW5pdHk6OkRvd25zdHJlYW0sIG9y
aWdpbmFsSXNEaXJlY3Rpb25hbCB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
LmNwcAppbmRleCAzNDU2YTc2OWYxODQ1ZTA5NDE5YzdhYzU0MWZkOTgzYzNjMDI0YzRlLi5iZWZi
NzBmNmMyYTIxZmQ2M2I5NzIyMmE4NzU2ZmQ1NGU3ZmYyMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAKQEAgLTk2NCwxMCArOTY0LDEwIEBAIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0
aW9uRm9yUGFyYWdyYXBoSXRlcmF0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9yaWdpbmFs
CiAgICAgcmV0dXJuIG5ld1NlbGVjdGlvbjsKIH0KIAotLy8gRklYTUU6IGluZGV4Rm9yVmlzaWJs
ZVBvc2l0aW9uIGFuZCB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCB1c2UgVGV4dEl0ZXJhdG9ycyB0
byBjb252ZXJ0IGJldHdlZW4gCi0vLyBWaXNpYmxlUG9zaXRpb25zIGFuZCBpbmRpY2VzLiBCdXQg
VGV4dEl0ZXJhdG9yIGl0ZXJhdGlvbiB1c2luZyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyAKLS8vIGRvZXMgbm90IGV4YWN0bHkgbWF0Y2ggVmlz
aWJsZVBvc2l0aW9uIGl0ZXJhdGlvbiwgc28gdXNpbmcgdGhlbSB0byBwcmVzZXJ2ZSBhIHNlbGVj
dGlvbiBkdXJpbmcgYW4gZWRpdGluZyAKLS8vIG9wZXJ0aW9uIGlzIHVucmVsaWFibGUuIFRleHRJ
dGVyYXRvcidzIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9z
aXRpb25zIG1vZGUgbmVlZHMgdG8gYmUgZml4ZWQsIAorLy8gRklYTUU6IGluZGV4Rm9yVmlzaWJs
ZVBvc2l0aW9uIGFuZCB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCB1c2UgVGV4dEl0ZXJhdG9ycyB0
byBjb252ZXJ0IGJldHdlZW4KKy8vIFZpc2libGVQb3NpdGlvbnMgYW5kIGluZGljZXMuIEJ1dCBU
ZXh0SXRlcmF0b3IgaXRlcmF0aW9uIHVzaW5nIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0No
YXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucworLy8gZG9lcyBub3QgZXhhY3RseSBt
YXRjaCBWaXNpYmxlUG9zaXRpb24gaXRlcmF0aW9uLCBzbyB1c2luZyB0aGVtIHRvIHByZXNlcnZl
IGEgc2VsZWN0aW9uIGR1cmluZyBhbiBlZGl0aW5nCisvLyBvcGVydGlvbiBpcyB1bnJlbGlhYmxl
LiBUZXh0SXRlcmF0b3IncyBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgbW9kZSBuZWVkcyB0byBiZSBmaXhlZCwKIC8vIG9yIHRo
ZXNlIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIGNoYW5nZWQgdG8gaXRlcmF0ZSB1c2luZyBhY3R1YWwg
VmlzaWJsZVBvc2l0aW9ucy4KIC8vIEZJWE1FOiBEZXBsb3kgdGhlc2UgZnVuY3Rpb25zIGV2ZXJ5
d2hlcmUgdGhhdCBUZXh0SXRlcmF0b3JzIGFyZSB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBWaXNp
YmxlUG9zaXRpb25zIGFuZCBpbmRpY2VzLgogaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4mIHNjb3BlKQpAQCAtOTg5LDE0ICs5ODksMTcgQEAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBSZWZQdHI8Q29udGEK
ICAgICB9CiAKICAgICBhdXRvIHJhbmdlID0gKm1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQ
b2ludEJlZm9yZU5vZGVDb250ZW50cygqc2NvcGUpLCBwb3NpdGlvbik7Ci0gICAgcmV0dXJuIGNo
YXJhY3RlckNvdW50KHJhbmdlLCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucyk7CisgICAgcmV0dXJuIGNoYXJhY3RlckNvdW50KHJhbmdlLCBUZXh0
SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlv
bnMpOwogfQogCiAvLyBGSVhNRTogTWVyZ2UgdGhpcyBmdW5jdGlvbiB3aXRoIHRoZSBvbmUgYWJv
dmUuCiBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oTm9kZSYgbm9kZSwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9u
KQogewogICAgIGF1dG8gcmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnRC
ZWZvcmVOb2RlQ29udGVudHMobm9kZSksIHZpc2libGVQb3NpdGlvbik7Ci0gICAgcmV0dXJuIHJh
bmdlID8gY2hhcmFjdGVyQ291bnQoKnJhbmdlLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBU
ZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRl
eHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcikgOiAwOworICAgIFRleHRJdGVyYXRvckJlaGF2aW9y
cyBiZWhhdmlvcnM7CisgICAgaWYgKGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKKyAgICAgICAg
YmVoYXZpb3JzLmFkZChUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2Vl
bkFsbFZpc2libGVQb3NpdGlvbnMpOworICAgIHJldHVybiByYW5nZSA/IGNoYXJhY3RlckNvdW50
KCpyYW5nZSwgYmVoYXZpb3JzKSA6IDA7CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlv
biwgaW50IG9mZnNldCkKQEAgLTEwMTMsNyArMTAxNiw3IEBAIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlKQogewog
ICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHsgbWFrZURl
cHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdl
U2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIGluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0No
YXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpIH07CisgICAgcmV0dXJuIHsgbWFr
ZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIGluZGV4LCBUZXh0SXRlcmF0b3JCZWhh
dmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKSB9OwogfQog
CiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0
ZXJhdG9yKE5vZGUmIG5vZGUsIGludCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApp
bmRleCAxZmJmZDkzYjIzOTA5N2ZjOWJkNGE5ZThlOTBiYzZjODViNDQyODUwLi44NjM3MTYzN2Ex
NGMyYzg0OTJjNzdmYmI5NzgxM2ZkMGNkZTRhY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC0zMjgwLDI1ICszMjgwLDI1IEBAIHZvaWQgRWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25B
ZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBPCiAKIFN0
cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiB7Ci0gICAgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgYmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3I7CisgICAgVGV4dEl0
ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9yczsKICAgICBpZiAobV9kb2N1bWVudC5zZXR0aW5ncygp
LnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkKCkpCi0gICAgICAgIGJlaGF2
aW9yIHw9IFRleHRJdGVyYXRvclRyYXZlcnNlc0ZsYXRUcmVlOwotICAgIHJldHVybiBzZWxlY3Rl
ZFRleHQoYmVoYXZpb3IpOworICAgICAgICBiZWhhdmlvcnMuYWRkKFRleHRJdGVyYXRvckJlaGF2
aW9yOjpUcmF2ZXJzZXNGbGF0VHJlZSk7CisgICAgcmV0dXJuIHNlbGVjdGVkVGV4dChiZWhhdmlv
cnMpOwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIoKSBj
b25zdAogewotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yID0gVGV4dEl0ZXJhdG9y
RW1pdHNJbWFnZUFsdFRleHQ7CisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycyB7
IFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0ltYWdlQWx0VGV4dCB9OwogICAgIGlmIChtX2Rv
Y3VtZW50LnNldHRpbmdzKCkuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQo
KSkKLSAgICAgICAgYmVoYXZpb3IgfD0gVGV4dEl0ZXJhdG9yVHJhdmVyc2VzRmxhdFRyZWU7Ci0g
ICAgcmV0dXJuIHNlbGVjdGVkVGV4dChiZWhhdmlvcik7CisgICAgICAgIGJlaGF2aW9ycy5hZGQo
VGV4dEl0ZXJhdG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKTsKKyAgICByZXR1cm4gc2Vs
ZWN0ZWRUZXh0KGJlaGF2aW9ycyk7CiB9CiAKLVN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dChU
ZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikgY29uc3QKK1N0cmluZyBFZGl0b3I6OnNlbGVj
dGVkVGV4dChUZXh0SXRlcmF0b3JCZWhhdmlvcnMgYmVoYXZpb3JzKSBjb25zdAogewogICAgIC8v
IFdlIHJlbW92ZSAnXDAnIGNoYXJhY3RlcnMgYmVjYXVzZSB0aGV5IGFyZSBub3QgdmlzaWJseSBy
ZW5kZXJlZCB0byB0aGUgdXNlci4KICAgICBhdXRvIHJhbmdlID0gbV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7Ci0gICAgcmV0dXJuIHJhbmdlID8gcGxhaW5U
ZXh0KCpyYW5nZSwgYmVoYXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIikgOiBlbXB0
eVN0cmluZygpOworICAgIHJldHVybiByYW5nZSA/IHBsYWluVGV4dCgqcmFuZ2UsIGJlaGF2aW9y
cykucmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFJl
ZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRl
cihjb25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNjcyMjgy
YTcwNzkzZDA3OGRiMDBiOGUwZmQ2YzNjM2MxNTM1M2Q4OS4uYjlkNzMwYjY3ZGY5ZmZlM2E5N2Vi
OGRjNWNhYTMzYTA5NTQ2MzMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01OTYsNyAr
NTk2LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYXJrTWlz
c3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBib29sIGNoZWNr
U3BlbGxpbmcpOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiByZXNvbHZlVGV4dENo
ZWNraW5nVHlwZU1hc2soY29uc3QgTm9kZSYgcm9vdEVkaXRhYmxlRWxlbWVudCwgT3B0aW9uU2V0
PFRleHRDaGVja2luZ1R5cGU+KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZWxlY3Rl
ZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3IpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3JzKSBjb25zdDsKIAogICAgIHZv
aWQgc2VsZWN0Q29tcG9zaXRpb24oKTsKICAgICBlbnVtIFNldENvbXBvc2l0aW9uTW9kZSB7IENv
bmZpcm1Db21wb3NpdGlvbiwgQ2FuY2VsQ29tcG9zaXRpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNDc1MDQ5Mzhh
ZTdjNTZiZGNmZGI5YzU0ZTY4OWE4MzNiZWU3NDE0Yy4uNTA4YmJmZjk4Y2ViZjMyZmRkY2VlZmEy
YTkxM2E2ODJkOGYzYzU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBSZXBsYWNlbWVudEZy
YWdtZW50OjpSZXBsYWNlbWVudEZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBj
b25zdCBWaXNpYgogICAgIH0KICAgICAKICAgICBhdXRvIHJhbmdlID0gVmlzaWJsZVNlbGVjdGlv
bjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGhvbGRlci5nZXQoKSkudG9Ob3JtYWxpemVk
UmFuZ2UoKTsKLSAgICBTdHJpbmcgdGV4dCA9IHJhbmdlID8gcGxhaW5UZXh0KCpyYW5nZSwgc3Rh
dGljX2Nhc3Q8VGV4dEl0ZXJhdG9yQmVoYXZpb3I+KFRleHRJdGVyYXRvckVtaXRzT3JpZ2luYWxU
ZXh0IHwgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpIDogZW1wdHlTdHJpbmco
KTsKKyAgICBTdHJpbmcgdGV4dCA9IHJhbmdlID8gcGxhaW5UZXh0KCpyYW5nZSwgeyBUZXh0SXRl
cmF0b3JCZWhhdmlvcjo6RW1pdHNPcmlnaW5hbFRleHQsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpJ
Z25vcmVzU3R5bGVWaXNpYmlsaXR5IH0pIDogZW1wdHlTdHJpbmcoKTsKIAogICAgIHJlbW92ZUlu
dGVyY2hhbmdlTm9kZXMoaG9sZGVyLmdldCgpKTsKICAgICByZW1vdmVVbnJlbmRlcmVkTm9kZXMo
aG9sZGVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRl
eCAyNjNhOTAwMDZjYjAwNGIwZmNiZDU1NTU1MTE1ZTZhM2Q0OTEyZWRmLi4wMjlkZjlkOGQ0MjUz
MjFhMGRiZDBjODkxOTI4MTU1MmYyOTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCkBAIC0yNDEsOSArMjQxLDkgQEAgc3RhdGljIHZvaWQgc2V0VXBGdWxseUNs
aXBwZWRTdGFjayhCaXRTdGFjayYgc3RhY2ssIE5vZGUmIG5vZGUpCiAgICAgcHVzaEZ1bGx5Q2xp
cHBlZFN0YXRlKHN0YWNrLCBub2RlKTsKIH0KIAotc3RhdGljIGJvb2wgaXNDbGlwcGVkQnlGcmFt
ZUFuY2VzdG9yKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
YmVoYXZpb3IpCitzdGF0aWMgYm9vbCBpc0NsaXBwZWRCeUZyYW1lQW5jZXN0b3IoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50LCBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgYmVoYXZpb3JzKQogewotICAg
IGlmICghKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yQ2xpcHNUb0ZyYW1lQW5jZXN0b3JzKSkKKyAg
ICBpZiAoIWJlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6Q2xpcHNUb0Zy
YW1lQW5jZXN0b3JzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvKiBv
d25lciA9IGRvY3VtZW50Lm93bmVyRWxlbWVudCgpOyBvd25lcjsgb3duZXIgPSBvd25lci0+ZG9j
dW1lbnQoKS5vd25lckVsZW1lbnQoKSkgewpAQCAtMzM5LDggKzMzOSw4IEBAIHN0YXRpYyBOb2Rl
KiBmaXJzdE5vZGUoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIE5vZGVU
cmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKHBvaW50LmNvbnRhaW5lcik7CiB9CiAKLVRl
eHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCi0gICAgOiBtX2JlaGF2aW9yKGJlaGF2aW9yKQorVGV4
dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRl
cmF0b3JCZWhhdmlvcnMgYmVoYXZpb3JzKQorICAgIDogbV9iZWhhdmlvcnMoYmVoYXZpb3JzKQog
ewogICAgIHJhbmdlLnN0YXJ0LmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAKQEAgLTM1OCw3ICszNTgsNyBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVy
YXRvcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2
aQogCiB2b2lkIFRleHRJdGVyYXRvcjo6aW5pdCgpCiB7Ci0gICAgaWYgKGlzQ2xpcHBlZEJ5RnJh
bWVBbmNlc3RvcihtX25vZGUtPmRvY3VtZW50KCksIG1fYmVoYXZpb3IpKQorICAgIGlmIChpc0Ns
aXBwZWRCeUZyYW1lQW5jZXN0b3IobV9ub2RlLT5kb2N1bWVudCgpLCBtX2JlaGF2aW9ycykpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHNldFVwRnVsbHlDbGlwcGVkU3RhY2sobV9mdWxseUNsaXBw
ZWRTdGFjaywgKm1fbm9kZSk7CkBAIC0zNzUsMzcgKzM3NSwzNyBAQCB2b2lkIFRleHRJdGVyYXRv
cjo6aW5pdCgpCiBUZXh0SXRlcmF0b3I6On5UZXh0SXRlcmF0b3IoKSA9IGRlZmF1bHQ7CiAKIC8v
IEZJWE1FOiBVc2UgQ29tcG9zZWRUcmVlSXRlcmF0b3IgaW5zdGVhZC4gVGhlc2UgZnVuY3Rpb25z
IGFyZSBtb3JlIGV4cGVuc2l2ZSBiZWNhdXNlIHRoZXkgbWlnaHQgZG8gTyhuKSB3b3JrLgotc3Rh
dGljIGlubGluZSBOb2RlKiBmaXJzdENoaWxkKFRleHRJdGVyYXRvckJlaGF2aW9yIG9wdGlvbnMs
IE5vZGUmIG5vZGUpCitzdGF0aWMgaW5saW5lIE5vZGUqIGZpcnN0Q2hpbGQoVGV4dEl0ZXJhdG9y
QmVoYXZpb3JzIG9wdGlvbnMsIE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKG9wdGlv
bnMgJiBUZXh0SXRlcmF0b3JUcmF2ZXJzZXNGbGF0VHJlZSkpCisgICAgaWYgKFVOTElLRUxZKG9w
dGlvbnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKSkp
CiAgICAgICAgIHJldHVybiBmaXJzdENoaWxkSW5Db21wb3NlZFRyZWVJZ25vcmluZ1VzZXJBZ2Vu
dFNoYWRvdyhub2RlKTsKICAgICByZXR1cm4gbm9kZS5maXJzdENoaWxkKCk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgTm9kZSogbmV4dFNpYmxpbmcoVGV4dEl0ZXJhdG9yQmVoYXZpb3Igb3B0aW9ucywg
Tm9kZSYgbm9kZSkKK3N0YXRpYyBpbmxpbmUgTm9kZSogbmV4dFNpYmxpbmcoVGV4dEl0ZXJhdG9y
QmVoYXZpb3JzIG9wdGlvbnMsIE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKG9wdGlv
bnMgJiBUZXh0SXRlcmF0b3JUcmF2ZXJzZXNGbGF0VHJlZSkpCisgICAgaWYgKFVOTElLRUxZKG9w
dGlvbnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKSkp
CiAgICAgICAgIHJldHVybiBuZXh0U2libGluZ0luQ29tcG9zZWRUcmVlSWdub3JpbmdVc2VyQWdl
bnRTaGFkb3cobm9kZSk7CiAgICAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmcoKTsKIH0KIAotc3Rh
dGljIGlubGluZSBOb2RlKiBuZXh0Tm9kZShUZXh0SXRlcmF0b3JCZWhhdmlvciBvcHRpb25zLCBO
b2RlJiBub2RlKQorc3RhdGljIGlubGluZSBOb2RlKiBuZXh0Tm9kZShUZXh0SXRlcmF0b3JCZWhh
dmlvcnMgb3B0aW9ucywgTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoVU5MSUtFTFkob3B0aW9ucyAm
IFRleHRJdGVyYXRvclRyYXZlcnNlc0ZsYXRUcmVlKSkKKyAgICBpZiAoVU5MSUtFTFkob3B0aW9u
cy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6VHJhdmVyc2VzRmxhdFRyZWUpKSkKICAg
ICAgICAgcmV0dXJuIG5leHRJbkNvbXBvc2VkVHJlZUlnbm9yaW5nVXNlckFnZW50U2hhZG93KG5v
ZGUpOwogICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpOwogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgaXNEZXNjZW5kYW50T2YoVGV4dEl0ZXJhdG9yQmVoYXZpb3Igb3B0aW9ucywg
Tm9kZSYgbm9kZSwgTm9kZSYgcG9zc2libGVBbmNlc3RvcikKK3N0YXRpYyBpbmxpbmUgYm9vbCBp
c0Rlc2NlbmRhbnRPZihUZXh0SXRlcmF0b3JCZWhhdmlvcnMgb3B0aW9ucywgTm9kZSYgbm9kZSwg
Tm9kZSYgcG9zc2libGVBbmNlc3RvcikKIHsKLSAgICBpZiAoVU5MSUtFTFkob3B0aW9ucyAmIFRl
eHRJdGVyYXRvclRyYXZlcnNlc0ZsYXRUcmVlKSkKKyAgICBpZiAoVU5MSUtFTFkob3B0aW9ucy5j
b250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6VHJhdmVyc2VzRmxhdFRyZWUpKSkKICAgICAg
ICAgcmV0dXJuIG5vZGUuaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YoJnBvc3NpYmxl
QW5jZXN0b3IpOwogICAgIHJldHVybiBub2RlLmlzRGVzY2VuZGFudE9mKCZwb3NzaWJsZUFuY2Vz
dG9yKTsKIH0KIAotc3RhdGljIGlubGluZSBOb2RlKiBwYXJlbnROb2RlT3JTaGFkb3dIb3N0KFRl
eHRJdGVyYXRvckJlaGF2aW9yIG9wdGlvbnMsIE5vZGUmIG5vZGUpCitzdGF0aWMgaW5saW5lIE5v
ZGUqIHBhcmVudE5vZGVPclNoYWRvd0hvc3QoVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIG9wdGlvbnMs
IE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKG9wdGlvbnMgJiBUZXh0SXRlcmF0b3JU
cmF2ZXJzZXNGbGF0VHJlZSkpCisgICAgaWYgKFVOTElLRUxZKG9wdGlvbnMuY29udGFpbnMoVGV4
dEl0ZXJhdG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKSkpCiAgICAgICAgIHJldHVybiBu
b2RlLnBhcmVudEluQ29tcG9zZWRUcmVlKCk7CiAgICAgcmV0dXJuIG5vZGUucGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpOwogfQpAQCAtNDgxLDIxICs0ODEsMjEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6
OmFkdmFuY2UoKQogCiAgICAgICAgIC8vIGZpbmQgYSBuZXcgY3VycmVudCBub2RlIHRvIGhhbmRs
ZSBpbiBkZXB0aC1maXJzdCBtYW5uZXIsCiAgICAgICAgIC8vIGNhbGxpbmcgZXhpdE5vZGUoKSBh
cyB3ZSBjb21lIGJhY2sgdGhydSBhIHBhcmVudCBub2RlCi0gICAgICAgIE5vZGUqIG5leHQgPSBt
X2hhbmRsZWRDaGlsZHJlbiA/IG51bGxwdHIgOiBmaXJzdENoaWxkKG1fYmVoYXZpb3IsICptX25v
ZGUpOworICAgICAgICBOb2RlKiBuZXh0ID0gbV9oYW5kbGVkQ2hpbGRyZW4gPyBudWxscHRyIDog
Zmlyc3RDaGlsZChtX2JlaGF2aW9ycywgKm1fbm9kZSk7CiAgICAgICAgIG1fb2Zmc2V0ID0gMDsK
ICAgICAgICAgaWYgKCFuZXh0KSB7Ci0gICAgICAgICAgICBuZXh0ID0gbmV4dFNpYmxpbmcobV9i
ZWhhdmlvciwgKm1fbm9kZSk7CisgICAgICAgICAgICBuZXh0ID0gbmV4dFNpYmxpbmcobV9iZWhh
dmlvcnMsICptX25vZGUpOwogICAgICAgICAgICAgaWYgKCFuZXh0KSB7Ci0gICAgICAgICAgICAg
ICAgYm9vbCBwYXN0RW5kID0gbmV4dE5vZGUobV9iZWhhdmlvciwgKm1fbm9kZSkgPT0gbV9wYXN0
RW5kTm9kZTsKLSAgICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50Tm9kZU9y
U2hhZG93SG9zdChtX2JlaGF2aW9yLCAqbV9ub2RlKTsKKyAgICAgICAgICAgICAgICBib29sIHBh
c3RFbmQgPSBuZXh0Tm9kZShtX2JlaGF2aW9ycywgKm1fbm9kZSkgPT0gbV9wYXN0RW5kTm9kZTsK
KyAgICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50Tm9kZU9yU2hhZG93SG9z
dChtX2JlaGF2aW9ycywgKm1fbm9kZSk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKCFuZXh0ICYm
IHBhcmVudE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChwYXN0RW5kICYmIHBhcmVu
dE5vZGUgPT0gbV9lbmRDb250YWluZXIpIHx8IGlzRGVzY2VuZGFudE9mKG1fYmVoYXZpb3IsICpt
X2VuZENvbnRhaW5lciwgKnBhcmVudE5vZGUpKQorICAgICAgICAgICAgICAgICAgICBpZiAoKHBh
c3RFbmQgJiYgcGFyZW50Tm9kZSA9PSBtX2VuZENvbnRhaW5lcikgfHwgaXNEZXNjZW5kYW50T2Yo
bV9iZWhhdmlvcnMsICptX2VuZENvbnRhaW5lciwgKnBhcmVudE5vZGUpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICBib29sIGhhdmVSZW5kZXJl
ciA9IG1fbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZXhpdGVk
Tm9kZSA9IG1fbm9kZTsKICAgICAgICAgICAgICAgICAgICAgbV9ub2RlID0gcGFyZW50Tm9kZTsK
ICAgICAgICAgICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKLSAgICAgICAg
ICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGVPclNoYWRvd0hvc3QobV9iZWhhdmlv
ciwgKm1fbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2Rl
T3JTaGFkb3dIb3N0KG1fYmVoYXZpb3JzLCAqbV9ub2RlKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGhhdmVSZW5kZXJlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXROb2RlKGV4aXRl
ZE5vZGUpOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9wb3NpdGlvbk5vZGUpIHsKQEAgLTUw
Myw3ICs1MDMsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2hhbmRsZWRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
bmV4dCA9IG5leHRTaWJsaW5nKG1fYmVoYXZpb3IsICptX25vZGUpOworICAgICAgICAgICAgICAg
ICAgICBuZXh0ID0gbmV4dFNpYmxpbmcobV9iZWhhdmlvcnMsICptX25vZGUpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAobmV4dCAmJiBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBleGl0Tm9kZShtX25vZGUpOwogICAgICAgICAgICAgICAgIH0KQEAgLTU0Myw3
ICs1NDMsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogewogICAgIFRl
eHQmIHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKm1fbm9kZSk7CiAKLSAgICBpZiAobV9mdWxs
eUNsaXBwZWRTdGFjay50b3AoKSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVz
U3R5bGVWaXNpYmlsaXR5KSkKKyAgICBpZiAobV9mdWxseUNsaXBwZWRTdGFjay50b3AoKSAmJiAh
bV9iZWhhdmlvcnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZp
c2liaWxpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiByZW5kZXJlciA9
ICp0ZXh0Tm9kZS5yZW5kZXJlcigpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIGJvb2wgVGV4dEl0ZXJh
dG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVy
YXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQorICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhbV9iZWhhdmlvcnMuY29u
dGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpbnQgcmVuZGVyZXJUZXh0TGVuZ3RoID0g
cmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICBpbnQgZW5kID0gKCZ0ZXh0Tm9kZSA9PSBt
X2VuZENvbnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7CkBAIC01ODcsNyArNTg3LDcg
QEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgaGFuZGxlVGV4
dE5vZGVGaXJzdExldHRlcihkb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSk7
CiAKICAgICBpZiAoIW1fdGV4dFJ1biAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgJiYgIXNob3Vs
ZEhhbmRsZUZpcnN0TGV0dGVyKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVy
YXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQorICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhbV9iZWhhdmlvcnMuY29u
dGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENv
bGxhcHNlZFNwYWNlID0gdHJ1ZTsgLy8gZW50aXJlIGJsb2NrIGlzIGNvbGxhcHNlZCBzcGFjZQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dFJ1bigpCiAgICAgVGV4dCYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0Pigq
bV9ub2RlKTsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gbV9maXJzdExldHRlclRleHQgPyAqbV9m
aXJzdExldHRlclRleHQgOiAqdGV4dE5vZGUucmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIu
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZp
b3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkgeworICAgIGlmIChyZW5k
ZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFtX2Jl
aGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlzaWJp
bGl0eSkpIHsKICAgICAgICAgbV90ZXh0UnVuID0geyB9OwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtNjUxLDcgKzY1MSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmV3bGluZU9yVGFiKHJlbmRlcmVyVGV4dFtzdWJy
dW5FbmRdKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoc3VicnVuRW5kID09IHJ1bkVuZCAmJiAobV9iZWhhdmlv
ciAmIFRleHRJdGVyYXRvckJlaGF2ZXNBc0lmTm9kZXNGb2xsb3dpbmcpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHN1YnJ1bkVuZCA9PSBydW5FbmQgJiYgbV9iZWhhdmlvcnMuY29udGFpbnMoVGV4
dEl0ZXJhdG9yQmVoYXZpb3I6OkJlaGF2ZXNBc0lmTm9kZXNGb2xsb3dpbmcpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgbGFzdFNwYWNlQ29sbGFwc2VkQnlOZXh0Tm9uVGV4dFJ1biA9ICFu
ZXh0VGV4dFJ1biAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgPiBzdWJydW5FbmQgJiYgcmVuZGVy
ZXJUZXh0W3N1YnJ1bkVuZF0gPT0gJyAnOwogICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFNw
YWNlQ29sbGFwc2VkQnlOZXh0Tm9uVGV4dFJ1bikKICAgICAgICAgICAgICAgICAgICAgICAgICsr
c3VicnVuRW5kOyAvLyBydW5FbmQgc3RvcHBlZCBiZWZvcmUgbGFzdCBzcGFjZS4gSW5jcmVtZW50
IGJ5IG9uZSB0byByZXN0b3JlIHRoZSBzcGFjZS4KQEAgLTY5Niw3ICs2OTYsNyBAQCBzdGF0aWMg
aW5saW5lIFJlbmRlclRleHQqIGZpcnN0UmVuZGVyVGV4dEluRmlyc3RMZXR0ZXIoUmVuZGVyQm94
TW9kZWxPYmplY3QqIGZpcgogdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlRmlyc3RM
ZXR0ZXIoUmVuZGVyVGV4dEZyYWdtZW50JiByZW5kZXJlcikKIHsKICAgICBpZiAoYXV0byogZmly
c3RMZXR0ZXIgPSByZW5kZXJlci5maXJzdExldHRlcigpKSB7Ci0gICAgICAgIGlmIChmaXJzdExl
dHRlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1f
YmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKKyAgICAgICAg
aWYgKGZpcnN0TGV0dGVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNp
YmxlICYmICFtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jl
c1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChhdXRv
KiBmaXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZpcnN0TGV0dGVyKGZpcnN0TGV0
dGVyKSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOwpAQCAtNzE0
LDcgKzcxNCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiByZW5kZXJlciA9ICptX25vZGUtPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxl
VmlzaWJpbGl0eSkpCisgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZp
c2liaWxpdHk6OlZpc2libGUgJiYgIW1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJl
aGF2aW9yOjpJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UpIHsKQEAgLTcy
Miw3ICs3MjIsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICgobV9iZWhhdmlvciAmIFRl
eHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scykgJiYgaXM8UmVuZGVyVGV4dENvbnRyb2w+KHJl
bmRlcmVyKSkgeworICAgIGlmIChtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhh
dmlvcjo6RW50ZXJzVGV4dENvbnRyb2xzKSAmJiBpczxSZW5kZXJUZXh0Q29udHJvbD4ocmVuZGVy
ZXIpKSB7CiAgICAgICAgIGlmIChhdXRvIGlubmVyVGV4dEVsZW1lbnQgPSBkb3duY2FzdDxSZW5k
ZXJUZXh0Q29udHJvbD4ocmVuZGVyZXIpLnRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS5pbm5lclRl
eHRFbGVtZW50KCkpIHsKICAgICAgICAgICAgIG1fbm9kZSA9IGlubmVyVGV4dEVsZW1lbnQtPmNv
bnRhaW5pbmdTaGFkb3dSb290KCk7CiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUo
bV9mdWxseUNsaXBwZWRTdGFjaywgKm1fbm9kZSk7CkBAIC03MzMsNyArNzMzLDcgQEAgYm9vbCBU
ZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCiAKICAgICBtX2hhc0VtaXR0ZWQg
PSB0cnVlOwogCi0gICAgaWYgKChtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNPYmplY3RS
ZXBsYWNlbWVudENoYXJhY3RlcnMpICYmIHJlbmRlcmVyLmlzUmVwbGFjZWQoKSkgeworICAgIGlm
IChtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNPYmplY3RS
ZXBsYWNlbWVudENoYXJhY3RlcnMpICYmIHJlbmRlcmVyLmlzUmVwbGFjZWQoKSkgewogICAgICAg
ICBlbWl0Q2hhcmFjdGVyKG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAqbV9ub2RlLT5wYXJl
bnROb2RlKCksIG1fbm9kZSwgMCwgMSk7CiAgICAgICAgIC8vIERvbid0IHByb2Nlc3Mgc3VidHJl
ZXMgZm9yIGVtYmVkZGVkIG9iamVjdHMuIElmIHRoZSB0ZXh0IHRoZXJlIGlzIHJlcXVpcmVkLAog
ICAgICAgICAvLyBpdCBtdXN0IGJlIGV4cGxpY2l0bHkgYXNrZWQgYnkgc3BlY2lmeWluZyBhIHJh
bmdlIGZhbGxpbmcgaW5zaWRlIGl0cyBib3VuZGFyaWVzLgpAQCAtNzQxLDcgKzc0MSw3IEBAIGJv
b2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBpZiAobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzQ2hh
cmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSB7CisgICAgaWYgKG1fYmVoYXZpb3Jz
LmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucykpIHsKICAgICAgICAgLy8gV2Ugd2FudCByZXBsYWNlZCBlbGVtZW50
cyB0byBiZWhhdmUgbGlrZSBwdW5jdHVhdGlvbiBmb3IgYm91bmRhcnkgCiAgICAgICAgIC8vIGZp
bmRpbmcsIGFuZCB0byBzaW1wbHkgdGFrZSB1cCBzcGFjZSBmb3IgdGhlIHNlbGVjdGlvbiBwcmVz
ZXJ2YXRpb24gCiAgICAgICAgIC8vIGNvZGUgaW4gbW92ZVBhcmFncmFwaHMsIHNvIHdlIHVzZSBh
IGNvbW1hLgpAQCAtNzU0LDcgKzc1NCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBs
YWNlZEVsZW1lbnQoKQogICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IDA7CiAgICAgbV9wb3Np
dGlvbkVuZE9mZnNldCA9IDE7CiAKLSAgICBpZiAoKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JF
bWl0c0ltYWdlQWx0VGV4dCkgJiYgaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkgeworICAgIGlm
IChtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNJbWFnZUFs
dFRleHQpICYmIGlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpIHsKICAgICAgICAgU3RyaW5nIGFs
dFRleHQgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4ocmVuZGVyZXIpLmFsdFRleHQoKTsKICAgICAg
ICAgaWYgKHVuc2lnbmVkIGxlbmd0aCA9IGFsdFRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgICAg
IG1fbGFzdENoYXJhY3RlciA9IGFsdFRleHRbbGVuZ3RoIC0gMV07CkBAIC05MzEsOSArOTMxLDEx
IEBAIHN0YXRpYyBpbnQgbWF4T2Zmc2V0SW5jbHVkaW5nQ29sbGFwc2VkU3BhY2VzKE5vZGUmIG5v
ZGUpCiAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgZW1pdCBhIGNoYXJhY3RlciBhcyB3ZSBl
bnRlciBtX25vZGUgKGlmIGl0J3MgYSBjb250YWluZXIpIG9yIGFzIHdlIGhpdCBpdCAoaWYgaXQn
cyBhdG9taWMpLgogYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJlc2VudE5vZGVPZmZzZXRa
ZXJvKCkKIHsKLSAgICBpZiAoKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykgJiYgbV9ub2RlLT5yZW5kZXJlcigpICYmIG1f
bm9kZS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgCisgICAgaWYgKG1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpF
bWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpIHsKKyAgICAgICAgaWYg
KGF1dG8qIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOyByZW5kZXJlciAmJiByZW5kZXJl
ci0+aXNUYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8g
TGVhdmUgZWxlbWVudCBwb3NpdGlvbmVkIGZsdXNoIHdpdGggc3RhcnQgb2YgYSBwYXJhZ3JhcGgK
ICAgICAvLyAoZS5nLiBkbyBub3QgaW5zZXJ0IHRhYiBiZWZvcmUgYSB0YWJsZSBjZWxsIGF0IHRo
ZSBzdGFydCBvZiBhIHBhcmFncmFwaCkKICAgICBpZiAobV9sYXN0Q2hhcmFjdGVyID09ICdcbicp
CkBAIC05ODcsNyArOTg5LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJlc2VudE5v
ZGVPZmZzZXRaZXJvKCkKIAogYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZEVtaXRTcGFjZUJlZm9y
ZUFuZEFmdGVyTm9kZShOb2RlJiBub2RlKQogewotICAgIHJldHVybiBub2RlLnJlbmRlcmVyKCkg
JiYgbm9kZS5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgKG5vZGUucmVuZGVyZXIoKS0+aXNJbmxp
bmUoKSB8fCAobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgcmV0dXJuIG5vZGUucmVuZGVyZXIoKSAmJiBub2Rl
LnJlbmRlcmVyKCktPmlzVGFibGUoKSAmJiAobm9kZS5yZW5kZXJlcigpLT5pc0lubGluZSgpIHx8
IG1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOwogfQogCiB2b2lkIFRleHRJdGVyYXRvcjo6
cmVwcmVzZW50Tm9kZU9mZnNldFplcm8oKQpAQCAtMTAxNSw5ICsxMDE3LDkgQEAgdm9pZCBUZXh0
SXRlcmF0b3I6OnJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCkKIAogYm9vbCBUZXh0SXRlcmF0b3I6
OmhhbmRsZU5vblRleHROb2RlKCkKIHsKLSAgICBpZiAoc2hvdWxkRW1pdE5ld2xpbmVGb3JOb2Rl
KG1fbm9kZSwgbV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzT3JpZ2luYWxUZXh0KSkKKyAg
ICBpZiAoc2hvdWxkRW1pdE5ld2xpbmVGb3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlvcnMuY29udGFp
bnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT3JpZ2luYWxUZXh0KSkpCiAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoJ1xuJywgKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUsIDAsIDEpOwot
ICAgIGVsc2UgaWYgKChtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpICYmIG1fbm9kZS0+cmVuZGVyZXIoKSAmJiBtX25vZGUt
PnJlbmRlcmVyKCktPmlzSFIoKSkKKyAgICBlbHNlIGlmIChtX2JlaGF2aW9ycy5jb250YWlucyhU
ZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3Np
dGlvbnMpICYmIG1fbm9kZS0+cmVuZGVyZXIoKSAmJiBtX25vZGUtPnJlbmRlcmVyKCktPmlzSFIo
KSkKICAgICAgICAgZW1pdENoYXJhY3RlcignICcsICptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9u
b2RlLCAwLCAxKTsKICAgICBlbHNlCiAgICAgICAgIHJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCk7
CkBAIC0xMDQyLDcgKzEwNDQsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZXhpdE5vZGUoTm9kZSog
ZXhpdGVkTm9kZSkKICAgICAvLyB0aGUgbG9naWMgaW4gX3dlYl9hdHRyaWJ1dGVkU3RyaW5nRnJv
bVJhbmdlIG1hdGNoLiBXZSdsbCBnZXQgdGhhdCBmb3IgZnJlZSB3aGVuIHdlIHN3aXRjaCB0byB1
c2UKICAgICAvLyBUZXh0SXRlcmF0b3IgaW4gX3dlYl9hdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdl
LgogICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNTQyODQyNz4gZm9yIGFuIGV4YW1wbGUgb2Yg
aG93IHRoaXMgbWlzbWF0Y2ggd2lsbCBjYXVzZSBwcm9ibGVtcy4KLSAgICBpZiAobV9sYXN0VGV4
dE5vZGUgJiYgc2hvdWxkRW1pdE5ld2xpbmVBZnRlck5vZGUoKm1fbm9kZSwgbV9iZWhhdmlvciAm
IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkg
eworICAgIGlmIChtX2xhc3RUZXh0Tm9kZSAmJiBzaG91bGRFbWl0TmV3bGluZUFmdGVyTm9kZSgq
bV9ub2RlLCBtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKSkgewogICAgICAgICAvLyB1c2Ug
ZXh0cmEgbmV3bGluZSB0byByZXByZXNlbnQgbWFyZ2luIGJvdHRvbSwgYXMgbmVlZGVkCiAgICAg
ICAgIGJvb2wgYWRkTmV3bGluZSA9IHNob3VsZEVtaXRFeHRyYU5ld2xpbmVGb3JOb2RlKCptX25v
ZGUpOwogICAgICAgICAKQEAgLTEwODgsOCArMTA5MCw4IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpl
bWl0VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0U3Rh
cnRPCiAgICAgQVNTRVJUKHRleHRTdGFydE9mZnNldCA8PSB0ZXh0RW5kT2Zmc2V0KTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHlpZWxkcyB0aGUgd3Jvbmcgb2Zmc2V0cyB3aGVuIHRl
eHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgdHVybnMgYSBzaW5nbGUgY2hhcmFjdGVyIGludG8gdHdv
IGNoYXJhY3RlcnMuCi0gICAgU3RyaW5nIHN0cmluZyA9IChtX2JlaGF2aW9yICYgVGV4dEl0ZXJh
dG9yRW1pdHNPcmlnaW5hbFRleHQpID8gcmVuZGVyZXIub3JpZ2luYWxUZXh0KCkKLSAgICAgICAg
OiAoKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5n
KSA/IHJlbmRlcmVyLnRleHRXaXRob3V0Q29udmVydGluZ0JhY2tzbGFzaFRvWWVuU3ltYm9sKCkg
OiByZW5kZXJlci50ZXh0KCkpOworICAgIFN0cmluZyBzdHJpbmcgPSBtX2JlaGF2aW9ycy5jb250
YWlucyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNPcmlnaW5hbFRleHQpID8gcmVuZGVyZXIu
b3JpZ2luYWxUZXh0KCkKKyAgICAgICAgOiAobV9iZWhhdmlvcnMuY29udGFpbnMoVGV4dEl0ZXJh
dG9yQmVoYXZpb3I6OkVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcpID8gcmVuZGVyZXIudGV4
dFdpdGhvdXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2woKSA6IHJlbmRlcmVyLnRleHQo
KSk7CiAKICAgICBBU1NFUlQoc3RyaW5nLmxlbmd0aCgpID49IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih0ZXh0RW5kT2Zmc2V0KSk7CiAKQEAgLTEzMjksNyArMTMzMSw3IEBAIGJvb2wgU2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlTm9uVGV4dE5vZGUoKQogeyAgICAKICAgICAv
LyBXZSBjYW4gdXNlIGEgbGluZWZlZWQgaW4gcGxhY2Ugb2YgYSB0YWIgYmVjYXVzZSB0aGlzIHNp
bXBsZSBpdGVyYXRvciBpcyBvbmx5IHVzZWQgdG8KICAgICAvLyBmaW5kIGJvdW5kYXJpZXMsIG5v
dCBhY3R1YWwgY29udGVudC4gQSBsaW5lZmVlZCBicmVha3Mgd29yZHMsIHNlbnRlbmNlcywgYW5k
IHBhcmFncmFwaHMuCi0gICAgaWYgKHNob3VsZEVtaXROZXdsaW5lRm9yTm9kZShtX25vZGUsIG1f
YmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c09yaWdpbmFsVGV4dCkgfHwgc2hvdWxkRW1pdE5l
d2xpbmVBZnRlck5vZGUoKm1fbm9kZSkgfHwgc2hvdWxkRW1pdFRhYkJlZm9yZU5vZGUoKm1fbm9k
ZSkpIHsKKyAgICBpZiAoc2hvdWxkRW1pdE5ld2xpbmVGb3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlv
cnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT3JpZ2luYWxUZXh0KSkgfHwg
c2hvdWxkRW1pdE5ld2xpbmVBZnRlck5vZGUoKm1fbm9kZSkgfHwgc2hvdWxkRW1pdFRhYkJlZm9y
ZU5vZGUoKm1fbm9kZSkpIHsKICAgICAgICAgaWYgKG1fbGFzdENoYXJhY3RlciAhPSAnXG4nKSB7
CiAgICAgICAgICAgICAvLyBDb3JyZXNwb25kcyB0byB0aGUgc2FtZSBjaGVjayBpbiBUZXh0SXRl
cmF0b3I6OmV4aXROb2RlLgogICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBtX25vZGUtPmNv
bXB1dGVOb2RlSW5kZXgoKTsKQEAgLTEzNDMsNyArMTM0NSw3IEBAIGJvb2wgU2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlTm9uVGV4dE5vZGUoKQogCiB2b2lkIFNpbXBsaWZp
ZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmV4aXROb2RlKCkKIHsKLSAgICBpZiAoc2hvdWxkRW1p
dE5ld2xpbmVGb3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzT3Jp
Z2luYWxUZXh0KSB8fCBzaG91bGRFbWl0TmV3bGluZUJlZm9yZU5vZGUoKm1fbm9kZSkgfHwgc2hv
dWxkRW1pdFRhYkJlZm9yZU5vZGUoKm1fbm9kZSkpIHsKKyAgICBpZiAoc2hvdWxkRW1pdE5ld2xp
bmVGb3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlvcnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZp
b3I6OkVtaXRzT3JpZ2luYWxUZXh0KSkgfHwgc2hvdWxkRW1pdE5ld2xpbmVCZWZvcmVOb2RlKCpt
X25vZGUpIHx8IHNob3VsZEVtaXRUYWJCZWZvcmVOb2RlKCptX25vZGUpKSB7CiAgICAgICAgIC8v
IFRoZSBzdGFydCBvZiB0aGlzIGVtaXR0ZWQgcmFuZ2UgaXMgd3JvbmcuIEVuc3VyaW5nIGNvcnJl
Y3RuZXNzIHdvdWxkIHJlcXVpcmUKICAgICAgICAgLy8gVmlzaWJsZVBvc2l0aW9ucyBhbmQgc28g
d291bGQgYmUgc2xvdy4gcHJldmlvdXNCb3VuZGFyeSBleHBlY3RzIHRoaXMuCiAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoJ1xuJywgKm1fbm9kZSwgMCwgMCk7CkBAIC0xMzgwLDggKzEzODIsOCBAQCBT
aW1wbGVSYW5nZSBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0
CiAKIC8vIC0tLS0tLS0tCiAKLUNoYXJhY3Rlckl0ZXJhdG9yOjpDaGFyYWN0ZXJJdGVyYXRvcihj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQot
ICAgIDogbV91bmRlcmx5aW5nSXRlcmF0b3IocmFuZ2UsIGJlaGF2aW9yKQorQ2hhcmFjdGVySXRl
cmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykKKyAgICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKHJh
bmdlLCBiZWhhdmlvcnMpCiB7CiAgICAgd2hpbGUgKCFhdEVuZCgpICYmICFtX3VuZGVybHlpbmdJ
dGVyYXRvci50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIG1fdW5kZXJseWluZ0l0ZXJhdG9yLmFk
dmFuY2UoKTsKQEAgLTIzMjgsNyArMjMzMCw3IEBAIHNpemVfdCBTZWFyY2hCdWZmZXI6Omxlbmd0
aCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tCiAKLXVpbnQ2NF90IGNoYXJhY3RlckNvdW50KGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCit1aW50
NjRfdCBjaGFyYWN0ZXJDb3VudChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRv
ckJlaGF2aW9ycyBiZWhhdmlvcnMpCiB7CiAgICAgYXV0byBhZGp1c3RlZFJhbmdlID0gcmFuZ2U7
CiAgICAgYXV0byBvcmRlcmluZyA9IHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KHJhbmdlLnN0YXJ0
LCByYW5nZS5lbmQpOwpAQCAtMjMzNyw3ICsyMzM5LDcgQEAgdWludDY0X3QgY2hhcmFjdGVyQ291
bnQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlv
cikKICAgICBlbHNlIGlmICghaXNfbHQob3JkZXJpbmcpKQogICAgICAgICByZXR1cm4gMDsKICAg
ICB1aW50NjRfdCBsZW5ndGggPSAwOwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KGFkanVzdGVk
UmFuZ2UsIGJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKKyAgICBmb3IgKFRl
eHRJdGVyYXRvciBpdChhZGp1c3RlZFJhbmdlLCBiZWhhdmlvcnMpOyAhaXQuYXRFbmQoKTsgaXQu
YWR2YW5jZSgpKQogICAgICAgICBsZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwogICAgIHJl
dHVybiBsZW5ndGg7CiB9CkBAIC0yMzU2LDEyICsyMzU4LDEyIEBAIGNvbnN0ZXhwciB1aW50NjRf
dCBjbGFtcGVkQWRkKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCiAgICAgcmV0dXJuIHN1bSA+PSBh
ID8gc3VtIDogc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOwogfQogCi1TaW1w
bGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBD
aGFyYWN0ZXJSYW5nZSByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCitTaW1w
bGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBD
aGFyYWN0ZXJSYW5nZSByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykKIHsK
ICAgICBhdXRvIHJlc3VsdFJhbmdlID0gU2ltcGxlUmFuZ2UgeyByYW5nZS5sb2NhdGlvbiA/IHNj
b3BlLmVuZCA6IHNjb3BlLnN0YXJ0LCAocmFuZ2UubG9jYXRpb24gfHwgcmFuZ2UubGVuZ3RoKSA/
IHNjb3BlLmVuZCA6IHNjb3BlLnN0YXJ0IH07CiAgICAgYXV0byByYW5nZUVuZCA9IGNsYW1wZWRB
ZGQocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7CiAgICAgdWludDY0X3QgbG9jYXRpb24g
PSAwOwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHNjb3BlLCBiZWhhdmlvcik7ICFpdC5hdEVu
ZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzY29wZSwgYmVo
YXZpb3JzKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGF1dG8gdGV4dFJ1blJhbmdlID0g
aXQucmFuZ2UoKTsKIApAQCAtMjQwOCwxNiArMjQxMCwxNiBAQCBTaW1wbGVSYW5nZSByZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJSYW5nZSBy
YW5nZQogCiAvLyAtLS0tLS0tLQogCi1ib29sIGhhc0FueVBsYWluVGV4dChjb25zdCBTaW1wbGVS
YW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQorYm9vbCBoYXNBbnlQ
bGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvcnMg
YmVoYXZpb3JzKQogewotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yIHsgcmFuZ2UsIGJl
aGF2aW9yIH07ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICBm
b3IgKFRleHRJdGVyYXRvciBpdGVyYXRvciB7IHJhbmdlLCBiZWhhdmlvcnMgfTsgIWl0ZXJhdG9y
LmF0RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2UoKSkgewogICAgICAgICBpZiAoIWl0ZXJhdG9yLnRl
eHQoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0
cmluZykKK1N0cmluZyBwbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRl
cmF0b3JCZWhhdmlvcnMgZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZykKIHsK
ICAgICAvLyBUaGUgaW5pdGlhbCBidWZmZXIgc2l6ZSBjYW4gYmUgY3JpdGljYWwgZm9yIHBlcmZv
cm1hbmNlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODExOTIKICAg
ICBjb25zdGV4cHIgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5ID0gMSA8PCAxNTsKQEAgLTI0Mjcs
MTEgKzI0MjksMTEgQEAgU3RyaW5nIHBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2Us
IFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvciwKICAgICB1bnNpZ25lZCBidWZm
ZXJMZW5ndGggPSAwOwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLnJl
c2VydmVDYXBhY2l0eShpbml0aWFsQ2FwYWNpdHkpOwotICAgIFRleHRJdGVyYXRvckJlaGF2aW9y
IGJlaGF2aW9yID0gZGVmYXVsdEJlaGF2aW9yOworICAgIFRleHRJdGVyYXRvckJlaGF2aW9ycyBi
ZWhhdmlvcnMgPSBkZWZhdWx0QmVoYXZpb3I7CiAgICAgaWYgKCFpc0Rpc3BsYXlTdHJpbmcpCi0g
ICAgICAgIGJlaGF2aW9yID0gc3RhdGljX2Nhc3Q8VGV4dEl0ZXJhdG9yQmVoYXZpb3I+KGJlaGF2
aW9yIHwgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGluZyk7CisgICAgICAg
IGJlaGF2aW9ycy5hZGQoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzVGV4dHNXaXRob3V0VHJh
bnNjb2RpbmcpOwogCi0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UsIGJlaGF2aW9yKTsg
IWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJh
bmdlLCBiZWhhdmlvcnMpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIGl0
LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7CiAgICAgICAgIGJ1ZmZlckxlbmd0
aCArPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgfQpAQCAtMjQ0NywxNiArMjQ0OSwxNiBAQCBT
dHJpbmcgcGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgZGVmYXVsdEJlaGF2aW9yLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBw
bGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBU
ZXh0SXRlcmF0b3JCZWhhdmlvciBkZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5n
KQorU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9ycyBkZWZhdWx0QmVoYXZpb3JzLCBib29sIGlz
RGlzcGxheVN0cmluZykKIHsKLSAgICByZXR1cm4gcGxhaW5UZXh0KHJhbmdlLCBkZWZhdWx0QmVo
YXZpb3IsIGlzRGlzcGxheVN0cmluZykucmVwbGFjZShub0JyZWFrU3BhY2UsICcgJyk7CisgICAg
cmV0dXJuIHBsYWluVGV4dChyYW5nZSwgZGVmYXVsdEJlaGF2aW9ycywgaXNEaXNwbGF5U3RyaW5n
KS5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsKIH0KIAotc3RhdGljIFRleHRJdGVyYXRvckJl
aGF2aW9yIGZpbmRJdGVyYXRvck9wdGlvbnMoRmluZE9wdGlvbnMgb3B0aW9ucykKK3N0YXRpYyBU
ZXh0SXRlcmF0b3JCZWhhdmlvcnMgZmluZEl0ZXJhdG9yT3B0aW9ucyhGaW5kT3B0aW9ucyBvcHRp
b25zKQogewotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIGl0ZXJhdG9yT3B0aW9ucyA9IFRleHRJ
dGVyYXRvckVudGVyc1RleHRDb250cm9scyB8IFRleHRJdGVyYXRvckNsaXBzVG9GcmFtZUFuY2Vz
dG9yczsKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgaXRlcmF0b3JPcHRpb25zIHsgVGV4dEl0
ZXJhdG9yQmVoYXZpb3I6OkVudGVyc1RleHRDb250cm9scywgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6
OkNsaXBzVG9GcmFtZUFuY2VzdG9ycyB9OwogICAgIGlmICghb3B0aW9ucy5jb250YWlucyhEb05v
dFRyYXZlcnNlRmxhdFRyZWUpKQotICAgICAgICBpdGVyYXRvck9wdGlvbnMgfD0gVGV4dEl0ZXJh
dG9yVHJhdmVyc2VzRmxhdFRyZWU7CisgICAgICAgIGl0ZXJhdG9yT3B0aW9ucy5hZGQoVGV4dEl0
ZXJhdG9yQmVoYXZpb3I6OlRyYXZlcnNlc0ZsYXRUcmVlKTsKICAgICByZXR1cm4gaXRlcmF0b3JP
cHRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAyMmM0
YjZlOTJiYzE0MGE3MTMyMTk3YWYwMjRhN2RhM2NlMGYzMzdkLi5jNzE2MjI1Y2YwZDIwOGFlYmU4
ZGE5NjA0NTNkNzFlMTJkODg3ZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKQEAgLTM3LDE2ICszNywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJU
ZXh0RnJhZ21lbnQ7CiAKIC8vIENoYXJhY3RlciByYW5nZXMgYmFzZWQgb24gY2hhcmFjdGVycyBm
cm9tIHRoZSB0ZXh0IGl0ZXJhdG9yLgotV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgY2hhcmFjdGVy
Q291bnQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVy
YXRvckRlZmF1bHRCZWhhdmlvcik7Ci1DaGFyYWN0ZXJSYW5nZSBjaGFyYWN0ZXJSYW5nZShjb25z
dCBCb3VuZGFyeVBvaW50JiBzdGFydCwgY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7Ci1DaGFyYWN0ZXJSYW5nZSBj
aGFyYWN0ZXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc2NvcGUsIGNvbnN0IFNpbXBsZVJhbmdl
JiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwot
Qm91bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2Um
IHNjb3BlLCB1aW50NjRfdCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZh
dWx0QmVoYXZpb3IpOwotV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3Rl
clJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzY29wZSwgQ2hhcmFjdGVyUmFuZ2UsIFRleHRJdGVy
YXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKK1dFQkNPUkVfRVhQ
T1JUIHVpbnQ2NF90IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3JzID0geyB9KTsKK0NoYXJhY3RlclJhbmdlIGNoYXJhY3RlclJhbmdlKGNvbnN0
IEJvdW5kYXJ5UG9pbnQmIHN0YXJ0LCBjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJl
aGF2aW9ycyA9IHsgfSk7CitDaGFyYWN0ZXJSYW5nZSBjaGFyYWN0ZXJSYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYgc2NvcGUsIGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Jz
ID0geyB9KTsKK0JvdW5kYXJ5UG9pbnQgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKGNvbnN0IFNp
bXBsZVJhbmdlJiBzY29wZSwgdWludDY0X3QsIFRleHRJdGVyYXRvckJlaGF2aW9ycyA9IHsgfSk7
CitXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3Qg
U2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJSYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Jz
ID0geyB9KTsKIAogLy8gVGV4dCBmcm9tIHRoZSB0ZXh0IGl0ZXJhdG9yLgotV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2
aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9
IGZhbHNlKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0IFNpbXBs
ZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZp
b3IpOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFj
ZShjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9y
RGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKK1dFQkNPUkVf
RVhQT1JUIFN0cmluZyBwbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvcnMgPSB7IH0sIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCBoYXNBbnlQbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0
b3JCZWhhdmlvcnMgPSB7IH0pOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxh
Y2luZ05vQnJlYWtTcGFjZShjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9y
cyA9IHsgfSwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CiAKIC8vIEZpbmQgd2l0aGlu
IHRoZSBkb2N1bWVudCwgYmFzZWQgb24gdGhlIHRleHQgZnJvbSB0aGUgdGV4dCBpdGVyYXRvci4K
IFNpbXBsZVJhbmdlIGZpbmRQbGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucyk7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiBjbGFzcyBUZXh0
SXRlcmF0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFRleHRJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYsIFRl
eHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBUZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmLCBU
ZXh0SXRlcmF0b3JCZWhhdmlvcnMgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIH5UZXh0SXRl
cmF0b3IoKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlvbk5v
ZGU7IH0KQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogYmFzZU5vZGVG
b3JFbWl0dGluZ05ld0xpbmUoKSBjb25zdDsKIAotICAgIGNvbnN0IFRleHRJdGVyYXRvckJlaGF2
aW9yIG1fYmVoYXZpb3IgeyBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IgfTsKKyAgICBjb25z
dCBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgbV9iZWhhdmlvcnM7CiAKICAgICAvLyBDdXJyZW50IHBv
c2l0aW9uLCBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0dXJuZWQsIGJ1dCBw
b3NpdGlvbiBhcyB3ZSB3YWxrIHRocm91Z2ggdGhlIERPTSB0cmVlLgogICAgIE5vZGUqIG1fbm9k
ZSB7IG51bGxwdHIgfTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZW1p
dENoYXJhY3RlcihVQ2hhciwgTm9kZSYsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7
CiAgICAgYm9vbCBhZHZhbmNlUmVzcGVjdGluZ1JhbmdlKE5vZGUqKTsKIAotICAgIGNvbnN0IFRl
eHRJdGVyYXRvckJlaGF2aW9yIG1fYmVoYXZpb3IgeyBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZp
b3IgfTsKKyAgICBjb25zdCBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgbV9iZWhhdmlvcnM7CiAKICAg
ICAvLyBDdXJyZW50IHBvc2l0aW9uLCBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHRleHQgYmVpbmcg
cmV0dXJuZWQsIGJ1dCBwb3NpdGlvbiBhcyB3ZSB3YWxrIHRocm91Z2ggdGhlIERPTSB0cmVlLgog
ICAgIE5vZGUqIG1fbm9kZSB7IG51bGxwdHIgfTsKQEAgLTIyOSw3ICsyMjksNyBAQCBwcml2YXRl
OgogLy8gY2hhcmFjdGVyIGF0IGEgdGltZSwgb3IgZmFzdGVyLCBhcyBuZWVkZWQuIFVzZWZ1bCBm
b3Igc2VhcmNoaW5nLgogY2xhc3MgQ2hhcmFjdGVySXRlcmF0b3IgewogcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdl
JiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBs
ZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzID0geyB9KTsKICAgICAKICAgICBib29sIGF0
RW5kKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nSXRlcmF0b3IuYXRFbmQoKTsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZShpbnQgbnVtQ2hhcmFjdGVycyk7CkBAIC0yODks
MTkgKzI4OSwxOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRMb29rQWhlYWQgeyB0cnVlIH07
CiB9OwogCi1pbmxpbmUgQ2hhcmFjdGVyUmFuZ2UgY2hhcmFjdGVyUmFuZ2UoY29uc3QgQm91bmRh
cnlQb2ludCYgc3RhcnQsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgYmVoYXZpb3IpCitpbmxpbmUgQ2hhcmFjdGVyUmFuZ2UgY2hhcmFjdGVyUmFuZ2UoY29u
c3QgQm91bmRhcnlQb2ludCYgc3RhcnQsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykKIHsKLSAgICByZXR1cm4geyBjaGFyYWN0ZXJDb3Vu
dCh7IHN0YXJ0LCByYW5nZS5zdGFydCB9LCBiZWhhdmlvciksIGNoYXJhY3RlckNvdW50KHJhbmdl
LCBiZWhhdmlvcikgfTsKKyAgICByZXR1cm4geyBjaGFyYWN0ZXJDb3VudCh7IHN0YXJ0LCByYW5n
ZS5zdGFydCB9LCBiZWhhdmlvcnMpLCBjaGFyYWN0ZXJDb3VudChyYW5nZSwgYmVoYXZpb3JzKSB9
OwogfQogCi1pbmxpbmUgQ2hhcmFjdGVyUmFuZ2UgY2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmIHNjb3BlLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2
aW9yIGJlaGF2aW9yKQoraW5saW5lIENoYXJhY3RlclJhbmdlIGNoYXJhY3RlclJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiBzY29wZSwgY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0
b3JCZWhhdmlvcnMgYmVoYXZpb3JzKQogewotICAgIHJldHVybiBjaGFyYWN0ZXJSYW5nZShzY29w
ZS5zdGFydCwgcmFuZ2UsIGJlaGF2aW9yKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyUmFuZ2Uoc2Nv
cGUuc3RhcnQsIHJhbmdlLCBiZWhhdmlvcnMpOwogfQogCi1pbmxpbmUgQm91bmRhcnlQb2ludCBy
ZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCB1aW50NjRf
dCBsb2NhdGlvbiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCitpbmxpbmUgQm91bmRh
cnlQb2ludCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3Bl
LCB1aW50NjRfdCBsb2NhdGlvbiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykKIHsK
LSAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNjb3BlLCB7IGxvY2F0aW9uLCAwIH0s
IGJlaGF2aW9yKS5zdGFydDsKKyAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNjb3Bl
LCB7IGxvY2F0aW9uLCAwIH0sIGJlaGF2aW9ycykuc3RhcnQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
QmVoYXZpb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3Iu
aAppbmRleCBjMDFmOTdmODJkMjgxZDE2YjhhNjRkOWJiNDRmZjhhYjY4NzA2YTczLi5kNmE5NWZm
N2UwZDJhYzNmOWJhOTlkMzQxNGNkMjY4N2MzZjZkNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oCkBAIC0yNSw0MiArMjUsNDIgQEAKIAogI3By
YWdtYSBvbmNlCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+CiAKLWVudW0gVGV4dEl0ZXJhdG9yQmVoYXZpb3JGbGFnIHsKLSAgICBUZXh0SXRlcmF0b3JE
ZWZhdWx0QmVoYXZpb3IgPSAwLAorbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNsYXNzIFRl
eHRJdGVyYXRvckJlaGF2aW9yIDogdWludDE2X3QgewogICAgIC8vIFVzZWQgYnkgc2VsZWN0aW9u
IHByZXNlcnZhdGlvbiBjb2RlLiBUaGVyZSBzaG91bGQgYmUgb25lIGNoYXJhY3RlciBlbWl0dGVk
IGJldHdlZW4gZXZlcnkgVmlzaWJsZVBvc2l0aW9uCiAgICAgLy8gaW4gdGhlIFJhbmdlIHVzZWQg
dG8gY3JlYXRlIHRoZSBUZXh0SXRlcmF0b3IuCiAgICAgLy8gRklYTUUgPHJkYXI6Ly9wcm9ibGVt
LzYwMjg4MTg+OiBUaGlzIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcGhhc2Vk
IG91dCB3aGVuIHdlIHJld3JpdGUKICAgICAvLyBtb3ZlUGFyYWdyYXBocyB0byBub3QgY2xvbmUv
ZGVzdHJveSBtb3ZlZCBjb250ZW50LgotICAgIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zID0gMSA8PCAwLAorICAgIEVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zID0gMSA8PCAwLAogCi0gICAgVGV4dEl0ZXJhdG9yRW50
ZXJzVGV4dENvbnRyb2xzID0gMSA8PCAxLAorICAgIEVudGVyc1RleHRDb250cm9scyA9IDEgPDwg
MSwKIAogICAgIC8vIFVzZWQgd2hlbiB3ZSB3YW50IHRleHQgZm9yIGNvcHlpbmcsIHBhc3Rpbmcs
IGFuZCB0cmFuc3Bvc2luZy4KLSAgICBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5z
Y29kaW5nID0gMSA8PCAyLAorICAgIEVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcgPSAxIDw8
IDIsCiAKICAgICAvLyBVc2VkIHdoZW4gdGhlIHZpc2liaWxpdHkgb2YgdGhlIHN0eWxlIHNob3Vs
ZCBub3QgYWZmZWN0IHRleHQgZ2F0aGVyaW5nLgotICAgIFRleHRJdGVyYXRvcklnbm9yZXNTdHls
ZVZpc2liaWxpdHkgPSAxIDw8IDMsCisgICAgSWdub3Jlc1N0eWxlVmlzaWJpbGl0eSA9IDEgPDwg
MywKIAogICAgIC8vIFVzZWQgd2hlbiBlbWl0dGluZyB0aGUgc3BlY2lhbCAweEZGRkMgY2hhcmFj
dGVyIGlzIHJlcXVpcmVkLiBDaGlsZHJlbiBmb3IgcmVwbGFjZWQgb2JqZWN0cyB3aWxsIGJlIGln
bm9yZWQuCi0gICAgVGV4dEl0ZXJhdG9yRW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMg
PSAxIDw8IDQsCisgICAgRW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMgPSAxIDw8IDQs
CiAKICAgICAvLyBVc2VkIHdoZW4gcGFzdGluZyBpbnNpZGUgcGFzc3dvcmQgZmllbGQuCi0gICAg
VGV4dEl0ZXJhdG9yRW1pdHNPcmlnaW5hbFRleHQgPSAxIDw8IDUsCisgICAgRW1pdHNPcmlnaW5h
bFRleHQgPSAxIDw8IDUsCiAKLSAgICBUZXh0SXRlcmF0b3JFbWl0c0ltYWdlQWx0VGV4dCA9IDEg
PDwgNiwKKyAgICBFbWl0c0ltYWdlQWx0VGV4dCA9IDEgPDwgNiwKIAotICAgIFRleHRJdGVyYXRv
ckJlaGF2ZXNBc0lmTm9kZXNGb2xsb3dpbmcgPSAxIDw8IDcsCisgICAgQmVoYXZlc0FzSWZOb2Rl
c0ZvbGxvd2luZyA9IDEgPDwgNywKIAogICAgIC8vIE1ha2VzIHZpc2libGl0eSB0ZXN0IHRha2Ug
aW50byBhY2NvdW50IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmcmFtZS4KLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgcHJvYmFibHkgYmUgYWx3YXlzIG9uIHVubGVzcyBUZXh0SXRlcmF0b3JJZ25v
cmVzU3R5bGVWaXNpYmlsaXR5IGlzIHNldC4KLSAgICBUZXh0SXRlcmF0b3JDbGlwc1RvRnJhbWVB
bmNlc3RvcnMgPSAxIDw8IDgsCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJl
IGFsd2F5cyBvbiB1bmxlc3MgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2li
aWxpdHkgaXMgc2V0LgorICAgIENsaXBzVG9GcmFtZUFuY2VzdG9ycyA9IDEgPDwgOCwKIAotICAg
IFRleHRJdGVyYXRvclRyYXZlcnNlc0ZsYXRUcmVlID0gMSA8PCA5LAorICAgIFRyYXZlcnNlc0Zs
YXRUcmVlID0gMSA8PCA5LAogfTsKIAotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBUZXh0SXRlcmF0
b3JCZWhhdmlvcjsKK3VzaW5nIFRleHRJdGVyYXRvckJlaGF2aW9ycyA9IE9wdGlvblNldDxUZXh0
SXRlcmF0b3JCZWhhdmlvcj47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5k
ZXggNGFjMzdjOTE0OGMzZTNiNWRkYzdkMDI0ZDhkNzQ2ZTZkMDNhMTBhZC4uYjcyMTg5NjU5ZDI2
ZmFiMWVmMzUzZWIyOTNkYmI2NDQ2ZTNiZGU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE1NSw3ICsxNTUs
NyBAQCBzdGF0aWMgYm9vbCBpc05vdFNwYWNlKFVDaGFyIGNoYXJhY3RlcikKIGNsYXNzIFBhcmFn
cmFwaENvbnRlbnRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgUGFyYWdyYXBoQ29udGVudEl0ZXJh
dG9yKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKLSAgICAgICAg
OiBtX2l0ZXJhdG9yKCptYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCksIFRleHRJdGVyYXRvckln
bm9yZXNTdHlsZVZpc2liaWxpdHkpCisgICAgICAgIDogbV9pdGVyYXRvcigqbWFrZVNpbXBsZVJh
bmdlKHN0YXJ0LCBlbmQpLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlzaWJp
bGl0eSkKICAgICAgICAgLCBtX25vZGUoc3RhcnQuZmlyc3ROb2RlKCkpCiAgICAgICAgICwgbV9w
YXN0RW5kTm9kZShlbmQuZmlyc3ROb2RlKCkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggNTAyNWNhZjkxMWUxYTU4MWZkYWYzZGJmZWUz
NmI0MTNiOTg3NWUxZC4uNDEyMDUwYzgzYjNkNGYyOTIxZDQ2ZmM3NDA3OTA2ZTdlOGI3ZmUzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBAIC0yMzMs
NyArMjMzLDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjphcHBlbmRUcmFpbGluZ1doaXRlc3Bh
Y2UoKQogICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIENoYXJhY3Rlckl0
ZXJhdG9yIGNoYXJJdCgqbWFrZVNpbXBsZVJhbmdlKG1fZW5kLCBtYWtlQm91bmRhcnlQb2ludEFm
dGVyTm9kZUNvbnRlbnRzKCpzY29wZSkpLCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3
ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CisgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2hhckl0KCpt
YWtlU2ltcGxlUmFuZ2UobV9lbmQsIG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlQ29udGVudHMo
KnNjb3BlKSksIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucyk7CiAgICAgZm9yICg7ICFjaGFySXQuYXRFbmQoKSAmJiBjaGFySXQu
dGV4dCgpLmxlbmd0aCgpOyBjaGFySXQuYWR2YW5jZSgxKSkgewogICAgICAgICBVQ2hhciBjID0g
Y2hhckl0LnRleHQoKVswXTsKICAgICAgICAgaWYgKCghaXNTcGFjZU9yTmV3bGluZShjKSAmJiBj
ICE9IG5vQnJlYWtTcGFjZSkgfHwgYyA9PSAnXG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlVW5pdHMuY3BwCmluZGV4IDkzZjNmNmQ0YWExZTk3NjIzMjFlYTE1MDk4ODIzMzQ3N2QwZTc0
ZWQuLjgyMWQ0M2RiZDdmMWQwNmE2ZjkyMjVmMTBhYzgxZmMwMjY0MmYyZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTYwMSwxNCArNjAxLDE0IEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywg
Qm91bmRhcnlTZWFyY2hGdW5jCiAgICAgaWYgKCFzZWFyY2hSYW5nZSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIFRleHRJdGVyYXRvciBpdCgqc2VhcmNoUmFuZ2UsIFRleHRJdGVyYXRvckVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKKyAgICBUZXh0SXRlcmF0
b3IgaXQoKnNlYXJjaFJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJz
QmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogICAgIHVuc2lnbmVkIG5leHQgPSBmb3J3YXJk
U2VhcmNoRm9yQm91bmRhcnlXaXRoVGV4dEl0ZXJhdG9yKGl0LCBzdHJpbmcsIHByZWZpeExlbmd0
aCwgc2VhcmNoRnVuY3Rpb24pOwogICAgIAogICAgIGlmIChpdC5hdEVuZCgpICYmIG5leHQgPT0g
c3RyaW5nLnNpemUoKSkKICAgICAgICAgcG9zID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlv
bihzZWFyY2hSYW5nZS0+ZW5kKTsKICAgICBlbHNlIGlmIChuZXh0ID4gcHJlZml4TGVuZ3RoKSB7
CiAgICAgICAgIC8vIFVzZSB0aGUgY2hhcmFjdGVyIGl0ZXJhdG9yIHRvIHRyYW5zbGF0ZSB0aGUg
bmV4dCB2YWx1ZSBpbnRvIGEgRE9NIHBvc2l0aW9uLgotICAgICAgICBDaGFyYWN0ZXJJdGVyYXRv
ciBjaGFySXQoKnNlYXJjaFJhbmdlLCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucyk7CisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNoYXJJdCgq
c2VhcmNoUmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAgICAgICAgIGNoYXJJdC5hZHZhbmNlKG5leHQgLSBwcmVm
aXhMZW5ndGggLSAxKTsKICAgICAgICAgaWYgKGNoYXJJdC5hdEVuZCgpKQogICAgICAgICAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA2NDAzMGViODdiZjk1
MWMwYmI3MTVkOTQ4YzQ5YzRiODFiZTE4ZjQ0Li5lNWM2OTQ4ZGI3OGQ3YWE2ZWM3NTFlZjFlMGY2
ZDcyMTNmYjZlOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC00NTUsNyArNDU1
LDcgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChTdHJpbmdCdWls
ZGVyJiBvdXQsIGNvbnN0IFRleHQmIHRleHQpCiAgICAgCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNj
dW11bGF0b3I6OnJlbmRlcmVkVGV4dFJlc3BlY3RpbmdSYW5nZShjb25zdCBUZXh0JiB0ZXh0KQog
ewotICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVs
dEJlaGF2aW9yOworICAgIFRleHRJdGVyYXRvckJlaGF2aW9ycyBiZWhhdmlvcnM7CiAgICAgUG9z
aXRpb24gc3RhcnQgPSAmdGV4dCA9PSBtX3N0YXJ0LmNvbnRhaW5lck5vZGUoKSA/IG1fc3RhcnQg
OiBmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbnN0X2Nhc3Q8VGV4dCo+KCZ0ZXh0KSk7CiAgICAgUG9z
aXRpb24gZW5kOwogICAgIGlmICgmdGV4dCA9PSBtX2VuZC5jb250YWluZXJOb2RlKCkpCkBAIC00
NjMsMTEgKzQ2MywxMSBAQCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnJlbmRlcmVk
VGV4dFJlc3BlY3RpbmdSYW5nZShjb25zdCBUZXh0JiB0ZXh0KQogICAgIGVsc2UgewogICAgICAg
ICBlbmQgPSBsYXN0UG9zaXRpb25Jbk5vZGUoY29uc3RfY2FzdDxUZXh0Kj4oJnRleHQpKTsKICAg
ICAgICAgaWYgKCFtX2VuZC5pc051bGwoKSkKLSAgICAgICAgICAgIGJlaGF2aW9yID0gVGV4dEl0
ZXJhdG9yQmVoYXZlc0FzSWZOb2Rlc0ZvbGxvd2luZzsKKyAgICAgICAgICAgIGJlaGF2aW9ycy5h
ZGQoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkJlaGF2ZXNBc0lmTm9kZXNGb2xsb3dpbmcpOwogICAg
IH0KIAogICAgIGF1dG8gcmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCk7Ci0gICAg
cmV0dXJuIHJhbmdlID8gcGxhaW5UZXh0KCpyYW5nZSwgYmVoYXZpb3IpIDogZW1wdHlTdHJpbmco
KTsKKyAgICByZXR1cm4gcmFuZ2UgPyBwbGFpblRleHQoKnJhbmdlLCBiZWhhdmlvcnMpIDogZW1w
dHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0ZXh0Q29u
dGVudFJlc3BlY3RpbmdSYW5nZShjb25zdCBUZXh0JiB0ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCmluZGV4IDYzNTY4MjViMmU2NzhjMDM0ZjZlMGY4MDg5YjIyMDBhODM5MjZm
OTguLjhmNmUxNDM0MDM5YWU0NjQyMzU0YWJjOGQ1Y2E1ZTM1OTJiNmY4NzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBzdGF0aWMgdWludDY0
X3QgdGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVu
ZCkKICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0LCBlbmQpOwogICAgIGlm
ICghcmFuZ2UpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjaGFyYWN0ZXJDb3VudCgq
cmFuZ2UsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyQ291bnQoKnJhbmdlLCBUZXh0SXRlcmF0b3JCZWhh
dmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogfQogCiBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IuY3BwCmluZGV4IDNmZGRlYjgwNDVlMmI4OTY1ZDg4Njc0ZmM2YTYzMGUzZDI3MjYx
ODcuLmNkZjUzZjc0NGYwYWVhOWM4Yzk0ZGI4ZTU0NjNjZDdjMTEzNGUwYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RkOjpvcHRpb25h
bDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
Ojpjb21wdXRlVGUKICAgICB1bnNpZ25lZCBudW1iZXJPZkl0ZXJhdGlvbnMgPSAwOwogICAgIHVu
c2lnbmVkIHRvdGFsU2FtcGxlZFRleHRMZW5ndGggPSAwOwogCi0gICAgZm9yIChUZXh0SXRlcmF0
b3IgZG9jdW1lbnRUZXh0SXRlcmF0b3IgeyBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
KmRvY3VtZW50KSwgVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xzIH07ICFkb2N1bWVudFRl
eHRJdGVyYXRvci5hdEVuZCgpOyBkb2N1bWVudFRleHRJdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAg
ICBmb3IgKFRleHRJdGVyYXRvciBkb2N1bWVudFRleHRJdGVyYXRvciB7IG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqZG9jdW1lbnQpLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW50ZXJz
VGV4dENvbnRyb2xzIH07ICFkb2N1bWVudFRleHRJdGVyYXRvci5hdEVuZCgpOyBkb2N1bWVudFRl
eHRJdGVyYXRvci5hZHZhbmNlKCkpIHsKICAgICAgICAgaWYgKCsrbnVtYmVyT2ZJdGVyYXRpb25z
ID49IG1heGltdW1OdW1iZXJPZlRleHRSdW5zVG9Db25zaWRlcikKICAgICAgICAgICAgIGJyZWFr
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDJlMzJjOTA3YWZmMTgxM2YwN2RlZTAzYzQ2MjFmMTgyOTBlMjRlZGEuLmFh
Zjg4NzIxMzc3MzAwMjRmNmJhZTNjMWVmYzA2NTgyMjI4MWE1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xNzQsNyAr
MTc0LDcgQEAgc3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JDb250ZXh0KGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIAogc3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JE
aXNwbGF5KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLCBUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3IsIHRydWUpOworICAgIHJldHVybiBXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdO
b0JyZWFrU3BhY2UocmFuZ2UsIHsgfSwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcGxhaW5U
ZXh0Rm9yRGlzcGxheShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCkBA
IC0yMDc5LDcgKzIwNzksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFu
Z2VOZWFyUG9zaXRpb25NYXRjaGVzVGV4dChjb25zdCBWaXNpYmxlUG9zaQogICAgIGF1dG8gYm91
bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KHBvc2l0aW9uKTsKICAgICBpZiAoIWJvdW5k
YXJ5UG9pbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGZpbmRD
bG9zZXN0UGxhaW5UZXh0KHJhbmdlLCBtYXRjaFRleHQsIHsgfSwgY2hhcmFjdGVyQ291bnQoeyBy
YW5nZS5zdGFydCwgKmJvdW5kYXJ5UG9pbnQgfSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJz
QmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFp
blRleHQocmFuZ2UsIG1hdGNoVGV4dCwgeyB9LCBjaGFyYWN0ZXJDb3VudCh7IHJhbmdlLnN0YXJ0
LCAqYm91bmRhcnlQb2ludCB9LCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJz
QmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRSZWN0
c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0
aW9uR2VvbWV0cnk+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBmZDMxMDAzNTAxZmZjYzNjMDFhOTJmOTU3
YmMzNGNkMmRiYTFmODAyLi5jMDQxOWFmYjcwNTFjZGJkZjMwZWExNmUxMjE1ZDMxYTQ1ZDYwZjNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTU3
Miw3ICs1NzIsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdGb3JSYW5nZTooRE9NUmFuZ2UgKily
YW5nZQogewogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBAIiI7Ci0gICAgcmV0dXJu
IHBsYWluVGV4dChtYWtlU2ltcGxlUmFuZ2UoKmNvcmUocmFuZ2UpKSwgV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKKyAgICByZXR1cm4gcGxhaW5UZXh0KG1ha2VT
aW1wbGVSYW5nZSgqY29yZShyYW5nZSkpLCB7IH0sIHRydWUpOwogfQogCiAtIChPcHRpb25TZXQ8
V2ViQ29yZTo6UGFpbnRCZWhhdmlvcj4pX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRl
eHQ6KENHQ29udGV4dFJlZiljb250ZXh0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>