<?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>222071</bug_id>
          
          <creation_ts>2021-02-17 14:23:14 -0800</creation_ts>
          <short_desc>Plumb an Optional&lt;PageIdentifier&gt; through WebPasteboardProxy</short_desc>
          <delta_ts>2021-02-18 16:02:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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>
          <dependson>221987</dependson>
          <blocked>222072</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1730532</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-17 14:23:14 -0800</bug_when>
    <thetext>Continue propagating pasteboard contexts through the WebKit client layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730600</commentid>
    <comment_count>1</comment_count>
      <attachid>420736</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-17 15:48:02 -0800</bug_when>
    <thetext>Created attachment 420736
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730912</commentid>
    <comment_count>2</comment_count>
      <attachid>420843</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-18 10:27:10 -0800</bug_when>
    <thetext>Created attachment 420843
Try to fix non-Cocoa builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730939</commentid>
    <comment_count>3</comment_count>
      <attachid>420852</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-18 11:07:38 -0800</bug_when>
    <thetext>Created attachment 420852
Try to fix non-Cocoa builds (2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730949</commentid>
    <comment_count>4</comment_count>
      <attachid>420856</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-18 11:21:11 -0800</bug_when>
    <thetext>Created attachment 420856
Try to fix WPE build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730981</commentid>
    <comment_count>5</comment_count>
      <attachid>420861</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-18 12:46:41 -0800</bug_when>
    <thetext>Created attachment 420861
Try to fix GTK build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731066</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-18 16:01:45 -0800</bug_when>
    <thetext>Committed r273108: &lt;https://commits.webkit.org/r273108&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420861.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731068</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-18 16:02:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/74498443&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420736</attachid>
            <date>2021-02-17 15:48:02 -0800</date>
            <delta_ts>2021-02-18 10:34:57 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-222071-20210217154801.patch</filename>
            <type>text/plain</type>
            <size>193702</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY4MWVjMWY4MmFmZTMz
NzkzMDliZGQ5MDZmMWUwZWY4NzMwZjJkYy4uNzM4ZWVmMzU3NmI0MzkxYzkyNmY4Mzg2NTI2OTE5
ZjVlZjU1YTBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBsdW1iIGFuIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFdlYlBhc3RlYm9hcmRQcm94eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMg
YFBhc3RlYm9hcmRTdHJhdGVneWAgbWV0aG9kcyB0byBhZGRpdGlvbmFsbHkgdGFrZSBhIGBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCpgOyBhZGRpdGlvbmFsbHkKKyAgICAgICAgdXBkYXRlIGNhbGwg
c2l0ZXMgb2YgYFBhc3RlYm9hcmRTdHJhdGVneWAgbWV0aG9kcyB0byBwYXNzIGluIGEgY29udGV4
dCAoZS5nLiBgUGFzdGVib2FyZDo6Y29udGV4dCgpYCwgaW4gdGhlCisgICAgICAgIHZhc3QgbWFq
b3JpdHkgb2YgY2FzZXMgYmVsb3cpLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2Vs
ZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnNGb3JEcmFnSGFuZGxpbmdNZXRob2QgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJ
dGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFVSTCk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTFR5cGVJZGVudGlmaWVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpudW1iZXJPZkZpbGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZpbGVuYW1lcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0RhdGE6OmNvbnRhaW5zUHJvbWlzZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6Y29udGFpbnNVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFz
VVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3Jp
dGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJ
RmlkZWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpoYXNEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkRmlsZVBhdGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExp
YldQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTEZvclR5cGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJv
YXJkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNo
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
Omhhc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFBsYXRmb3JtVmFs
dWVzQXNTdHJpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKwogMjAyMS0wMi0xNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVtYiBhbiBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gdGhyb3VnaCBQYXN0ZWJvYXJkLXJlbGF0ZWQgY29kZXBh
dGhzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGFjM2Y0ZmIyODNjZWNmNDRkNDk4ZjQyODU1ZDhmOWVmZjY0ZWU1MDku
LmJiZWY4OWMwMGE4MTVhMTZkNWU3YmFhZTllMTcwNzYzOTMzYjllMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTcgQEAKKzIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHRocm91
Z2ggV2ViUGFzdGVib2FyZFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjIwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KmAgYXJndW1lbnRzIHRv
IHRoZSBgUGFzdGVib2FyZFN0cmF0ZWd5YCBtZXRob2RzIG9uIGBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXNgLCBjb252ZXJ0CisgICAgICAgIHRoZW0gdG8gYFBhZ2VJZGVudGlmaWVyYHMsIGFuZCBzZW5k
IHRoZW0gb3ZlciB0byB0aGUgVUkgcHJvY2VzcyB2aWEgYFdlYlBhc3RlYm9hcmRQcm94eWAgbWV0
aG9kcy4KKworICAgICAgICBXaGlsZSBjdXJyZW50bHkgdW51c2VkIGluc2lkZSBgV2ViUGFzdGVi
b2FyZFByb3h5YCwgdGhlIG5leHQgcGF0Y2ggd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGVzZSBwYWdl
IGlkZW50aWZpZXJzIHRvCisgICAgICAgIHJldHJpZXZlIGEgZGF0YSBvd25lciB0eXBlIGZyb20g
dGhlIGNvcnJlc3BvbmRpbmcgYFdlYlBhZ2VQcm94eWAsIGFuZCB0aGVuIGZvcndhcmQgdGhpcyBk
YXRhIG93bmVyIHR5cGUgdG8gdGhlCisgICAgICAgIGBQbGF0Zm9ybVBhc3RlYm9hcmRgLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1l
c0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5
OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFVSTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVHlwZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRDb2xvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5z
VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZpbGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1Jl
YWRGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVVS
TFRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsU3RyaW5nc0ZvclR5cGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphZGRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0VHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0
cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dE51bWJlck9mRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQ
YXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHRocm91
Z2ggUGFzdGVib2FyZC1yZWxhdGVkIGNvZGVwYXRocwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IDkwODllYWRhMjkwYmRiZjBkM2IzMTllNDlkNDM0MjJiOWY0ZDgxY2EuLjQ4NmMwNmM3
YjU3NDM5OWIwZDRlN2I2MzA1ZTIzM2RhNjQ2OTc5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVtYiBhbiBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gdGhyb3VnaCBXZWJQYXN0ZWJvYXJkUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjA3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBgY29uc3QgUGFzdGVib2FyZENvbnRleHQqYCBh
cmd1bWVudHMgdG8gdGhlIGBQYXN0ZWJvYXJkU3RyYXRlZ3lgIG1ldGhvZHMgb24gYFdlYlBsYXRm
b3JtU3RyYXRlZ2llc2AuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjaGFuZ2VDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbG9y
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRUeXBlcyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUpOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNVUkxTdHJpbmdTdWl0
YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJp
bmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3
cml0ZVRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHRocm91Z2ggUGFzdGVib2FyZC1yZWxhdGVkIGNvZGVwYXRocwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggMzFmMDFmNzk2MmJm
YTg0N2Y2NDJmOWY2NzkwOTk0MjAwYzAwZTJlMy4uYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0Njdi
ZWIzNTBlOTkxNGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1wb3J0ICJIVE1MU3BhbkVsZW1lbnQuaCIKICNp
bXBvcnQgIkxlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmgiCiAjaW1wb3J0ICJMZWdhY3lXZWJBcmNo
aXZlLmgiCisjaW1wb3J0ICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbXBvcnQgIlBhc3Rl
Ym9hcmQuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2ltcG9ydCAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCkBAIC0yNDcsOSArMjQ4LDEwIEBAIHZvaWQgRWRpdG9yOjp0YWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24oKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBWZWN0b3I8U3Ry
aW5nPiB0eXBlczsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKGxlZ2FjeVN0cmluZ1Bhc3RlYm9h
cmRUeXBlKCkpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNy
ZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0VHlwZXModHlwZXMsIE5TRmluZFBib2FyZCk7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKFdURk1vdmUoc3RyaW5n
RnJvbVNlbGVjdGlvbiksIGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIE5TRmluZFBib2Fy
ZCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRU
eXBlcyh0eXBlcywgTlNGaW5kUGJvYXJkLCBjb250ZXh0LmdldCgpKTsKKyAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUoV1RGTW92
ZShzdHJpbmdGcm9tU2VsZWN0aW9uKSwgbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgTlNG
aW5kUGJvYXJkLCBjb250ZXh0LmdldCgpKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICNlbHNlCiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4IDMw
M2FlNWIzYjJmMDYxZmVkYzVjNjU0ZDNiOTc0M2Y1YzI3ZGRmZTcuLmM0MGUzMDFhYmU4MWYwMWNj
MjQ3MTc4Mjk1NTMzZTgzNjM4OTY4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Ry
YWdDb250cm9sbGVyTWFjLm1tCkBAIC0xNDUsNyArMTQ1LDggQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgYnJlYWs7CiAgICAgfQogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9ydGVkVHlwZXMs
IGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOworICAgIGF1dG8gY29udGV4dCA9IGRyYWdEYXRh
LmNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9y
dGVkVHlwZXMsIGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGNvbnRleHQuZ2V0KCkpOwogfQog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5jcHAKaW5kZXggOWYxNmQ4ODYxZDFlYTE1ZjUxMzkzNDM1YTNlNGU1YmMwYTdkYmYy
My4uN2MxMGFlYzNjZjU2M2EwN2NjZGYxNWRmZDM1YjJkZDdiYTFlMDM2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgT3B0aW9uYWw8VmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5m
bygpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCksIG1fY2hhbmdlQ291
bnQpOworICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1l
KCksIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQpAQCAtNzUsNyArNzUsNyBAQCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+
IFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4gc3RyYXRlZ3kt
PmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG5hbWUoKSwgbV9jaGFuZ2VDb3VudCk7
CisgICAgICAgIHJldHVybiBzdHJhdGVneS0+aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRl
eCwgbmFtZSgpLCBtX2NoYW5nZUNvdW50LCBjb250ZXh0KCkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oaW5kZXgpOwogI2VuZGlmCkBAIC04NSwyMSArODUsMjEgQEAgT3B0aW9uYWw8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjpwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4
KSBjb25zdAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4gc3RyYXRlZ3kt
PnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpKTsKKyAgICAgICAg
cmV0dXJuIHN0cmF0ZWd5LT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5h
bWUoKSwgY29udGV4dCgpKTsKICAgICByZXR1cm4geyB9OwogfQogCiBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSk7CisgICAgICAgIHJl
dHVybiBzdHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1l
KCksIGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFVSTCBQYXN0ZWJvYXJk
OjpyZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAoYXV0byog
c3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCi0g
ICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBuYW1l
KCksIHRpdGxlKTsKKyAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkVVJMRnJvbVBhc3RlYm9h
cmQoaW5kZXgsIG5hbWUoKSwgdGl0bGUsIGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBh
MjcxYzBlODU0YzNkODQ3NzU5NjBjMzM2MjkwM2RmZjlmOTIxZWUyLi4yY2M5YjAwNGZhNzMzZjIz
NjQzNDY4NjIyZmFiY2E1MTM3MjFiYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwpAQCAtNDIsNDMgKzQzLDQzIEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIGNsYXNz
IFBhc3RlYm9hcmRTdHJhdGVneSB7CiBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJk
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3Rl
Ym9hcmQoY29uc3QgUGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRl
VG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
LSAgICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwotICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVh
bCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBp
bnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgaW50NjRfdCBhZGRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgaW50NjRf
dCBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRV
UkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBjb250YWlu
c1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwg
VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpID0gMDsK
LSAgICB2aXJ0dWFsIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0
ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCkgPSAwOwotICAgIHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1J
bmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAg
IHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogCi0gICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwotICAgIHZpcnR1YWwg
aW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CisgICAgdmlydHVhbCBpbnQ2NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVi
b2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9EcmFnRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0Rh
dGFDb2NvYS5tbQppbmRleCBlNDMzZWRiMzhlOGM1OGEwMDY1NGRiNWE1OWUxYmNkNDA5N2EzZDA5
Li5iNTJmN2I4MWNmZWQyZjNjYzQwNWZmMmRjZDkxZWNiMTZjYjQ4NmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTE2Miw3ICsxNjIs
OCBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbgogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkxU
eXBlSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2Fy
ZENvbnRleHQoKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKICAg
ICByZXR1cm4gdHlwZXMuY29udGFpbnModXJsUGFzdGVib2FyZFR5cGUoKSk7CiB9CiAgICAgCkBA
IC0xNzQsNyArMTc1LDggQEAgYm9vbCBEcmFnRGF0YTo6Y2FuU21hcnRSZXBsYWNlKCkgY29uc3QK
IGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29sb3IoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIGF1dG8gY29udGV4dCA9
IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKGNvbG9yUGFzdGVib2FyZFR5
cGUoKSk7CiB9CiAKQEAgLTE4NSwxOSArMTg3LDIxIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
RmlsZXMoKSBjb25zdAogCiB1bnNpZ25lZCBEcmFnRGF0YTo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0TnVtYmVyT2ZGaWxlcyhtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIGNvbnRleHQg
PSBjcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldE51bWJlck9mRmlsZXMobV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dC5nZXQoKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IERyYWdEYXRhOjphc0Zp
bGVuYW1lcygpIGNvbnN0CiB7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENv
bnRleHQoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0g
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dC5nZXQoKSk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmaWxlTmFtZXMoKTsKIAogICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3VsdHM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRQYXRobmFtZXNGb3JUeXBlKHJlc3VsdHMsIFN0cmluZyhsZWdh
Y3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRQYXRobmFtZXNGb3JU
eXBlKHJlc3VsdHMsIFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdHM7CiAjZWxz
ZQogICAgIHJldHVybiBmaWxlTmFtZXMoKTsKQEAgLTIwNiw4ICsyMTAsOSBAQCBWZWN0b3I8U3Ry
aW5nPiBEcmFnRGF0YTo6YXNGaWxlbmFtZXMoKSBjb25zdAogCiBib29sIERyYWdEYXRhOjpjb250
YWluc1BsYWluVGV4dCgpIGNvbnN0CiB7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVi
b2FyZENvbnRleHQoKTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKIAog
ICAgIHJldHVybiB0eXBlcy5jb250YWlucyhzdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKQogICAgICAg
ICB8fCB0eXBlcy5jb250YWlucyhydGZkUGFzdGVib2FyZFR5cGUoKSkKQEAgLTIxNSw3ICsyMjAs
NyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVz
UGFzdGVib2FyZFR5cGUoKSkpCiAjZW5kaWYKLSAgICAgICAgfHwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRG
b3JUeXBlKHVybFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB8
fCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUodXJsUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiB9CiAKIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRl
eHQoKSBjb25zdApAQCAtMjM2LDcgKzI0MSw4IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRl
eHQoKSBjb25zdAogCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29sb3IobV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5jb2xvcihtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKIH0KIAogYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2UgcHVycG9z
ZSkgY29uc3QKQEAgLTI1MCw4ICsyNTYsOSBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KERyYWdnaW5nUHVycG9zZSBwdXJwb3NlKSBjb25zdAogICAgIGlmIChwdXJw
b3NlID09IERyYWdnaW5nUHVycG9zZTo6Rm9yRWRpdGluZyAmJiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmIGNvbnRh
aW5zRmlsZXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBhdXRvIGNvbnRleHQgPSBj
cmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlw
ZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQu
Z2V0KCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICByZXR1cm4g
dHlwZXMuY29udGFpbnMoU3RyaW5nKFdlYkFyY2hpdmVQYm9hcmRUeXBlKSkKICAgICAgICAgfHwg
dHlwZXMuY29udGFpbnMoaHRtbFBhc3RlYm9hcmRUeXBlKCkpCkBAIC0yNzUsMjMgKzI4MiwyNSBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNQcm9taXNlKCkgY29uc3QKIHsKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVQYXN0ZWJv
YXJkQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJk
VHlwZSgpIGNvbnRhaW5zIFVUSXMsIG5vdCBwYXRoIG5hbWVzLiBBbHNvLCB3aHkgZG8gd2UKICAg
ICAvLyB0aGluayBwcm9taXNlcyBzaG91bGQgb25seSBjb250YWluIG9uZSBmaWxlIChvciBVVEkp
PwogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFBhdGhuYW1lc0ZvclR5
cGUoZmlsZXMsIFN0cmluZyhsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpKSwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5nZXRQYXRobmFtZXNGb3JUeXBlKGZpbGVzLCBTdHJpbmcobGVnYWN5RmlsZXNQcm9t
aXNlUGFzdGVib2FyZFR5cGUoKSksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQuZ2V0KCkpOwog
I2VuZGlmCiAgICAgcmV0dXJuIGZpbGVzLnNpemUoKSA9PSAxOwogfQogCiBib29sIERyYWdEYXRh
Ojpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kpIGNvbnN0CiB7Ci0gICAgaWYg
KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29udGFpbnNVUkxT
dHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSkpCisgICAgYXV0byBjb250
ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKTsKKyAgICBpZiAocGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0g
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dC5nZXQoKSk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpKSkgJiYgZmlsZU5hbWVzKCkuc2l6ZSgpID09IDEpCiAgICAgICAg
IHJldHVybiAhIVtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZU5hbWVzKCkuZmlyc3QoKV07CiAj
ZW5kaWYKQEAgLTMwMSwxMCArMzEwLDExIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZp
bGVuYW1lQ29udmVyc2lvblBvbGljeSkgY29uc3QKIAogU3RyaW5nIERyYWdEYXRhOjphc1VSTChG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CisgICAgYXV0
byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKTsKICAgICAvLyBGSVhNRTogVXNl
IGZpbGVuYW1lUG9saWN5LgogCiAgICAgU3RyaW5nIHVybFRpdGxlOwotICAgIGF1dG8gdXJsU3Ry
aW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT51cmxTdHJp
bmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSwgdXJsVGl0bGUpOworICAgIGF1
dG8gdXJsU3RyaW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT51cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSwgdXJsVGl0bGUs
IGNvbnRleHQuZ2V0KCkpOwogICAgIGlmICh0aXRsZSkKICAgICAgICAgKnRpdGxlID0gdXJsVGl0
bGU7CiAKQEAgLTMxMyw3ICszMjMsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVz
KHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKICAgICBpZiAodHlwZXMu
Y29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCkpKSAmJiBm
aWxlTmFtZXMoKS5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIFtVUkxCeUNhbm9uaWNhbGl6
aW5nVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZU5hbWVzKClbMF1dKSBhYnNvbHV0ZVN0
cmluZ107CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQppbmRleCA1NDU3ZTA1NTA4YTAyODJkNDk4YjYyNTk3MTNiMmI3MThiNWIw
YmVjLi44NzkyYjE2YmVkMWEzODY2NWI0MGRjNGI2MzY2MDQyOTlmZTIyZTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xMzMs
NyArMTMzLDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpzaG91bGRUcmVhdENvY29hVHlwZUFzRmlsZShj
b25zdCBTdHJpbmcmIGNvY29hVHlwZSkKIAogUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQ
YXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKCkKIHsKLSAgICBib29sIG1heUNvbnRhaW5GaWxl
UGF0aHMgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldE51
bWJlck9mRmlsZXMobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYm9vbCBtYXlDb250YWluRmlsZVBh
dGhzID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXROdW1i
ZXJPZkZpbGVzKG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChtYXlDb250YWluRmlsZVBhdGhzKSB7CkBAIC0xNTcsNyArMTU3
LDcgQEAgUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQYXN0ZWJvYXJkOjpmaWxlQ29udGVu
dFN0YXRlKCkKIAogICAgIGlmICghbWF5Q29udGFpbkZpbGVQYXRocykgewogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjb2NvYVR5cGVzOwotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKGNvY29hVHlwZXMsIG1fcGFzdGVib2FyZE5hbWUp
OworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdl
dFR5cGVzKGNvY29hVHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAg
IGlmIChjb2NvYVR5cGVzLmZpbmRNYXRjaGluZyhbXShjb25zdCBTdHJpbmcmIGNvY29hVHlwZSkg
eyByZXR1cm4gc2hvdWxkVHJlYXRDb2NvYVR5cGVBc0ZpbGUoY29jb2FUeXBlKTsgfSkgPT0gbm90
Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gRmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFn
ZURhdGE7CiAKQEAgLTE3MCwxMiArMTcwLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgICAgICAgICByZXR1cm4gY29jb2FUeXBlID09IFN0cmluZyhrVVRUeXBl
VVJMKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9KTsKLSAg
ICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGluZGV4T2ZVUkwgIT0gbm90Rm91bmQgJiYgIXBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29udGFpbnNTdHJpbmdT
YWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb2NvYVR5cGVzW2luZGV4T2ZVUkxdLCBtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGluZGV4T2ZVUkwgIT0gbm90
Rm91bmQgJiYgIXBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29u
dGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb2NvYVR5cGVzW2luZGV4T2ZVUkxd
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIH0KIAogICAgIC8vIEVuZm9yY2Ug
Y2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1cml0eS4gV2UgY2hlY2sgYWZ0ZXIgcmVhZGlu
ZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAgIC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2Ug
YmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdlIGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRh
dGEuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKSkKKyAgICBpZiAo
bV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpCiAgICAgICAgIHJl
dHVybiBGaWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YTsKIAogICAgIC8vIEV2ZW4g
d2hlbiB0aGVyZSdzIG9ubHkgaW1hZ2UgZGF0YSBpbiB0aGUgcGFzdGVib2FyZCBhbmQgbm8gZmls
ZSByZXByZXNlbnRhdGlvbnMsIHdlIHN0aWxsIHJ1biB0aGUgcmlzayBvZiBleHBvc2luZyBmaWxl
IHBhdGhzCkBAIC0xODcsMTEgKzE4NywxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3Mo
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKG1fcGFzdGVib2FyZE5hbWUsIG9yaWdpbik7CisgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXMgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5
cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKG1fcGFzdGVib2FyZE5hbWUsIG9yaWdpbiwgY29u
dGV4dCgpKTsKIAogICAgIC8vIEVuZm9yY2UgY2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1
cml0eS4gV2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAg
IC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdl
IGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudCht
X3Bhc3RlYm9hcmROYW1lKSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gdHlwZXM7
CkBAIC0yOTUsMjIgKzI5NSwyMiBAQCBjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgUGFzdGVi
b2FyZDo6cmVhZEN1c3RvbURhdGEoKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0
YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhKQogewotICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndy
aXRlQ3VzdG9tRGF0YShkYXRhLCBuYW1lKCkpOworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlQ3VzdG9tRGF0YShkYXRh
LCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIGludDY0X3QgUGFzdGVib2FyZDo6Y2hhbmdlQ291
bnQoKSBjb25zdAogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpOworICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9h
cmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBj
b2NvYVR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0VHlwZXMoY29jb2FUeXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyhjb2NvYVR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3Vu
dCBvdXJzZWx2ZXMgZm9yIHNlY3VyaXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQg
b2YgYmVmb3JlIHRvIGJlCiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91
ciB0ZXN0aW5nIHRoZSBjaGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KLSAgICBp
ZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpKQorICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdl
Q291bnQobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIHJldHVybiBjb2NvYVR5cGVzOwpAQCAtMzE4LDExICszMTgsMTEgQEAgVmVjdG9yPFN0
cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNo
ZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2ZXMgZm9y
IHNlY3VyaXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQgb2YgYmVmb3JlIHRvIGJl
CiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91ciB0ZXN0aW5nIHRoZSBj
aGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KLSAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNv
dW50KG1fcGFzdGVib2FyZE5hbWUpKQorICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCmluZGV4IGYwZmFkZDcwODY5NTYzOGY3YzgxZTkyNjcxZjY3YzE4NGUzOGMyNjUuLmZiZTcx
OTg4MzI3YWQwZDA0YmJlMTk5YjJjM2MzYTJmOGJlN2NmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTM1NSw3ICszNTUsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcm
IG9yaWdpbikKICAgICAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcih0eXBlcyk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+dHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUobV9uYW1lLCBvcmlnaW4pOworICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKG1fbmFtZSwgb3JpZ2luLCBjb250ZXh0KCkpOwogfQogCiBWZWN0b3I8
U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKQEAgLTQ3
Niw3ICs0NzYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0
b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZUN1
c3RvbURhdGEoZGF0YSwgbV9uYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPndyaXRlQ3VzdG9tRGF0YShkYXRhLCBtX25hbWUsIGNvbnRleHQoKSk7
CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzMzY1YTNlYjg2YmIwYWI0
OWE5YzBhYmFkZjQ4MWRkZjA4MDllNzNlLi43OWY1YWJhYjhlMmE0ZDhlNmQyNDY3MzVjYzhmNDZh
Y2Y5YjAzZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXN0ZWJvYXJkOjpQ
YXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29u
dGV4dCkpCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1lKHBhc3RlYm9hcmROYW1lKQotICAgICwgbV9j
aGFuZ2VDb3VudChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNo
YW5nZUNvdW50KHBhc3RlYm9hcmROYW1lKSkKKyAgICAsIG1fY2hhbmdlQ291bnQocGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChwYXN0ZWJvYXJk
TmFtZSwgbV9jb250ZXh0LmdldCgpKSkKIHsKIH0KIApAQCAtODMsOSArODMsOSBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKLXN0YXRpYyBpbnQ2
NF90IGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
ID0geyB9KQorc3RhdGljIGludDY0X3QgY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUgPSB7IH0sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0ID0gbnVsbHB0cikKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChwYXN0ZWJvYXJkTmFtZSk7CisgICAgcmV0dXJu
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQo
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiAvLyBGSVhNRTogRG9lcyB0aGlzIG5lZWQg
dG8gYmUgZGVjbGFyZWQgaW4gdGhlIGhlYWRlciBmaWxlPwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoc3RkOjp1bmlxdWVfcHRyPFBhCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiB7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChjb250ZW50LCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvbnRlbnQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZXNvdXJjZU1JTUVUeXBlKE5TU3RyaW5nICpt
aW1lVHlwZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVzb3VyY2VN
SU1FVHlwZShOU1N0cmluZyAqbWltZVR5cGUpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChwYXN0ZWJv
YXJkSW1hZ2UsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZEltYWdlLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uKQpAQCAtMTMz
LDEzICsxMzMsMTMgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKICAgICAvLyBGSVhNRTogV2UgdmVuZCAicHVi
bGljLnRleHQiIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggcHJlLWlPUyAx
MSBhcHBzLiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgc3RvcCB2ZW5kaW5nIHRoaXMgVVRJLAog
ICAgIC8vIGFuZCBpbnN0ZWFkIHNldCBkYXRhIGZvciBjb25jcmV0ZSBwbGFpbiB0ZXh0IHR5cGVz
LiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMTc+Lgog
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtVVFR5cGVUZXh0
LCB0ZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtVVFR5cGVUZXh0LCB0ZXh0LCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYg
cGFzdGVib2FyZFVSTCkKIHsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRVUkwsIG1fcGFzdGVib2FyZE5h
bWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3Jp
dGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZFVSTCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5
cGUoY29uc3QgUGFzdGVib2FyZFVSTCYpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUoY29uc3QgUGFzdGVib2FyZFVS
TCYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0Q29sb3IoY29s
b3IsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0Q29sb3IoY29sb3IsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKQEAgLTE2OCw5ICsx
NjgsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwg
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwog
CiAgICAgaWYgKGFsbG93VVJMID09IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJM
KSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICB0ZXh0LnRl
eHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwg
a1VUVHlwZVVSTCwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICAgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1J
bmRleFRvUXVlcnksIGtVVFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7Cisg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBpZiAoIXRl
eHQudGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHRleHQuaXNVUkwgPSB0cnVlOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTgyLDkgKzE4Miw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIC8vIG9uZSBvZiB0aGUgY29uY3JldGUgInB1YmxpYy5wbGFpbi10
ZXh0IiByZXByZXNlbnRhdGlvbnMgKGUuZy4ga1VUVHlwZVVURjhQbGFpblRleHQpLiBJbiB0aGUg
ZnV0dXJlLCB3ZQogICAgIC8vIHNob3VsZCBjb25zaWRlciByZW1vdmluZyBzdXBwb3J0IGZvciBy
ZWFkaW5nIHBsYWluIHRleHQgZnJvbSAicHVibGljLnRleHQiLgogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VUVHlwZVBsYWluVGV4dCwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleFRvUXVlcnksIGtVVFR5cGVQbGFpblRleHQsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAgICAgaWYgKHRleHQudGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIHRleHQu
dGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5
LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHRleHQudGV4dCA9IHN0
cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5LCBrVVRUeXBl
VGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCiAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwpAQCAtMjEzLDE0ICsyMTMs
MTQgQEAgUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJk
V2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm8KIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJv
YXJkVHlwZV0gfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVXZWJBcmNoaXZlXSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
dGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlm
IChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVh
ZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVy
biBidWZmZXIgJiYgcmVhZGVyLnJlYWRXZWJBcmNoaXZlKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0
OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAg
aWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRN
TF0pIHsKLSAgICAgICAgU3RyaW5nIGh0bWxTdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlSFRNTCwgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIFN0cmluZyBodG1sU3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleCwga1VUVHlwZUhUTUwsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAg
ICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAg
ICAgICAgIHJldHVybiAhaHRtbFN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZEhUTUwoaHRt
bFN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RS
ZWFkVHlwZTsKQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFt
ZSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXND
aGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJU
RkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWRO
b3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAo
bV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRl
clJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4g
YnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlw
ZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUxLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVj
dDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkK
ICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0
ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRU
eXBlOwpAQCAtMjU5LDIxICsyNTksMjEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVVSTF0pIHsKICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICBVUkwgdXJs
ID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJk
TmFtZSwgdGl0bGUpOworICAgICAgICBVUkwgdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgdGl0bGUsIGNvbnRleHQoKSk7CiAg
ICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAg
ICAgIHJldHVybiAhdXJsLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkVVJMKHVybCwgdGl0bGUpID8g
UmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAg
ICAgfQogCiAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5
cGUsIGtVVFR5cGVQbGFpblRleHQpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVn
eS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUGxhaW5UZXh0LCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVQbGFpblRleHQsIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5n
ZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2Fz
Q2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiAhc3RyaW5nLmlzTnVsbCgpICYmIHJl
YWRlci5yZWFkUGxhaW5UZXh0KHN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVh
ZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoVVRUeXBlQ29uZm9y
bXNUbygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpdHlwZSwga1VUVHlwZVRleHQpKSB7Ci0gICAgICAg
IFN0cmluZyBzdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJp
bmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBl
VGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6
OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuICFzdHJpbmcu
aXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSA/IFJlYWRlclJlc3VsdDo6
UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjgzLDcgKzI4Myw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBSZWFkZXJS
ZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogfQogCi1zdGF0aWMgdm9pZCByZWFkVVJMQWxvbmdzaWRl
QXR0YWNobWVudElmTmVjZXNzYXJ5KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIs
IFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgdHlwZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludCBpdGVtSW5kZXgpCitzdGF0aWMg
dm9pZCByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiByZWFkZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0
IFN0cmluZyYgdHlwZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dCBpdGVtSW5kZXgsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8o
dHlwZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVHlwZVZDYXJkKSkKQEAg
LTI5MSw3ICsyOTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBTdHJpbmcgdGl0bGU7Ci0gICAg
YXV0byB1cmwgPSBzdHJhdGVneS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBwYXN0
ZWJvYXJkTmFtZSwgdGl0bGUpOworICAgIGF1dG8gdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwgcGFzdGVib2FyZE5hbWUsIHRpdGxlLCBjb250ZXh0KTsKICAg
ICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJlYWRlci5yZWFkVVJMKHVybCwgdGl0bGUp
OwogfQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAKICAgICBQ
YXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKTsKIAotICAgIHNpemVfdCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3ku
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgc2l6ZV90IG51
bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgaWYgKCFudW1iZXJPZkl0ZW1zKQogICAgICAgICBy
ZXR1cm47CkBAIC0zMzgsMTUgKzMzOCwxNSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogICAg
ICAgICBpZiAoaXRlbUluZGV4ICYmIGkgIT0gKml0ZW1JbmRleCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIGF1dG8g
aW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJk
TmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKCFpbmZvKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAg
ICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYmIHByZWZlcnNBdHRhY2htZW50UmVwcmVzZW50YXRp
b24oKmluZm8pKSB7CiAgICAgICAgICAgICBhdXRvIHR5cGVGb3JGaWxlVXBsb2FkID0gaW5mby0+
Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7Ci0gICAgICAgICAgICBpZiAoYXV0
byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwgdHlwZUZvckZp
bGVVcGxvYWQsIG1fcGFzdGVib2FyZE5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgcmVhZFVSTEFs
b25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlRm9yRmls
ZVVwbG9hZCwgbV9wYXN0ZWJvYXJkTmFtZSwgaSk7CisgICAgICAgICAgICBpZiAoYXV0byBidWZm
ZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwgdHlwZUZvckZpbGVVcGxv
YWQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKKyAgICAgICAgICAgICAgICByZWFk
VVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KHJlYWRlciwgc3RyYXRlZ3ksIHR5cGVG
b3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lLCBpLCBjb250ZXh0KCkpOwogICAgICAgICAg
ICAgICAgIHJlYWRlci5yZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9yRmlsZVVwbG9hZCwg
aW5mby0+c3VnZ2VzdGVkRmlsZU5hbWUsIGluZm8tPnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMzgyLDEyICsz
ODIsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFz
dGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwKIHsKICAgICBBU1NFUlQocmVzcGVjdHNV
VElGaWRlbGl0aWVzKCkpOwogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKLSAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAw
LCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0
ZWJvYXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgeworICAgIGZvciAo
TlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOyBpbmRleCA8IG51bWJl
ck9mSXRlbXM7ICsraW5kZXgpIHsKICAgICAgICAgaWYgKGl0ZW1JbmRleCAmJiBpbmRleCAhPSAq
aXRlbUluZGV4KQogICAgICAgICAgICAgY29udGludWU7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQotICAgICAgICBhdXRvIGluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50KTsKKyAgICAg
ICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwg
bV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKTsKICAgICAgICAgaWYg
KCFpbmZvKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRl
bnRSZWFkZXImIHJlYWRlciwKICAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVudCA9IHBvbGlj
eSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSAmJiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmICFh
dHRhY2htZW50RmlsZVBhdGguaXNFbXB0eSgpOwogICAgICAgICBhdXRvIGNvbnRlbnRUeXBlID0g
aW5mby0+Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CiAgICAgICAgIGlmIChj
YW5SZWFkQXR0YWNobWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9uKCppbmZv
KSkgewotICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShy
ZWFkZXIsIHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgaW5kZXgpOwor
ICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFkZXIs
IHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgaW5kZXgsIGNvbnRleHQo
KSk7CiAgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNobWVudEZp
bGVQYXRoKSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVudFR5cGUpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTQ1Miw3ICs0NTIsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogYm9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRh
KCkKIHsKLSAgICByZXR1cm4gISFwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOworICAgIHJl
dHVybiAhIXBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogc3Rh
dGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShOU1N0cmluZyAqdHlwZSkKQEAgLTQ4OCwx
MiArNDg4LDEyIEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIGlmICghY29jb2FUeXBlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlw
ZS5nZXQoKSwgU3RyaW5nKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29jb2FUeXBl
LmdldCgpLCBTdHJpbmcoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogdm9p
ZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChTdHJpbmcoKSwgU3RyaW5nKCksIG1f
cGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoU3RyaW5nKCksIFN0cmluZygpLCBtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFk
UGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtNTA1LDcgKzUwNSw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5n
cyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGluCiAgICAgaWYgKCFjb2NvYVR5cGUpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBhdXRvIHZhbHVlcyA9IHN0cmF0ZWd5LmFsbFN0cmluZ3NGb3JU
eXBlKGNvY29hVHlwZS5nZXQoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIGF1dG8gdmFsdWVzID0g
c3RyYXRlZ3kuYWxsU3RyaW5nc0ZvclR5cGUoY29jb2FUeXBlLmdldCgpLCBwYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
aWYgKFtjb2NvYVR5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVQbGFpblRleHRdKSB7CiAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5tYXAoWyZdIChhdXRvJiB2
YWx1ZSkgLT4gU3RyaW5nIHsKQEAgLTU1OCwxNiArNTU4LDE2IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAg
aWYgKCFjb2NvYVR5cGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29jb2FUeXBlLmdl
dCgpLCBkYXRhLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlwZS5nZXQoKSwg
ZGF0YSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogVmVjdG9yPFN0cmluZz4g
UGFzdGVib2FyZDo6cmVhZEZpbGVQYXRocygpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBh
dGhzOwogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKTsKLSAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0
ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7
IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgeworICAgIGZvciAoTlNVSW50ZWdlciBp
bmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOyBpbmRleCA8IG51bWJlck9mSXRlbXM7ICsr
aW5kZXgpIHsKICAgICAgICAgLy8gQ3VycmVudGx5LCBkcmFnIGFuZCBkcm9wIGlzIHRoZSBvbmx5
IGNhc2Ugb24gaU9TIHdoZXJlIHRoZSAicGFzdGVib2FyZCIgbWF5IGNvbnRhaW4gZmlsZSBwYXRo
cy4KLSAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIGF1dG8g
aW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVi
b2FyZE5hbWUsIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmICghaW5mbykK
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCBlNjVmYTg3Y2QxZTlhMWRlZDcw
MWU0MmRlYWY0NWEyZWU1NDNiYWI2Li41OWQzYmM4MTQ3MWQzZTdiY2E3N2NkYTIyZDdhMDU4OTVh
NWEyMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVi
b2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFk
T3JpZ2luKCkKIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCB0eXBlLCBuYW1lKCkpOworICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZCgwLCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIFN0cmlu
ZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYpCkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikKIAogdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSk7CisgICAgdGV4
dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUo
KSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGY3
ZjhmZmU0ZjhlOWY4YzNhOTZiMzI3NmNiYTM1ZDgzYjZkOWQ0YzguLjExMGRkMjUxMGI4NWYxMDZk
M2M5MTU4MTEwZDA4MGQ1ODBlMjhhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC05Myw3ICs5Myw3IEBAIFBhc3RlYm9hcmQ6OlBhc3RlYm9h
cmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiBQYXN0ZWJv
YXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cHJvbWlzZWRGaWxlUGF0aHMpCiAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAg
ICAsIG1fcGFzdGVib2FyZE5hbWUocGFzdGVib2FyZE5hbWUpCi0gICAgLCBtX2NoYW5nZUNvdW50
KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQo
bV9wYXN0ZWJvYXJkTmFtZSkpCisgICAgLCBtX2NoYW5nZUNvdW50KHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwg
bV9jb250ZXh0LmdldCgpKSkKICAgICAsIG1fcHJvbWlzZWRGaWxlUGF0aHMocHJvbWlzZWRGaWxl
UGF0aHMpCiB7CiAgICAgQVNTRVJUKHBhc3RlYm9hcmROYW1lKTsKQEAgLTEyNyw3ICsxMjcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIAogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Ci0gICAgbV9j
aGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFu
Z2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0K
IAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKQEAgLTE1NCwzNSArMTU0LDM1IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHR5cGVzLmFwcGVuZFZlY3Rvcihjb250ZW50LmNsaWVudFR5cGVzKTsKICAgICB0
eXBlcy5hcHBlbmQoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKTsKIAotICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBtX2NoYW5nZUNvdW50ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGUgZm9s
bG93aW5nIGNvZGUgc2hvdWxkIGJlIHJlZmFjdG9yZWQsIHN1Y2ggdGhhdCBpdCBvbmx5IHJlcXVp
cmVzIGEgc2luZ2xlIGNhbGwgb3V0IHRvIHRoZSBjbGllbnQgbGF5ZXIuCiAgICAgLy8gSW4gV2Vi
S2l0MiwgdGhpcyBjdXJyZW50bHkgcmVzdWx0cyBpbiBtYW55IHVubmVjZXNzYXJ5IHN5bmNocm9u
b3VzIHJvdW5kLXRyaXAgSVBDIG1lc3NhZ2VzLgogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50
VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5jbGllbnREYXRhW2ldLmdl
dCgpLCBjb250ZW50LmNsaWVudFR5cGVzW2ldLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmNsaWVudERhdGFbaV0uZ2V0KCksIGNvbnRlbnQu
Y2xpZW50VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKGNv
bnRlbnQuY2FuU21hcnRDb3B5T3JEZWxldGUpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUo
bnVsbHB0ciwgV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAg
ICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKG51bGxwdHIsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBl
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChjb250ZW50LmRhdGFJbldl
YkFyY2hpdmVGb3JtYXQpIHsKLSAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJbldl
YkFyY2hpdmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dC5nZXQoKSwga1VUVHlwZVdlYkFyY2hpdmUsIG1fcGFzdGVib2FyZE5hbWUpOwotQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0LmdldCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgfQogICAgIGlmIChjb250ZW50LmRhdGFJblJURkRGb3JtYXQpCi0gICAgICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBsZWdhY3lSVEZE
UGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZl
ckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBpZiAoY29udGVu
dC5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5k
YXRhSW5SVEZGb3JtYXQuZ2V0KCksIGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVi
b2FyZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluUlRG
Rm9ybWF0LmdldCgpLCBsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogICAgIGlmICghY29udGVudC5kYXRhSW5IVE1MRm9ybWF0LmlzTnVsbCgp
KQotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCwg
bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBt
X2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCwgbGVnYWN5SFRNTFBh
c3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKCFj
b250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdC5pc051bGwoKSkKLSAgICAgICAgbV9jaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5n
Rm9yVHlwZShjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCwgbGVnYWN5U3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUo
Y29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXQsIGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCks
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBkYXRhOwogICAgIGRhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLnB0cigpLCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS5wdHIoKSwgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OwogCiB9CiAKQEAgLTE5MywxNSArMTkzLDE1IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFp
blRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24gc21hcnRSZXBsCiAg
ICAgaWYgKHNtYXJ0UmVwbGFjZU9wdGlvbiA9PSBDYW5TbWFydFJlcGxhY2UpCiAgICAgICAgIHR5
cGVzLmFwcGVuZChXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSk7CiAKLSAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9h
cmROYW1lKTsKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHRleHQsIGxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh0ZXh0LCBsZWdhY3lTdHJpbmdQ
YXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChz
bWFydFJlcGxhY2VPcHRpb24gPT0gQ2FuU21hcnRSZXBsYWNlKQotICAgICAgICBtX2NoYW5nZUNv
dW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZm
ZXJGb3JUeXBlKDAsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZSgwLCBXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAotc3RhdGljIGxvbmcgd3JpdGVVUkxG
b3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCitzdGF0aWMgbG9u
ZyB3cml0ZVVSTEZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBuZXdDaGFuZ2VD
b3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlw
ZXModHlwZXMsIHBhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywg
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogICAgIAogICAgIEFTU0VSVCghcGFzdGVib2FyZFVS
TC51cmwuaXNFbXB0eSgpKTsKICAgICAKQEAgLTIxNiwzNiArMjE2LDM2IEBAIHN0YXRpYyBsb25n
IHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hCiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2ViVVJMc1dpdGhUaXRsZXNQ
Ym9hcmRUeXBlKSkgewogICAgICAgICBQYXN0ZWJvYXJkVVJMIHVybCA9IHsgcGFzdGVib2FyZFVS
TC51cmwsIFN0cmluZyh0aXRsZSkuc3RyaXBXaGl0ZVNwYWNlKCksIGVtcHR5U3RyaW5nKCkgfTsK
LSAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldFVSTCh1cmwsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dFVSTCh1cmwsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKICAgICB9CiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpKSkpCi0gICAgICAgIG5l
d0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRTdHJpbmdGb3JUeXBlKFtjb2NvYVVSTCBhYnNvbHV0ZVN0cmluZ10sIGxlZ2FjeVVSTFBh
c3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0Zv
clR5cGUoW2NvY29hVVJMIGFic29sdXRlU3RyaW5nXSwgbGVnYWN5VVJMUGFzdGVib2FyZFR5cGUo
KSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJV
UkxQYm9hcmRUeXBlKSkKLSAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUodXNlclZpc2libGVT
dHJpbmcsIFdlYlVSTFBib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dFN0cmluZ0ZvclR5cGUodXNlclZpc2libGVTdHJpbmcsIFdlYlVSTFBib2FyZFR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KTsKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2ViVVJMTmFtZVBi
b2FyZFR5cGUpKQotICAgICAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh0aXRsZSwgV2ViVVJMTmFt
ZVBib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5
cGUodGl0bGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlw
ZSgpKSkpCi0gICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJWaXNpYmxlU3RyaW5nLCBs
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG5l
d0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJWaXNpYmxlU3RyaW5nLCBsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiAKICAgICByZXR1cm4gbmV3Q2hh
bmdlQ291bnQ7CiB9CiAgICAgCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9y
VHlwZXMod3JpdGFibGVUeXBlc0ZvclVSTCgpLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJk
VVJMKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh3cml0YWJsZVR5cGVz
Rm9yVVJMKCksIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRVUkwsIGNvbnRleHQoKSk7CiB9
CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRUeXBlKGNv
bnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7CiAgICAgUGFzdGVib2FyZFVSTCB1
cmwgPSB7IHBhc3RlYm9hcmRVUkwudXJsLCBwYXN0ZWJvYXJkVVJMLnRpdGxlLnN0cmlwV2hpdGVT
cGFjZSgpLCBlbXB0eVN0cmluZygpIH07Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VVJMKHVybCwgbV9wYXN0ZWJvYXJk
TmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0VVJMKHVybCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4gdHlwZXMgPSB7IGxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSB9Owot
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXMo
dHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldENvbG9yKGNvbG9yLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldENvbG9yKGNvbG9yLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiBzdGF0
aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZWJvYXJkSW1hZ2UpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZp
bGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIHJl
dHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlRmlsZVdy
YXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QmIG5ld0NoYW5nZUNvdW50KQorc3RhdGljIHZvaWQg
d3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCYgbmV3Q2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFj
aG1lbnQ6YWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBw
ZXI6d3JhcHBlcl0pLmdldCgpXTsKIApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIHdy
aXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNv
bnN0IFN0cmluCiAgICAgaWYgKCFSVEZERGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmV3
Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBs
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIG5ld0NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkREYXRhKS5wdHIoKSwgbGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAogdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFn
ZSkKQEAgLTI4NCwyNCArMjg0LDI0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKLSAgICBtX2No
YW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZEltYWdlLnVybCk7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9yVHlwZXModHlw
ZXMsIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwsIGNvbnRleHQoKSk7Cisg
ICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZURhdGEpLnB0
cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKICAgICBpZiAoYXV0byBhcmNoaXZlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0KSB7Ci0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoYXJjaGl2ZURh
dGEuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAg
ICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0QnVmZmVyRm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJjaGl2ZVBib2Fy
ZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKLUFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoYXJjaGl2ZURh
dGEuZ2V0KCksIGtVVFR5cGVXZWJBcmNoaXZlLCBtX3Bhc3RlYm9hcmROYW1lKTsKLUFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgorICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdl
dCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogICAgIGlmICgh
cGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQuaXNFbXB0eSgpKQotICAgICAgICBtX2No
YW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
ZXRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9ybWF0LCBsZWdhY3lI
VE1MUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgd3JpdGVGaWxlV3Jh
cHBlckFzUlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXIocGFzdGVib2FyZEltYWdlKSwgbV9wYXN0
ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUo
cGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQsIGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlw
ZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgIHdyaXRlRmlsZVdyYXBwZXJB
c1JURkRBdHRhY2htZW50KGZpbGVXcmFwcGVyKHBhc3RlYm9hcmRJbWFnZSksIG1fcGFzdGVib2Fy
ZE5hbWUsIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6
Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
ICAgIHJldHVybiB0eXBlcy5jb250YWlucyhXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSk7CiB9CiAK
QEAgLTMyMywxOCArMzIzLDE4IEBAIHN0YXRpYyBTdHJpbmcgam9pblBhdGhuYW1lcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJh
dGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitzdGF0aWMgU3Ry
aW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQotICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lKTsK
LSAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoKml0ZW1J
bmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOworICAgIHJldHVybiBzdHJhdGVn
eS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChj
b25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJk
U3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25z
dCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3Ry
YXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQotICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUs
IHBhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1cm4gc3RyYXRlZ3kuYnVmZmVyRm9yVHlwZSh0eXBl
LCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwor
ICAgIHJldHVybiBzdHJhdGVneS5idWZmZXJGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
IHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3dVUkwsIE9wdGlvbmFsPHNpemVf
dD4gaXRlbUluZGV4KQpAQCAtMzQzLDI1ICszNDMsMjUgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxs
b3cKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIGlmIChpdGVtSW5kZXgpIHsKLSAg
ICAgICAgaWYgKGF1dG8gaXRlbUluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KCppdGVtSW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQpKQorICAgICAg
ICBpZiAoYXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
Kml0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKSkK
ICAgICAgICAgICAgIHR5cGVzID0gaXRlbUluZm8tPnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5Owog
ICAgIH0gZWxzZQotICAgICAgICBzdHJhdGVneS5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJk
TmFtZSk7CisgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9h
cmRUeXBlU3RyaW5nKSkpIHsKLSAgICAgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJlZmVy
cmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVTdHJpbmcsIGl0ZW1JbmRleCwgc3RyYXRlZ3ks
IG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVN0cmluZywgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0
cmluZyhsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgdGV4dC50ZXh0
ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0
ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3Rl
Ym9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJl
ZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0
cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBp
dGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFth
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOwpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
UGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgfQog
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGRCkpKSB7
Ci0gICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgo
TlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVt
SW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRT
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAg
ICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAg
ICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CkBAIC0zODEsNyArMzgxLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3Ry
aW5nKGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBkYXRh
ID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBl
KCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlm
IChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGUGFz
dGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAg
IHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAg
dGV4dC5pc1VSTCA9IGZhbHNlOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5
IGFsbG93CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9h
cmRUeXBlUlRGKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZl
cnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBt
X3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0
UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVSVEYsIGl0ZW1JbmRleCwgc3RyYXRl
Z3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBz
dHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKQEAgLTQwOCw3ICs0
MDgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwg
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5z
KFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gcGF0aG5hbWVzOwotICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JU
eXBlKHBhdGhuYW1lcywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgICAgIHN0cmF0ZWd5LmdldFBhdGhuYW1lc0ZvclR5cGUocGF0aG5hbWVz
LCBsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgICAgICB0ZXh0LnRleHQgPSBqb2luUGF0aG5hbWVzKHBhdGhuYW1lcyk7CiAg
ICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDE2LDcgKzQx
Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQ
bGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAKICAgICAvLyBGSVhNRTogVGhlIGNvZGUg
YWJvdmUgbG9va3MgYXQgdGhlIHR5cGVzIHZlY3RvciBmaXJzdCwgYnV0IHRoaXMganVzdCBnZXRz
IHRoZSBzdHJpbmcgd2l0aG91dCBjaGVja2luZy4gV2h5IHRoZSBkaWZmZXJlbmNlPwogICAgIGlm
IChhbGxvd1VSTCA9PSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCkgewotICAg
ICAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5VVJM
UGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIHRleHQudGV4dCA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogICAgICAgICB0ZXh0LmlzVVJMID0gIXRleHQudGV4dC5pc051bGwo
KTsKICAgICB9CiB9CkBAIC00MjcsMTUgKzQyNywxNSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xp
YwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgaWYgKGl0ZW1JbmRleCkgewotICAg
ICAgICBpZiAoYXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoKml0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCkpCisgICAgICAg
IGlmIChhdXRvIGl0ZW1JbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCgq
aXRlbUluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50LCBjb250ZXh0KCkpKQog
ICAgICAgICAgICAgdHlwZXMgPSBpdGVtSW5mby0+cGxhdGZvcm1UeXBlc0J5RmlkZWxpdHk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAKICAgICByZWFkZXIuY29udGVudE9yaWdpbiA9IHJlYWRPcmlnaW4oKTsK
IAogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KFdlYkFy
Y2hpdmVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkg
eworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5k
ZXgoV2ViQXJjaGl2ZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRXZWJBcmNoaXZlKCpidWZmZXIpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50
UmVhZGluZ1BvbGljCiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
aWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlV2ViQXJjaGl2ZSkpKSB7Ci0gICAgICAg
IGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBl
V2ViQXJjaGl2ZSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGtV
VFR5cGVXZWJBcmNoaXZlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3Vu
dCgpIHx8IHJlYWRlci5yZWFkV2ViQXJjaGl2ZSgqYnVmZmVyKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTQ1Nyw0NiArNDU3LDQ2IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1Bv
bGljeTo6QW55VHlwZSAmJiB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVzUGFz
dGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwotICAgICAg
ICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKHBhdGhzLCBsZWdhY3lGaWxlbmFtZXNQYXN0
ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0
aG5hbWVzRm9yVHlwZShwYXRocywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
Y2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEZpbGVQYXRocyhwYXRocykpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lI
VE1MUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3Ry
aW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBTdHJpbmcgc3RyaW5n
ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlw
ZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
ICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8ICghc3RyaW5nLmlz
TnVsbCgpICYmIHJlYWRlci5yZWFkSFRNTChzdHJpbmcpKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TUGFzdGVib2FyZFR5cGVI
VE1MKSkpIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0
ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlSFRNTCwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0
ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZUhUTUwsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9
IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRIVE1MKHN0
cmluZykpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAo
YXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7
CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQg
IT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5z
KFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGRCkpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZl
ciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGRCwg
aXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1
dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5
cGVSVEZELCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
KSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJl
YWRlci5yZWFkUlRGRCgqYnVmZmVyKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURlBhc3Rl
Ym9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBz
dHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCks
IGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAg
ICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJl
YWRSVEYoKmJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGKSkp
IHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KE5TUGFzdGVib2FyZFR5cGVSVEYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJl
ZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkUlRGKCpidWZmZXIpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTA2LDI4ICs1MDYsMjggQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0eXBl
cy5jb250YWlucyhTdHJpbmcobGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAg
ICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5
VElGRlBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCAiaW1hZ2UvdGlmZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9h
cmRUeXBlVElGRikpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlVElGRiwgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVUSUZGLCBpdGVtSW5kZXgs
IHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBp
ZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCksICJpbWFnZS90aWZmIl9zKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5n
KGxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIg
PSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UERGUGFzdGVib2FyZFR5cGUo
KSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYg
KGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVBERlBh
c3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50
KCkgfHwgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImFwcGxpY2F0
aW9uL3BkZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUERGKSkpIHsK
LSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4
KE5TUGFzdGVib2FyZFR5cGVQREYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUERGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAh
PSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCksICJhcHBsaWNhdGlvbi9wZGYiX3MpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNTM1LDcgKzUzNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmICh0eXBlcy5j
b250YWlucyhTdHJpbmcoa1VUVHlwZVBORykpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBlUE5HLCBpdGVtSW5kZXgsIHN0
cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoa1VUVHlwZVBORywgaXRlbUluZGV4LCBzdHJh
dGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1f
Y2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpLCAiaW1hZ2UvcG5nIl9zKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAo
dHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVKUEVHKSkpIHsKLSAgICAgICAgaWYgKGF1dG8g
YnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGtVVFR5cGVKUEVHLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBi
dWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoa1VUVHlwZUpQRUcsIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAg
ICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRJbWFn
ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL2pwZWciX3MpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTUyLDIxICs1NTIsMjEgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lVUkxQYXN0ZWJvYXJkVHlw
ZSgpKSkpIHsKLSAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnVybChtX3Bhc3RlYm9hcmROYW1l
KTsKLSAgICAgICAgU3RyaW5nIHRpdGxlID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4
KFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnVybChtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpOworICAgICAgICBTdHJpbmcgdGl0bGUgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoV2ViVVJMTmFtZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgKCF1cmwuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRVUkwodXJsLCB0aXRs
ZSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlu
cyhTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIFN0cmlu
ZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSB8fCAoIXN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChzdHJp
bmcpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlVVRG
OFBsYWluVGV4dCkpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVneS5zdHJpbmdG
b3JUeXBlKGtVVFR5cGVVVEY4UGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAg
U3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoa1VUVHlwZVVURjhQbGFpblRl
eHQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQ
bGFpblRleHQoc3RyaW5nKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTc2LDcg
KzU3Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogYm9vbCBQYXN0ZWJv
YXJkOjpoYXNEYXRhKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAg
IHJldHVybiAhdHlwZXMuaXNFbXB0eSgpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgU3RyaW5nIGNvY29hVHlw
ZSA9IGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSh0eXBlKTsKICAgICBpZiAoY29jb2FU
eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUo
ZW1wdHlTdHJpbmcoKSwgY29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBtX2NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRT
dHJpbmdGb3JUeXBlKGVtcHR5U3RyaW5nKCksIGNvY29hVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFBsYXRmb3Jt
VmFsdWVzQXNTdHJpbmdzKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTYxOCw3ICs2MTgsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3Qg
U3RyaW5nJiBkb21UeXBlLCBpbgogICAgIGlmIChjb2NvYVR5cGUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgYXV0byB2YWx1ZXMgPSBzdHJhdGVneS5hbGxTdHJpbmdzRm9y
VHlwZShjb2NvYVR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIHZhbHVlcyA9IHN0cmF0
ZWd5LmFsbFN0cmluZ3NGb3JUeXBlKGNvY29hVHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiAgICAgaWYgKGNvY29hVHlwZSA9PSBTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKSkpIHsKICAgICAgICAgdmFsdWVzID0gdmFsdWVzLm1hcChbJl0gKGF1dG8mIHZhbHVlKSAt
PiBTdHJpbmcgewogICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZSBwcmVjb21wb3NlZFN0cmluZ1dp
dGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
YXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5nJiBkb21U
eXBlLCBpbgogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2ZXMgZm9yIHNlY3Vy
aXR5LiAgV2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAg
IC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdl
IGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKGNoYW5nZUNvdW50ICE9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQocGFz
dGVib2FyZE5hbWUpKQorICAgIGlmIChjaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIHZhbHVlczsKQEAgLTY4
Miw4ICs2ODIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgICAgICB0eXBlcy5hcHBlbmQoY29jb2FUeXBl
KTsKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
ZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgIG1fY2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0Zv
clR5cGUoY29jb2FEYXRhLCBjb2NvYVR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVz
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JU
eXBlKGNvY29hRGF0YSwgY29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02OTMsOCArNjkzLDggQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgZWxzZSB3ZSBrbm93
IG9mIGdvZXMgb24gdGhlIHBib2FyZCBhcyBhIHN0cmluZwogICAgICAgICBWZWN0b3I8U3RyaW5n
PiB0eXBlczsKICAgICAgICAgdHlwZXMuYXBwZW5kKGNvY29hVHlwZSk7Ci0gICAgICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YWRkVHlwZXModHlwZXMsIG1f
cGFzdGVib2FyZE5hbWUpOwotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvY29hRGF0YSwg
Y29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5hZGRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShjb2NvYURhdGEsIGNv
Y29hVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICB9CiB9CiAKQEAgLTcw
MywxNCArNzAzLDE0IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMo
KQogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHN0cmF0ZWd5Lmdl
dFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBzdHJhdGVneS5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSkpKQogICAgICAg
ICByZXR1cm4gbV9wcm9taXNlZEZpbGVQYXRoczsKIAogICAgIGlmICh0eXBlcy5jb250YWlucyhT
dHJpbmcobGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGZpbGVQYXRoczsKLSAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0aG5hbWVzRm9yVHlw
ZShmaWxlUGF0aHMsIGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2Fy
ZE5hbWUpOworICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKGZpbGVQYXRocywg
bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKICAgICAgICAgcmV0dXJuIGZpbGVQYXRoczsKICAgICB9CiAKQEAgLTc5Niw3ICs3OTYs
NyBAQCBzdGF0aWMgdm9pZCBzZXREcmFnSW1hZ2VJbXBsKE5TSW1hZ2UgKmltYWdlLCBOU1BvaW50
IG9mZnNldCkKIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSBpbWFnZSwg
Y29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogewogICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcg
dGhlIGRyYWcgaW1hZ2UgaWYgc29tZW9uZSBrZXB0IGEgcGFzdGVib2FyZCBhbmQgaXMgdHJ5aW5n
IHRvIHNldCB0aGUgaW1hZ2UgdG9vIGxhdGUuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bh
c3RlYm9hcmROYW1lKSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERhc2hib2FyZCB3YW50cyB0
byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcgZHJhZ2dpbmcsIGJ1dCBDb2Nv
YSBkb2VzIG5vdCBhbGxvdyB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCA0OTU3NThiMzI0Nzhh
ZDk0ZWUwZjU0ZjFhNmRhMjdkOWI4ZjVkMzU5Li5jMDc2ZDk0YjZlMjRiY2QyZDE5ZGI0NzU5Y2Qx
OWJiYWYzYmFmYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpkaWRNb2RpZnlDb250ZW50c09mUGFzdGVib2FyZChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgfQogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
Z2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQ
YXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9h
cmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMKICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLAordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNG
b3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgcGF0aG5hbWVzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRib3hFeHRl
bnNpb25zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBM
RVRJT04oIXBhc3RlYm9hcmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7
IH0pKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocGF0aG5hbWVzKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5z
aW9ucykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0tfQ09NUExFVElPTighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRT
dHJpbmdzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVU
SU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKHsgfSkpOwog
CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRTdHJpbmdzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICBjb21wbGV0
aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFN0cmluZ3NG
b3JUeXBlKHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1
ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tf
Q09NUExFVElPTighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcih7
IH0pKTsKIApAQCAtMjE4LDEyICsyMTgsMTIgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFu
ZGxlKSwgc2l6ZSB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKSk7
CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
Q29sb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0
ZWJvYXJkRGF0YShjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5jb2xvcigpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRV
UkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2Fu
QWNjZXNzUGFzdGVib2FyZERhdGEoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFN0cgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsKCkuc3RyaW5nKCkpOwogfQogCi12b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJvYXJkVHlwZXMo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVib2Fy
ZE5hbWUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CiAKQEAgLTI1Miw3ICsyNTIs
NyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUwogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0No
YW5nZUNvdW50KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRU
eXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNT
QUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29tcGxldGlv
bkhhbmRsZXIoMCkpOwogCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnNldFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFMKICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2Fy
ZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1l
LmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoMCkpOwogCkBAIC0yODQsNyArMjg0LDcgQEAg
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBQYXMKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBjb2xvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29s
b3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkTmFtZS5p
c0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKDApKTsKIApAQCAtMjk0LDcgKzI5NCw3IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291
bnQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTigh
cGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CiAgICAgTUVT
U0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCksIGNvbXBsZXRp
b25IYW5kbGVyKDApKTsKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LAogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5nZUNvdW50KTsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0ZWJvYXJk
VHlwZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5Ojpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rp
b24mIGNvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5jb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZygpKTsKIH0KIAotdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXJsU3RyaW5nU3VpdGFibGVG
b3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmREYXRhKGNvbm5lY3Rpb24sIHBh
c3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9
KTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXJsU3RyaW5n
U3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbgogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUodXJsU3RyaW5nKSwgV1RGTW92ZSh0aXRsZSkpOwogfQogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYg
aXBjSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmIGlwY0hhbmRsZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29t
cGxldGlvbkhhbmRsZXIoMCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVi
b2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CkBAIC0zNDQsNyArMzQ0
LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdD
aGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZp
bGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5
cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKDApOwpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXROdW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5udW1iZXJPZkZpbGVzKCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighb3JpZ2luLmlzTnVsbCgpLCBjb21w
bGV0aW9uSGFuZGxlcih7IH0pKTsKIApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3RpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS50eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShvcmlnaW4pKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVD
dXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgVmVjdG9yPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2
NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJ
T04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoMCkpOwogCkBA
IC0zNzIsNyArMzcyLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0
YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFZlY3QKICAgICBjb21wbGV0aW9u
SGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojph
bGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRl
bUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bh
c3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oY2hhbmdlQ291bnQpKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0ZWJvYXJkVHlw
ZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBjaGFuZ2VDb3VudCkp
OwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2Fy
ZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKDApOwpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9h
cmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9KSk7CiAKQEAgLTQwNiw3ICs0
MDYsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRleCwgcGFzdGVi
b2FyZFR5cGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1
cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYg
dXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFj
YW5BY2Nlc3NQYXN0ZWJvYXJkRGF0YShjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7CkBAIC00MTYsNyArNDE2LDcg
QEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemUKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHVybCksIFdURk1vdmUodGl0bGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5
KCksIGNvbXBsZXRpb25IYW5kbGVyKHsgfSkpOwogCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIHMKICAgICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2l6ZSB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9N
VG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBw
YXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVVJMVG9QYXN0
ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OndyaXRlVVJMVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogewogICAgIE1FU1NBR0VfQ0hFQ0soIXBhc3Rl
Ym9hcmROYW1lLmlzRW1wdHkoKSk7CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdAogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpE
aWRXcml0ZVRvUGFzdGVib2FyZEFzeW5jaHJvbm91c2x5KHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9
CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2Vi
Q29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5
KCkpOwogCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
V2ViQ29udGVudFRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkV3JpdGVUb1Bhc3RlYm9h
cmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSksIDApOwogfQogCi12b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Ondy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKICAgICBN
RVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5KCkpOwogCkBAIC00ODIsNyArNDgy
LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6RGlkV3JpdGVUb1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0
ZWJvYXJkTmFtZSksIDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJp
bmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9h
cmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyghcGFz
dGVib2FyZE5hbWUuaXNFbXB0eSgpKTsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkVHlw
ZS5pc0VtcHR5KCkgfHwgdGV4dC5pc0VtcHR5KCkpOwpAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkRpZFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVib2FyZE5hbWUp
LCAwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRleCBiYzdjYzBhNDhkMDk2MTE3NTY0
OTE3YTkwNWYzYjgxZjRkNDVlODk2Li5kZDZjZGM1MmY3NDIyOTBhNjlmNzdmMDk3OTBjZWNkZmU0
ZmY2OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eS5jcHAKQEAgLTgwLDYyICs4MCw2MiBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlBhc3RlYm9hcmRQ
cm94eTo6d2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJUEM6OkNvbm5lY3RpbwogI2lmICFQ
TEFURk9STShDT0NPQSkKIAogI2lmICFQTEFURk9STShHVEspCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCosIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0KICNlbmRpZgogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFN0cmluZyYsIGludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5m
byhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90LCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KElQQzo6Q29ubmVjdGlvbiYsIHNpemVf
dCwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpD
b25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90LCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBj
b21wbGV0aW9uSGFuZGxlcigwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRV
UkxGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwg
U3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKICNpZiAhVVNFKExJ
QldQRSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChJUEM6OkNv
bm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAogI2Vu
ZGlmIC8vICFVU0UoTElCV1BFKQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNT
dHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zVVJMU3RyaW5n
U3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVy
bFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1
aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBT
dHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9LCB7IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuaAppbmRleCA0MzRkMTc2NGQwZTBlZmY4MTJiMTJhNzQyNjUzNDIyYWZlZDBiYjBm
Li5mNWNkNTk1OGIyY2Y0MzM2YzViZDAyZmI2ZGRjZTNjNjAzZTE3ODUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtMjgsMTAgKzI4LDEyIEBA
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
SGFzaFNldC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTg1LDQyICs4Nyw0MiBAQCBwcml2YXRl
OgogICAgIFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24mKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9p
ZCB3cml0ZVVSTFRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCB3
cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
LSAgICB2b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
Ci0gICAgdm9pZCB3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKLSAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOworICAgIHZvaWQgd3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik7CisgICAgdm9pZCB3cml0ZVdl
YkNvbnRlbnRUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVi
b2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4pOworICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsK
KyAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2b2lkIGdldE51bWJlck9mRmlsZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwot
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIHBhdGhu
YW1lcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+JiYpOwotICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ3NG
b3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYmKT4mJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4m
Jik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpD
b2xvciYmKT4mJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpOwotICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwot
ICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVi
b2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2
NF90KT4mJik7Ci0gICAgdm9pZCBzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDY0X3QpPiYmKTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldE51bWJlck9mRmlsZXMoSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4m
Jik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lk
IGdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmIHBhdGhuYW1lcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+
JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5
cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lk
IGdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lk
IGdldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29sb3ImJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZFVSTChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJk
VHlwZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2
b2lkIHNldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7
CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0
X3QpPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBD
OjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyYmKT4mJik7Ci0gICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0
aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKLSAgICB2
b2lkIHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+
JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
NjRfdCk+JiYpOwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5l
Y3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJik7Ci0gICAgdm9pZCBhbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYpOwotCi0gICAgdm9pZCB3cml0ZUN1c3Rv
bURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYpOwotICAgIHZvaWQgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvbnRhaW5z
VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAg
IHZvaWQgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYg
dXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Cisg
ICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcm
JiB0aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29u
bmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYm
KTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4+JiYpPiYmKTsKKworICAgIHZvaWQgd3JpdGVDdXN0b21EYXRhKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4m
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQg
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJik7CisgICAgdm9pZCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBl
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0
cmluZyYmIHRpdGxlKT4mJik7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBnZXRUeXBl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhOTU2ZDVhNzYzZDEzNDRlOGU2
MTBhZGI0MTM0YTY3NTE1ZDhjYmJlLi5mMjNmODVjZDU1ODAyNmQwOTk4NGY2ODcxODgwMjFmYzhl
NzhhNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw0MiArMjIsNDIgQEAKIAogbWVzc2FnZXMgLT4g
V2ViUGFzdGVib2FyZFByb3h5IE5vdFJlZkNvdW50ZWQgewogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgV3JpdGVVUkxUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRV
UkwgdXJsLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIFdhbnRzQ29ubmVjdGlvbgotICAgIFdyaXRl
V2ViQ29udGVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRl
bnQgY29udGVudCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBX
cml0ZUltYWdlVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFz
dGVib2FyZEltYWdlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIFdhbnRzQ29ubmVjdGlvbgotICAg
IFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRl
eHQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgV2FudHNDb25uZWN0aW9uCi0gICAgVXBkYXRlU3Vw
cG9ydGVkVHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpCisgICAgV3JpdGVVUkxUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRVUkwgdXJsLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRlV2Vi
Q29udGVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQg
Y29udGVudCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBXcml0ZUltYWdlVG9QYXN0ZWJv
YXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlLCBTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHNDb25uZWN0aW9uCisgICAg
VXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJz
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpCiAjZW5kaWYKIAotICAgIFdyaXRlQ3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE+IGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGlu
dDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFR5cGVz
U2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIG9y
aWdpbikgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rp
b24KLSAgICBBbGxQYXN0ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBpbnQ2
NF90IGNoYW5nZUNvdW50KSAtPiAoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4+IGFsbEluZm8pIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mbykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgR2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXND
b3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgUmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlv
bgotICAgIFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KLSAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgs
IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVj
dGlvbgotICAgIENvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoU3RyaW5nIHR5
cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KKyAgICBXcml0ZUN1c3RvbURhdGEoVmVjdG9yPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhPiBkYXRhLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+PiBhbGxJbmZvKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAg
ICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
IGluZm8pIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpIFN5bmNocm9ub3VzIFdhbnRz
Q29ubmVjdGlvbgorICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwg
U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJv
bm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3Qg
aW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMg
V2FudHNDb25uZWN0aW9uCisgICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGlu
ZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgaGFuZGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBD
b250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKFN0cmluZyB0eXBlLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCi0gICAgR2V0TnVtYmVyT2ZG
aWxlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZpbGVzKSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5n
IHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFN0cmluZz4g
cGF0aG5hbWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hF
eHRlbnNpb25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJk
U3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdl
dFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHN0cmluZ3MpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdl
dFBhc3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChpbnQ2NF90
IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwotICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgU3luY2hyb25vdXMgV2Fu
dHNDb25uZWN0aW9uCi0gICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUp
IC0+IChTdHJpbmcgdXJsU3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBB
ZGRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBw
YXN0ZWJvYXJkVHlwZXMpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50
KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVj
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSkgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlv
bgotICAgIFNldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6
OkNvbG9yIGNvbG9yKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHND
b25uZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJpbmcpIC0+IChpbnQ2NF90
IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJv
YXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIC0+IChpbnQ2NF90
IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBDb250YWluc1VS
TFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChib29s
IHJlc3VsdCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgVVJMU3RyaW5nU3VpdGFi
bGVGb3JMb2FkaW5nKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmwsIFN0cmlu
ZyB0aXRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0TnVtYmVyT2ZGaWxl
cyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50c0Nv
bm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmlu
Zz4gdHlwZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRQ
YXRobmFtZXNGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRU
eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9y
PFN0cmluZz4gcGF0aG5hbWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IHNhbmRib3hFeHRlbnNpb25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4g
KFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3Rl
Ym9hcmRTdHJpbmdzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZl
Y3RvcjxTdHJpbmc+IHN0cmluZ3MpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBh
c3RlYm9hcmRUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChp
bnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cworICAgIEdldFBhc3RlYm9hcmRDb2xvcihT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQpIC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0
aW9uCisgICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsU3RyaW5nKSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBBZGRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5n
IHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50
KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3Ry
aW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNv
dW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0
cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGlu
dDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldFBh
c3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yIGNvbG9y
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBj
aGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgU2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5
cGUsIFN0cmluZyBzdHJpbmcsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24K
KyAgICBTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyBwYXN0ZWJvYXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5k
bGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90
IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb250YWluc1VS
TFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDJhZDQ1YzUxYzIxNGEz
OWM0ZmZiNzdjNmM5YjhiYjM0MmZjNmFiZjQuLjU0ZTQ3MDFiNmYzMTk2ZGFmN2EzZDhhZTE3YjNh
NDY4Yjg3NjI1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbQpAQCAtNzgsNiArNzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Nb3Vz
ZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BERkRvY3VtZW50SW1hZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlUGFzdGVib2FyZENvbnRleHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0
Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CkBAIC0yNTg3LDEw
ICsyNTg4LDExIEBAIHZvaWQgUERGUGx1Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKCkK
IHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJv
YXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5TQXJyYXkgKnR5cGVzKQogewogICAgIGF1dG8gcGFz
dGVib2FyZFR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHR5cGVzKTsKKyAgICBhdXRvIHBhZ2VJ
ZGVudGlmaWVyID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA/IG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5wYWdlSUQoKSA6IFdURjo6bnVsbG9wdDsKIAogICAgIGludDY0X3QgbmV3Q2hh
bmdlQ291bnQ7CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
OwotICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkVHlwZXMpLAorICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVi
b2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMsIHBhZ2VJZGVudGlmaWVy
KSwKICAgICAgICAgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5
cGVzOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogCiAgICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwLCBjb3VudCA9IGl0ZW1zLmNvdW50OyBpIDwgY291bnQ7ICsraSkgewpAQCAtMjYwNCwxNSAr
MjYwNiwxNSBAQCB2b2lkIFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmlu
ZyAqcGFzdGVib2FyZE5hbWUsIE5TQXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpXSB8fCBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6TlNQYXN0ZWJvYXJkVHlwZVN0cmlu
Z10pIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGxhaW5UZXh0U3RyaW5nID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pOwotICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3Ry
aW5nLmdldCgpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0
cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CisgICAgICAgICAgICBhdXRv
IHBsYWluVGV4dFN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRh
OmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgICAgIHdlYlBy
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUs
IHR5cGUsIHBsYWluVGV4dFN0cmluZy5nZXQoKSwgcGFnZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3
Q2hhbmdlQ291bnQpLCAwKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5LT5kYXRhKCksIGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICBzaGFyZWRNZW1vcnktPmNy
ZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwot
ICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3Zl
KGhhbmRsZSksIGJ1ZmZlci0+c2l6ZSgpIH0pLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsK
KyAgICAgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5
cGUocGFzdGVib2FyZE5hbWUsIHR5cGUsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92
ZShoYW5kbGUpLCBidWZmZXItPnNpemUoKSB9LCBwYWdlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlOjpSZXBseShuZXdD
aGFuZ2VDb3VudCksIDApOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAppbmRleCAzNjZmYjgxMTQ1NzBlOTRlOGVmOTE0ZjNjMjEwNjk4MzM0N2E2
NWU0Li40OTU0MDQzYmMwODExN2Y1ZTcyNzAyMDJiY2ExMGM5OGUyZjNhYmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VQ
YXN0ZWJvYXJkQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZv
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Byb2dyZXNzVHJhY2tlci5oPgpAQCAtMTA5LDEwICsxMTAsMTggQEAgQmxvYlJlZ2lz
dHJ5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiAgICAgcmV0
dXJuIG5ldyBCbG9iUmVnaXN0cnlQcm94eTsKIH0KIAorc3RhdGljIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSWRlbnRpZmllcihjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
K3sKKyAgICBpZiAoIWlzPFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oY29udGV4dCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8UGFnZVBhc3RlYm9h
cmRDb250ZXh0PigqY29udGV4dCkucGFnZUlEKCk7Cit9CisKICNpZiBQTEFURk9STShDT0NPQSkK
IC8vIFBhc3RlYm9hcmRTdHJhdGVneQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICAv
LyBUaGUgcHVycG9zZSBvZiB0aGUgb3ZlcnJpZGVzIGlzIHRvIGF2b2lkIG1lc3NhZ2luZyBiYWNr
IHRvIHRoZSBVSSBwcm9jZXNzLgpAQCAtMTIxLDEwICsxMzAsMTAgQEAgdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWIKICAgICBpZiAoIXR5cGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBh
c3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2Fy
ZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIo
Y29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlw
ZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRo
ZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPGNoYXI+IG92ZXJyaWRlQnVmZmVyOwpAQCAtMTMzLDcz
ICsxNDIsNzMgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYKIAogICAgIC8vIEZhbGxiYWNrIHRv
IG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4K
ICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUocGFzdGVib2Fy
ZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
UGFzdGVib2FyZEJ1ZmZlckZvclR5cGU6OlJlcGx5KGlwY0hhbmRsZSksIDApOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBh
c3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZTo6
UmVwbHkoaXBjSGFuZGxlKSwgMCk7CiAgICAgaWYgKGlwY0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+
ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
K3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxT
dHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zSGFu
ZGxlQXJyYXk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZFBhdGhuYW1lc0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVz
Rm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwKICAgICAgICAgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5KHBhdGhuYW1lcywgc2FuZGJveEV4dGVuc2lvbnNI
YW5kbGVBcnJheSksIDApOwogICAgIEFTU0VSVChwYXRobmFtZXMuc2l6ZSgpID09IHNhbmRib3hF
eHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25z
dW1lUGVybWFuZW50bHkoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSk7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBw
YXN0ZWJvYXJkVHlwZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9h
cmRTdHJpbmdGb3JUeXBlOjpSZXBseSh2YWx1ZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1l
LCBwYXN0ZWJvYXJkVHlwZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkodmFsdWUp
LCAwKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1ZlY3RvcjxTdHJpbmc+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdmFsdWVzOwotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShwYXN0
ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpHZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGU6OlJlcGx5KHZhbHVlcyksIDApOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlw
ZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFN0cmluZ3NGb3JU
eXBlOjpSZXBseSh2YWx1ZXMpLCAwKTsKICAgICByZXR1cm4gdmFsdWVzOwogfQogCi1pbnQ2NF90
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpbnQ2NF90IGNoYW5nZUNvdW50IHsgMCB9OwogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndhaXRGb3JQZW5kaW5nUGFzdGVib2FyZFdyaXRlc1RvRmluaXNoKHBhc3RlYm9h
cmROYW1lKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJv
YXJkQ2hhbmdlQ291bnQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQ6OlJlcGx5KGNoYW5nZUNvdW50KSwgMCk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENoYW5nZUNv
dW50KHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudDo6UmVwbHkoY2hhbmdl
Q291bnQpLCAwKTsKICAgICByZXR1cm4gY2hhbmdlQ291bnQ7CiB9CiAKLUNvbG9yIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK0NvbG9y
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQ29sb3IgY29sb3I7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENvbG9y
KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZENvbG9yOjpSZXBseShjb2xvciksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OkdldFBhc3RlYm9hcmRDb2xvcihwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZp
ZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJk
Q29sb3I6OlJlcGx5KGNvbG9yKSwgMCk7CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi1VUkwgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1VS
TCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTdHJpbmcgdXJsU3Ry
aW5nOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRV
UkwocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0
ZWJvYXJkVVJMOjpSZXBseSh1cmxTdHJpbmcpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVVJMKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRp
Zmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9h
cmRVUkw6OlJlcGx5KHVybFN0cmluZyksIDApOwogICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJp
bmcpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2NF90IG5ld0No
YW5nZUNvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFk
ZFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGVzKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzOjpSZXBseShuZXdDaGFu
Z2VDb3VudCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFkZFBh
c3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGVzLCBwYWdlSWRlbnRp
Zmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFkZFBhc3RlYm9h
cmRUeXBlczo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdl
Q291bnQ7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgbmV3
Q2hhbmdlQ291bnQgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
U2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KG5ld0No
YW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0
UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMsIHBhZ2VJZGVu
dGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVi
b2FyZFR5cGVzOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFu
Z2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZv
clR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFu
ZGxlOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKQEAgLTIxMiw4MSArMjIx
LDgxIEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpCiAgICAgICAgIH0KICAgICB9CiAgICAgaW50
NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVi
b2FyZFR5cGUsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDAgfSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJG
b3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCB9LCBw
YWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAg
IHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFVS
TChjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2
NF90IG5ld0NoYW5nZUNvdW50OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlNldFBhc3RlYm9hcmRVUkwocGFzdGVib2FyZFVSTCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVVJMOjpSZXBseShuZXdDaGFuZ2VD
b3VudCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3Rl
Ym9hcmRVUkwocGFzdGVib2FyZFVSTCwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFVSTDo6
UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9
CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBp
bnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlNldFBhc3RlYm9hcmRDb2xvcihwYXN0ZWJvYXJkTmFtZSwgY29sb3IpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KG5ld0No
YW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0
UGFzdGVib2FyZENvbG9yKHBhc3RlYm9hcmROYW1lLCBjb2xvciwgcGFnZUlkZW50aWZpZXIoY29u
dGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQ29sb3I6
OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50Owog
fQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JU
eXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgc3RyaW5nKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0No
YW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBz
dHJpbmcsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwg
MCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitp
bnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IHVpbnQ2NF90IG51bWJlck9mRmlsZXMgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0TnVtYmVyT2ZGaWxlcyhwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldE51bWJlck9mRmlsZXM6OlJlcGx5KG51bWJlck9mRmlsZXMp
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXROdW1iZXJPZkZp
bGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldE51bWJlck9mRmlsZXM6OlJlcGx5KG51bWJlck9mRmlsZXMp
LCAwKTsKICAgICByZXR1cm4gbnVtYmVyT2ZGaWxlczsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNV
UkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgYm9vbCByZXN1bHQ7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNVUkxTdHJpbmdTdWl0
YWJsZUZvckxvYWRpbmcocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpDb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZzo6UmVwbHkocmVzdWx0KSwg
MCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNVUkxTdHJp
bmdTdWl0YWJsZUZvckxvYWRpbmcocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNVUkxTdHJpbmdTdWl0
YWJsZUZvckxvYWRpbmc6OlJlcGx5KHJlc3VsdCksIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9h
ZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQorU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQogewogICAgIFN0cmluZyB1cmw7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKHBhc3RlYm9hcmRO
YW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VVJMU3RyaW5nU3VpdGFibGVGb3JM
b2FkaW5nOjpSZXBseSh1cmwsIHRpdGxlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKHBhc3RlYm9hcmROYW1lLCBw
YWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlVS
TFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZzo6UmVwbHkodXJsLCB0aXRsZSksIDApOwogICAgIHJl
dHVybiB1cmw7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNo
cm9ub3VzbHkocGFzdGVib2FyZE5hbWUpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6V3JpdGVVUkxUb1Bhc3RlYm9hcmQodXJsLCBwYXN0ZWJvYXJkTmFtZSksIDApOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVVUkxUb1Bhc3RlYm9hcmQodXJsLCBwYXN0
ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRXZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVdlYkNv
bnRlbnRUb1Bhc3RlYm9hcmQoY29udGVudCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb250
ZW50LCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0KIAot
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRJbWFnZSYgaW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
Cit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVib2Fy
ZE5hbWUpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVJbWFnZVRvUGFz
dGVib2FyZChpbWFnZSwgcGFzdGVib2FyZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OldyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoaW1hZ2UsIHBhc3RlYm9hcmROYW1l
LCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIDApOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVi
b2FyZE5hbWUpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVTdHJpbmdU
b1Bhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUsIHRleHQsIHBhc3RlYm9hcmROYW1lKSwgMCk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChw
YXN0ZWJvYXJkVHlwZSwgdGV4dCwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgMCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0
ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVw
ZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRp
ZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VXBkYXRl
U3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzLCBwYXN0ZWJvYXJkTmFtZSksIDAp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGlkZW50aWZpZXJzLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29u
dGV4dCkpLCAwKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCkBAIC0zNTYs
NTIgKzM2NSw1MiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29ucwogCiAjZW5kaWYgLy8gVVNFKExJ
QldQRSkKIAotVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbikKK1ZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKHBhc3RlYm9hcmROYW1lLCBv
cmlnaW4pLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpUeXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZTo6UmVwbHkodHlwZXMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShwYXN0ZWJvYXJkTmFtZSwg
b3JpZ2luLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlOjpSZXBseSh0eXBlcyksIDApOwog
ICAgIHJldHVybiB0eXBlczsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Ondy
aXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBk
YXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlQ3VzdG9tRGF0YShkYXRhLCBwYXN0
ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlQ3VzdG9tRGF0
YTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpXcml0ZUN1c3RvbURhdGEoZGF0YSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVu
dGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVDdXN0
b21EYXRhOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VD
b3VudDsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5n
U2FmZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUodHlwZSwgcGFzdGVib2Fy
ZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpDb250YWluc1N0cmluZ1NhZmVG
b3JET01Ub1JlYWRGb3JUeXBlOjpSZXBseShyZXN1bHQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpDb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBl
KHR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5
cGU6OlJlcGx5KHJlc3VsdCksIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWludCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKIHsKICAgICB1aW50NjRfdCBpdGVtc0NvdW50IHsgMCB9OwotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQ6OlJlcGx5KGl0ZW1zQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChwYXN0ZWJvYXJkTmFt
ZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudDo6UmVwbHkoaXRlbXNDb3VudCksIDApOwogICAgIHJl
dHVybiBpdGVtc0NvdW50OwogfQogCi1PcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZv
Pj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkKK09wdGlvbmFsPFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBPcHRpb25hbDxW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbzsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVib2FyZE5hbWUsIGNo
YW5nZUNvdW50KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFzdGVib2FyZEl0
ZW1JbmZvOjpSZXBseShhbGxJbmZvKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1lLCBjaGFuZ2VDb3Vu
dCwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm86OlJlcGx5KGFsbEluZm8pLCAwKTsKICAgICByZXR1cm4g
YWxsSW5mbzsKIH0KIAotT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KQorT3B0aW9uYWw8UGFz
dGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2
NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm87Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVi
b2FyZE5hbWUsIGNoYW5nZUNvdW50KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleDo6UmVwbHkoaW5mbyksIDApOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBh
c3RlYm9hcmROYW1lLCBjaGFuZ2VDb3VudCwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBs
eShpbmZvKSwgMCk7CiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgaXBjSGFuZGxlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9h
cmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBl
LCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRs
ZSksIDApOwogICAgIGlmIChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtNDA5LDE3ICs0MTgsMTcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c2kKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7
CiB9CiAKLVVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUp
CitVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpS
ZWFkVVJMRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHVybFN0cmluZywgdGl0bGUpLCAwKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW5k
ZXgsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5n
LCB0aXRsZSksIDApOwogICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBh
c3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5
cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZDo6UmVwbHkodmFsdWUp
LCAwKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAppbmRleCBhNDgzNzA5Nzg5ZTU2OGI3ODhmMmM1ODMzYzBmZjU5Mzc4MTA3YzljLi5iMzhhMGIx
ZDBlNWY5ZjgxYjUxZWY5NjIzOTdmNzQ4ZmM4NGM4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCkBAIC00NywzMiArNDcsMzIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6
OlBhc3RlYm9hcmRTdHJhdGVneQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OiBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJ
bWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8
U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IGNoYW5n
ZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNv
cmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwot
ICAgIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAg
aW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBXZWJD
b3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFVSTCB1cmwoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKIAotICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNl
dEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
aW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
LSAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CisgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90
IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldFVSTChjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90
IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBp
bnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKIAotICAgIGJvb2wgY29udGFpbnNVUkxTdHJp
bmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICBib29sIGNvbnRh
aW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgU3Ry
aW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFZlY3RvcjxTdHJpbmc+IHR5
cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpAQCAtODgsMTUgKzg4
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAg
U3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCByZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlKSBvdmVycmlkZTsKLSAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkgb3Zl
cnJpZGU7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+
IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2
NF90IGNoYW5nZUNvdW50KSBvdmVycmlkZTsKLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwotICAgIGJvb2wgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlw
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
KyAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFVS
TCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0
X3Qgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlw
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDM2Y2QxY2FlMDBlOWM2ZWNk
M2RhNzFkOThlMzAzMGIxMTE3MTFiMzkuLjM3OGQ0ZDYyNTUzYWMyMzAzOGVlNjk4ZDQwOTA2NDg3
YmMzNTVmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00OCwzOSArNDgsMzkg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
V2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAg
IHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZVRv
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVN1
cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVU
b1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
V2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAjZW5kaWYKLSAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIGludCBnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBp
bnQ2NF90IGNoYW5nZUNvdW50KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIG92ZXJyaWRlOwotICAgIGlu
dCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdz
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IGNoYW5nZUNvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCB1cmwoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQg
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIE9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQg
Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9y
PFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmlu
Z3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgaW50NjRfdCBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFdlYkNvcmU6
OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogCi0gICAgaW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBvdmVy
cmlkZTsKKyAgICBpbnQ2NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8U3Ry
aW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKIAotICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7Ci0gICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0Q29s
b3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKLSAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwot
ICAgIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBv
dmVycmlkZTsKKyAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0
VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnNT
dHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0KaW5kZXggZWJiYjNiZWE2ZWRiYjQ3YmNiNGUyZDBiMjk3ZmNkMDVlYmE2MzI5NS4uMTkz
ZjIwZDRlMDUyMTA0Zjk1ODMzNWY2MTczNTVmYjgzMTk3OGU5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQpAQCAtMTEyLDE1OSArMTEyLDE1OSBAQCBCbG9iUmVnaXN0cnkqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKICAgICByZXR1cm4gbmV3IFdl
YkJsb2JSZWdpc3RyeTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3Zv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikK
IHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVz
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVi
b2FyZFR5cGUpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuZ2V0UGF0aG5hbWVzRm9yVHlwZShwYXRobmFtZXMsIHBhc3RlYm9hcmRU
eXBlKTsKIH0KIAotVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJp
bmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQorVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsU3RyaW5nc0ZvclR5cGUocGFz
dGVib2FyZFR5cGUpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KIAot
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y2hhbmdlQ291
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNoYW5n
ZUNvdW50KCk7CiB9CiAKLUNvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29sb3IoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK0NvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29s
b3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbG9y
KCk7ICAgIAogfQogCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsKCk7CiB9CiAKLWlu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5hZGRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlw
ZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJk
VHlwZSk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwoY29uc3Qg
UGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwoY29uc3QgUGFzdGVib2Fy
ZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnNldFVSTChwYXN0ZWJvYXJkVVJMKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5zZXRDb2xvcihjb2xvcik7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50
NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRTdHJpbmdGb3JUeXBlKHN0cmluZywg
cGFzdGVib2FyZFR5cGUpOwogfQogCi1pbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXROdW1i
ZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5udW1iZXJPZkZpbGVzKCk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitWZWN0b3I8
U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdy
aXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkudHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUob3JpZ2luKTsK
IH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRl
Q3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiBk
YXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3Jp
dGUoZGF0YSk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1N0cmlu
Z1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgdHlwZSkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1N0
cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUodHlwZSk7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCkKK09wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIGNoYW5nZUNv
dW50KTsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpCitPcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjaGFu
Z2VDb3VudCk7CiB9CiAKLWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQogCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgs
IHRpdGxlKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAg
ICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhp
bmRleCwgdHlwZSk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1VS
TFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
Ym9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JM
b2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5j
b250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZygpOwogfQogCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsU3RyaW5nU3VpdGFi
bGVGb3JMb2FkaW5nKHRpdGxlKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJv
YXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwog
fQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOwogfQogCi12
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
K3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIGltYWdlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS53cml0ZShpbWFnZSk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CiB9CiAKLXZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlm
aWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhp
ZGVudGlmaWVycyk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="439512"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420843</attachid>
            <date>2021-02-18 10:27:10 -0800</date>
            <delta_ts>2021-02-18 11:07:36 -0800</delta_ts>
            <desc>Try to fix non-Cocoa builds</desc>
            <filename>bug-222071-20210218102709.patch</filename>
            <type>text/plain</type>
            <size>193801</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQwYThiZWRjMTlmYjkw
N2M1YTcxYzM2YjU2NzEyNDYxZTg5YjU2MS4uN2Q2ZWEzNTQ2NzE2ODk5MGZiNmQzZjM2Mzc3Yzhl
NjYwM2YwMTliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBsdW1iIGFuIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFdlYlBhc3RlYm9hcmRQcm94eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMg
YFBhc3RlYm9hcmRTdHJhdGVneWAgbWV0aG9kcyB0byBhZGRpdGlvbmFsbHkgdGFrZSBhIGBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCpgOyBhZGRpdGlvbmFsbHkKKyAgICAgICAgdXBkYXRlIGNhbGwg
c2l0ZXMgb2YgYFBhc3RlYm9hcmRTdHJhdGVneWAgbWV0aG9kcyB0byBwYXNzIGluIGEgY29udGV4
dCAoZS5nLiBgUGFzdGVib2FyZDo6Y29udGV4dCgpYCwgaW4gdGhlCisgICAgICAgIHZhc3QgbWFq
b3JpdHkgb2YgY2FzZXMgYmVsb3cpLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2Vs
ZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnNGb3JEcmFnSGFuZGxpbmdNZXRob2QgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJ
dGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFVSTCk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTFR5cGVJZGVudGlmaWVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpudW1iZXJPZkZpbGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZpbGVuYW1lcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0RhdGE6OmNvbnRhaW5zUHJvbWlzZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6Y29udGFpbnNVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFz
VVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3Jp
dGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJ
RmlkZWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpoYXNEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkRmlsZVBhdGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExp
YldQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTEZvclR5cGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJv
YXJkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNo
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
Omhhc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFBsYXRmb3JtVmFs
dWVzQXNTdHJpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKwogMjAyMS0wMi0xNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVtYiBhbiBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gdGhyb3VnaCBQYXN0ZWJvYXJkLXJlbGF0ZWQgY29kZXBh
dGhzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDc0MzBkYzdlYzA1MGQwZDdlMDNlMTcxMjE0ZTYwNjZlZWIwOWM2OTgu
LmNjNzYxMzU2MDBiZGQ0NWI4MTMxMzdlY2RmYzQ4MzlmNTc2ODQ0NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTcgQEAKKzIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHRocm91
Z2ggV2ViUGFzdGVib2FyZFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjIwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KmAgYXJndW1lbnRzIHRv
IHRoZSBgUGFzdGVib2FyZFN0cmF0ZWd5YCBtZXRob2RzIG9uIGBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXNgLCBjb252ZXJ0CisgICAgICAgIHRoZW0gdG8gYFBhZ2VJZGVudGlmaWVyYHMsIGFuZCBzZW5k
IHRoZW0gb3ZlciB0byB0aGUgVUkgcHJvY2VzcyB2aWEgYFdlYlBhc3RlYm9hcmRQcm94eWAgbWV0
aG9kcy4KKworICAgICAgICBXaGlsZSBjdXJyZW50bHkgdW51c2VkIGluc2lkZSBgV2ViUGFzdGVi
b2FyZFByb3h5YCwgdGhlIG5leHQgcGF0Y2ggd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGVzZSBwYWdl
IGlkZW50aWZpZXJzIHRvCisgICAgICAgIHJldHJpZXZlIGEgZGF0YSBvd25lciB0eXBlIGZyb20g
dGhlIGNvcnJlc3BvbmRpbmcgYFdlYlBhZ2VQcm94eWAsIGFuZCB0aGVuIGZvcndhcmQgdGhpcyBk
YXRhIG93bmVyIHR5cGUgdG8gdGhlCisgICAgICAgIGBQbGF0Zm9ybVBhc3RlYm9hcmRgLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1l
c0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5
OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFVSTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVHlwZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRDb2xvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5z
VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZpbGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1Jl
YWRGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVVS
TFRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsU3RyaW5nc0ZvclR5cGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphZGRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0VHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0
cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dE51bWJlck9mRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQ
YXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHRocm91
Z2ggUGFzdGVib2FyZC1yZWxhdGVkIGNvZGVwYXRocwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IDdkOWUzYTAyOTRlY2VhNzZjZmNmODRhZTQ3NGE5ODJhMTQ0ZDNjZGYuLjg4Njg1NGEw
MzAzNGRmNWZhODFjZDEzZjEwY2RkMWNjMTMyNmRjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVtYiBhbiBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gdGhyb3VnaCBXZWJQYXN0ZWJvYXJkUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjA3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBgY29uc3QgUGFzdGVib2FyZENvbnRleHQqYCBh
cmd1bWVudHMgdG8gdGhlIGBQYXN0ZWJvYXJkU3RyYXRlZ3lgIG1ldGhvZHMgb24gYFdlYlBsYXRm
b3JtU3RyYXRlZ2llc2AuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjaGFuZ2VDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbG9y
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRUeXBlcyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUpOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNVUkxTdHJpbmdTdWl0
YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJp
bmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3
cml0ZVRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHRocm91Z2ggUGFzdGVib2FyZC1yZWxhdGVkIGNvZGVwYXRocwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggMzFmMDFmNzk2MmJm
YTg0N2Y2NDJmOWY2NzkwOTk0MjAwYzAwZTJlMy4uYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0Njdi
ZWIzNTBlOTkxNGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1wb3J0ICJIVE1MU3BhbkVsZW1lbnQuaCIKICNp
bXBvcnQgIkxlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmgiCiAjaW1wb3J0ICJMZWdhY3lXZWJBcmNo
aXZlLmgiCisjaW1wb3J0ICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbXBvcnQgIlBhc3Rl
Ym9hcmQuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2ltcG9ydCAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCkBAIC0yNDcsOSArMjQ4LDEwIEBAIHZvaWQgRWRpdG9yOjp0YWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24oKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBWZWN0b3I8U3Ry
aW5nPiB0eXBlczsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKGxlZ2FjeVN0cmluZ1Bhc3RlYm9h
cmRUeXBlKCkpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNy
ZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0VHlwZXModHlwZXMsIE5TRmluZFBib2FyZCk7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKFdURk1vdmUoc3RyaW5n
RnJvbVNlbGVjdGlvbiksIGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIE5TRmluZFBib2Fy
ZCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRU
eXBlcyh0eXBlcywgTlNGaW5kUGJvYXJkLCBjb250ZXh0LmdldCgpKTsKKyAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUoV1RGTW92
ZShzdHJpbmdGcm9tU2VsZWN0aW9uKSwgbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgTlNG
aW5kUGJvYXJkLCBjb250ZXh0LmdldCgpKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICNlbHNlCiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4IDMw
M2FlNWIzYjJmMDYxZmVkYzVjNjU0ZDNiOTc0M2Y1YzI3ZGRmZTcuLmM0MGUzMDFhYmU4MWYwMWNj
MjQ3MTc4Mjk1NTMzZTgzNjM4OTY4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Ry
YWdDb250cm9sbGVyTWFjLm1tCkBAIC0xNDUsNyArMTQ1LDggQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgYnJlYWs7CiAgICAgfQogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9ydGVkVHlwZXMs
IGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOworICAgIGF1dG8gY29udGV4dCA9IGRyYWdEYXRh
LmNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9y
dGVkVHlwZXMsIGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGNvbnRleHQuZ2V0KCkpOwogfQog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5jcHAKaW5kZXggOWYxNmQ4ODYxZDFlYTE1ZjUxMzkzNDM1YTNlNGU1YmMwYTdkYmYy
My4uN2MxMGFlYzNjZjU2M2EwN2NjZGYxNWRmZDM1YjJkZDdiYTFlMDM2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgT3B0aW9uYWw8VmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5m
bygpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCksIG1fY2hhbmdlQ291
bnQpOworICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1l
KCksIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQpAQCAtNzUsNyArNzUsNyBAQCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+
IFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4gc3RyYXRlZ3kt
PmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG5hbWUoKSwgbV9jaGFuZ2VDb3VudCk7
CisgICAgICAgIHJldHVybiBzdHJhdGVneS0+aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRl
eCwgbmFtZSgpLCBtX2NoYW5nZUNvdW50LCBjb250ZXh0KCkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oaW5kZXgpOwogI2VuZGlmCkBAIC04NSwyMSArODUsMjEgQEAgT3B0aW9uYWw8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjpwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4
KSBjb25zdAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4gc3RyYXRlZ3kt
PnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpKTsKKyAgICAgICAg
cmV0dXJuIHN0cmF0ZWd5LT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5h
bWUoKSwgY29udGV4dCgpKTsKICAgICByZXR1cm4geyB9OwogfQogCiBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSk7CisgICAgICAgIHJl
dHVybiBzdHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1l
KCksIGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFVSTCBQYXN0ZWJvYXJk
OjpyZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAoYXV0byog
c3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCi0g
ICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBuYW1l
KCksIHRpdGxlKTsKKyAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkVVJMRnJvbVBhc3RlYm9h
cmQoaW5kZXgsIG5hbWUoKSwgdGl0bGUsIGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBh
MjcxYzBlODU0YzNkODQ3NzU5NjBjMzM2MjkwM2RmZjlmOTIxZWUyLi4yY2M5YjAwNGZhNzMzZjIz
NjQzNDY4NjIyZmFiY2E1MTM3MjFiYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwpAQCAtNDIsNDMgKzQzLDQzIEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIGNsYXNz
IFBhc3RlYm9hcmRTdHJhdGVneSB7CiBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJk
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3Rl
Ym9hcmQoY29uc3QgUGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRl
VG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
LSAgICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwotICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVh
bCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBp
bnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgaW50NjRfdCBhZGRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgaW50NjRf
dCBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRV
UkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBjb250YWlu
c1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwg
VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpID0gMDsK
LSAgICB2aXJ0dWFsIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0
ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCkgPSAwOwotICAgIHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1J
bmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAg
IHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogCi0gICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwotICAgIHZpcnR1YWwg
aW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CisgICAgdmlydHVhbCBpbnQ2NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVi
b2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9EcmFnRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0Rh
dGFDb2NvYS5tbQppbmRleCBlNDMzZWRiMzhlOGM1OGEwMDY1NGRiNWE1OWUxYmNkNDA5N2EzZDA5
Li5iNTJmN2I4MWNmZWQyZjNjYzQwNWZmMmRjZDkxZWNiMTZjYjQ4NmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTE2Miw3ICsxNjIs
OCBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbgogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkxU
eXBlSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2Fy
ZENvbnRleHQoKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKICAg
ICByZXR1cm4gdHlwZXMuY29udGFpbnModXJsUGFzdGVib2FyZFR5cGUoKSk7CiB9CiAgICAgCkBA
IC0xNzQsNyArMTc1LDggQEAgYm9vbCBEcmFnRGF0YTo6Y2FuU21hcnRSZXBsYWNlKCkgY29uc3QK
IGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29sb3IoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIGF1dG8gY29udGV4dCA9
IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKGNvbG9yUGFzdGVib2FyZFR5
cGUoKSk7CiB9CiAKQEAgLTE4NSwxOSArMTg3LDIxIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
RmlsZXMoKSBjb25zdAogCiB1bnNpZ25lZCBEcmFnRGF0YTo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0TnVtYmVyT2ZGaWxlcyhtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIGNvbnRleHQg
PSBjcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldE51bWJlck9mRmlsZXMobV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dC5nZXQoKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IERyYWdEYXRhOjphc0Zp
bGVuYW1lcygpIGNvbnN0CiB7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENv
bnRleHQoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0g
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dC5nZXQoKSk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmaWxlTmFtZXMoKTsKIAogICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3VsdHM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRQYXRobmFtZXNGb3JUeXBlKHJlc3VsdHMsIFN0cmluZyhsZWdh
Y3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRQYXRobmFtZXNGb3JU
eXBlKHJlc3VsdHMsIFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdHM7CiAjZWxz
ZQogICAgIHJldHVybiBmaWxlTmFtZXMoKTsKQEAgLTIwNiw4ICsyMTAsOSBAQCBWZWN0b3I8U3Ry
aW5nPiBEcmFnRGF0YTo6YXNGaWxlbmFtZXMoKSBjb25zdAogCiBib29sIERyYWdEYXRhOjpjb250
YWluc1BsYWluVGV4dCgpIGNvbnN0CiB7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVi
b2FyZENvbnRleHQoKTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKIAog
ICAgIHJldHVybiB0eXBlcy5jb250YWlucyhzdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKQogICAgICAg
ICB8fCB0eXBlcy5jb250YWlucyhydGZkUGFzdGVib2FyZFR5cGUoKSkKQEAgLTIxNSw3ICsyMjAs
NyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVz
UGFzdGVib2FyZFR5cGUoKSkpCiAjZW5kaWYKLSAgICAgICAgfHwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRG
b3JUeXBlKHVybFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB8
fCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUodXJsUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiB9CiAKIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRl
eHQoKSBjb25zdApAQCAtMjM2LDcgKzI0MSw4IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRl
eHQoKSBjb25zdAogCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29sb3IobV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5jb2xvcihtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKIH0KIAogYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2UgcHVycG9z
ZSkgY29uc3QKQEAgLTI1MCw4ICsyNTYsOSBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KERyYWdnaW5nUHVycG9zZSBwdXJwb3NlKSBjb25zdAogICAgIGlmIChwdXJw
b3NlID09IERyYWdnaW5nUHVycG9zZTo6Rm9yRWRpdGluZyAmJiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmIGNvbnRh
aW5zRmlsZXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBhdXRvIGNvbnRleHQgPSBj
cmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlw
ZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQu
Z2V0KCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICByZXR1cm4g
dHlwZXMuY29udGFpbnMoU3RyaW5nKFdlYkFyY2hpdmVQYm9hcmRUeXBlKSkKICAgICAgICAgfHwg
dHlwZXMuY29udGFpbnMoaHRtbFBhc3RlYm9hcmRUeXBlKCkpCkBAIC0yNzUsMjMgKzI4MiwyNSBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNQcm9taXNlKCkgY29uc3QKIHsKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVQYXN0ZWJv
YXJkQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJk
VHlwZSgpIGNvbnRhaW5zIFVUSXMsIG5vdCBwYXRoIG5hbWVzLiBBbHNvLCB3aHkgZG8gd2UKICAg
ICAvLyB0aGluayBwcm9taXNlcyBzaG91bGQgb25seSBjb250YWluIG9uZSBmaWxlIChvciBVVEkp
PwogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFBhdGhuYW1lc0ZvclR5
cGUoZmlsZXMsIFN0cmluZyhsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpKSwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5nZXRQYXRobmFtZXNGb3JUeXBlKGZpbGVzLCBTdHJpbmcobGVnYWN5RmlsZXNQcm9t
aXNlUGFzdGVib2FyZFR5cGUoKSksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQuZ2V0KCkpOwog
I2VuZGlmCiAgICAgcmV0dXJuIGZpbGVzLnNpemUoKSA9PSAxOwogfQogCiBib29sIERyYWdEYXRh
Ojpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kpIGNvbnN0CiB7Ci0gICAgaWYg
KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29udGFpbnNVUkxT
dHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSkpCisgICAgYXV0byBjb250
ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKTsKKyAgICBpZiAocGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0g
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dC5nZXQoKSk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpKSkgJiYgZmlsZU5hbWVzKCkuc2l6ZSgpID09IDEpCiAgICAgICAg
IHJldHVybiAhIVtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZU5hbWVzKCkuZmlyc3QoKV07CiAj
ZW5kaWYKQEAgLTMwMSwxMCArMzEwLDExIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZp
bGVuYW1lQ29udmVyc2lvblBvbGljeSkgY29uc3QKIAogU3RyaW5nIERyYWdEYXRhOjphc1VSTChG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CisgICAgYXV0
byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKTsKICAgICAvLyBGSVhNRTogVXNl
IGZpbGVuYW1lUG9saWN5LgogCiAgICAgU3RyaW5nIHVybFRpdGxlOwotICAgIGF1dG8gdXJsU3Ry
aW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT51cmxTdHJp
bmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSwgdXJsVGl0bGUpOworICAgIGF1
dG8gdXJsU3RyaW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT51cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSwgdXJsVGl0bGUs
IGNvbnRleHQuZ2V0KCkpOwogICAgIGlmICh0aXRsZSkKICAgICAgICAgKnRpdGxlID0gdXJsVGl0
bGU7CiAKQEAgLTMxMyw3ICszMjMsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVz
KHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKICAgICBpZiAodHlwZXMu
Y29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCkpKSAmJiBm
aWxlTmFtZXMoKS5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIFtVUkxCeUNhbm9uaWNhbGl6
aW5nVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZU5hbWVzKClbMF1dKSBhYnNvbHV0ZVN0
cmluZ107CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQppbmRleCA1NDU3ZTA1NTA4YTAyODJkNDk4YjYyNTk3MTNiMmI3MThiNWIw
YmVjLi44NzkyYjE2YmVkMWEzODY2NWI0MGRjNGI2MzY2MDQyOTlmZTIyZTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xMzMs
NyArMTMzLDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpzaG91bGRUcmVhdENvY29hVHlwZUFzRmlsZShj
b25zdCBTdHJpbmcmIGNvY29hVHlwZSkKIAogUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQ
YXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKCkKIHsKLSAgICBib29sIG1heUNvbnRhaW5GaWxl
UGF0aHMgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldE51
bWJlck9mRmlsZXMobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYm9vbCBtYXlDb250YWluRmlsZVBh
dGhzID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXROdW1i
ZXJPZkZpbGVzKG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChtYXlDb250YWluRmlsZVBhdGhzKSB7CkBAIC0xNTcsNyArMTU3
LDcgQEAgUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQYXN0ZWJvYXJkOjpmaWxlQ29udGVu
dFN0YXRlKCkKIAogICAgIGlmICghbWF5Q29udGFpbkZpbGVQYXRocykgewogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjb2NvYVR5cGVzOwotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKGNvY29hVHlwZXMsIG1fcGFzdGVib2FyZE5hbWUp
OworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdl
dFR5cGVzKGNvY29hVHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAg
IGlmIChjb2NvYVR5cGVzLmZpbmRNYXRjaGluZyhbXShjb25zdCBTdHJpbmcmIGNvY29hVHlwZSkg
eyByZXR1cm4gc2hvdWxkVHJlYXRDb2NvYVR5cGVBc0ZpbGUoY29jb2FUeXBlKTsgfSkgPT0gbm90
Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gRmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFn
ZURhdGE7CiAKQEAgLTE3MCwxMiArMTcwLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgICAgICAgICByZXR1cm4gY29jb2FUeXBlID09IFN0cmluZyhrVVRUeXBl
VVJMKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9KTsKLSAg
ICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGluZGV4T2ZVUkwgIT0gbm90Rm91bmQgJiYgIXBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29udGFpbnNTdHJpbmdT
YWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb2NvYVR5cGVzW2luZGV4T2ZVUkxdLCBtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGluZGV4T2ZVUkwgIT0gbm90
Rm91bmQgJiYgIXBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29u
dGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb2NvYVR5cGVzW2luZGV4T2ZVUkxd
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIH0KIAogICAgIC8vIEVuZm9yY2Ug
Y2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1cml0eS4gV2UgY2hlY2sgYWZ0ZXIgcmVhZGlu
ZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAgIC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2Ug
YmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdlIGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRh
dGEuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKSkKKyAgICBpZiAo
bV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpCiAgICAgICAgIHJl
dHVybiBGaWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YTsKIAogICAgIC8vIEV2ZW4g
d2hlbiB0aGVyZSdzIG9ubHkgaW1hZ2UgZGF0YSBpbiB0aGUgcGFzdGVib2FyZCBhbmQgbm8gZmls
ZSByZXByZXNlbnRhdGlvbnMsIHdlIHN0aWxsIHJ1biB0aGUgcmlzayBvZiBleHBvc2luZyBmaWxl
IHBhdGhzCkBAIC0xODcsMTEgKzE4NywxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3Mo
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKG1fcGFzdGVib2FyZE5hbWUsIG9yaWdpbik7CisgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXMgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5
cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKG1fcGFzdGVib2FyZE5hbWUsIG9yaWdpbiwgY29u
dGV4dCgpKTsKIAogICAgIC8vIEVuZm9yY2UgY2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1
cml0eS4gV2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAg
IC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdl
IGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudCht
X3Bhc3RlYm9hcmROYW1lKSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gdHlwZXM7
CkBAIC0yOTUsMjIgKzI5NSwyMiBAQCBjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgUGFzdGVi
b2FyZDo6cmVhZEN1c3RvbURhdGEoKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0
YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhKQogewotICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndy
aXRlQ3VzdG9tRGF0YShkYXRhLCBuYW1lKCkpOworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlQ3VzdG9tRGF0YShkYXRh
LCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIGludDY0X3QgUGFzdGVib2FyZDo6Y2hhbmdlQ291
bnQoKSBjb25zdAogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpOworICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9h
cmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBj
b2NvYVR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0VHlwZXMoY29jb2FUeXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyhjb2NvYVR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3Vu
dCBvdXJzZWx2ZXMgZm9yIHNlY3VyaXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQg
b2YgYmVmb3JlIHRvIGJlCiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91
ciB0ZXN0aW5nIHRoZSBjaGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KLSAgICBp
ZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpKQorICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdl
Q291bnQobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIHJldHVybiBjb2NvYVR5cGVzOwpAQCAtMzE4LDExICszMTgsMTEgQEAgVmVjdG9yPFN0
cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNo
ZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2ZXMgZm9y
IHNlY3VyaXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQgb2YgYmVmb3JlIHRvIGJl
CiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91ciB0ZXN0aW5nIHRoZSBj
aGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KLSAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNv
dW50KG1fcGFzdGVib2FyZE5hbWUpKQorICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCmluZGV4IGYwZmFkZDcwODY5NTYzOGY3YzgxZTkyNjcxZjY3YzE4NGUzOGMyNjUuLmZiZTcx
OTg4MzI3YWQwZDA0YmJlMTk5YjJjM2MzYTJmOGJlN2NmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTM1NSw3ICszNTUsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcm
IG9yaWdpbikKICAgICAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcih0eXBlcyk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+dHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUobV9uYW1lLCBvcmlnaW4pOworICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKG1fbmFtZSwgb3JpZ2luLCBjb250ZXh0KCkpOwogfQogCiBWZWN0b3I8
U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKQEAgLTQ3
Niw3ICs0NzYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0
b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZUN1
c3RvbURhdGEoZGF0YSwgbV9uYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPndyaXRlQ3VzdG9tRGF0YShkYXRhLCBtX25hbWUsIGNvbnRleHQoKSk7
CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzMzY1YTNlYjg2YmIwYWI0
OWE5YzBhYmFkZjQ4MWRkZjA4MDllNzNlLi43OWY1YWJhYjhlMmE0ZDhlNmQyNDY3MzVjYzhmNDZh
Y2Y5YjAzZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXN0ZWJvYXJkOjpQ
YXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29u
dGV4dCkpCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1lKHBhc3RlYm9hcmROYW1lKQotICAgICwgbV9j
aGFuZ2VDb3VudChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNo
YW5nZUNvdW50KHBhc3RlYm9hcmROYW1lKSkKKyAgICAsIG1fY2hhbmdlQ291bnQocGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChwYXN0ZWJvYXJk
TmFtZSwgbV9jb250ZXh0LmdldCgpKSkKIHsKIH0KIApAQCAtODMsOSArODMsOSBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKLXN0YXRpYyBpbnQ2
NF90IGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
ID0geyB9KQorc3RhdGljIGludDY0X3QgY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUgPSB7IH0sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0ID0gbnVsbHB0cikKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChwYXN0ZWJvYXJkTmFtZSk7CisgICAgcmV0dXJu
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQo
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiAvLyBGSVhNRTogRG9lcyB0aGlzIG5lZWQg
dG8gYmUgZGVjbGFyZWQgaW4gdGhlIGhlYWRlciBmaWxlPwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoc3RkOjp1bmlxdWVfcHRyPFBhCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiB7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChjb250ZW50LCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvbnRlbnQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZXNvdXJjZU1JTUVUeXBlKE5TU3RyaW5nICpt
aW1lVHlwZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVzb3VyY2VN
SU1FVHlwZShOU1N0cmluZyAqbWltZVR5cGUpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChwYXN0ZWJv
YXJkSW1hZ2UsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZEltYWdlLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uKQpAQCAtMTMz
LDEzICsxMzMsMTMgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKICAgICAvLyBGSVhNRTogV2UgdmVuZCAicHVi
bGljLnRleHQiIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggcHJlLWlPUyAx
MSBhcHBzLiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgc3RvcCB2ZW5kaW5nIHRoaXMgVVRJLAog
ICAgIC8vIGFuZCBpbnN0ZWFkIHNldCBkYXRhIGZvciBjb25jcmV0ZSBwbGFpbiB0ZXh0IHR5cGVz
LiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMTc+Lgog
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtVVFR5cGVUZXh0
LCB0ZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtVVFR5cGVUZXh0LCB0ZXh0LCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYg
cGFzdGVib2FyZFVSTCkKIHsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRVUkwsIG1fcGFzdGVib2FyZE5h
bWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3Jp
dGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZFVSTCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5
cGUoY29uc3QgUGFzdGVib2FyZFVSTCYpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUoY29uc3QgUGFzdGVib2FyZFVS
TCYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0Q29sb3IoY29s
b3IsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0Q29sb3IoY29sb3IsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKQEAgLTE2OCw5ICsx
NjgsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwg
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwog
CiAgICAgaWYgKGFsbG93VVJMID09IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJM
KSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICB0ZXh0LnRl
eHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwg
a1VUVHlwZVVSTCwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICAgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1J
bmRleFRvUXVlcnksIGtVVFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7Cisg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBpZiAoIXRl
eHQudGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHRleHQuaXNVUkwgPSB0cnVlOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTgyLDkgKzE4Miw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIC8vIG9uZSBvZiB0aGUgY29uY3JldGUgInB1YmxpYy5wbGFpbi10
ZXh0IiByZXByZXNlbnRhdGlvbnMgKGUuZy4ga1VUVHlwZVVURjhQbGFpblRleHQpLiBJbiB0aGUg
ZnV0dXJlLCB3ZQogICAgIC8vIHNob3VsZCBjb25zaWRlciByZW1vdmluZyBzdXBwb3J0IGZvciBy
ZWFkaW5nIHBsYWluIHRleHQgZnJvbSAicHVibGljLnRleHQiLgogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VUVHlwZVBsYWluVGV4dCwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleFRvUXVlcnksIGtVVFR5cGVQbGFpblRleHQsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAgICAgaWYgKHRleHQudGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIHRleHQu
dGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5
LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHRleHQudGV4dCA9IHN0
cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5LCBrVVRUeXBl
VGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCiAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwpAQCAtMjEzLDE0ICsyMTMs
MTQgQEAgUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJk
V2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm8KIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJv
YXJkVHlwZV0gfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVXZWJBcmNoaXZlXSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
dGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlm
IChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVh
ZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVy
biBidWZmZXIgJiYgcmVhZGVyLnJlYWRXZWJBcmNoaXZlKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0
OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAg
aWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRN
TF0pIHsKLSAgICAgICAgU3RyaW5nIGh0bWxTdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlSFRNTCwgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIFN0cmluZyBodG1sU3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleCwga1VUVHlwZUhUTUwsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAg
ICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAg
ICAgICAgIHJldHVybiAhaHRtbFN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZEhUTUwoaHRt
bFN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RS
ZWFkVHlwZTsKQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFt
ZSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXND
aGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJU
RkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWRO
b3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAo
bV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRl
clJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4g
YnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlw
ZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUxLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVj
dDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkK
ICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0
ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRU
eXBlOwpAQCAtMjU5LDIxICsyNTksMjEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVVSTF0pIHsKICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICBVUkwgdXJs
ID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJk
TmFtZSwgdGl0bGUpOworICAgICAgICBVUkwgdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgdGl0bGUsIGNvbnRleHQoKSk7CiAg
ICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAg
ICAgIHJldHVybiAhdXJsLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkVVJMKHVybCwgdGl0bGUpID8g
UmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAg
ICAgfQogCiAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5
cGUsIGtVVFR5cGVQbGFpblRleHQpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVn
eS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUGxhaW5UZXh0LCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVQbGFpblRleHQsIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5n
ZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2Fz
Q2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiAhc3RyaW5nLmlzTnVsbCgpICYmIHJl
YWRlci5yZWFkUGxhaW5UZXh0KHN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVh
ZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoVVRUeXBlQ29uZm9y
bXNUbygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpdHlwZSwga1VUVHlwZVRleHQpKSB7Ci0gICAgICAg
IFN0cmluZyBzdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJp
bmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBl
VGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6
OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuICFzdHJpbmcu
aXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSA/IFJlYWRlclJlc3VsdDo6
UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjgzLDcgKzI4Myw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBSZWFkZXJS
ZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogfQogCi1zdGF0aWMgdm9pZCByZWFkVVJMQWxvbmdzaWRl
QXR0YWNobWVudElmTmVjZXNzYXJ5KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIs
IFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgdHlwZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludCBpdGVtSW5kZXgpCitzdGF0aWMg
dm9pZCByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiByZWFkZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0
IFN0cmluZyYgdHlwZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dCBpdGVtSW5kZXgsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8o
dHlwZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVHlwZVZDYXJkKSkKQEAg
LTI5MSw3ICsyOTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBTdHJpbmcgdGl0bGU7Ci0gICAg
YXV0byB1cmwgPSBzdHJhdGVneS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBwYXN0
ZWJvYXJkTmFtZSwgdGl0bGUpOworICAgIGF1dG8gdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwgcGFzdGVib2FyZE5hbWUsIHRpdGxlLCBjb250ZXh0KTsKICAg
ICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJlYWRlci5yZWFkVVJMKHVybCwgdGl0bGUp
OwogfQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAKICAgICBQ
YXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKTsKIAotICAgIHNpemVfdCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3ku
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgc2l6ZV90IG51
bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgaWYgKCFudW1iZXJPZkl0ZW1zKQogICAgICAgICBy
ZXR1cm47CkBAIC0zMzgsMTUgKzMzOCwxNSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogICAg
ICAgICBpZiAoaXRlbUluZGV4ICYmIGkgIT0gKml0ZW1JbmRleCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIGF1dG8g
aW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJk
TmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKCFpbmZvKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAg
ICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYmIHByZWZlcnNBdHRhY2htZW50UmVwcmVzZW50YXRp
b24oKmluZm8pKSB7CiAgICAgICAgICAgICBhdXRvIHR5cGVGb3JGaWxlVXBsb2FkID0gaW5mby0+
Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7Ci0gICAgICAgICAgICBpZiAoYXV0
byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwgdHlwZUZvckZp
bGVVcGxvYWQsIG1fcGFzdGVib2FyZE5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgcmVhZFVSTEFs
b25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlRm9yRmls
ZVVwbG9hZCwgbV9wYXN0ZWJvYXJkTmFtZSwgaSk7CisgICAgICAgICAgICBpZiAoYXV0byBidWZm
ZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwgdHlwZUZvckZpbGVVcGxv
YWQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKKyAgICAgICAgICAgICAgICByZWFk
VVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KHJlYWRlciwgc3RyYXRlZ3ksIHR5cGVG
b3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lLCBpLCBjb250ZXh0KCkpOwogICAgICAgICAg
ICAgICAgIHJlYWRlci5yZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9yRmlsZVVwbG9hZCwg
aW5mby0+c3VnZ2VzdGVkRmlsZU5hbWUsIGluZm8tPnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMzgyLDEyICsz
ODIsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFz
dGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwKIHsKICAgICBBU1NFUlQocmVzcGVjdHNV
VElGaWRlbGl0aWVzKCkpOwogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKLSAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAw
LCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0
ZWJvYXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgeworICAgIGZvciAo
TlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOyBpbmRleCA8IG51bWJl
ck9mSXRlbXM7ICsraW5kZXgpIHsKICAgICAgICAgaWYgKGl0ZW1JbmRleCAmJiBpbmRleCAhPSAq
aXRlbUluZGV4KQogICAgICAgICAgICAgY29udGludWU7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQotICAgICAgICBhdXRvIGluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50KTsKKyAgICAg
ICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwg
bV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKTsKICAgICAgICAgaWYg
KCFpbmZvKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRl
bnRSZWFkZXImIHJlYWRlciwKICAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVudCA9IHBvbGlj
eSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSAmJiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmICFh
dHRhY2htZW50RmlsZVBhdGguaXNFbXB0eSgpOwogICAgICAgICBhdXRvIGNvbnRlbnRUeXBlID0g
aW5mby0+Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CiAgICAgICAgIGlmIChj
YW5SZWFkQXR0YWNobWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9uKCppbmZv
KSkgewotICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShy
ZWFkZXIsIHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgaW5kZXgpOwor
ICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFkZXIs
IHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgaW5kZXgsIGNvbnRleHQo
KSk7CiAgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNobWVudEZp
bGVQYXRoKSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVudFR5cGUpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTQ1Miw3ICs0NTIsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogYm9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRh
KCkKIHsKLSAgICByZXR1cm4gISFwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOworICAgIHJl
dHVybiAhIXBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogc3Rh
dGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShOU1N0cmluZyAqdHlwZSkKQEAgLTQ4OCwx
MiArNDg4LDEyIEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIGlmICghY29jb2FUeXBlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlw
ZS5nZXQoKSwgU3RyaW5nKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29jb2FUeXBl
LmdldCgpLCBTdHJpbmcoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogdm9p
ZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChTdHJpbmcoKSwgU3RyaW5nKCksIG1f
cGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoU3RyaW5nKCksIFN0cmluZygpLCBtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFk
UGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtNTA1LDcgKzUwNSw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5n
cyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGluCiAgICAgaWYgKCFjb2NvYVR5cGUpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBhdXRvIHZhbHVlcyA9IHN0cmF0ZWd5LmFsbFN0cmluZ3NGb3JU
eXBlKGNvY29hVHlwZS5nZXQoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIGF1dG8gdmFsdWVzID0g
c3RyYXRlZ3kuYWxsU3RyaW5nc0ZvclR5cGUoY29jb2FUeXBlLmdldCgpLCBwYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
aWYgKFtjb2NvYVR5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVQbGFpblRleHRdKSB7CiAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5tYXAoWyZdIChhdXRvJiB2
YWx1ZSkgLT4gU3RyaW5nIHsKQEAgLTU1OCwxNiArNTU4LDE2IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAg
aWYgKCFjb2NvYVR5cGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29jb2FUeXBlLmdl
dCgpLCBkYXRhLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlwZS5nZXQoKSwg
ZGF0YSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogVmVjdG9yPFN0cmluZz4g
UGFzdGVib2FyZDo6cmVhZEZpbGVQYXRocygpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBh
dGhzOwogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKTsKLSAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0
ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7
IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgeworICAgIGZvciAoTlNVSW50ZWdlciBp
bmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOyBpbmRleCA8IG51bWJlck9mSXRlbXM7ICsr
aW5kZXgpIHsKICAgICAgICAgLy8gQ3VycmVudGx5LCBkcmFnIGFuZCBkcm9wIGlzIHRoZSBvbmx5
IGNhc2Ugb24gaU9TIHdoZXJlIHRoZSAicGFzdGVib2FyZCIgbWF5IGNvbnRhaW4gZmlsZSBwYXRo
cy4KLSAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIGF1dG8g
aW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVi
b2FyZE5hbWUsIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmICghaW5mbykK
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCBlNjVmYTg3Y2QxZTlhMWRlZDcw
MWU0MmRlYWY0NWEyZWU1NDNiYWI2Li41OWQzYmM4MTQ3MWQzZTdiY2E3N2NkYTIyZDdhMDU4OTVh
NWEyMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVi
b2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFk
T3JpZ2luKCkKIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCB0eXBlLCBuYW1lKCkpOworICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZCgwLCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIFN0cmlu
ZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYpCkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikKIAogdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSk7CisgICAgdGV4
dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUo
KSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGY3
ZjhmZmU0ZjhlOWY4YzNhOTZiMzI3NmNiYTM1ZDgzYjZkOWQ0YzguLjExMGRkMjUxMGI4NWYxMDZk
M2M5MTU4MTEwZDA4MGQ1ODBlMjhhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC05Myw3ICs5Myw3IEBAIFBhc3RlYm9hcmQ6OlBhc3RlYm9h
cmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiBQYXN0ZWJv
YXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cHJvbWlzZWRGaWxlUGF0aHMpCiAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAg
ICAsIG1fcGFzdGVib2FyZE5hbWUocGFzdGVib2FyZE5hbWUpCi0gICAgLCBtX2NoYW5nZUNvdW50
KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQo
bV9wYXN0ZWJvYXJkTmFtZSkpCisgICAgLCBtX2NoYW5nZUNvdW50KHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwg
bV9jb250ZXh0LmdldCgpKSkKICAgICAsIG1fcHJvbWlzZWRGaWxlUGF0aHMocHJvbWlzZWRGaWxl
UGF0aHMpCiB7CiAgICAgQVNTRVJUKHBhc3RlYm9hcmROYW1lKTsKQEAgLTEyNyw3ICsxMjcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIAogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Ci0gICAgbV9j
aGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFu
Z2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0K
IAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKQEAgLTE1NCwzNSArMTU0LDM1IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHR5cGVzLmFwcGVuZFZlY3Rvcihjb250ZW50LmNsaWVudFR5cGVzKTsKICAgICB0
eXBlcy5hcHBlbmQoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKTsKIAotICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBtX2NoYW5nZUNvdW50ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGUgZm9s
bG93aW5nIGNvZGUgc2hvdWxkIGJlIHJlZmFjdG9yZWQsIHN1Y2ggdGhhdCBpdCBvbmx5IHJlcXVp
cmVzIGEgc2luZ2xlIGNhbGwgb3V0IHRvIHRoZSBjbGllbnQgbGF5ZXIuCiAgICAgLy8gSW4gV2Vi
S2l0MiwgdGhpcyBjdXJyZW50bHkgcmVzdWx0cyBpbiBtYW55IHVubmVjZXNzYXJ5IHN5bmNocm9u
b3VzIHJvdW5kLXRyaXAgSVBDIG1lc3NhZ2VzLgogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50
VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5jbGllbnREYXRhW2ldLmdl
dCgpLCBjb250ZW50LmNsaWVudFR5cGVzW2ldLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmNsaWVudERhdGFbaV0uZ2V0KCksIGNvbnRlbnQu
Y2xpZW50VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKGNv
bnRlbnQuY2FuU21hcnRDb3B5T3JEZWxldGUpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUo
bnVsbHB0ciwgV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAg
ICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKG51bGxwdHIsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBl
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChjb250ZW50LmRhdGFJbldl
YkFyY2hpdmVGb3JtYXQpIHsKLSAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJbldl
YkFyY2hpdmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dC5nZXQoKSwga1VUVHlwZVdlYkFyY2hpdmUsIG1fcGFzdGVib2FyZE5hbWUpOwotQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0LmdldCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgfQogICAgIGlmIChjb250ZW50LmRhdGFJblJURkRGb3JtYXQpCi0gICAgICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBsZWdhY3lSVEZE
UGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZl
ckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBpZiAoY29udGVu
dC5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5k
YXRhSW5SVEZGb3JtYXQuZ2V0KCksIGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVi
b2FyZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluUlRG
Rm9ybWF0LmdldCgpLCBsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogICAgIGlmICghY29udGVudC5kYXRhSW5IVE1MRm9ybWF0LmlzTnVsbCgp
KQotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCwg
bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBt
X2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCwgbGVnYWN5SFRNTFBh
c3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKCFj
b250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdC5pc051bGwoKSkKLSAgICAgICAgbV9jaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5n
Rm9yVHlwZShjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCwgbGVnYWN5U3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUo
Y29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXQsIGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCks
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBkYXRhOwogICAgIGRhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLnB0cigpLCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS5wdHIoKSwgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OwogCiB9CiAKQEAgLTE5MywxNSArMTkzLDE1IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFp
blRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24gc21hcnRSZXBsCiAg
ICAgaWYgKHNtYXJ0UmVwbGFjZU9wdGlvbiA9PSBDYW5TbWFydFJlcGxhY2UpCiAgICAgICAgIHR5
cGVzLmFwcGVuZChXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSk7CiAKLSAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9h
cmROYW1lKTsKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHRleHQsIGxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh0ZXh0LCBsZWdhY3lTdHJpbmdQ
YXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChz
bWFydFJlcGxhY2VPcHRpb24gPT0gQ2FuU21hcnRSZXBsYWNlKQotICAgICAgICBtX2NoYW5nZUNv
dW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZm
ZXJGb3JUeXBlKDAsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZSgwLCBXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAotc3RhdGljIGxvbmcgd3JpdGVVUkxG
b3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCitzdGF0aWMgbG9u
ZyB3cml0ZVVSTEZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBuZXdDaGFuZ2VD
b3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlw
ZXModHlwZXMsIHBhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywg
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogICAgIAogICAgIEFTU0VSVCghcGFzdGVib2FyZFVS
TC51cmwuaXNFbXB0eSgpKTsKICAgICAKQEAgLTIxNiwzNiArMjE2LDM2IEBAIHN0YXRpYyBsb25n
IHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hCiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2ViVVJMc1dpdGhUaXRsZXNQ
Ym9hcmRUeXBlKSkgewogICAgICAgICBQYXN0ZWJvYXJkVVJMIHVybCA9IHsgcGFzdGVib2FyZFVS
TC51cmwsIFN0cmluZyh0aXRsZSkuc3RyaXBXaGl0ZVNwYWNlKCksIGVtcHR5U3RyaW5nKCkgfTsK
LSAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldFVSTCh1cmwsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dFVSTCh1cmwsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKICAgICB9CiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpKSkpCi0gICAgICAgIG5l
d0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRTdHJpbmdGb3JUeXBlKFtjb2NvYVVSTCBhYnNvbHV0ZVN0cmluZ10sIGxlZ2FjeVVSTFBh
c3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0Zv
clR5cGUoW2NvY29hVVJMIGFic29sdXRlU3RyaW5nXSwgbGVnYWN5VVJMUGFzdGVib2FyZFR5cGUo
KSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJV
UkxQYm9hcmRUeXBlKSkKLSAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUodXNlclZpc2libGVT
dHJpbmcsIFdlYlVSTFBib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dFN0cmluZ0ZvclR5cGUodXNlclZpc2libGVTdHJpbmcsIFdlYlVSTFBib2FyZFR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KTsKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2ViVVJMTmFtZVBi
b2FyZFR5cGUpKQotICAgICAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh0aXRsZSwgV2ViVVJMTmFt
ZVBib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5
cGUodGl0bGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlw
ZSgpKSkpCi0gICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJWaXNpYmxlU3RyaW5nLCBs
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG5l
d0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJWaXNpYmxlU3RyaW5nLCBsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiAKICAgICByZXR1cm4gbmV3Q2hh
bmdlQ291bnQ7CiB9CiAgICAgCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9y
VHlwZXMod3JpdGFibGVUeXBlc0ZvclVSTCgpLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJk
VVJMKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh3cml0YWJsZVR5cGVz
Rm9yVVJMKCksIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRVUkwsIGNvbnRleHQoKSk7CiB9
CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRUeXBlKGNv
bnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7CiAgICAgUGFzdGVib2FyZFVSTCB1
cmwgPSB7IHBhc3RlYm9hcmRVUkwudXJsLCBwYXN0ZWJvYXJkVVJMLnRpdGxlLnN0cmlwV2hpdGVT
cGFjZSgpLCBlbXB0eVN0cmluZygpIH07Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VVJMKHVybCwgbV9wYXN0ZWJvYXJk
TmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0VVJMKHVybCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4gdHlwZXMgPSB7IGxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSB9Owot
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXMo
dHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldENvbG9yKGNvbG9yLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldENvbG9yKGNvbG9yLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiBzdGF0
aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZWJvYXJkSW1hZ2UpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZp
bGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIHJl
dHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlRmlsZVdy
YXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QmIG5ld0NoYW5nZUNvdW50KQorc3RhdGljIHZvaWQg
d3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCYgbmV3Q2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFj
aG1lbnQ6YWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBw
ZXI6d3JhcHBlcl0pLmdldCgpXTsKIApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIHdy
aXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNv
bnN0IFN0cmluCiAgICAgaWYgKCFSVEZERGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmV3
Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBs
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIG5ld0NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkREYXRhKS5wdHIoKSwgbGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAogdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFn
ZSkKQEAgLTI4NCwyNCArMjg0LDI0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKLSAgICBtX2No
YW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZEltYWdlLnVybCk7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9yVHlwZXModHlw
ZXMsIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwsIGNvbnRleHQoKSk7Cisg
ICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZURhdGEpLnB0
cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKICAgICBpZiAoYXV0byBhcmNoaXZlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0KSB7Ci0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoYXJjaGl2ZURh
dGEuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAg
ICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0QnVmZmVyRm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJjaGl2ZVBib2Fy
ZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKLUFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoYXJjaGl2ZURh
dGEuZ2V0KCksIGtVVFR5cGVXZWJBcmNoaXZlLCBtX3Bhc3RlYm9hcmROYW1lKTsKLUFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgorICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdl
dCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogICAgIGlmICgh
cGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQuaXNFbXB0eSgpKQotICAgICAgICBtX2No
YW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
ZXRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9ybWF0LCBsZWdhY3lI
VE1MUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgd3JpdGVGaWxlV3Jh
cHBlckFzUlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXIocGFzdGVib2FyZEltYWdlKSwgbV9wYXN0
ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUo
cGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQsIGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlw
ZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgIHdyaXRlRmlsZVdyYXBwZXJB
c1JURkRBdHRhY2htZW50KGZpbGVXcmFwcGVyKHBhc3RlYm9hcmRJbWFnZSksIG1fcGFzdGVib2Fy
ZE5hbWUsIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6
Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
ICAgIHJldHVybiB0eXBlcy5jb250YWlucyhXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSk7CiB9CiAK
QEAgLTMyMywxOCArMzIzLDE4IEBAIHN0YXRpYyBTdHJpbmcgam9pblBhdGhuYW1lcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJh
dGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitzdGF0aWMgU3Ry
aW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQotICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lKTsK
LSAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoKml0ZW1J
bmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOworICAgIHJldHVybiBzdHJhdGVn
eS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChj
b25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJk
U3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25z
dCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3Ry
YXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQotICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUs
IHBhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1cm4gc3RyYXRlZ3kuYnVmZmVyRm9yVHlwZSh0eXBl
LCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwor
ICAgIHJldHVybiBzdHJhdGVneS5idWZmZXJGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
IHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3dVUkwsIE9wdGlvbmFsPHNpemVf
dD4gaXRlbUluZGV4KQpAQCAtMzQzLDI1ICszNDMsMjUgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxs
b3cKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIGlmIChpdGVtSW5kZXgpIHsKLSAg
ICAgICAgaWYgKGF1dG8gaXRlbUluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KCppdGVtSW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQpKQorICAgICAg
ICBpZiAoYXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
Kml0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKSkK
ICAgICAgICAgICAgIHR5cGVzID0gaXRlbUluZm8tPnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5Owog
ICAgIH0gZWxzZQotICAgICAgICBzdHJhdGVneS5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJk
TmFtZSk7CisgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9h
cmRUeXBlU3RyaW5nKSkpIHsKLSAgICAgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJlZmVy
cmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVTdHJpbmcsIGl0ZW1JbmRleCwgc3RyYXRlZ3ks
IG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVN0cmluZywgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0
cmluZyhsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgdGV4dC50ZXh0
ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0
ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3Rl
Ym9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJl
ZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0
cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBp
dGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFth
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOwpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
UGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgfQog
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGRCkpKSB7
Ci0gICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgo
TlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVt
SW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRT
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAg
ICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAg
ICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CkBAIC0zODEsNyArMzgxLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3Ry
aW5nKGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBkYXRh
ID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBl
KCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlm
IChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGUGFz
dGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAg
IHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAg
dGV4dC5pc1VSTCA9IGZhbHNlOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5
IGFsbG93CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9h
cmRUeXBlUlRGKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZl
cnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBt
X3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0
UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVSVEYsIGl0ZW1JbmRleCwgc3RyYXRl
Z3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBz
dHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKQEAgLTQwOCw3ICs0
MDgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwg
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5z
KFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gcGF0aG5hbWVzOwotICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JU
eXBlKHBhdGhuYW1lcywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgICAgIHN0cmF0ZWd5LmdldFBhdGhuYW1lc0ZvclR5cGUocGF0aG5hbWVz
LCBsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgICAgICB0ZXh0LnRleHQgPSBqb2luUGF0aG5hbWVzKHBhdGhuYW1lcyk7CiAg
ICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDE2LDcgKzQx
Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQ
bGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAKICAgICAvLyBGSVhNRTogVGhlIGNvZGUg
YWJvdmUgbG9va3MgYXQgdGhlIHR5cGVzIHZlY3RvciBmaXJzdCwgYnV0IHRoaXMganVzdCBnZXRz
IHRoZSBzdHJpbmcgd2l0aG91dCBjaGVja2luZy4gV2h5IHRoZSBkaWZmZXJlbmNlPwogICAgIGlm
IChhbGxvd1VSTCA9PSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCkgewotICAg
ICAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5VVJM
UGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIHRleHQudGV4dCA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogICAgICAgICB0ZXh0LmlzVVJMID0gIXRleHQudGV4dC5pc051bGwo
KTsKICAgICB9CiB9CkBAIC00MjcsMTUgKzQyNywxNSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xp
YwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgaWYgKGl0ZW1JbmRleCkgewotICAg
ICAgICBpZiAoYXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoKml0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCkpCisgICAgICAg
IGlmIChhdXRvIGl0ZW1JbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCgq
aXRlbUluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50LCBjb250ZXh0KCkpKQog
ICAgICAgICAgICAgdHlwZXMgPSBpdGVtSW5mby0+cGxhdGZvcm1UeXBlc0J5RmlkZWxpdHk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAKICAgICByZWFkZXIuY29udGVudE9yaWdpbiA9IHJlYWRPcmlnaW4oKTsK
IAogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KFdlYkFy
Y2hpdmVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkg
eworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5k
ZXgoV2ViQXJjaGl2ZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRXZWJBcmNoaXZlKCpidWZmZXIpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50
UmVhZGluZ1BvbGljCiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
aWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlV2ViQXJjaGl2ZSkpKSB7Ci0gICAgICAg
IGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBl
V2ViQXJjaGl2ZSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGtV
VFR5cGVXZWJBcmNoaXZlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3Vu
dCgpIHx8IHJlYWRlci5yZWFkV2ViQXJjaGl2ZSgqYnVmZmVyKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTQ1Nyw0NiArNDU3LDQ2IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1Bv
bGljeTo6QW55VHlwZSAmJiB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVzUGFz
dGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwotICAgICAg
ICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKHBhdGhzLCBsZWdhY3lGaWxlbmFtZXNQYXN0
ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0
aG5hbWVzRm9yVHlwZShwYXRocywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
Y2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEZpbGVQYXRocyhwYXRocykpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lI
VE1MUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3Ry
aW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBTdHJpbmcgc3RyaW5n
ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlw
ZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
ICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8ICghc3RyaW5nLmlz
TnVsbCgpICYmIHJlYWRlci5yZWFkSFRNTChzdHJpbmcpKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TUGFzdGVib2FyZFR5cGVI
VE1MKSkpIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0
ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlSFRNTCwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0
ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZUhUTUwsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9
IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRIVE1MKHN0
cmluZykpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAo
YXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7
CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQg
IT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5z
KFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGRCkpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZl
ciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGRCwg
aXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1
dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5
cGVSVEZELCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
KSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJl
YWRlci5yZWFkUlRGRCgqYnVmZmVyKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURlBhc3Rl
Ym9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBz
dHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCks
IGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAg
ICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJl
YWRSVEYoKmJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGKSkp
IHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KE5TUGFzdGVib2FyZFR5cGVSVEYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJl
ZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkUlRGKCpidWZmZXIpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTA2LDI4ICs1MDYsMjggQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0eXBl
cy5jb250YWlucyhTdHJpbmcobGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAg
ICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5
VElGRlBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCAiaW1hZ2UvdGlmZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9h
cmRUeXBlVElGRikpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlVElGRiwgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVUSUZGLCBpdGVtSW5kZXgs
IHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBp
ZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCksICJpbWFnZS90aWZmIl9zKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5n
KGxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIg
PSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UERGUGFzdGVib2FyZFR5cGUo
KSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYg
KGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVBERlBh
c3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50
KCkgfHwgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImFwcGxpY2F0
aW9uL3BkZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUERGKSkpIHsK
LSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4
KE5TUGFzdGVib2FyZFR5cGVQREYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUERGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAh
PSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCksICJhcHBsaWNhdGlvbi9wZGYiX3MpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNTM1LDcgKzUzNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmICh0eXBlcy5j
b250YWlucyhTdHJpbmcoa1VUVHlwZVBORykpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBlUE5HLCBpdGVtSW5kZXgsIHN0
cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoa1VUVHlwZVBORywgaXRlbUluZGV4LCBzdHJh
dGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1f
Y2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpLCAiaW1hZ2UvcG5nIl9zKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAo
dHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVKUEVHKSkpIHsKLSAgICAgICAgaWYgKGF1dG8g
YnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGtVVFR5cGVKUEVHLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBi
dWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoa1VUVHlwZUpQRUcsIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAg
ICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRJbWFn
ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL2pwZWciX3MpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTUyLDIxICs1NTIsMjEgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lVUkxQYXN0ZWJvYXJkVHlw
ZSgpKSkpIHsKLSAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnVybChtX3Bhc3RlYm9hcmROYW1l
KTsKLSAgICAgICAgU3RyaW5nIHRpdGxlID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4
KFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnVybChtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpOworICAgICAgICBTdHJpbmcgdGl0bGUgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoV2ViVVJMTmFtZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgKCF1cmwuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRVUkwodXJsLCB0aXRs
ZSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlu
cyhTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIFN0cmlu
ZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSB8fCAoIXN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChzdHJp
bmcpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlVVRG
OFBsYWluVGV4dCkpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVneS5zdHJpbmdG
b3JUeXBlKGtVVFR5cGVVVEY4UGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAg
U3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoa1VUVHlwZVVURjhQbGFpblRl
eHQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQ
bGFpblRleHQoc3RyaW5nKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTc2LDcg
KzU3Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogYm9vbCBQYXN0ZWJv
YXJkOjpoYXNEYXRhKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAg
IHJldHVybiAhdHlwZXMuaXNFbXB0eSgpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgU3RyaW5nIGNvY29hVHlw
ZSA9IGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSh0eXBlKTsKICAgICBpZiAoY29jb2FU
eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUo
ZW1wdHlTdHJpbmcoKSwgY29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBtX2NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRT
dHJpbmdGb3JUeXBlKGVtcHR5U3RyaW5nKCksIGNvY29hVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFBsYXRmb3Jt
VmFsdWVzQXNTdHJpbmdzKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTYxOCw3ICs2MTgsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3Qg
U3RyaW5nJiBkb21UeXBlLCBpbgogICAgIGlmIChjb2NvYVR5cGUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgYXV0byB2YWx1ZXMgPSBzdHJhdGVneS5hbGxTdHJpbmdzRm9y
VHlwZShjb2NvYVR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIHZhbHVlcyA9IHN0cmF0
ZWd5LmFsbFN0cmluZ3NGb3JUeXBlKGNvY29hVHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiAgICAgaWYgKGNvY29hVHlwZSA9PSBTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKSkpIHsKICAgICAgICAgdmFsdWVzID0gdmFsdWVzLm1hcChbJl0gKGF1dG8mIHZhbHVlKSAt
PiBTdHJpbmcgewogICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZSBwcmVjb21wb3NlZFN0cmluZ1dp
dGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
YXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5nJiBkb21U
eXBlLCBpbgogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2ZXMgZm9yIHNlY3Vy
aXR5LiAgV2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAg
IC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdl
IGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKGNoYW5nZUNvdW50ICE9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQocGFz
dGVib2FyZE5hbWUpKQorICAgIGlmIChjaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIHZhbHVlczsKQEAgLTY4
Miw4ICs2ODIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgICAgICB0eXBlcy5hcHBlbmQoY29jb2FUeXBl
KTsKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
ZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgIG1fY2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0Zv
clR5cGUoY29jb2FEYXRhLCBjb2NvYVR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVz
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JU
eXBlKGNvY29hRGF0YSwgY29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02OTMsOCArNjkzLDggQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgZWxzZSB3ZSBrbm93
IG9mIGdvZXMgb24gdGhlIHBib2FyZCBhcyBhIHN0cmluZwogICAgICAgICBWZWN0b3I8U3RyaW5n
PiB0eXBlczsKICAgICAgICAgdHlwZXMuYXBwZW5kKGNvY29hVHlwZSk7Ci0gICAgICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YWRkVHlwZXModHlwZXMsIG1f
cGFzdGVib2FyZE5hbWUpOwotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvY29hRGF0YSwg
Y29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5hZGRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShjb2NvYURhdGEsIGNv
Y29hVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICB9CiB9CiAKQEAgLTcw
MywxNCArNzAzLDE0IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMo
KQogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHN0cmF0ZWd5Lmdl
dFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBzdHJhdGVneS5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSkpKQogICAgICAg
ICByZXR1cm4gbV9wcm9taXNlZEZpbGVQYXRoczsKIAogICAgIGlmICh0eXBlcy5jb250YWlucyhT
dHJpbmcobGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGZpbGVQYXRoczsKLSAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0aG5hbWVzRm9yVHlw
ZShmaWxlUGF0aHMsIGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2Fy
ZE5hbWUpOworICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKGZpbGVQYXRocywg
bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKICAgICAgICAgcmV0dXJuIGZpbGVQYXRoczsKICAgICB9CiAKQEAgLTc5Niw3ICs3OTYs
NyBAQCBzdGF0aWMgdm9pZCBzZXREcmFnSW1hZ2VJbXBsKE5TSW1hZ2UgKmltYWdlLCBOU1BvaW50
IG9mZnNldCkKIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSBpbWFnZSwg
Y29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogewogICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcg
dGhlIGRyYWcgaW1hZ2UgaWYgc29tZW9uZSBrZXB0IGEgcGFzdGVib2FyZCBhbmQgaXMgdHJ5aW5n
IHRvIHNldCB0aGUgaW1hZ2UgdG9vIGxhdGUuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bh
c3RlYm9hcmROYW1lKSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERhc2hib2FyZCB3YW50cyB0
byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcgZHJhZ2dpbmcsIGJ1dCBDb2Nv
YSBkb2VzIG5vdCBhbGxvdyB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCA0OTU3NThiMzI0Nzhh
ZDk0ZWUwZjU0ZjFhNmRhMjdkOWI4ZjVkMzU5Li5jMDc2ZDk0YjZlMjRiY2QyZDE5ZGI0NzU5Y2Qx
OWJiYWYzYmFmYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpkaWRNb2RpZnlDb250ZW50c09mUGFzdGVib2FyZChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgfQogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
Z2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQ
YXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9h
cmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMKICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLAordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNG
b3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgcGF0aG5hbWVzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRib3hFeHRl
bnNpb25zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBM
RVRJT04oIXBhc3RlYm9hcmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7
IH0pKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocGF0aG5hbWVzKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5z
aW9ucykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0tfQ09NUExFVElPTighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRT
dHJpbmdzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVU
SU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKHsgfSkpOwog
CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRTdHJpbmdzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICBjb21wbGV0
aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFN0cmluZ3NG
b3JUeXBlKHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1
ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tf
Q09NUExFVElPTighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcih7
IH0pKTsKIApAQCAtMjE4LDEyICsyMTgsMTIgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFu
ZGxlKSwgc2l6ZSB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKSk7
CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
Q29sb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0
ZWJvYXJkRGF0YShjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5jb2xvcigpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRV
UkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2Fu
QWNjZXNzUGFzdGVib2FyZERhdGEoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFN0cgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsKCkuc3RyaW5nKCkpOwogfQogCi12b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJvYXJkVHlwZXMo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVib2Fy
ZE5hbWUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CiAKQEAgLTI1Miw3ICsyNTIs
NyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUwogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0No
YW5nZUNvdW50KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRU
eXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNT
QUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29tcGxldGlv
bkhhbmRsZXIoMCkpOwogCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnNldFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFMKICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2Fy
ZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1l
LmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoMCkpOwogCkBAIC0yODQsNyArMjg0LDcgQEAg
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBQYXMKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBjb2xvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29s
b3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkTmFtZS5p
c0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKDApKTsKIApAQCAtMjk0LDcgKzI5NCw3IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291
bnQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTigh
cGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CiAgICAgTUVT
U0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCksIGNvbXBsZXRp
b25IYW5kbGVyKDApKTsKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LAogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5nZUNvdW50KTsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0ZWJvYXJk
VHlwZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5Ojpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rp
b24mIGNvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5jb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZygpKTsKIH0KIAotdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXJsU3RyaW5nU3VpdGFibGVG
b3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmREYXRhKGNvbm5lY3Rpb24sIHBh
c3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9
KTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXJsU3RyaW5n
U3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbgogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUodXJsU3RyaW5nKSwgV1RGTW92ZSh0aXRsZSkpOwogfQogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYg
aXBjSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmIGlwY0hhbmRsZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29t
cGxldGlvbkhhbmRsZXIoMCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVi
b2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CkBAIC0zNDQsNyArMzQ0
LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdD
aGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZp
bGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5
cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKDApOwpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXROdW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5udW1iZXJPZkZpbGVzKCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighb3JpZ2luLmlzTnVsbCgpLCBjb21w
bGV0aW9uSGFuZGxlcih7IH0pKTsKIApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3RpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS50eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShvcmlnaW4pKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVD
dXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgVmVjdG9yPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2
NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJ
T04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoMCkpOwogCkBA
IC0zNzIsNyArMzcyLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0
YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFZlY3QKICAgICBjb21wbGV0aW9u
SGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojph
bGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRl
bUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bh
c3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oY2hhbmdlQ291bnQpKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0ZWJvYXJkVHlw
ZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBjaGFuZ2VDb3VudCkp
OwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2Fy
ZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKDApOwpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9h
cmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9KSk7CiAKQEAgLTQwNiw3ICs0
MDYsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRleCwgcGFzdGVi
b2FyZFR5cGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1
cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYg
dXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFj
YW5BY2Nlc3NQYXN0ZWJvYXJkRGF0YShjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7CkBAIC00MTYsNyArNDE2LDcg
QEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemUKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHVybCksIFdURk1vdmUodGl0bGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5
KCksIGNvbXBsZXRpb25IYW5kbGVyKHsgfSkpOwogCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIHMKICAgICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2l6ZSB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9N
VG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBw
YXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVVJMVG9QYXN0
ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OndyaXRlVVJMVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogewogICAgIE1FU1NBR0VfQ0hFQ0soIXBhc3Rl
Ym9hcmROYW1lLmlzRW1wdHkoKSk7CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdAogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpE
aWRXcml0ZVRvUGFzdGVib2FyZEFzeW5jaHJvbm91c2x5KHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9
CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2Vi
Q29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5
KCkpOwogCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
V2ViQ29udGVudFRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkV3JpdGVUb1Bhc3RlYm9h
cmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSksIDApOwogfQogCi12b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Ondy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKICAgICBN
RVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5KCkpOwogCkBAIC00ODIsNyArNDgy
LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6RGlkV3JpdGVUb1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0
ZWJvYXJkTmFtZSksIDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJp
bmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9h
cmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyghcGFz
dGVib2FyZE5hbWUuaXNFbXB0eSgpKTsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkVHlw
ZS5pc0VtcHR5KCkgfHwgdGV4dC5pc0VtcHR5KCkpOwpAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkRpZFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVib2FyZE5hbWUp
LCAwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRleCBiYzdjYzBhNDhkMDk2MTE3NTY0
OTE3YTkwNWYzYjgxZjRkNDVlODk2Li5kY2FmNGEzODBhNTYyOWU4ZDdhYzY1YzFhODE2Yjk3MzYz
YTVhYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eS5jcHAKQEAgLTgwLDYyICs4MCw2MiBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlBhc3RlYm9hcmRQ
cm94eTo6d2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJUEM6OkNvbm5lY3RpbwogI2lmICFQ
TEFURk9STShDT0NPQSkKIAogI2lmICFQTEFURk9STShHVEspCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCos
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAotdm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcigw
KTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGludDY0X3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFs
bFBhc3RlYm9hcmRJdGVtSW5mbyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBpbnQ2
NF90LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJp
bmcmLCBpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCosIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxv
cHQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVi
b2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKElQ
Qzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3Ry
aW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKICNpZiAh
VVNFKExJQldQRSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChJ
UEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKIH0KIAogI2VuZGlmIC8vICFVU0UoTElCV1BFKQogCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNv
bnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNVUkxTdHJpbmdT
dWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGlu
ZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRl
eCA0MzRkMTc2NGQwZTBlZmY4MTJiMTJhNzQyNjUzNDIyYWZlZDBiYjBmLi5mNWNkNTk1OGIyY2Y0
MzM2YzViZDAyZmI2ZGRjZTNjNjAzZTE3ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtMjgsMTAgKzI4LDEyIEBACiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTg1LDQyICs4Nyw0MiBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nl
c3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKSBj
b25zdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCB3cml0ZVVSTFRvUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCB3cml0ZVdlYkNvbnRlbnRU
b1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdl
YkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICB2b2lkIHdyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCB3cml0
ZVN0cmluZ1RvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
LSAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIHZv
aWQgd3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPik7CisgICAgdm9pZCB3cml0ZVdlYkNvbnRlbnRUb1Bhc3Rl
Ym9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRl
bnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4pOworICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZv
aWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsKKyAgICB2b2lkIHVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmll
cnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPik7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldE51
bWJlck9mRmlsZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgZ2V0UGFz
dGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZv
aWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIHBhdGhuYW1lcywgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYp
OwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmKT4mJik7
Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDb2xvciYmKT4mJik7Ci0g
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwotICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFz
dGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFVSTChJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAg
dm9pZCBzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYm
KTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwot
ICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldE51bWJlck9mRmlsZXMoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRQ
YXRobmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIHBh
dGhuYW1lcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+JiYpOworICAgIHZvaWQg
Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRC
dWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRD
b2xvcihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6Q29sb3ImJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OworICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9h
cmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQ
YXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYm
KTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKICNlbmRp
ZgogCi0gICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwg
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Ci0g
ICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYpOwotICAgIHZvaWQg
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAg
IHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiYmKT4mJik7Ci0gICAgdm9pZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPj4mJik+JiYpOwotCi0gICAgdm9pZCB3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYpOwotICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZv
aWQgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvbnRhaW5zVVJMU3RyaW5nU3VpdGFi
bGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgdXJsU3RyaW5n
U3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0
aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVj
dGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOwor
ICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmKTsKKyAgICB2b2lkIGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+
JiYpPiYmKTsKKworICAgIHZvaWQgd3JpdGVDdXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAg
dm9pZCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4m
Jik7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBnZXRUeXBlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBhOTU2ZDVhNzYzZDEzNDRlOGU2MTBhZGI0MTM0YTY3NTE1
ZDhjYmJlLi5mMjNmODVjZDU1ODAyNmQwOTk4NGY2ODcxODgwMjFmYzhlNzhhNzIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMiw0MiArMjIsNDIgQEAKIAogbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFBy
b3h5IE5vdFJlZkNvdW50ZWQgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV3JpdGVV
UkxUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwgdXJsLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIFdhbnRzQ29ubmVjdGlvbgotICAgIFdyaXRlV2ViQ29udGVudFRvUGFz
dGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3Ry
aW5nIHBhc3RlYm9hcmROYW1lKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBXcml0ZUltYWdlVG9QYXN0
ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlLCBT
dHJpbmcgcGFzdGVib2FyZE5hbWUpIFdhbnRzQ29ubmVjdGlvbgotICAgIFdyaXRlU3RyaW5nVG9Q
YXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQsIFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgV2FudHNDb25uZWN0aW9uCi0gICAgVXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUp
CisgICAgV3JpdGVVUkxUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwg
dXJsLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRlV2ViQ29udGVudFRvUGFzdGVi
b2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3RyaW5n
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KSBXYW50c0Nvbm5lY3Rpb24KKyAgICBXcml0ZUltYWdlVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlLCBTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVj
dGlvbgorICAgIFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
U3RyaW5nIHRleHQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHNDb25uZWN0aW9uCisgICAgVXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAjZW5k
aWYKIAotICAgIFdyaXRlQ3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE+IGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGludDY0X3QgY2hhbmdlQ291
bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFR5cGVzU2FmZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIG9yaWdpbikgLT4gKFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBBbGxQYXN0
ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
KSAtPiAoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbElu
Zm8pIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mbykg
U3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCi0gICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2NF90
IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFJlYWRVUkxG
cm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAo
U3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIENvbnRh
aW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoU3RyaW5nIHR5cGUsIFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24K
KyAgICBXcml0ZUN1c3RvbURhdGEoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
PiBkYXRhLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KKyAgICBUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMgV2FudHND
b25uZWN0aW9uCisgICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCkgLT4gKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
PiBhbGxJbmZvKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBJbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+IChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm8pIFN5bmNocm9u
b3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkg
LT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAg
IFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9h
cmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkg
LT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9u
CisgICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
aGFuZGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb250YWluc1N0cmluZ1Nh
ZmVGb3JET01Ub1JlYWRGb3JUeXBlKFN0cmluZyB0eXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChib29sIHJlc3Vs
dCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCi0gICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJpbmcgcGFz
dGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1l
KSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgot
ICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5hbWVzLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFN0cmluZyBz
dHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRTdHJp
bmdzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkg
LT4gKFZlY3RvcjxTdHJpbmc+IHN0cmluZ3MpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgot
ICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBo
YW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRDaGFu
Z2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cwotICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUp
IC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0g
ICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJs
U3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBBZGRQYXN0ZWJvYXJkVHlw
ZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMp
IC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5n
PiBwYXN0ZWJvYXJkVHlwZXMpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGludDY0
X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldFBhc3Rl
Ym9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yIGNvbG9yKSAt
PiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcg
cGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJpbmcpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBDb250YWluc1VSTFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1
aW50NjRfdCBudW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBH
ZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNo
cm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBl
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5h
bWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNp
b25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyBzdHJpbmcp
IFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRTdHJpbmdzRm9y
VHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+IHN0
cmluZ3MpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRCdWZm
ZXJGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgor
ICAgIEdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNv
dW50KSBTeW5jaHJvbm91cworICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChXZWJD
b3JlOjpDb2xvciBjb2xvcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFz
dGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsU3RyaW5nKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KKyAgICBBZGRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmRO
YW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91
cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hhbmdlQ291
bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldFBhc3RlYm9hcmRDb2xvcihT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yIGNvbG9yLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUo
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJp
bmcsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90
IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJv
YXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb250YWluc1VSTFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCisgICAgVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmlu
ZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDI0ODAwZjZjNTkzNTRlYTVmNWFiNTg0ZDk2Yjgx
NmE3NGRlNmNjMDguLmEyYzhiYjFhNDcxNzhjYzBjMzQ3YWRjNDdiZDA2NDk4ZGI1N2MxYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQpAQCAtNzgsNiArNzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BERkRvY3VtZW50SW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CkBAIC0yNTkyLDEwICsyNTkzLDExIEBAIHZv
aWQgUERGUGx1Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKCkKIHZvaWQgUERGUGx1Z2lu
Ojp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJh
eSAqaXRlbXMsIE5TQXJyYXkgKnR5cGVzKQogewogICAgIGF1dG8gcGFzdGVib2FyZFR5cGVzID0g
bWFrZVZlY3RvcjxTdHJpbmc+KHR5cGVzKTsKKyAgICBhdXRvIHBhZ2VJZGVudGlmaWVyID0gbV9m
cmFtZSAmJiBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdl
SUQoKSA6IFdURjo6bnVsbG9wdDsKIAogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQ7CiAgICAg
YXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIHdlYlByb2Nl
c3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJk
VHlwZXMpLAorICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzKHBhc3Rl
Ym9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMsIHBhZ2VJZGVudGlmaWVyKSwKICAgICAgICAgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseShuZXdD
aGFuZ2VDb3VudCksIDApOwogCiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwLCBjb3VudCA9IGl0
ZW1zLmNvdW50OyBpIDwgY291bnQ7ICsraSkgewpAQCAtMjYwOSwxNSArMjYxMSwxNSBAQCB2b2lk
IFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5h
bWUsIE5TQXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYg
KFt0eXBlIGlzRXF1YWxUb1N0cmluZzpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSB8fCBb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10pIHsKLSAgICAgICAg
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGxhaW5UZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10pOwotICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3RyaW5nLmdldCgpKSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJl
cGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CisgICAgICAgICAgICBhdXRvIHBsYWluVGV4dFN0cmlu
ZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHR5cGUsIHBsYWluVGV4
dFN0cmluZy5nZXQoKSwgcGFnZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAw
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5k
bGU7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5LT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgICAgICBzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgICAgICAgICAgd2Vi
UHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFt
ZSwgdHlwZSwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZl
ci0+c2l6ZSgpIH0pLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJk
QnVmZmVyRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKKyAgICAgICAgICAgIHdl
YlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUocGFzdGVib2FyZE5h
bWUsIHR5cGUsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZm
ZXItPnNpemUoKSB9LCBwYWdlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDAp
OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApp
bmRleCAzNjZmYjgxMTQ1NzBlOTRlOGVmOTE0ZjNjMjEwNjk4MzM0N2E2NWU0Li40OTU0MDQzYmMw
ODExN2Y1ZTcyNzAyMDJiY2ExMGM5OGUyZjNhYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNz
VHJhY2tlci5oPgpAQCAtMTA5LDEwICsxMTAsMTggQEAgQmxvYlJlZ2lzdHJ5KiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiAgICAgcmV0dXJuIG5ldyBCbG9iUmVn
aXN0cnlQcm94eTsKIH0KIAorc3RhdGljIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSWRl
bnRpZmllcihjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAoIWlz
PFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oY29udGV4dCkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8UGFnZVBhc3RlYm9hcmRDb250ZXh0PigqY29u
dGV4dCkucGFnZUlEKCk7Cit9CisKICNpZiBQTEFURk9STShDT0NPQSkKIC8vIFBhc3RlYm9hcmRT
dHJhdGVneQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICAvLyBUaGUgcHVycG9zZSBv
ZiB0aGUgb3ZlcnJpZGVzIGlzIHRvIGF2b2lkIG1lc3NhZ2luZyBiYWNrIHRvIHRoZSBVSSBwcm9j
ZXNzLgpAQCAtMTIxLDEwICsxMzAsMTAgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBp
ZiAoIXR5cGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lKSwg
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0
eXBlcyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3Rl
Ym9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVz
KSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAg
ICAgVmVjdG9yPGNoYXI+IG92ZXJyaWRlQnVmZmVyOwpAQCAtMTMzLDczICsxNDIsNzMgQEAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUg
VUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6R2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9h
cmRUeXBlKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGU6OlJlcGx5KGlwY0hhbmRsZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBw
YXN0ZWJvYXJkVHlwZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZTo6UmVwbHkoaXBjSGFuZGxl
KSwgMCk7CiAgICAgaWYgKGlwY0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFu
ZGxlLmRhdGFTaXplKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXk7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0Zv
clR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShwYXN0ZWJv
YXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwKICAgICAg
ICAgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0Zv
clR5cGU6OlJlcGx5KHBhdGhuYW1lcywgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSksIDAp
OwogICAgIEFTU0VSVChwYXRobmFtZXMuc2l6ZSgpID09IHNhbmRib3hFeHRlbnNpb25zSGFuZGxl
QXJyYXkuc2l6ZSgpKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHko
c2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Okdl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBl
OjpSZXBseSh2YWx1ZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlw
ZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkodmFsdWUpLCAwKTsKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK1ZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgVmVjdG9yPFN0cmluZz4gdmFsdWVzOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZFR5cGUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJk
U3RyaW5nc0ZvclR5cGU6OlJlcGx5KHZhbHVlcyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlOjpSZXBseSh2YWx1
ZXMpLCAwKTsKICAgICByZXR1cm4gdmFsdWVzOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0
X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2
NF90IGNoYW5nZUNvdW50IHsgMCB9OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndhaXRG
b3JQZW5kaW5nUGFzdGVib2FyZFdyaXRlc1RvRmluaXNoKHBhc3RlYm9hcmROYW1lKTsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQo
cGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJv
YXJkQ2hhbmdlQ291bnQ6OlJlcGx5KGNoYW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENoYW5nZUNvdW50KHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudDo6UmVwbHkoY2hhbmdlQ291bnQpLCAwKTsKICAg
ICByZXR1cm4gY2hhbmdlQ291bnQ7CiB9CiAKLUNvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK0NvbG9yIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQ29sb3IgY29sb3I7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENvbG9yKHBhc3RlYm9hcmROYW1l
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENvbG9yOjpSZXBs
eShjb2xvciksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRDb2xvcihwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KGNv
bG9yKSwgMCk7CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1VSTCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRVUkwocGFzdGVib2FyZE5h
bWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVVJMOjpSZXBs
eSh1cmxTdHJpbmcpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpH
ZXRQYXN0ZWJvYXJkVVJMKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRVUkw6OlJlcGx5KHVy
bFN0cmluZyksIDApOwogICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCi1pbnQ2
NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3Qg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9
OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFkZFBhc3RlYm9hcmRUeXBl
cyhwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGVzKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFkZFBhc3RlYm9hcmRUeXBlcyhw
YXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGVzLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFkZFBhc3RlYm9hcmRUeXBlczo6UmVwbHko
bmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWlu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAw
IH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5
cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVz
KHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzOjpSZXBs
eShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAot
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVy
Rm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChi
dWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKQEAgLTIxMiw4MSArMjIxLDgxIEBAIGludDY0X3Qg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBTdHJpCiAgICAgICAgIH0KICAgICB9CiAgICAgaW50NjRfdCBuZXdDaGFuZ2VD
b3VudCB7IDAgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0
ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDAgfSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRC
dWZmZXJGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBhc3RlYm9h
cmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3Zl
KGhhbmRsZSksIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCB9LCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZm
ZXJGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFu
Z2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFVSTChjb25z
dCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFVSTChjb25zdCBQYXN0ZWJv
YXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNv
dW50OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRV
UkwocGFzdGVib2FyZFVSTCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpTZXRQYXN0ZWJvYXJkVVJMOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRVUkwocGFzdGVi
b2FyZFVSTCwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFVSTDo6UmVwbHkobmV3Q2hhbmdl
Q291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2NF90IG5ld0NoYW5n
ZUNvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBh
c3RlYm9hcmRDb2xvcihwYXN0ZWJvYXJkTmFtZSwgY29sb3IpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZENvbG9y
KHBhc3RlYm9hcmROYW1lLCBjb2xvciwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KG5ld0NoYW5n
ZUNvdW50KSwgMCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmlu
ZywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkVHlwZSwgc3RyaW5nKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBzdHJpbmcsIHBhZ2VJZGVu
dGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgcmV0dXJu
IG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXROdW1i
ZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIHVpbnQ2NF90IG51bWJl
ck9mRmlsZXMgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
TnVtYmVyT2ZGaWxlcyhwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldE51bWJlck9mRmlsZXM6OlJlcGx5KG51bWJlck9mRmlsZXMpLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXROdW1iZXJPZkZpbGVzKHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldE51bWJlck9mRmlsZXM6OlJlcGx5KG51bWJlck9mRmlsZXMpLCAwKTsKICAgICByZXR1
cm4gbnVtYmVyT2ZGaWxlczsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRh
aW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJs
ZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgYm9vbCByZXN1bHQ7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmco
cGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpDb250YWluc1VS
TFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZzo6UmVwbHkocmVzdWx0KSwgMCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxv
YWRpbmcocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmc6
OlJlcGx5KHJlc3VsdCksIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQorU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQogewogICAgIFN0cmluZyB1cmw7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nOjpSZXBseSh1
cmwsIHRpdGxlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VVJM
U3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlVSTFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZzo6UmVwbHkodXJsLCB0aXRsZSksIDApOwogICAgIHJldHVybiB1cmw7CiB9CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVi
b2FyZE5hbWUpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVVUkxUb1Bh
c3RlYm9hcmQodXJsLCBwYXN0ZWJvYXJkTmFtZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6V3JpdGVVUkxUb1Bhc3RlYm9hcmQodXJsLCBwYXN0ZWJvYXJkTmFtZSwgcGFn
ZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRX
ZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53aWxsV3JpdGVUb1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSk7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9h
cmQoY29udGVudCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OldyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb250ZW50LCBwYXN0ZWJvYXJk
TmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJ
bWFnZSYgaW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ls
bFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVib2FyZE5hbWUpOwotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVJbWFnZVRvUGFzdGVib2FyZChpbWFnZSwg
cGFzdGVib2FyZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Oldy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoaW1hZ2UsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmll
cihjb250ZXh0KSksIDApOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVU
b1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVib2FyZE5hbWUpOwotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQocGFz
dGVib2FyZFR5cGUsIHRleHQsIHBhc3RlYm9hcmROYW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSwg
dGV4dCwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgMCk7CiB9CiAK
LXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGlkZW50aWZpZXJzLCBwYXN0ZWJvYXJkTmFtZSksIDApOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6VXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50
aWZpZXJzLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCkBAIC0zNTYsNTIgKzM2NSw1MiBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29ucwogCiAjZW5kaWYgLy8gVVNFKExJQldQRSkKIAotVmVjdG9y
PFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikK
K1ZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFZlY3RvcjxT
dHJpbmc+IHR5cGVzOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlR5cGVz
U2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKHBhc3RlYm9hcmROYW1lLCBvcmlnaW4pLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZTo6UmVw
bHkodHlwZXMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpUeXBl
c1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShwYXN0ZWJvYXJkTmFtZSwgb3JpZ2luLCBwYWdlSWRl
bnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlOjpSZXBseSh0eXBlcyksIDApOwogICAgIHJldHVybiB0eXBl
czsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShj
b25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9t
RGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OldyaXRlQ3VzdG9tRGF0YShkYXRhLCBwYXN0ZWJvYXJkTmFtZSksIE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlQ3VzdG9tRGF0YTo6UmVwbHkobmV3Q2hh
bmdlQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0
ZUN1c3RvbURhdGEoZGF0YSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVDdXN0b21EYXRhOjpSZXBseShu
ZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotYm9v
bCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZv
clR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
Ym9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVh
ZEZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpDb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JU
eXBlOjpSZXBseShyZXN1bHQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpDb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKHR5cGUsIHBhc3RlYm9h
cmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGU6OlJlcGx5KHJlc3Vs
dCksIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICB1aW50NjRfdCBpdGVtc0NvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVtc0NvdW50KHBhc3RlYm9hcmROYW1l
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZEl0ZW1zQ291bnQ6
OlJlcGx5KGl0ZW1zQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZp
ZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudDo6UmVwbHkoaXRlbXNDb3VudCksIDApOwogICAgIHJldHVybiBpdGVtc0NvdW50
OwogfQogCi1PcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkKK09wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2Fy
ZEl0ZW1JbmZvPj4gYWxsSW5mbzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVib2FyZE5hbWUsIGNoYW5nZUNvdW50KSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvOjpSZXBseShh
bGxJbmZvKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFz
dGVib2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1lLCBjaGFuZ2VDb3VudCwgcGFnZUlkZW50aWZp
ZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJk
SXRlbUluZm86OlJlcGx5KGFsbEluZm8pLCAwKTsKICAgICByZXR1cm4gYWxsSW5mbzsKIH0KIAot
T3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KQorT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZv
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBPcHRpb25hbDxQYXN0
ZWJvYXJkSXRlbUluZm8+IGluZm87Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUsIGNoYW5n
ZUNvdW50KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleDo6UmVwbHkoaW5mbyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lLCBj
aGFuZ2VDb3VudCwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwgMCk7CiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFu
ZGxlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShp
cGNIYW5kbGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFt
ZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwogICAgIGlm
IChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtNDA5LDE3ICs0MTgsMTcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2kKICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKLVVSTCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVi
b2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQ6OlJlcGx5KHVybFN0cmluZywgdGl0bGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwog
ICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU3Ry
aW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwg
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkOjpS
ZXBseSh2YWx1ZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCAwKTsKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBhNDgzNzA5
Nzg5ZTU2OGI3ODhmMmM1ODMzYzBmZjU5Mzc4MTA3YzljLi5iMzhhMGIxZDBlNWY5ZjgxYjUxZWY5
NjIzOTdmNzQ4ZmM4NGM4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00
NywzMiArNDcsMzIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJh
dGVneQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
V2ViQ29yZTo6IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKLSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAg
IHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250
ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0
IFdlYkNvcmU6OiBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdy
aXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlm
aWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJp
bmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IGNoYW5nZUNvdW50KGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCB1cmwoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50IGdldE51bWJlck9m
RmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0
X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpDb2xvciBjb2xv
cihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKIAotICAg
IGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRVUkwo
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNl
dFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBh
ZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldFN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKIAotICAgIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxv
YWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5n
IHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICBib29sIGNvbnRhaW5zVVJMU3RyaW5nU3Vp
dGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHVybFN0cmluZ1N1
aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpAQCAtODgsMTUgKzg4LDE1IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgU3RyaW5nIHJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlk
ZTsKLSAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
KSBvdmVycmlkZTsKLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikg
b3ZlcnJpZGU7Ci0gICAgaW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IGJvb2wgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgcmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgd3JpdGVDdXN0b21E
YXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IGJvb2wgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDM2Y2QxY2FlMDBlOWM2ZWNkM2RhNzFkOThlMzAzMGIx
MTE3MTFiMzkuLjM3OGQ0ZDYyNTUzYWMyMzAzOGVlNjk4ZDQwOTA2NDg3YmMzNTVmMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00OCwzOSArNDgsMzkgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5k
aWYKLSAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQpIG92ZXJyaWRlOwotICAgIGludCBnZXROdW1iZXJPZkZp
bGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3Ry
aW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICBpbnQ2NF90IGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBj
aGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogCi0gICAgaW50
NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0
b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBvdmVycmlkZTsKKyAgICBpbnQ2
NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKIAotICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50
NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZl
ckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50NjRf
dCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBp
bnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGJvb2wgY29udGFp
bnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICBp
bnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0Q29s
b3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qg
c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9N
VG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGJvb2wg
Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZWJi
YjNiZWE2ZWRiYjQ3YmNiNGUyZDBiMjk3ZmNkMDVlYmE2MzI5NS4uMTkzZjIwZDRlMDUyMTA0Zjk1
ODMzNWY2MTczNTVmYjgzMTk3OGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpA
QCAtMTEyLDE1OSArMTEyLDE1OSBAQCBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKICAgICByZXR1cm4gbmV3IFdlYkJsb2JSZWdpc3RyeTsK
IH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQog
Ci12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
Z2V0UGF0aG5hbWVzRm9yVHlwZShwYXRobmFtZXMsIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotVmVj
dG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
VmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsU3RyaW5nc0ZvclR5cGUocGFzdGVib2FyZFR5cGUpOwog
fQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNoYW5nZUNvdW50KCk7CiB9CiAK
LUNvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK0NvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbG9yKCk7ICAgIAogfQogCi1V
UkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsKCk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikK
IHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hZGRUeXBl
cyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5
cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLWlu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYg
cGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2Fy
ZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNl
dFVSTChwYXN0ZWJvYXJkVVJMKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5z
ZXRDb2xvcihjb2xvcik7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5zZXRTdHJpbmdGb3JUeXBlKHN0cmluZywgcGFzdGVib2FyZFR5cGUp
OwogfQogCi1pbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRO
dW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5udW1iZXJPZkZpbGVzKCk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitWZWN0b3I8U3RyaW5nPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkudHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUob3JpZ2luKTsKIH0KIAotaW50NjRfdCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoZGF0YSk7CiB9CiAK
LWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1Jl
YWRGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgdHlw
ZSkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1N0cmluZ1NhZmVGb3JET01U
b1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZv
clR5cGUodHlwZSk7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkK
K09wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIGNoYW5nZUNvdW50KTsKIH0KIAotT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQpCitPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjaGFuZ2VDb3VudCk7CiB9CiAK
LWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIo
aW5kZXgsIHR5cGUpOwogfQogCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRpdGxlKTsKIH0KIAot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRleCwgdHlwZSk7CiB9
CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorYm9vbCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBy
ZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb250YWluc1VSTFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZygpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKHRp
dGxlKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwogfQogCi12b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOwogfQogCi12b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZElt
YWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
SW1hZ2UmIGltYWdlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53
cml0ZShpbWFnZSk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53
cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420852</attachid>
            <date>2021-02-18 11:07:38 -0800</date>
            <delta_ts>2021-02-18 11:21:10 -0800</delta_ts>
            <desc>Try to fix non-Cocoa builds (2)</desc>
            <filename>bug-222071-20210218110737.patch</filename>
            <type>text/plain</type>
            <size>193801</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQwYThiZWRjMTlmYjkw
N2M1YTcxYzM2YjU2NzEyNDYxZTg5YjU2MS4uN2Q2ZWEzNTQ2NzE2ODk5MGZiNmQzZjM2Mzc3Yzhl
NjYwM2YwMTliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBsdW1iIGFuIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFdlYlBhc3RlYm9hcmRQcm94eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMg
YFBhc3RlYm9hcmRTdHJhdGVneWAgbWV0aG9kcyB0byBhZGRpdGlvbmFsbHkgdGFrZSBhIGBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCpgOyBhZGRpdGlvbmFsbHkKKyAgICAgICAgdXBkYXRlIGNhbGwg
c2l0ZXMgb2YgYFBhc3RlYm9hcmRTdHJhdGVneWAgbWV0aG9kcyB0byBwYXNzIGluIGEgY29udGV4
dCAoZS5nLiBgUGFzdGVib2FyZDo6Y29udGV4dCgpYCwgaW4gdGhlCisgICAgICAgIHZhc3QgbWFq
b3JpdHkgb2YgY2FzZXMgYmVsb3cpLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2Vs
ZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnNGb3JEcmFnSGFuZGxpbmdNZXRob2QgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJ
dGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFVSTCk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTFR5cGVJZGVudGlmaWVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpudW1iZXJPZkZpbGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZpbGVuYW1lcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0RhdGE6OmNvbnRhaW5zUHJvbWlzZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6Y29udGFpbnNVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFz
VVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3Jp
dGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJ
RmlkZWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpoYXNEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkRmlsZVBhdGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExp
YldQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTEZvclR5cGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJv
YXJkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNo
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
Omhhc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFBsYXRmb3JtVmFs
dWVzQXNTdHJpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKwogMjAyMS0wMi0xNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVtYiBhbiBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gdGhyb3VnaCBQYXN0ZWJvYXJkLXJlbGF0ZWQgY29kZXBh
dGhzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDc0MzBkYzdlYzA1MGQwZDdlMDNlMTcxMjE0ZTYwNjZlZWIwOWM2OTgu
LmNjNzYxMzU2MDBiZGQ0NWI4MTMxMzdlY2RmYzQ4MzlmNTc2ODQ0NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTcgQEAKKzIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHRocm91
Z2ggV2ViUGFzdGVib2FyZFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjIwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KmAgYXJndW1lbnRzIHRv
IHRoZSBgUGFzdGVib2FyZFN0cmF0ZWd5YCBtZXRob2RzIG9uIGBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXNgLCBjb252ZXJ0CisgICAgICAgIHRoZW0gdG8gYFBhZ2VJZGVudGlmaWVyYHMsIGFuZCBzZW5k
IHRoZW0gb3ZlciB0byB0aGUgVUkgcHJvY2VzcyB2aWEgYFdlYlBhc3RlYm9hcmRQcm94eWAgbWV0
aG9kcy4KKworICAgICAgICBXaGlsZSBjdXJyZW50bHkgdW51c2VkIGluc2lkZSBgV2ViUGFzdGVi
b2FyZFByb3h5YCwgdGhlIG5leHQgcGF0Y2ggd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGVzZSBwYWdl
IGlkZW50aWZpZXJzIHRvCisgICAgICAgIHJldHJpZXZlIGEgZGF0YSBvd25lciB0eXBlIGZyb20g
dGhlIGNvcnJlc3BvbmRpbmcgYFdlYlBhZ2VQcm94eWAsIGFuZCB0aGVuIGZvcndhcmQgdGhpcyBk
YXRhIG93bmVyIHR5cGUgdG8gdGhlCisgICAgICAgIGBQbGF0Zm9ybVBhc3RlYm9hcmRgLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1l
c0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5
OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFVSTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVHlwZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRDb2xvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5z
VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZpbGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1Jl
YWRGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVVS
TFRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsU3RyaW5nc0ZvclR5cGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphZGRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0VHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0
cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dE51bWJlck9mRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQ
YXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHRocm91
Z2ggUGFzdGVib2FyZC1yZWxhdGVkIGNvZGVwYXRocwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IDdkOWUzYTAyOTRlY2VhNzZjZmNmODRhZTQ3NGE5ODJhMTQ0ZDNjZGYuLjg4Njg1NGEw
MzAzNGRmNWZhODFjZDEzZjEwY2RkMWNjMTMyNmRjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVtYiBhbiBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gdGhyb3VnaCBXZWJQYXN0ZWJvYXJkUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjA3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBgY29uc3QgUGFzdGVib2FyZENvbnRleHQqYCBh
cmd1bWVudHMgdG8gdGhlIGBQYXN0ZWJvYXJkU3RyYXRlZ3lgIG1ldGhvZHMgb24gYFdlYlBsYXRm
b3JtU3RyYXRlZ2llc2AuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjaGFuZ2VDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbG9y
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRUeXBlcyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUpOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNVUkxTdHJpbmdTdWl0
YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJp
bmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3
cml0ZVRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHRocm91Z2ggUGFzdGVib2FyZC1yZWxhdGVkIGNvZGVwYXRocwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggMzFmMDFmNzk2MmJm
YTg0N2Y2NDJmOWY2NzkwOTk0MjAwYzAwZTJlMy4uYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0Njdi
ZWIzNTBlOTkxNGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1wb3J0ICJIVE1MU3BhbkVsZW1lbnQuaCIKICNp
bXBvcnQgIkxlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmgiCiAjaW1wb3J0ICJMZWdhY3lXZWJBcmNo
aXZlLmgiCisjaW1wb3J0ICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbXBvcnQgIlBhc3Rl
Ym9hcmQuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2ltcG9ydCAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCkBAIC0yNDcsOSArMjQ4LDEwIEBAIHZvaWQgRWRpdG9yOjp0YWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24oKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBWZWN0b3I8U3Ry
aW5nPiB0eXBlczsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKGxlZ2FjeVN0cmluZ1Bhc3RlYm9h
cmRUeXBlKCkpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNy
ZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0VHlwZXModHlwZXMsIE5TRmluZFBib2FyZCk7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKFdURk1vdmUoc3RyaW5n
RnJvbVNlbGVjdGlvbiksIGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIE5TRmluZFBib2Fy
ZCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRU
eXBlcyh0eXBlcywgTlNGaW5kUGJvYXJkLCBjb250ZXh0LmdldCgpKTsKKyAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUoV1RGTW92
ZShzdHJpbmdGcm9tU2VsZWN0aW9uKSwgbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgTlNG
aW5kUGJvYXJkLCBjb250ZXh0LmdldCgpKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICNlbHNlCiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4IDMw
M2FlNWIzYjJmMDYxZmVkYzVjNjU0ZDNiOTc0M2Y1YzI3ZGRmZTcuLmM0MGUzMDFhYmU4MWYwMWNj
MjQ3MTc4Mjk1NTMzZTgzNjM4OTY4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Ry
YWdDb250cm9sbGVyTWFjLm1tCkBAIC0xNDUsNyArMTQ1LDggQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgYnJlYWs7CiAgICAgfQogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9ydGVkVHlwZXMs
IGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOworICAgIGF1dG8gY29udGV4dCA9IGRyYWdEYXRh
LmNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9y
dGVkVHlwZXMsIGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGNvbnRleHQuZ2V0KCkpOwogfQog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5jcHAKaW5kZXggOWYxNmQ4ODYxZDFlYTE1ZjUxMzkzNDM1YTNlNGU1YmMwYTdkYmYy
My4uN2MxMGFlYzNjZjU2M2EwN2NjZGYxNWRmZDM1YjJkZDdiYTFlMDM2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgT3B0aW9uYWw8VmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5m
bygpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCksIG1fY2hhbmdlQ291
bnQpOworICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1l
KCksIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQpAQCAtNzUsNyArNzUsNyBAQCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+
IFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4gc3RyYXRlZ3kt
PmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG5hbWUoKSwgbV9jaGFuZ2VDb3VudCk7
CisgICAgICAgIHJldHVybiBzdHJhdGVneS0+aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRl
eCwgbmFtZSgpLCBtX2NoYW5nZUNvdW50LCBjb250ZXh0KCkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oaW5kZXgpOwogI2VuZGlmCkBAIC04NSwyMSArODUsMjEgQEAgT3B0aW9uYWw8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjpwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4
KSBjb25zdAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4gc3RyYXRlZ3kt
PnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpKTsKKyAgICAgICAg
cmV0dXJuIHN0cmF0ZWd5LT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5h
bWUoKSwgY29udGV4dCgpKTsKICAgICByZXR1cm4geyB9OwogfQogCiBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSk7CisgICAgICAgIHJl
dHVybiBzdHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1l
KCksIGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFVSTCBQYXN0ZWJvYXJk
OjpyZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAoYXV0byog
c3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCi0g
ICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBuYW1l
KCksIHRpdGxlKTsKKyAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkVVJMRnJvbVBhc3RlYm9h
cmQoaW5kZXgsIG5hbWUoKSwgdGl0bGUsIGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBh
MjcxYzBlODU0YzNkODQ3NzU5NjBjMzM2MjkwM2RmZjlmOTIxZWUyLi4yY2M5YjAwNGZhNzMzZjIz
NjQzNDY4NjIyZmFiY2E1MTM3MjFiYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwpAQCAtNDIsNDMgKzQzLDQzIEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIGNsYXNz
IFBhc3RlYm9hcmRTdHJhdGVneSB7CiBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJk
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3Rl
Ym9hcmQoY29uc3QgUGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRl
VG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
LSAgICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwotICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVh
bCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBp
bnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgaW50NjRfdCBhZGRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgaW50NjRf
dCBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRV
UkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBjb250YWlu
c1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwg
VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpID0gMDsK
LSAgICB2aXJ0dWFsIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0
ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCkgPSAwOwotICAgIHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1J
bmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAg
IHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogCi0gICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwotICAgIHZpcnR1YWwg
aW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CisgICAgdmlydHVhbCBpbnQ2NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVi
b2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9EcmFnRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0Rh
dGFDb2NvYS5tbQppbmRleCBlNDMzZWRiMzhlOGM1OGEwMDY1NGRiNWE1OWUxYmNkNDA5N2EzZDA5
Li5iNTJmN2I4MWNmZWQyZjNjYzQwNWZmMmRjZDkxZWNiMTZjYjQ4NmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTE2Miw3ICsxNjIs
OCBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbgogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkxU
eXBlSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2Fy
ZENvbnRleHQoKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKICAg
ICByZXR1cm4gdHlwZXMuY29udGFpbnModXJsUGFzdGVib2FyZFR5cGUoKSk7CiB9CiAgICAgCkBA
IC0xNzQsNyArMTc1LDggQEAgYm9vbCBEcmFnRGF0YTo6Y2FuU21hcnRSZXBsYWNlKCkgY29uc3QK
IGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29sb3IoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIGF1dG8gY29udGV4dCA9
IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKGNvbG9yUGFzdGVib2FyZFR5
cGUoKSk7CiB9CiAKQEAgLTE4NSwxOSArMTg3LDIxIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
RmlsZXMoKSBjb25zdAogCiB1bnNpZ25lZCBEcmFnRGF0YTo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0TnVtYmVyT2ZGaWxlcyhtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIGNvbnRleHQg
PSBjcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldE51bWJlck9mRmlsZXMobV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dC5nZXQoKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IERyYWdEYXRhOjphc0Zp
bGVuYW1lcygpIGNvbnN0CiB7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENv
bnRleHQoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0g
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dC5nZXQoKSk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmaWxlTmFtZXMoKTsKIAogICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3VsdHM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRQYXRobmFtZXNGb3JUeXBlKHJlc3VsdHMsIFN0cmluZyhsZWdh
Y3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRQYXRobmFtZXNGb3JU
eXBlKHJlc3VsdHMsIFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdHM7CiAjZWxz
ZQogICAgIHJldHVybiBmaWxlTmFtZXMoKTsKQEAgLTIwNiw4ICsyMTAsOSBAQCBWZWN0b3I8U3Ry
aW5nPiBEcmFnRGF0YTo6YXNGaWxlbmFtZXMoKSBjb25zdAogCiBib29sIERyYWdEYXRhOjpjb250
YWluc1BsYWluVGV4dCgpIGNvbnN0CiB7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVi
b2FyZENvbnRleHQoKTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKIAog
ICAgIHJldHVybiB0eXBlcy5jb250YWlucyhzdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKQogICAgICAg
ICB8fCB0eXBlcy5jb250YWlucyhydGZkUGFzdGVib2FyZFR5cGUoKSkKQEAgLTIxNSw3ICsyMjAs
NyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVz
UGFzdGVib2FyZFR5cGUoKSkpCiAjZW5kaWYKLSAgICAgICAgfHwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRG
b3JUeXBlKHVybFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB8
fCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUodXJsUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiB9CiAKIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRl
eHQoKSBjb25zdApAQCAtMjM2LDcgKzI0MSw4IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRl
eHQoKSBjb25zdAogCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29sb3IobV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5jb2xvcihtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKIH0KIAogYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2UgcHVycG9z
ZSkgY29uc3QKQEAgLTI1MCw4ICsyNTYsOSBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KERyYWdnaW5nUHVycG9zZSBwdXJwb3NlKSBjb25zdAogICAgIGlmIChwdXJw
b3NlID09IERyYWdnaW5nUHVycG9zZTo6Rm9yRWRpdGluZyAmJiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmIGNvbnRh
aW5zRmlsZXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBhdXRvIGNvbnRleHQgPSBj
cmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlw
ZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQu
Z2V0KCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICByZXR1cm4g
dHlwZXMuY29udGFpbnMoU3RyaW5nKFdlYkFyY2hpdmVQYm9hcmRUeXBlKSkKICAgICAgICAgfHwg
dHlwZXMuY29udGFpbnMoaHRtbFBhc3RlYm9hcmRUeXBlKCkpCkBAIC0yNzUsMjMgKzI4MiwyNSBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNQcm9taXNlKCkgY29uc3QKIHsKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVQYXN0ZWJv
YXJkQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJk
VHlwZSgpIGNvbnRhaW5zIFVUSXMsIG5vdCBwYXRoIG5hbWVzLiBBbHNvLCB3aHkgZG8gd2UKICAg
ICAvLyB0aGluayBwcm9taXNlcyBzaG91bGQgb25seSBjb250YWluIG9uZSBmaWxlIChvciBVVEkp
PwogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFBhdGhuYW1lc0ZvclR5
cGUoZmlsZXMsIFN0cmluZyhsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpKSwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5nZXRQYXRobmFtZXNGb3JUeXBlKGZpbGVzLCBTdHJpbmcobGVnYWN5RmlsZXNQcm9t
aXNlUGFzdGVib2FyZFR5cGUoKSksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQuZ2V0KCkpOwog
I2VuZGlmCiAgICAgcmV0dXJuIGZpbGVzLnNpemUoKSA9PSAxOwogfQogCiBib29sIERyYWdEYXRh
Ojpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kpIGNvbnN0CiB7Ci0gICAgaWYg
KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29udGFpbnNVUkxT
dHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSkpCisgICAgYXV0byBjb250
ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKTsKKyAgICBpZiAocGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0g
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dC5nZXQoKSk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpKSkgJiYgZmlsZU5hbWVzKCkuc2l6ZSgpID09IDEpCiAgICAgICAg
IHJldHVybiAhIVtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZU5hbWVzKCkuZmlyc3QoKV07CiAj
ZW5kaWYKQEAgLTMwMSwxMCArMzEwLDExIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZp
bGVuYW1lQ29udmVyc2lvblBvbGljeSkgY29uc3QKIAogU3RyaW5nIERyYWdEYXRhOjphc1VSTChG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CisgICAgYXV0
byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKTsKICAgICAvLyBGSVhNRTogVXNl
IGZpbGVuYW1lUG9saWN5LgogCiAgICAgU3RyaW5nIHVybFRpdGxlOwotICAgIGF1dG8gdXJsU3Ry
aW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT51cmxTdHJp
bmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSwgdXJsVGl0bGUpOworICAgIGF1
dG8gdXJsU3RyaW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT51cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSwgdXJsVGl0bGUs
IGNvbnRleHQuZ2V0KCkpOwogICAgIGlmICh0aXRsZSkKICAgICAgICAgKnRpdGxlID0gdXJsVGl0
bGU7CiAKQEAgLTMxMyw3ICszMjMsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVz
KHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKICAgICBpZiAodHlwZXMu
Y29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCkpKSAmJiBm
aWxlTmFtZXMoKS5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIFtVUkxCeUNhbm9uaWNhbGl6
aW5nVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZU5hbWVzKClbMF1dKSBhYnNvbHV0ZVN0
cmluZ107CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQppbmRleCA1NDU3ZTA1NTA4YTAyODJkNDk4YjYyNTk3MTNiMmI3MThiNWIw
YmVjLi44NzkyYjE2YmVkMWEzODY2NWI0MGRjNGI2MzY2MDQyOTlmZTIyZTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xMzMs
NyArMTMzLDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpzaG91bGRUcmVhdENvY29hVHlwZUFzRmlsZShj
b25zdCBTdHJpbmcmIGNvY29hVHlwZSkKIAogUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQ
YXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKCkKIHsKLSAgICBib29sIG1heUNvbnRhaW5GaWxl
UGF0aHMgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldE51
bWJlck9mRmlsZXMobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYm9vbCBtYXlDb250YWluRmlsZVBh
dGhzID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXROdW1i
ZXJPZkZpbGVzKG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChtYXlDb250YWluRmlsZVBhdGhzKSB7CkBAIC0xNTcsNyArMTU3
LDcgQEAgUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQYXN0ZWJvYXJkOjpmaWxlQ29udGVu
dFN0YXRlKCkKIAogICAgIGlmICghbWF5Q29udGFpbkZpbGVQYXRocykgewogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjb2NvYVR5cGVzOwotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKGNvY29hVHlwZXMsIG1fcGFzdGVib2FyZE5hbWUp
OworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdl
dFR5cGVzKGNvY29hVHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAg
IGlmIChjb2NvYVR5cGVzLmZpbmRNYXRjaGluZyhbXShjb25zdCBTdHJpbmcmIGNvY29hVHlwZSkg
eyByZXR1cm4gc2hvdWxkVHJlYXRDb2NvYVR5cGVBc0ZpbGUoY29jb2FUeXBlKTsgfSkgPT0gbm90
Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gRmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFn
ZURhdGE7CiAKQEAgLTE3MCwxMiArMTcwLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgICAgICAgICByZXR1cm4gY29jb2FUeXBlID09IFN0cmluZyhrVVRUeXBl
VVJMKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9KTsKLSAg
ICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGluZGV4T2ZVUkwgIT0gbm90Rm91bmQgJiYgIXBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29udGFpbnNTdHJpbmdT
YWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb2NvYVR5cGVzW2luZGV4T2ZVUkxdLCBtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGluZGV4T2ZVUkwgIT0gbm90
Rm91bmQgJiYgIXBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29u
dGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb2NvYVR5cGVzW2luZGV4T2ZVUkxd
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIH0KIAogICAgIC8vIEVuZm9yY2Ug
Y2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1cml0eS4gV2UgY2hlY2sgYWZ0ZXIgcmVhZGlu
ZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAgIC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2Ug
YmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdlIGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRh
dGEuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKSkKKyAgICBpZiAo
bV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpCiAgICAgICAgIHJl
dHVybiBGaWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YTsKIAogICAgIC8vIEV2ZW4g
d2hlbiB0aGVyZSdzIG9ubHkgaW1hZ2UgZGF0YSBpbiB0aGUgcGFzdGVib2FyZCBhbmQgbm8gZmls
ZSByZXByZXNlbnRhdGlvbnMsIHdlIHN0aWxsIHJ1biB0aGUgcmlzayBvZiBleHBvc2luZyBmaWxl
IHBhdGhzCkBAIC0xODcsMTEgKzE4NywxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3Mo
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKG1fcGFzdGVib2FyZE5hbWUsIG9yaWdpbik7CisgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXMgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5
cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKG1fcGFzdGVib2FyZE5hbWUsIG9yaWdpbiwgY29u
dGV4dCgpKTsKIAogICAgIC8vIEVuZm9yY2UgY2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1
cml0eS4gV2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAg
IC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdl
IGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudCht
X3Bhc3RlYm9hcmROYW1lKSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gdHlwZXM7
CkBAIC0yOTUsMjIgKzI5NSwyMiBAQCBjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgUGFzdGVi
b2FyZDo6cmVhZEN1c3RvbURhdGEoKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0
YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhKQogewotICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndy
aXRlQ3VzdG9tRGF0YShkYXRhLCBuYW1lKCkpOworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlQ3VzdG9tRGF0YShkYXRh
LCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIGludDY0X3QgUGFzdGVib2FyZDo6Y2hhbmdlQ291
bnQoKSBjb25zdAogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpOworICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9h
cmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBj
b2NvYVR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0VHlwZXMoY29jb2FUeXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyhjb2NvYVR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3Vu
dCBvdXJzZWx2ZXMgZm9yIHNlY3VyaXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQg
b2YgYmVmb3JlIHRvIGJlCiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91
ciB0ZXN0aW5nIHRoZSBjaGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KLSAgICBp
ZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpKQorICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdl
Q291bnQobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIHJldHVybiBjb2NvYVR5cGVzOwpAQCAtMzE4LDExICszMTgsMTEgQEAgVmVjdG9yPFN0
cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNo
ZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2ZXMgZm9y
IHNlY3VyaXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQgb2YgYmVmb3JlIHRvIGJl
CiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91ciB0ZXN0aW5nIHRoZSBj
aGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KLSAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNv
dW50KG1fcGFzdGVib2FyZE5hbWUpKQorICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCmluZGV4IGYwZmFkZDcwODY5NTYzOGY3YzgxZTkyNjcxZjY3YzE4NGUzOGMyNjUuLmZiZTcx
OTg4MzI3YWQwZDA0YmJlMTk5YjJjM2MzYTJmOGJlN2NmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTM1NSw3ICszNTUsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcm
IG9yaWdpbikKICAgICAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcih0eXBlcyk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+dHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUobV9uYW1lLCBvcmlnaW4pOworICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKG1fbmFtZSwgb3JpZ2luLCBjb250ZXh0KCkpOwogfQogCiBWZWN0b3I8
U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKQEAgLTQ3
Niw3ICs0NzYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0
b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZUN1
c3RvbURhdGEoZGF0YSwgbV9uYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPndyaXRlQ3VzdG9tRGF0YShkYXRhLCBtX25hbWUsIGNvbnRleHQoKSk7
CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzMzY1YTNlYjg2YmIwYWI0
OWE5YzBhYmFkZjQ4MWRkZjA4MDllNzNlLi43OWY1YWJhYjhlMmE0ZDhlNmQyNDY3MzVjYzhmNDZh
Y2Y5YjAzZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXN0ZWJvYXJkOjpQ
YXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29u
dGV4dCkpCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1lKHBhc3RlYm9hcmROYW1lKQotICAgICwgbV9j
aGFuZ2VDb3VudChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNo
YW5nZUNvdW50KHBhc3RlYm9hcmROYW1lKSkKKyAgICAsIG1fY2hhbmdlQ291bnQocGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChwYXN0ZWJvYXJk
TmFtZSwgbV9jb250ZXh0LmdldCgpKSkKIHsKIH0KIApAQCAtODMsOSArODMsOSBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKLXN0YXRpYyBpbnQ2
NF90IGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
ID0geyB9KQorc3RhdGljIGludDY0X3QgY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUgPSB7IH0sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0ID0gbnVsbHB0cikKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChwYXN0ZWJvYXJkTmFtZSk7CisgICAgcmV0dXJu
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQo
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiAvLyBGSVhNRTogRG9lcyB0aGlzIG5lZWQg
dG8gYmUgZGVjbGFyZWQgaW4gdGhlIGhlYWRlciBmaWxlPwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoc3RkOjp1bmlxdWVfcHRyPFBhCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiB7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChjb250ZW50LCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvbnRlbnQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZXNvdXJjZU1JTUVUeXBlKE5TU3RyaW5nICpt
aW1lVHlwZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVzb3VyY2VN
SU1FVHlwZShOU1N0cmluZyAqbWltZVR5cGUpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChwYXN0ZWJv
YXJkSW1hZ2UsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZEltYWdlLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uKQpAQCAtMTMz
LDEzICsxMzMsMTMgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKICAgICAvLyBGSVhNRTogV2UgdmVuZCAicHVi
bGljLnRleHQiIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggcHJlLWlPUyAx
MSBhcHBzLiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgc3RvcCB2ZW5kaW5nIHRoaXMgVVRJLAog
ICAgIC8vIGFuZCBpbnN0ZWFkIHNldCBkYXRhIGZvciBjb25jcmV0ZSBwbGFpbiB0ZXh0IHR5cGVz
LiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMTc+Lgog
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtVVFR5cGVUZXh0
LCB0ZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtVVFR5cGVUZXh0LCB0ZXh0LCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYg
cGFzdGVib2FyZFVSTCkKIHsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRVUkwsIG1fcGFzdGVib2FyZE5h
bWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3Jp
dGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZFVSTCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5
cGUoY29uc3QgUGFzdGVib2FyZFVSTCYpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUoY29uc3QgUGFzdGVib2FyZFVS
TCYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0Q29sb3IoY29s
b3IsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0Q29sb3IoY29sb3IsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKQEAgLTE2OCw5ICsx
NjgsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwg
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwog
CiAgICAgaWYgKGFsbG93VVJMID09IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJM
KSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICB0ZXh0LnRl
eHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwg
a1VUVHlwZVVSTCwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICAgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1J
bmRleFRvUXVlcnksIGtVVFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7Cisg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBpZiAoIXRl
eHQudGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHRleHQuaXNVUkwgPSB0cnVlOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTgyLDkgKzE4Miw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIC8vIG9uZSBvZiB0aGUgY29uY3JldGUgInB1YmxpYy5wbGFpbi10
ZXh0IiByZXByZXNlbnRhdGlvbnMgKGUuZy4ga1VUVHlwZVVURjhQbGFpblRleHQpLiBJbiB0aGUg
ZnV0dXJlLCB3ZQogICAgIC8vIHNob3VsZCBjb25zaWRlciByZW1vdmluZyBzdXBwb3J0IGZvciBy
ZWFkaW5nIHBsYWluIHRleHQgZnJvbSAicHVibGljLnRleHQiLgogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VUVHlwZVBsYWluVGV4dCwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleFRvUXVlcnksIGtVVFR5cGVQbGFpblRleHQsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAgICAgaWYgKHRleHQudGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIHRleHQu
dGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5
LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHRleHQudGV4dCA9IHN0
cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5LCBrVVRUeXBl
VGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCiAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwpAQCAtMjEzLDE0ICsyMTMs
MTQgQEAgUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJk
V2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm8KIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJv
YXJkVHlwZV0gfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVXZWJBcmNoaXZlXSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
dGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlm
IChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVh
ZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVy
biBidWZmZXIgJiYgcmVhZGVyLnJlYWRXZWJBcmNoaXZlKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0
OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAg
aWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRN
TF0pIHsKLSAgICAgICAgU3RyaW5nIGh0bWxTdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlSFRNTCwgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIFN0cmluZyBodG1sU3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleCwga1VUVHlwZUhUTUwsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAg
ICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAg
ICAgICAgIHJldHVybiAhaHRtbFN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZEhUTUwoaHRt
bFN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RS
ZWFkVHlwZTsKQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFt
ZSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXND
aGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJU
RkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWRO
b3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAo
bV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRl
clJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4g
YnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlw
ZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUxLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVj
dDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkK
ICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0
ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRU
eXBlOwpAQCAtMjU5LDIxICsyNTksMjEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVVSTF0pIHsKICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICBVUkwgdXJs
ID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJk
TmFtZSwgdGl0bGUpOworICAgICAgICBVUkwgdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgdGl0bGUsIGNvbnRleHQoKSk7CiAg
ICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAg
ICAgIHJldHVybiAhdXJsLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkVVJMKHVybCwgdGl0bGUpID8g
UmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAg
ICAgfQogCiAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5
cGUsIGtVVFR5cGVQbGFpblRleHQpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVn
eS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUGxhaW5UZXh0LCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVQbGFpblRleHQsIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5n
ZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2Fz
Q2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiAhc3RyaW5nLmlzTnVsbCgpICYmIHJl
YWRlci5yZWFkUGxhaW5UZXh0KHN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVh
ZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoVVRUeXBlQ29uZm9y
bXNUbygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpdHlwZSwga1VUVHlwZVRleHQpKSB7Ci0gICAgICAg
IFN0cmluZyBzdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJp
bmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBl
VGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6
OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuICFzdHJpbmcu
aXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSA/IFJlYWRlclJlc3VsdDo6
UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjgzLDcgKzI4Myw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBSZWFkZXJS
ZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogfQogCi1zdGF0aWMgdm9pZCByZWFkVVJMQWxvbmdzaWRl
QXR0YWNobWVudElmTmVjZXNzYXJ5KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIs
IFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgdHlwZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludCBpdGVtSW5kZXgpCitzdGF0aWMg
dm9pZCByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiByZWFkZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0
IFN0cmluZyYgdHlwZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dCBpdGVtSW5kZXgsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8o
dHlwZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVHlwZVZDYXJkKSkKQEAg
LTI5MSw3ICsyOTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBTdHJpbmcgdGl0bGU7Ci0gICAg
YXV0byB1cmwgPSBzdHJhdGVneS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBwYXN0
ZWJvYXJkTmFtZSwgdGl0bGUpOworICAgIGF1dG8gdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwgcGFzdGVib2FyZE5hbWUsIHRpdGxlLCBjb250ZXh0KTsKICAg
ICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJlYWRlci5yZWFkVVJMKHVybCwgdGl0bGUp
OwogfQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAKICAgICBQ
YXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKTsKIAotICAgIHNpemVfdCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3ku
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgc2l6ZV90IG51
bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgaWYgKCFudW1iZXJPZkl0ZW1zKQogICAgICAgICBy
ZXR1cm47CkBAIC0zMzgsMTUgKzMzOCwxNSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogICAg
ICAgICBpZiAoaXRlbUluZGV4ICYmIGkgIT0gKml0ZW1JbmRleCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIGF1dG8g
aW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJk
TmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKCFpbmZvKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAg
ICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYmIHByZWZlcnNBdHRhY2htZW50UmVwcmVzZW50YXRp
b24oKmluZm8pKSB7CiAgICAgICAgICAgICBhdXRvIHR5cGVGb3JGaWxlVXBsb2FkID0gaW5mby0+
Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7Ci0gICAgICAgICAgICBpZiAoYXV0
byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwgdHlwZUZvckZp
bGVVcGxvYWQsIG1fcGFzdGVib2FyZE5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgcmVhZFVSTEFs
b25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlRm9yRmls
ZVVwbG9hZCwgbV9wYXN0ZWJvYXJkTmFtZSwgaSk7CisgICAgICAgICAgICBpZiAoYXV0byBidWZm
ZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwgdHlwZUZvckZpbGVVcGxv
YWQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKKyAgICAgICAgICAgICAgICByZWFk
VVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KHJlYWRlciwgc3RyYXRlZ3ksIHR5cGVG
b3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lLCBpLCBjb250ZXh0KCkpOwogICAgICAgICAg
ICAgICAgIHJlYWRlci5yZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9yRmlsZVVwbG9hZCwg
aW5mby0+c3VnZ2VzdGVkRmlsZU5hbWUsIGluZm8tPnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMzgyLDEyICsz
ODIsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFz
dGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwKIHsKICAgICBBU1NFUlQocmVzcGVjdHNV
VElGaWRlbGl0aWVzKCkpOwogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKLSAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAw
LCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0
ZWJvYXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgeworICAgIGZvciAo
TlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOyBpbmRleCA8IG51bWJl
ck9mSXRlbXM7ICsraW5kZXgpIHsKICAgICAgICAgaWYgKGl0ZW1JbmRleCAmJiBpbmRleCAhPSAq
aXRlbUluZGV4KQogICAgICAgICAgICAgY29udGludWU7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQotICAgICAgICBhdXRvIGluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50KTsKKyAgICAg
ICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwg
bV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKTsKICAgICAgICAgaWYg
KCFpbmZvKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRl
bnRSZWFkZXImIHJlYWRlciwKICAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVudCA9IHBvbGlj
eSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSAmJiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmICFh
dHRhY2htZW50RmlsZVBhdGguaXNFbXB0eSgpOwogICAgICAgICBhdXRvIGNvbnRlbnRUeXBlID0g
aW5mby0+Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CiAgICAgICAgIGlmIChj
YW5SZWFkQXR0YWNobWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9uKCppbmZv
KSkgewotICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShy
ZWFkZXIsIHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgaW5kZXgpOwor
ICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFkZXIs
IHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgaW5kZXgsIGNvbnRleHQo
KSk7CiAgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNobWVudEZp
bGVQYXRoKSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVudFR5cGUpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTQ1Miw3ICs0NTIsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogYm9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRh
KCkKIHsKLSAgICByZXR1cm4gISFwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOworICAgIHJl
dHVybiAhIXBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogc3Rh
dGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShOU1N0cmluZyAqdHlwZSkKQEAgLTQ4OCwx
MiArNDg4LDEyIEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIGlmICghY29jb2FUeXBlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlw
ZS5nZXQoKSwgU3RyaW5nKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29jb2FUeXBl
LmdldCgpLCBTdHJpbmcoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogdm9p
ZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChTdHJpbmcoKSwgU3RyaW5nKCksIG1f
cGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoU3RyaW5nKCksIFN0cmluZygpLCBtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFk
UGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtNTA1LDcgKzUwNSw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5n
cyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGluCiAgICAgaWYgKCFjb2NvYVR5cGUpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBhdXRvIHZhbHVlcyA9IHN0cmF0ZWd5LmFsbFN0cmluZ3NGb3JU
eXBlKGNvY29hVHlwZS5nZXQoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIGF1dG8gdmFsdWVzID0g
c3RyYXRlZ3kuYWxsU3RyaW5nc0ZvclR5cGUoY29jb2FUeXBlLmdldCgpLCBwYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
aWYgKFtjb2NvYVR5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVQbGFpblRleHRdKSB7CiAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5tYXAoWyZdIChhdXRvJiB2
YWx1ZSkgLT4gU3RyaW5nIHsKQEAgLTU1OCwxNiArNTU4LDE2IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAg
aWYgKCFjb2NvYVR5cGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29jb2FUeXBlLmdl
dCgpLCBkYXRhLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlwZS5nZXQoKSwg
ZGF0YSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogVmVjdG9yPFN0cmluZz4g
UGFzdGVib2FyZDo6cmVhZEZpbGVQYXRocygpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBh
dGhzOwogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKTsKLSAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0
ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7
IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgeworICAgIGZvciAoTlNVSW50ZWdlciBp
bmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOyBpbmRleCA8IG51bWJlck9mSXRlbXM7ICsr
aW5kZXgpIHsKICAgICAgICAgLy8gQ3VycmVudGx5LCBkcmFnIGFuZCBkcm9wIGlzIHRoZSBvbmx5
IGNhc2Ugb24gaU9TIHdoZXJlIHRoZSAicGFzdGVib2FyZCIgbWF5IGNvbnRhaW4gZmlsZSBwYXRo
cy4KLSAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIGF1dG8g
aW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVi
b2FyZE5hbWUsIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmICghaW5mbykK
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCBlNjVmYTg3Y2QxZTlhMWRlZDcw
MWU0MmRlYWY0NWEyZWU1NDNiYWI2Li41OWQzYmM4MTQ3MWQzZTdiY2E3N2NkYTIyZDdhMDU4OTVh
NWEyMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVi
b2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFk
T3JpZ2luKCkKIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCB0eXBlLCBuYW1lKCkpOworICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZCgwLCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIFN0cmlu
ZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYpCkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikKIAogdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSk7CisgICAgdGV4
dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUo
KSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGY3
ZjhmZmU0ZjhlOWY4YzNhOTZiMzI3NmNiYTM1ZDgzYjZkOWQ0YzguLjExMGRkMjUxMGI4NWYxMDZk
M2M5MTU4MTEwZDA4MGQ1ODBlMjhhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC05Myw3ICs5Myw3IEBAIFBhc3RlYm9hcmQ6OlBhc3RlYm9h
cmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCiBQYXN0ZWJv
YXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cHJvbWlzZWRGaWxlUGF0aHMpCiAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAg
ICAsIG1fcGFzdGVib2FyZE5hbWUocGFzdGVib2FyZE5hbWUpCi0gICAgLCBtX2NoYW5nZUNvdW50
KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQo
bV9wYXN0ZWJvYXJkTmFtZSkpCisgICAgLCBtX2NoYW5nZUNvdW50KHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwg
bV9jb250ZXh0LmdldCgpKSkKICAgICAsIG1fcHJvbWlzZWRGaWxlUGF0aHMocHJvbWlzZWRGaWxl
UGF0aHMpCiB7CiAgICAgQVNTRVJUKHBhc3RlYm9hcmROYW1lKTsKQEAgLTEyNyw3ICsxMjcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIAogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Ci0gICAgbV9j
aGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFu
Z2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0K
IAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKQEAgLTE1NCwzNSArMTU0LDM1IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHR5cGVzLmFwcGVuZFZlY3Rvcihjb250ZW50LmNsaWVudFR5cGVzKTsKICAgICB0
eXBlcy5hcHBlbmQoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKTsKIAotICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBtX2NoYW5nZUNvdW50ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGUgZm9s
bG93aW5nIGNvZGUgc2hvdWxkIGJlIHJlZmFjdG9yZWQsIHN1Y2ggdGhhdCBpdCBvbmx5IHJlcXVp
cmVzIGEgc2luZ2xlIGNhbGwgb3V0IHRvIHRoZSBjbGllbnQgbGF5ZXIuCiAgICAgLy8gSW4gV2Vi
S2l0MiwgdGhpcyBjdXJyZW50bHkgcmVzdWx0cyBpbiBtYW55IHVubmVjZXNzYXJ5IHN5bmNocm9u
b3VzIHJvdW5kLXRyaXAgSVBDIG1lc3NhZ2VzLgogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50
VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5jbGllbnREYXRhW2ldLmdl
dCgpLCBjb250ZW50LmNsaWVudFR5cGVzW2ldLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmNsaWVudERhdGFbaV0uZ2V0KCksIGNvbnRlbnQu
Y2xpZW50VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKGNv
bnRlbnQuY2FuU21hcnRDb3B5T3JEZWxldGUpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUo
bnVsbHB0ciwgV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAg
ICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKG51bGxwdHIsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBl
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChjb250ZW50LmRhdGFJbldl
YkFyY2hpdmVGb3JtYXQpIHsKLSAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJbldl
YkFyY2hpdmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dC5nZXQoKSwga1VUVHlwZVdlYkFyY2hpdmUsIG1fcGFzdGVib2FyZE5hbWUpOwotQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0LmdldCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgfQogICAgIGlmIChjb250ZW50LmRhdGFJblJURkRGb3JtYXQpCi0gICAgICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBsZWdhY3lSVEZE
UGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZl
ckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBpZiAoY29udGVu
dC5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5k
YXRhSW5SVEZGb3JtYXQuZ2V0KCksIGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVi
b2FyZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluUlRG
Rm9ybWF0LmdldCgpLCBsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogICAgIGlmICghY29udGVudC5kYXRhSW5IVE1MRm9ybWF0LmlzTnVsbCgp
KQotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCwg
bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBt
X2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCwgbGVnYWN5SFRNTFBh
c3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKCFj
b250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdC5pc051bGwoKSkKLSAgICAgICAgbV9jaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5n
Rm9yVHlwZShjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCwgbGVnYWN5U3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUo
Y29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXQsIGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCks
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBkYXRhOwogICAgIGRhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLnB0cigpLCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS5wdHIoKSwgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OwogCiB9CiAKQEAgLTE5MywxNSArMTkzLDE1IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFp
blRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24gc21hcnRSZXBsCiAg
ICAgaWYgKHNtYXJ0UmVwbGFjZU9wdGlvbiA9PSBDYW5TbWFydFJlcGxhY2UpCiAgICAgICAgIHR5
cGVzLmFwcGVuZChXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSk7CiAKLSAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9h
cmROYW1lKTsKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHRleHQsIGxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh0ZXh0LCBsZWdhY3lTdHJpbmdQ
YXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChz
bWFydFJlcGxhY2VPcHRpb24gPT0gQ2FuU21hcnRSZXBsYWNlKQotICAgICAgICBtX2NoYW5nZUNv
dW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZm
ZXJGb3JUeXBlKDAsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZSgwLCBXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAotc3RhdGljIGxvbmcgd3JpdGVVUkxG
b3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCitzdGF0aWMgbG9u
ZyB3cml0ZVVSTEZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBuZXdDaGFuZ2VD
b3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlw
ZXModHlwZXMsIHBhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywg
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogICAgIAogICAgIEFTU0VSVCghcGFzdGVib2FyZFVS
TC51cmwuaXNFbXB0eSgpKTsKICAgICAKQEAgLTIxNiwzNiArMjE2LDM2IEBAIHN0YXRpYyBsb25n
IHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hCiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2ViVVJMc1dpdGhUaXRsZXNQ
Ym9hcmRUeXBlKSkgewogICAgICAgICBQYXN0ZWJvYXJkVVJMIHVybCA9IHsgcGFzdGVib2FyZFVS
TC51cmwsIFN0cmluZyh0aXRsZSkuc3RyaXBXaGl0ZVNwYWNlKCksIGVtcHR5U3RyaW5nKCkgfTsK
LSAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldFVSTCh1cmwsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dFVSTCh1cmwsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKICAgICB9CiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpKSkpCi0gICAgICAgIG5l
d0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRTdHJpbmdGb3JUeXBlKFtjb2NvYVVSTCBhYnNvbHV0ZVN0cmluZ10sIGxlZ2FjeVVSTFBh
c3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0Zv
clR5cGUoW2NvY29hVVJMIGFic29sdXRlU3RyaW5nXSwgbGVnYWN5VVJMUGFzdGVib2FyZFR5cGUo
KSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJV
UkxQYm9hcmRUeXBlKSkKLSAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUodXNlclZpc2libGVT
dHJpbmcsIFdlYlVSTFBib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dFN0cmluZ0ZvclR5cGUodXNlclZpc2libGVTdHJpbmcsIFdlYlVSTFBib2FyZFR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KTsKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2ViVVJMTmFtZVBi
b2FyZFR5cGUpKQotICAgICAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh0aXRsZSwgV2ViVVJMTmFt
ZVBib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5
cGUodGl0bGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlw
ZSgpKSkpCi0gICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJWaXNpYmxlU3RyaW5nLCBs
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG5l
d0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJWaXNpYmxlU3RyaW5nLCBsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiAKICAgICByZXR1cm4gbmV3Q2hh
bmdlQ291bnQ7CiB9CiAgICAgCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9y
VHlwZXMod3JpdGFibGVUeXBlc0ZvclVSTCgpLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJk
VVJMKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh3cml0YWJsZVR5cGVz
Rm9yVVJMKCksIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRVUkwsIGNvbnRleHQoKSk7CiB9
CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRUeXBlKGNv
bnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7CiAgICAgUGFzdGVib2FyZFVSTCB1
cmwgPSB7IHBhc3RlYm9hcmRVUkwudXJsLCBwYXN0ZWJvYXJkVVJMLnRpdGxlLnN0cmlwV2hpdGVT
cGFjZSgpLCBlbXB0eVN0cmluZygpIH07Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VVJMKHVybCwgbV9wYXN0ZWJvYXJk
TmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0VVJMKHVybCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4gdHlwZXMgPSB7IGxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSB9Owot
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXMo
dHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldENvbG9yKGNvbG9yLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldENvbG9yKGNvbG9yLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiBzdGF0
aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZWJvYXJkSW1hZ2UpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZp
bGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIHJl
dHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlRmlsZVdy
YXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QmIG5ld0NoYW5nZUNvdW50KQorc3RhdGljIHZvaWQg
d3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCYgbmV3Q2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFj
aG1lbnQ6YWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBw
ZXI6d3JhcHBlcl0pLmdldCgpXTsKIApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIHdy
aXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNv
bnN0IFN0cmluCiAgICAgaWYgKCFSVEZERGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmV3
Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBs
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIG5ld0NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkREYXRhKS5wdHIoKSwgbGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAogdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFn
ZSkKQEAgLTI4NCwyNCArMjg0LDI0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKLSAgICBtX2No
YW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZEltYWdlLnVybCk7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9yVHlwZXModHlw
ZXMsIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwsIGNvbnRleHQoKSk7Cisg
ICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZURhdGEpLnB0
cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKICAgICBpZiAoYXV0byBhcmNoaXZlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0KSB7Ci0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoYXJjaGl2ZURh
dGEuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAg
ICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0QnVmZmVyRm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJjaGl2ZVBib2Fy
ZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKLUFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoYXJjaGl2ZURh
dGEuZ2V0KCksIGtVVFR5cGVXZWJBcmNoaXZlLCBtX3Bhc3RlYm9hcmROYW1lKTsKLUFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgorICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdl
dCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogICAgIGlmICgh
cGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQuaXNFbXB0eSgpKQotICAgICAgICBtX2No
YW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
ZXRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9ybWF0LCBsZWdhY3lI
VE1MUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgd3JpdGVGaWxlV3Jh
cHBlckFzUlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXIocGFzdGVib2FyZEltYWdlKSwgbV9wYXN0
ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUo
cGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQsIGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlw
ZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgIHdyaXRlRmlsZVdyYXBwZXJB
c1JURkRBdHRhY2htZW50KGZpbGVXcmFwcGVyKHBhc3RlYm9hcmRJbWFnZSksIG1fcGFzdGVib2Fy
ZE5hbWUsIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6
Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
ICAgIHJldHVybiB0eXBlcy5jb250YWlucyhXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSk7CiB9CiAK
QEAgLTMyMywxOCArMzIzLDE4IEBAIHN0YXRpYyBTdHJpbmcgam9pblBhdGhuYW1lcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJh
dGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitzdGF0aWMgU3Ry
aW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQotICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lKTsK
LSAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoKml0ZW1J
bmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOworICAgIHJldHVybiBzdHJhdGVn
eS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChj
b25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJk
U3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25z
dCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3Ry
YXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQotICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUs
IHBhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1cm4gc3RyYXRlZ3kuYnVmZmVyRm9yVHlwZSh0eXBl
LCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwor
ICAgIHJldHVybiBzdHJhdGVneS5idWZmZXJGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
IHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3dVUkwsIE9wdGlvbmFsPHNpemVf
dD4gaXRlbUluZGV4KQpAQCAtMzQzLDI1ICszNDMsMjUgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxs
b3cKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIGlmIChpdGVtSW5kZXgpIHsKLSAg
ICAgICAgaWYgKGF1dG8gaXRlbUluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KCppdGVtSW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQpKQorICAgICAg
ICBpZiAoYXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
Kml0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKSkK
ICAgICAgICAgICAgIHR5cGVzID0gaXRlbUluZm8tPnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5Owog
ICAgIH0gZWxzZQotICAgICAgICBzdHJhdGVneS5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJk
TmFtZSk7CisgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9h
cmRUeXBlU3RyaW5nKSkpIHsKLSAgICAgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJlZmVy
cmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVTdHJpbmcsIGl0ZW1JbmRleCwgc3RyYXRlZ3ks
IG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVN0cmluZywgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0
cmluZyhsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgdGV4dC50ZXh0
ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0
ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3Rl
Ym9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJl
ZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0
cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBp
dGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFth
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOwpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
UGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgfQog
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGRCkpKSB7
Ci0gICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgo
TlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVt
SW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRT
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAg
ICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAg
ICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CkBAIC0zODEsNyArMzgxLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3Ry
aW5nKGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBkYXRh
ID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBl
KCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlm
IChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGUGFz
dGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAg
IHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAg
dGV4dC5pc1VSTCA9IGZhbHNlOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5
IGFsbG93CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9h
cmRUeXBlUlRGKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZl
cnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBt
X3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0
UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVSVEYsIGl0ZW1JbmRleCwgc3RyYXRl
Z3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBz
dHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKQEAgLTQwOCw3ICs0
MDgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwg
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5z
KFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gcGF0aG5hbWVzOwotICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JU
eXBlKHBhdGhuYW1lcywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgICAgIHN0cmF0ZWd5LmdldFBhdGhuYW1lc0ZvclR5cGUocGF0aG5hbWVz
LCBsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgICAgICB0ZXh0LnRleHQgPSBqb2luUGF0aG5hbWVzKHBhdGhuYW1lcyk7CiAg
ICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDE2LDcgKzQx
Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQ
bGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAKICAgICAvLyBGSVhNRTogVGhlIGNvZGUg
YWJvdmUgbG9va3MgYXQgdGhlIHR5cGVzIHZlY3RvciBmaXJzdCwgYnV0IHRoaXMganVzdCBnZXRz
IHRoZSBzdHJpbmcgd2l0aG91dCBjaGVja2luZy4gV2h5IHRoZSBkaWZmZXJlbmNlPwogICAgIGlm
IChhbGxvd1VSTCA9PSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCkgewotICAg
ICAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5VVJM
UGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIHRleHQudGV4dCA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogICAgICAgICB0ZXh0LmlzVVJMID0gIXRleHQudGV4dC5pc051bGwo
KTsKICAgICB9CiB9CkBAIC00MjcsMTUgKzQyNywxNSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xp
YwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgaWYgKGl0ZW1JbmRleCkgewotICAg
ICAgICBpZiAoYXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoKml0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCkpCisgICAgICAg
IGlmIChhdXRvIGl0ZW1JbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCgq
aXRlbUluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50LCBjb250ZXh0KCkpKQog
ICAgICAgICAgICAgdHlwZXMgPSBpdGVtSW5mby0+cGxhdGZvcm1UeXBlc0J5RmlkZWxpdHk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAKICAgICByZWFkZXIuY29udGVudE9yaWdpbiA9IHJlYWRPcmlnaW4oKTsK
IAogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KFdlYkFy
Y2hpdmVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkg
eworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5k
ZXgoV2ViQXJjaGl2ZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRXZWJBcmNoaXZlKCpidWZmZXIpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50
UmVhZGluZ1BvbGljCiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
aWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlV2ViQXJjaGl2ZSkpKSB7Ci0gICAgICAg
IGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBl
V2ViQXJjaGl2ZSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGtV
VFR5cGVXZWJBcmNoaXZlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3Vu
dCgpIHx8IHJlYWRlci5yZWFkV2ViQXJjaGl2ZSgqYnVmZmVyKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTQ1Nyw0NiArNDU3LDQ2IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1Bv
bGljeTo6QW55VHlwZSAmJiB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVzUGFz
dGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwotICAgICAg
ICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKHBhdGhzLCBsZWdhY3lGaWxlbmFtZXNQYXN0
ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0
aG5hbWVzRm9yVHlwZShwYXRocywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
Y2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEZpbGVQYXRocyhwYXRocykpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lI
VE1MUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3Ry
aW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBTdHJpbmcgc3RyaW5n
ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlw
ZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
ICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8ICghc3RyaW5nLmlz
TnVsbCgpICYmIHJlYWRlci5yZWFkSFRNTChzdHJpbmcpKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TUGFzdGVib2FyZFR5cGVI
VE1MKSkpIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0
ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlSFRNTCwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0
ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZUhUTUwsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9
IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRIVE1MKHN0
cmluZykpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAo
YXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7
CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQg
IT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5z
KFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGRCkpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZl
ciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGRCwg
aXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1
dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5
cGVSVEZELCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
KSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJl
YWRlci5yZWFkUlRGRCgqYnVmZmVyKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURlBhc3Rl
Ym9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBz
dHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCks
IGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAg
ICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJl
YWRSVEYoKmJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGKSkp
IHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KE5TUGFzdGVib2FyZFR5cGVSVEYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJl
ZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkUlRGKCpidWZmZXIpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTA2LDI4ICs1MDYsMjggQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0eXBl
cy5jb250YWlucyhTdHJpbmcobGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAg
ICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5
VElGRlBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCAiaW1hZ2UvdGlmZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9h
cmRUeXBlVElGRikpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlVElGRiwgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVUSUZGLCBpdGVtSW5kZXgs
IHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBp
ZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCksICJpbWFnZS90aWZmIl9zKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5n
KGxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIg
PSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UERGUGFzdGVib2FyZFR5cGUo
KSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYg
KGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVBERlBh
c3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50
KCkgfHwgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImFwcGxpY2F0
aW9uL3BkZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUERGKSkpIHsK
LSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4
KE5TUGFzdGVib2FyZFR5cGVQREYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUERGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAh
PSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCksICJhcHBsaWNhdGlvbi9wZGYiX3MpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNTM1LDcgKzUzNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmICh0eXBlcy5j
b250YWlucyhTdHJpbmcoa1VUVHlwZVBORykpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBlUE5HLCBpdGVtSW5kZXgsIHN0
cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoa1VUVHlwZVBORywgaXRlbUluZGV4LCBzdHJh
dGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1f
Y2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpLCAiaW1hZ2UvcG5nIl9zKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAo
dHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVKUEVHKSkpIHsKLSAgICAgICAgaWYgKGF1dG8g
YnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGtVVFR5cGVKUEVHLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBi
dWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoa1VUVHlwZUpQRUcsIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAg
ICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRJbWFn
ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL2pwZWciX3MpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTUyLDIxICs1NTIsMjEgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lVUkxQYXN0ZWJvYXJkVHlw
ZSgpKSkpIHsKLSAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnVybChtX3Bhc3RlYm9hcmROYW1l
KTsKLSAgICAgICAgU3RyaW5nIHRpdGxlID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4
KFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnVybChtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpOworICAgICAgICBTdHJpbmcgdGl0bGUgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoV2ViVVJMTmFtZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgKCF1cmwuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRVUkwodXJsLCB0aXRs
ZSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlu
cyhTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIFN0cmlu
ZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSB8fCAoIXN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChzdHJp
bmcpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlVVRG
OFBsYWluVGV4dCkpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVneS5zdHJpbmdG
b3JUeXBlKGtVVFR5cGVVVEY4UGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAg
U3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoa1VUVHlwZVVURjhQbGFpblRl
eHQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQ
bGFpblRleHQoc3RyaW5nKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTc2LDcg
KzU3Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogYm9vbCBQYXN0ZWJv
YXJkOjpoYXNEYXRhKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAg
IHJldHVybiAhdHlwZXMuaXNFbXB0eSgpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgU3RyaW5nIGNvY29hVHlw
ZSA9IGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSh0eXBlKTsKICAgICBpZiAoY29jb2FU
eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUo
ZW1wdHlTdHJpbmcoKSwgY29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBtX2NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRT
dHJpbmdGb3JUeXBlKGVtcHR5U3RyaW5nKCksIGNvY29hVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFBsYXRmb3Jt
VmFsdWVzQXNTdHJpbmdzKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTYxOCw3ICs2MTgsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3Qg
U3RyaW5nJiBkb21UeXBlLCBpbgogICAgIGlmIChjb2NvYVR5cGUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgYXV0byB2YWx1ZXMgPSBzdHJhdGVneS5hbGxTdHJpbmdzRm9y
VHlwZShjb2NvYVR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIHZhbHVlcyA9IHN0cmF0
ZWd5LmFsbFN0cmluZ3NGb3JUeXBlKGNvY29hVHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiAgICAgaWYgKGNvY29hVHlwZSA9PSBTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKSkpIHsKICAgICAgICAgdmFsdWVzID0gdmFsdWVzLm1hcChbJl0gKGF1dG8mIHZhbHVlKSAt
PiBTdHJpbmcgewogICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZSBwcmVjb21wb3NlZFN0cmluZ1dp
dGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
YXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5nJiBkb21U
eXBlLCBpbgogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2ZXMgZm9yIHNlY3Vy
aXR5LiAgV2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAg
IC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdl
IGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKGNoYW5nZUNvdW50ICE9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQocGFz
dGVib2FyZE5hbWUpKQorICAgIGlmIChjaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIHZhbHVlczsKQEAgLTY4
Miw4ICs2ODIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgICAgICB0eXBlcy5hcHBlbmQoY29jb2FUeXBl
KTsKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
ZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgIG1fY2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0Zv
clR5cGUoY29jb2FEYXRhLCBjb2NvYVR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVz
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JU
eXBlKGNvY29hRGF0YSwgY29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02OTMsOCArNjkzLDggQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgZWxzZSB3ZSBrbm93
IG9mIGdvZXMgb24gdGhlIHBib2FyZCBhcyBhIHN0cmluZwogICAgICAgICBWZWN0b3I8U3RyaW5n
PiB0eXBlczsKICAgICAgICAgdHlwZXMuYXBwZW5kKGNvY29hVHlwZSk7Ci0gICAgICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YWRkVHlwZXModHlwZXMsIG1f
cGFzdGVib2FyZE5hbWUpOwotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvY29hRGF0YSwg
Y29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5hZGRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShjb2NvYURhdGEsIGNv
Y29hVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICB9CiB9CiAKQEAgLTcw
MywxNCArNzAzLDE0IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMo
KQogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHN0cmF0ZWd5Lmdl
dFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBzdHJhdGVneS5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSkpKQogICAgICAg
ICByZXR1cm4gbV9wcm9taXNlZEZpbGVQYXRoczsKIAogICAgIGlmICh0eXBlcy5jb250YWlucyhT
dHJpbmcobGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGZpbGVQYXRoczsKLSAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0aG5hbWVzRm9yVHlw
ZShmaWxlUGF0aHMsIGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2Fy
ZE5hbWUpOworICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKGZpbGVQYXRocywg
bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKICAgICAgICAgcmV0dXJuIGZpbGVQYXRoczsKICAgICB9CiAKQEAgLTc5Niw3ICs3OTYs
NyBAQCBzdGF0aWMgdm9pZCBzZXREcmFnSW1hZ2VJbXBsKE5TSW1hZ2UgKmltYWdlLCBOU1BvaW50
IG9mZnNldCkKIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSBpbWFnZSwg
Y29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogewogICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcg
dGhlIGRyYWcgaW1hZ2UgaWYgc29tZW9uZSBrZXB0IGEgcGFzdGVib2FyZCBhbmQgaXMgdHJ5aW5n
IHRvIHNldCB0aGUgaW1hZ2UgdG9vIGxhdGUuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bh
c3RlYm9hcmROYW1lKSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERhc2hib2FyZCB3YW50cyB0
byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcgZHJhZ2dpbmcsIGJ1dCBDb2Nv
YSBkb2VzIG5vdCBhbGxvdyB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCA0OTU3NThiMzI0Nzhh
ZDk0ZWUwZjU0ZjFhNmRhMjdkOWI4ZjVkMzU5Li5jMDc2ZDk0YjZlMjRiY2QyZDE5ZGI0NzU5Y2Qx
OWJiYWYzYmFmYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpkaWRNb2RpZnlDb250ZW50c09mUGFzdGVib2FyZChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgfQogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
Z2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQ
YXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9h
cmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMKICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLAordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNG
b3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgcGF0aG5hbWVzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRib3hFeHRl
bnNpb25zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBM
RVRJT04oIXBhc3RlYm9hcmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7
IH0pKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocGF0aG5hbWVzKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5z
aW9ucykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0tfQ09NUExFVElPTighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRT
dHJpbmdzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVU
SU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKHsgfSkpOwog
CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRTdHJpbmdzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICBjb21wbGV0
aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFN0cmluZ3NG
b3JUeXBlKHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1
ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tf
Q09NUExFVElPTighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcih7
IH0pKTsKIApAQCAtMjE4LDEyICsyMTgsMTIgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFu
ZGxlKSwgc2l6ZSB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKSk7
CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
Q29sb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0
ZWJvYXJkRGF0YShjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5jb2xvcigpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRV
UkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2Fu
QWNjZXNzUGFzdGVib2FyZERhdGEoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFN0cgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsKCkuc3RyaW5nKCkpOwogfQogCi12b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJvYXJkVHlwZXMo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVib2Fy
ZE5hbWUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CiAKQEAgLTI1Miw3ICsyNTIs
NyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUwogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0No
YW5nZUNvdW50KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRU
eXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNT
QUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29tcGxldGlv
bkhhbmRsZXIoMCkpOwogCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnNldFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFMKICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2Fy
ZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1l
LmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoMCkpOwogCkBAIC0yODQsNyArMjg0LDcgQEAg
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBQYXMKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBjb2xvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29s
b3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkTmFtZS5p
c0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKDApKTsKIApAQCAtMjk0LDcgKzI5NCw3IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291
bnQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTigh
cGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CiAgICAgTUVT
U0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCksIGNvbXBsZXRp
b25IYW5kbGVyKDApKTsKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LAogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5nZUNvdW50KTsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0ZWJvYXJk
VHlwZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5Ojpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rp
b24mIGNvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5jb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZygpKTsKIH0KIAotdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXJsU3RyaW5nU3VpdGFibGVG
b3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmREYXRhKGNvbm5lY3Rpb24sIHBh
c3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9
KTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXJsU3RyaW5n
U3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbgogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUodXJsU3RyaW5nKSwgV1RGTW92ZSh0aXRsZSkpOwogfQogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYg
aXBjSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmIGlwY0hhbmRsZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29t
cGxldGlvbkhhbmRsZXIoMCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVi
b2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CkBAIC0zNDQsNyArMzQ0
LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdD
aGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZp
bGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5
cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKDApOwpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXROdW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5udW1iZXJPZkZpbGVzKCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighb3JpZ2luLmlzTnVsbCgpLCBjb21w
bGV0aW9uSGFuZGxlcih7IH0pKTsKIApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3RpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS50eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShvcmlnaW4pKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVD
dXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgVmVjdG9yPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2
NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJ
T04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoMCkpOwogCkBA
IC0zNzIsNyArMzcyLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0
YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFZlY3QKICAgICBjb21wbGV0aW9u
SGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojph
bGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRl
bUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bh
c3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oY2hhbmdlQ291bnQpKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0ZWJvYXJkVHlw
ZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBjaGFuZ2VDb3VudCkp
OwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2Fy
ZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKDApOwpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9h
cmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9KSk7CiAKQEAgLTQwNiw3ICs0
MDYsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRleCwgcGFzdGVi
b2FyZFR5cGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1
cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYg
dXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFj
YW5BY2Nlc3NQYXN0ZWJvYXJkRGF0YShjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7CkBAIC00MTYsNyArNDE2LDcg
QEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemUKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHVybCksIFdURk1vdmUodGl0bGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5
KCksIGNvbXBsZXRpb25IYW5kbGVyKHsgfSkpOwogCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIHMKICAgICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2l6ZSB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9N
VG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBw
YXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVVJMVG9QYXN0
ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OndyaXRlVVJMVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogewogICAgIE1FU1NBR0VfQ0hFQ0soIXBhc3Rl
Ym9hcmROYW1lLmlzRW1wdHkoKSk7CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdAogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpE
aWRXcml0ZVRvUGFzdGVib2FyZEFzeW5jaHJvbm91c2x5KHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9
CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2Vi
Q29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5
KCkpOwogCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
V2ViQ29udGVudFRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkV3JpdGVUb1Bhc3RlYm9h
cmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSksIDApOwogfQogCi12b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Ondy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKICAgICBN
RVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5KCkpOwogCkBAIC00ODIsNyArNDgy
LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6RGlkV3JpdGVUb1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0
ZWJvYXJkTmFtZSksIDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJp
bmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9h
cmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyghcGFz
dGVib2FyZE5hbWUuaXNFbXB0eSgpKTsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkVHlw
ZS5pc0VtcHR5KCkgfHwgdGV4dC5pc0VtcHR5KCkpOwpAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkRpZFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVib2FyZE5hbWUp
LCAwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRleCBiYzdjYzBhNDhkMDk2MTE3NTY0
OTE3YTkwNWYzYjgxZjRkNDVlODk2Li4xNjkzZjgxZDM0MGE2NGM0YjE2MzM1MmE4NTRjN2U1NjM1
ZDA4NjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eS5jcHAKQEAgLTgwLDYyICs4MCw2MiBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlBhc3RlYm9hcmRQ
cm94eTo6d2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJUEM6OkNvbm5lY3RpbwogI2lmICFQ
TEFURk9STShDT0NPQSkKIAogI2lmICFQTEFURk9STShHVEspCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAotdm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcigw
KTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGludDY0X3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFs
bFBhc3RlYm9hcmRJdGVtSW5mbyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBpbnQ2
NF90LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJp
bmcmLCBpbnQ2NF90LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxv
cHQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVi
b2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKElQ
Qzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3Ry
aW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKICNpZiAh
VVNFKExJQldQRSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChJ
UEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKIH0KIAogI2VuZGlmIC8vICFVU0UoTElCV1BFKQogCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNv
bnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNVUkxTdHJpbmdT
dWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGlu
ZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRl
eCA0MzRkMTc2NGQwZTBlZmY4MTJiMTJhNzQyNjUzNDIyYWZlZDBiYjBmLi5mNWNkNTk1OGIyY2Y0
MzM2YzViZDAyZmI2ZGRjZTNjNjAzZTE3ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtMjgsMTAgKzI4LDEyIEBACiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTg1LDQyICs4Nyw0MiBAQCBwcml2YXRlOgogICAgIFdlYlByb2Nl
c3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKSBj
b25zdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCB3cml0ZVVSTFRvUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCB3cml0ZVdlYkNvbnRlbnRU
b1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdl
YkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICB2b2lkIHdyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCB3cml0
ZVN0cmluZ1RvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
LSAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIHZv
aWQgd3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPik7CisgICAgdm9pZCB3cml0ZVdlYkNvbnRlbnRUb1Bhc3Rl
Ym9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRl
bnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4pOworICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZv
aWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsKKyAgICB2b2lkIHVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmll
cnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPik7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldE51
bWJlck9mRmlsZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgZ2V0UGFz
dGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZv
aWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIHBhdGhuYW1lcywgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYp
OwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmKT4mJik7
Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDb2xvciYmKT4mJik7Ci0g
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwotICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFz
dGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFVSTChJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAg
dm9pZCBzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYm
KTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwot
ICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldE51bWJlck9mRmlsZXMoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRQ
YXRobmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIHBh
dGhuYW1lcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+JiYpOworICAgIHZvaWQg
Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRC
dWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRD
b2xvcihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6Q29sb3ImJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OworICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9h
cmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQ
YXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYm
KTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKICNlbmRp
ZgogCi0gICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwg
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Ci0g
ICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYpOwotICAgIHZvaWQg
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAg
IHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiYmKT4mJik7Ci0gICAgdm9pZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPj4mJik+JiYpOwotCi0gICAgdm9pZCB3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYpOwotICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZv
aWQgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvbnRhaW5zVVJMU3RyaW5nU3VpdGFi
bGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgdXJsU3RyaW5n
U3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0
aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVj
dGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOwor
ICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmKTsKKyAgICB2b2lkIGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+
JiYpPiYmKTsKKworICAgIHZvaWQgd3JpdGVDdXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAg
dm9pZCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4m
Jik7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBnZXRUeXBlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBhOTU2ZDVhNzYzZDEzNDRlOGU2MTBhZGI0MTM0YTY3NTE1
ZDhjYmJlLi5mMjNmODVjZDU1ODAyNmQwOTk4NGY2ODcxODgwMjFmYzhlNzhhNzIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMiw0MiArMjIsNDIgQEAKIAogbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFBy
b3h5IE5vdFJlZkNvdW50ZWQgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV3JpdGVV
UkxUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwgdXJsLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIFdhbnRzQ29ubmVjdGlvbgotICAgIFdyaXRlV2ViQ29udGVudFRvUGFz
dGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3Ry
aW5nIHBhc3RlYm9hcmROYW1lKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBXcml0ZUltYWdlVG9QYXN0
ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlLCBT
dHJpbmcgcGFzdGVib2FyZE5hbWUpIFdhbnRzQ29ubmVjdGlvbgotICAgIFdyaXRlU3RyaW5nVG9Q
YXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQsIFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgV2FudHNDb25uZWN0aW9uCi0gICAgVXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUp
CisgICAgV3JpdGVVUkxUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwg
dXJsLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRlV2ViQ29udGVudFRvUGFzdGVi
b2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3RyaW5n
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KSBXYW50c0Nvbm5lY3Rpb24KKyAgICBXcml0ZUltYWdlVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlLCBTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVj
dGlvbgorICAgIFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
U3RyaW5nIHRleHQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHNDb25uZWN0aW9uCisgICAgVXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAjZW5k
aWYKIAotICAgIFdyaXRlQ3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE+IGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGludDY0X3QgY2hhbmdlQ291
bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFR5cGVzU2FmZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIG9yaWdpbikgLT4gKFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBBbGxQYXN0
ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
KSAtPiAoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbElu
Zm8pIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mbykg
U3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCi0gICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2NF90
IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFJlYWRVUkxG
cm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAo
U3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIENvbnRh
aW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoU3RyaW5nIHR5cGUsIFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24K
KyAgICBXcml0ZUN1c3RvbURhdGEoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
PiBkYXRhLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KKyAgICBUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMgV2FudHND
b25uZWN0aW9uCisgICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCkgLT4gKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
PiBhbGxJbmZvKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBJbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+IChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm8pIFN5bmNocm9u
b3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkg
LT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAg
IFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9h
cmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkg
LT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9u
CisgICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
aGFuZGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb250YWluc1N0cmluZ1Nh
ZmVGb3JET01Ub1JlYWRGb3JUeXBlKFN0cmluZyB0eXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChib29sIHJlc3Vs
dCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCi0gICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJpbmcgcGFz
dGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1l
KSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgot
ICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5hbWVzLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFN0cmluZyBz
dHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRTdHJp
bmdzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkg
LT4gKFZlY3RvcjxTdHJpbmc+IHN0cmluZ3MpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgot
ICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBo
YW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRDaGFu
Z2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cwotICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUp
IC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0g
ICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJs
U3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBBZGRQYXN0ZWJvYXJkVHlw
ZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMp
IC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5n
PiBwYXN0ZWJvYXJkVHlwZXMpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGludDY0
X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldFBhc3Rl
Ym9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yIGNvbG9yKSAt
PiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcg
cGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJpbmcpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBDb250YWluc1VSTFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1
aW50NjRfdCBudW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBH
ZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNo
cm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBl
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5h
bWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNp
b25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyBzdHJpbmcp
IFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRTdHJpbmdzRm9y
VHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+IHN0
cmluZ3MpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRCdWZm
ZXJGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgor
ICAgIEdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNv
dW50KSBTeW5jaHJvbm91cworICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChXZWJD
b3JlOjpDb2xvciBjb2xvcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFz
dGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsU3RyaW5nKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KKyAgICBBZGRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmRO
YW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91
cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hhbmdlQ291
bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldFBhc3RlYm9hcmRDb2xvcihT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yIGNvbG9yLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUo
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJp
bmcsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90
IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJv
YXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb250YWluc1VSTFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCisgICAgVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmlu
ZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDI0ODAwZjZjNTkzNTRlYTVmNWFiNTg0ZDk2Yjgx
NmE3NGRlNmNjMDguLmEyYzhiYjFhNDcxNzhjYzBjMzQ3YWRjNDdiZDA2NDk4ZGI1N2MxYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQpAQCAtNzgsNiArNzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BERkRvY3VtZW50SW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CkBAIC0yNTkyLDEwICsyNTkzLDExIEBAIHZv
aWQgUERGUGx1Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKCkKIHZvaWQgUERGUGx1Z2lu
Ojp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJh
eSAqaXRlbXMsIE5TQXJyYXkgKnR5cGVzKQogewogICAgIGF1dG8gcGFzdGVib2FyZFR5cGVzID0g
bWFrZVZlY3RvcjxTdHJpbmc+KHR5cGVzKTsKKyAgICBhdXRvIHBhZ2VJZGVudGlmaWVyID0gbV9m
cmFtZSAmJiBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdl
SUQoKSA6IFdURjo6bnVsbG9wdDsKIAogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQ7CiAgICAg
YXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIHdlYlByb2Nl
c3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJk
VHlwZXMpLAorICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzKHBhc3Rl
Ym9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMsIHBhZ2VJZGVudGlmaWVyKSwKICAgICAgICAgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseShuZXdD
aGFuZ2VDb3VudCksIDApOwogCiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwLCBjb3VudCA9IGl0
ZW1zLmNvdW50OyBpIDwgY291bnQ7ICsraSkgewpAQCAtMjYwOSwxNSArMjYxMSwxNSBAQCB2b2lk
IFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5h
bWUsIE5TQXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYg
KFt0eXBlIGlzRXF1YWxUb1N0cmluZzpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSB8fCBb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10pIHsKLSAgICAgICAg
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGxhaW5UZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10pOwotICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3RyaW5nLmdldCgpKSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJl
cGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CisgICAgICAgICAgICBhdXRvIHBsYWluVGV4dFN0cmlu
ZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHR5cGUsIHBsYWluVGV4
dFN0cmluZy5nZXQoKSwgcGFnZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAw
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5k
bGU7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5LT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgICAgICBzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgICAgICAgICAgd2Vi
UHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFt
ZSwgdHlwZSwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZl
ci0+c2l6ZSgpIH0pLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJk
QnVmZmVyRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKKyAgICAgICAgICAgIHdl
YlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUocGFzdGVib2FyZE5h
bWUsIHR5cGUsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZm
ZXItPnNpemUoKSB9LCBwYWdlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDAp
OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApp
bmRleCAzNjZmYjgxMTQ1NzBlOTRlOGVmOTE0ZjNjMjEwNjk4MzM0N2E2NWU0Li40OTU0MDQzYmMw
ODExN2Y1ZTcyNzAyMDJiY2ExMGM5OGUyZjNhYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNz
VHJhY2tlci5oPgpAQCAtMTA5LDEwICsxMTAsMTggQEAgQmxvYlJlZ2lzdHJ5KiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiAgICAgcmV0dXJuIG5ldyBCbG9iUmVn
aXN0cnlQcm94eTsKIH0KIAorc3RhdGljIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSWRl
bnRpZmllcihjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAoIWlz
PFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oY29udGV4dCkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8UGFnZVBhc3RlYm9hcmRDb250ZXh0PigqY29u
dGV4dCkucGFnZUlEKCk7Cit9CisKICNpZiBQTEFURk9STShDT0NPQSkKIC8vIFBhc3RlYm9hcmRT
dHJhdGVneQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICAvLyBUaGUgcHVycG9zZSBv
ZiB0aGUgb3ZlcnJpZGVzIGlzIHRvIGF2b2lkIG1lc3NhZ2luZyBiYWNrIHRvIHRoZSBVSSBwcm9j
ZXNzLgpAQCAtMTIxLDEwICsxMzAsMTAgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBp
ZiAoIXR5cGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lKSwg
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0
eXBlcyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3Rl
Ym9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVz
KSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAg
ICAgVmVjdG9yPGNoYXI+IG92ZXJyaWRlQnVmZmVyOwpAQCAtMTMzLDczICsxNDIsNzMgQEAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUg
VUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6R2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9h
cmRUeXBlKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGU6OlJlcGx5KGlwY0hhbmRsZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBw
YXN0ZWJvYXJkVHlwZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZTo6UmVwbHkoaXBjSGFuZGxl
KSwgMCk7CiAgICAgaWYgKGlwY0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFu
ZGxlLmRhdGFTaXplKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXk7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0Zv
clR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShwYXN0ZWJv
YXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwKICAgICAg
ICAgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0Zv
clR5cGU6OlJlcGx5KHBhdGhuYW1lcywgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSksIDAp
OwogICAgIEFTU0VSVChwYXRobmFtZXMuc2l6ZSgpID09IHNhbmRib3hFeHRlbnNpb25zSGFuZGxl
QXJyYXkuc2l6ZSgpKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHko
c2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Okdl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBl
OjpSZXBseSh2YWx1ZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlw
ZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkodmFsdWUpLCAwKTsKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK1ZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgVmVjdG9yPFN0cmluZz4gdmFsdWVzOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZFR5cGUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJk
U3RyaW5nc0ZvclR5cGU6OlJlcGx5KHZhbHVlcyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlOjpSZXBseSh2YWx1
ZXMpLCAwKTsKICAgICByZXR1cm4gdmFsdWVzOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0
X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2
NF90IGNoYW5nZUNvdW50IHsgMCB9OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndhaXRG
b3JQZW5kaW5nUGFzdGVib2FyZFdyaXRlc1RvRmluaXNoKHBhc3RlYm9hcmROYW1lKTsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQo
cGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJv
YXJkQ2hhbmdlQ291bnQ6OlJlcGx5KGNoYW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENoYW5nZUNvdW50KHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudDo6UmVwbHkoY2hhbmdlQ291bnQpLCAwKTsKICAg
ICByZXR1cm4gY2hhbmdlQ291bnQ7CiB9CiAKLUNvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK0NvbG9yIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQ29sb3IgY29sb3I7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENvbG9yKHBhc3RlYm9hcmROYW1l
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENvbG9yOjpSZXBs
eShjb2xvciksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRDb2xvcihwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KGNv
bG9yKSwgMCk7CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1VSTCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRVUkwocGFzdGVib2FyZE5h
bWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVVJMOjpSZXBs
eSh1cmxTdHJpbmcpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpH
ZXRQYXN0ZWJvYXJkVVJMKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRVUkw6OlJlcGx5KHVy
bFN0cmluZyksIDApOwogICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCi1pbnQ2
NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3Qg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9
OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFkZFBhc3RlYm9hcmRUeXBl
cyhwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGVzKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFkZFBhc3RlYm9hcmRUeXBlcyhw
YXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGVzLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFkZFBhc3RlYm9hcmRUeXBlczo6UmVwbHko
bmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWlu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAw
IH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5
cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVz
KHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzOjpSZXBs
eShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAot
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVy
Rm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChi
dWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKQEAgLTIxMiw4MSArMjIxLDgxIEBAIGludDY0X3Qg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBTdHJpCiAgICAgICAgIH0KICAgICB9CiAgICAgaW50NjRfdCBuZXdDaGFuZ2VD
b3VudCB7IDAgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0
ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDAgfSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRC
dWZmZXJGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBhc3RlYm9h
cmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3Zl
KGhhbmRsZSksIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCB9LCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZm
ZXJGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFu
Z2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFVSTChjb25z
dCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFVSTChjb25zdCBQYXN0ZWJv
YXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNv
dW50OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRV
UkwocGFzdGVib2FyZFVSTCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpTZXRQYXN0ZWJvYXJkVVJMOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRVUkwocGFzdGVi
b2FyZFVSTCwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFVSTDo6UmVwbHkobmV3Q2hhbmdl
Q291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpbnQ2NF90IG5ld0NoYW5n
ZUNvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBh
c3RlYm9hcmRDb2xvcihwYXN0ZWJvYXJkTmFtZSwgY29sb3IpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZENvbG9y
KHBhc3RlYm9hcmROYW1lLCBjb2xvciwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KG5ld0NoYW5n
ZUNvdW50KSwgMCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmlu
ZywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkVHlwZSwgc3RyaW5nKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBzdHJpbmcsIHBhZ2VJZGVu
dGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgcmV0dXJu
IG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXROdW1i
ZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIHVpbnQ2NF90IG51bWJl
ck9mRmlsZXMgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
TnVtYmVyT2ZGaWxlcyhwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldE51bWJlck9mRmlsZXM6OlJlcGx5KG51bWJlck9mRmlsZXMpLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXROdW1iZXJPZkZpbGVzKHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldE51bWJlck9mRmlsZXM6OlJlcGx5KG51bWJlck9mRmlsZXMpLCAwKTsKICAgICByZXR1
cm4gbnVtYmVyT2ZGaWxlczsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRh
aW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJs
ZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgYm9vbCByZXN1bHQ7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmco
cGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpDb250YWluc1VS
TFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZzo6UmVwbHkocmVzdWx0KSwgMCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxv
YWRpbmcocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmc6
OlJlcGx5KHJlc3VsdCksIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQorU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQogewogICAgIFN0cmluZyB1cmw7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nOjpSZXBseSh1
cmwsIHRpdGxlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VVJM
U3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlVSTFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZzo6UmVwbHkodXJsLCB0aXRsZSksIDApOwogICAgIHJldHVybiB1cmw7CiB9CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVi
b2FyZE5hbWUpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVVUkxUb1Bh
c3RlYm9hcmQodXJsLCBwYXN0ZWJvYXJkTmFtZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6V3JpdGVVUkxUb1Bhc3RlYm9hcmQodXJsLCBwYXN0ZWJvYXJkTmFtZSwgcGFn
ZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRX
ZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53aWxsV3JpdGVUb1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSk7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9h
cmQoY29udGVudCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OldyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb250ZW50LCBwYXN0ZWJvYXJk
TmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJ
bWFnZSYgaW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ls
bFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVib2FyZE5hbWUpOwotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVJbWFnZVRvUGFzdGVib2FyZChpbWFnZSwg
cGFzdGVib2FyZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Oldy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoaW1hZ2UsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmll
cihjb250ZXh0KSksIDApOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVU
b1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVib2FyZE5hbWUpOwotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQocGFz
dGVib2FyZFR5cGUsIHRleHQsIHBhc3RlYm9hcmROYW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSwg
dGV4dCwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgMCk7CiB9CiAK
LXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGlkZW50aWZpZXJzLCBwYXN0ZWJvYXJkTmFtZSksIDApOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6VXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50
aWZpZXJzLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCkBAIC0zNTYsNTIgKzM2NSw1MiBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29ucwogCiAjZW5kaWYgLy8gVVNFKExJQldQRSkKIAotVmVjdG9y
PFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikK
K1ZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFZlY3RvcjxT
dHJpbmc+IHR5cGVzOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlR5cGVz
U2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKHBhc3RlYm9hcmROYW1lLCBvcmlnaW4pLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZTo6UmVw
bHkodHlwZXMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpUeXBl
c1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShwYXN0ZWJvYXJkTmFtZSwgb3JpZ2luLCBwYWdlSWRl
bnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlOjpSZXBseSh0eXBlcyksIDApOwogICAgIHJldHVybiB0eXBl
czsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShj
b25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9t
RGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OldyaXRlQ3VzdG9tRGF0YShkYXRhLCBwYXN0ZWJvYXJkTmFtZSksIE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlQ3VzdG9tRGF0YTo6UmVwbHkobmV3Q2hh
bmdlQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0
ZUN1c3RvbURhdGEoZGF0YSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVDdXN0b21EYXRhOjpSZXBseShu
ZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotYm9v
bCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZv
clR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
Ym9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVh
ZEZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpDb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JU
eXBlOjpSZXBseShyZXN1bHQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpDb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKHR5cGUsIHBhc3RlYm9h
cmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGU6OlJlcGx5KHJlc3Vs
dCksIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICB1aW50NjRfdCBpdGVtc0NvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVtc0NvdW50KHBhc3RlYm9hcmROYW1l
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZEl0ZW1zQ291bnQ6
OlJlcGx5KGl0ZW1zQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZp
ZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudDo6UmVwbHkoaXRlbXNDb3VudCksIDApOwogICAgIHJldHVybiBpdGVtc0NvdW50
OwogfQogCi1PcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkKK09wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2Fy
ZEl0ZW1JbmZvPj4gYWxsSW5mbzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVib2FyZE5hbWUsIGNoYW5nZUNvdW50KSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvOjpSZXBseShh
bGxJbmZvKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFz
dGVib2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1lLCBjaGFuZ2VDb3VudCwgcGFnZUlkZW50aWZp
ZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJk
SXRlbUluZm86OlJlcGx5KGFsbEluZm8pLCAwKTsKICAgICByZXR1cm4gYWxsSW5mbzsKIH0KIAot
T3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KQorT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZv
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBPcHRpb25hbDxQYXN0
ZWJvYXJkSXRlbUluZm8+IGluZm87Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUsIGNoYW5n
ZUNvdW50KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleDo6UmVwbHkoaW5mbyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lLCBj
aGFuZ2VDb3VudCwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwgMCk7CiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFu
ZGxlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShp
cGNIYW5kbGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFt
ZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwogICAgIGlm
IChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtNDA5LDE3ICs0MTgsMTcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2kKICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKLVVSTCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVi
b2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQ6OlJlcGx5KHVybFN0cmluZywgdGl0bGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwog
ICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU3Ry
aW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwg
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkOjpS
ZXBseSh2YWx1ZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCAwKTsKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBhNDgzNzA5
Nzg5ZTU2OGI3ODhmMmM1ODMzYzBmZjU5Mzc4MTA3YzljLi5iMzhhMGIxZDBlNWY5ZjgxYjUxZWY5
NjIzOTdmNzQ4ZmM4NGM4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00
NywzMiArNDcsMzIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJh
dGVneQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
V2ViQ29yZTo6IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKLSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAg
IHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250
ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0
IFdlYkNvcmU6OiBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdy
aXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlm
aWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJp
bmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IGNoYW5nZUNvdW50KGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCB1cmwoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50IGdldE51bWJlck9m
RmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0
X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpDb2xvciBjb2xv
cihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKIAotICAg
IGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRVUkwo
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNl
dFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBh
ZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldFN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKIAotICAgIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxv
YWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5n
IHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICBib29sIGNvbnRhaW5zVVJMU3RyaW5nU3Vp
dGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHVybFN0cmluZ1N1
aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpAQCAtODgsMTUgKzg4LDE1IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgU3RyaW5nIHJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlk
ZTsKLSAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
KSBvdmVycmlkZTsKLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikg
b3ZlcnJpZGU7Ci0gICAgaW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IGJvb2wgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgcmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgd3JpdGVDdXN0b21E
YXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IGJvb2wgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDM2Y2QxY2FlMDBlOWM2ZWNkM2RhNzFkOThlMzAzMGIx
MTE3MTFiMzkuLjM3OGQ0ZDYyNTUzYWMyMzAzOGVlNjk4ZDQwOTA2NDg3YmMzNTVmMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00OCwzOSArNDgsMzkgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5k
aWYKLSAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQpIG92ZXJyaWRlOwotICAgIGludCBnZXROdW1iZXJPZkZp
bGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3Ry
aW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICBpbnQ2NF90IGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBj
aGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogCi0gICAgaW50
NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0
b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBvdmVycmlkZTsKKyAgICBpbnQ2
NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKIAotICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50
NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZl
ckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50NjRf
dCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBp
bnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGJvb2wgY29udGFp
bnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICBp
bnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0Q29s
b3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qg
c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9N
VG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGJvb2wg
Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZWJi
YjNiZWE2ZWRiYjQ3YmNiNGUyZDBiMjk3ZmNkMDVlYmE2MzI5NS4uMTkzZjIwZDRlMDUyMTA0Zjk1
ODMzNWY2MTczNTVmYjgzMTk3OGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpA
QCAtMTEyLDE1OSArMTEyLDE1OSBAQCBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKICAgICByZXR1cm4gbmV3IFdlYkJsb2JSZWdpc3RyeTsK
IH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQog
Ci12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
Z2V0UGF0aG5hbWVzRm9yVHlwZShwYXRobmFtZXMsIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotVmVj
dG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
VmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsU3RyaW5nc0ZvclR5cGUocGFzdGVib2FyZFR5cGUpOwog
fQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNoYW5nZUNvdW50KCk7CiB9CiAK
LUNvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK0NvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbG9yKCk7ICAgIAogfQogCi1V
UkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsKCk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikK
IHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hZGRUeXBl
cyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5
cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLWlu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYg
cGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2Fy
ZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNl
dFVSTChwYXN0ZWJvYXJkVVJMKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5z
ZXRDb2xvcihjb2xvcik7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5zZXRTdHJpbmdGb3JUeXBlKHN0cmluZywgcGFzdGVib2FyZFR5cGUp
OwogfQogCi1pbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRO
dW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5udW1iZXJPZkZpbGVzKCk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitWZWN0b3I8U3RyaW5nPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkudHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUob3JpZ2luKTsKIH0KIAotaW50NjRfdCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoZGF0YSk7CiB9CiAK
LWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1Jl
YWRGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgdHlw
ZSkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1N0cmluZ1NhZmVGb3JET01U
b1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZv
clR5cGUodHlwZSk7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkK
K09wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIGNoYW5nZUNvdW50KTsKIH0KIAotT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQpCitPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjaGFuZ2VDb3VudCk7CiB9CiAK
LWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIo
aW5kZXgsIHR5cGUpOwogfQogCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRpdGxlKTsKIH0KIAot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRleCwgdHlwZSk7CiB9
CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorYm9vbCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBy
ZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb250YWluc1VSTFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZygpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKHRp
dGxlKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwogfQogCi12b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOwogfQogCi12b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZElt
YWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
SW1hZ2UmIGltYWdlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53
cml0ZShpbWFnZSk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53
cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420856</attachid>
            <date>2021-02-18 11:21:11 -0800</date>
            <delta_ts>2021-02-18 12:46:39 -0800</delta_ts>
            <desc>Try to fix WPE build</desc>
            <filename>bug-222071-20210218112111.patch</filename>
            <type>text/plain</type>
            <size>194919</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQwYThiZWRjMTlmYjkw
N2M1YTcxYzM2YjU2NzEyNDYxZTg5YjU2MS4uN2Q2ZWEzNTQ2NzE2ODk5MGZiNmQzZjM2Mzc3Yzhl
NjYwM2YwMTliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBsdW1iIGFuIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFdlYlBhc3RlYm9hcmRQcm94eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMg
YFBhc3RlYm9hcmRTdHJhdGVneWAgbWV0aG9kcyB0byBhZGRpdGlvbmFsbHkgdGFrZSBhIGBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCpgOyBhZGRpdGlvbmFsbHkKKyAgICAgICAgdXBkYXRlIGNhbGwg
c2l0ZXMgb2YgYFBhc3RlYm9hcmRTdHJhdGVneWAgbWV0aG9kcyB0byBwYXNzIGluIGEgY29udGV4
dCAoZS5nLiBgUGFzdGVib2FyZDo6Y29udGV4dCgpYCwgaW4gdGhlCisgICAgICAgIHZhc3QgbWFq
b3JpdHkgb2YgY2FzZXMgYmVsb3cpLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2Vs
ZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnNGb3JEcmFnSGFuZGxpbmdNZXRob2QgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJ
dGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFVSTCk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTFR5cGVJZGVudGlmaWVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpudW1iZXJPZkZpbGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZpbGVuYW1lcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0RhdGE6OmNvbnRhaW5zUHJvbWlzZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6Y29udGFpbnNVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFz
VVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3Jp
dGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJ
RmlkZWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpoYXNEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkRmlsZVBhdGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExp
YldQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6UGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTEZvclR5cGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJv
YXJkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNo
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
Omhhc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFBsYXRmb3JtVmFs
dWVzQXNTdHJpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKwogMjAyMS0wMi0xNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVtYiBhbiBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gdGhyb3VnaCBQYXN0ZWJvYXJkLXJlbGF0ZWQgY29kZXBh
dGhzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDc0MzBkYzdlYzA1MGQwZDdlMDNlMTcxMjE0ZTYwNjZlZWIwOWM2OTgu
LmJiZTg2MDVhNDcyZDY5NjJkMDMyMjA5ZmY2OWIyN2JiMzI2OGQ2NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTkgQEAKKzIwMjEtMDItMTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHRocm91
Z2ggV2ViUGFzdGVib2FyZFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjIwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KmAgYXJndW1lbnRzIHRv
IHRoZSBgUGFzdGVib2FyZFN0cmF0ZWd5YCBtZXRob2RzIG9uIGBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXNgLCBjb252ZXJ0CisgICAgICAgIHRoZW0gdG8gYFBhZ2VJZGVudGlmaWVyYHMsIGFuZCBzZW5k
IHRoZW0gb3ZlciB0byB0aGUgVUkgcHJvY2VzcyB2aWEgYFdlYlBhc3RlYm9hcmRQcm94eWAgbWV0
aG9kcy4KKworICAgICAgICBXaGlsZSBjdXJyZW50bHkgdW51c2VkIGluc2lkZSBgV2ViUGFzdGVi
b2FyZFByb3h5YCwgdGhlIG5leHQgcGF0Y2ggd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGVzZSBwYWdl
IGlkZW50aWZpZXJzIHRvCisgICAgICAgIHJldHJpZXZlIGEgZGF0YSBvd25lciB0eXBlIGZyb20g
dGhlIGNvcnJlc3BvbmRpbmcgYFdlYlBhZ2VQcm94eWAsIGFuZCB0aGVuIGZvcndhcmQgdGhpcyBk
YXRhIG93bmVyIHR5cGUgdG8gdGhlCisgICAgICAgIGBQbGF0Zm9ybVBhc3RlYm9hcmRgLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1l
c0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5
OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFVSTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVHlwZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRDb2xvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5z
VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZpbGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1Jl
YWRGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVVS
TFRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQ
cm94eUxpYldQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsU3RyaW5nc0ZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldE51bWJlck9mRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0
ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVh
ZEZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHRocm91Z2ggUGFzdGVib2FyZC1yZWxhdGVkIGNvZGVwYXRocwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDdkOWUzYTAyOTRlY2VhNzZjZmNmODRhZTQ3NGE5ODJhMTQ0ZDNjZGYu
Ljg4Njg1NGEwMzAzNGRmNWZhODFjZDEzZjEwY2RkMWNjMTMyNmRjZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVtYiBhbiBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gdGhyb3VnaCBXZWJQYXN0ZWJvYXJkUHJveHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjA3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqYCBhcmd1bWVudHMgdG8gdGhlIGBQYXN0ZWJvYXJkU3RyYXRlZ3lgIG1ldGhvZHMgb24g
YFdlYlBsYXRmb3JtU3RyYXRlZ2llc2AuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVz
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZSk6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbG9yKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMpOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRUeXBlcyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRV
UkwpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcik6CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUpOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5m
byk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNVUkxT
dHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisKIDIwMjEtMDItMTcgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUGx1bWIgYW4gT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHRocm91Z2ggUGFzdGVib2FyZC1yZWxhdGVkIGNvZGVwYXRo
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggMzFm
MDFmNzk2MmJmYTg0N2Y2NDJmOWY2NzkwOTk0MjAwYzAwZTJlMy4uYTg1YjdhYTc1MjZiMmY3YzUx
YTNmNWM0NjdiZWIzNTBlOTkxNGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1wb3J0ICJIVE1MU3BhbkVsZW1l
bnQuaCIKICNpbXBvcnQgIkxlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmgiCiAjaW1wb3J0ICJMZWdh
Y3lXZWJBcmNoaXZlLmgiCisjaW1wb3J0ICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbXBv
cnQgIlBhc3RlYm9hcmQuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2ltcG9y
dCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC0yNDcsOSArMjQ4LDEwIEBAIHZvaWQgRWRpdG9y
Ojp0YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBW
ZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKGxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCkpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBQYWdlUGFzdGVib2FyZENv
bnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKTsKICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIE5TRmluZFBib2FyZCk7Ci0gICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKFdURk1v
dmUoc3RyaW5nRnJvbVNlbGVjdGlvbiksIGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIE5T
RmluZFBib2FyZCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5zZXRUeXBlcyh0eXBlcywgTlNGaW5kUGJvYXJkLCBjb250ZXh0LmdldCgpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5
cGUoV1RGTW92ZShzdHJpbmdGcm9tU2VsZWN0aW9uKSwgbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKSwgTlNGaW5kUGJvYXJkLCBjb250ZXh0LmdldCgpKTsKICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICNlbHNlCiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNs
aWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJv
bGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1t
CmluZGV4IDMwM2FlNWIzYjJmMDYxZmVkYzVjNjU0ZDNiOTc0M2Y1YzI3ZGRmZTcuLmM0MGUzMDFh
YmU4MWYwMWNjMjQ3MTc4Mjk1NTMzZTgzNjM4OTY4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC0xNDUsNyArMTQ1LDggQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgYnJlYWs7CiAgICAgfQogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9y
dGVkVHlwZXMsIGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOworICAgIGF1dG8gY29udGV4dCA9
IGRyYWdEYXRhLmNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoc3VwcG9ydGVkVHlwZXMsIGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGNvbnRleHQuZ2V0
KCkpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggOWYxNmQ4ODYxZDFlYTE1ZjUxMzkzNDM1YTNlNGU1
YmMwYTdkYmYyMy4uN2MxMGFlYzNjZjU2M2EwN2NjZGYxNWRmZDM1YjJkZDdiYTFlMDM2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgT3B0
aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9h
cmRJdGVtSW5mbygpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8q
IHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQot
ICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCksIG1f
Y2hhbmdlQ291bnQpOworICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhuYW1lKCksIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiAjZW5kaWYKICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogfQpAQCAtNzUsNyArNzUsNyBAQCBPcHRpb25hbDxQYXN0ZWJvYXJk
SXRlbUluZm8+IFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNv
bnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4g
c3RyYXRlZ3ktPmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG5hbWUoKSwgbV9jaGFu
Z2VDb3VudCk7CisgICAgICAgIHJldHVybiBzdHJhdGVneS0+aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChpbmRleCwgbmFtZSgpLCBtX2NoYW5nZUNvdW50LCBjb250ZXh0KCkpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oaW5kZXgpOwogI2VuZGlmCkBAIC04NSwyMSArODUsMjEgQEAgT3B0aW9u
YWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjpwYXN0ZWJvYXJkSXRlbUluZm8oc2l6
ZV90IGluZGV4KSBjb25zdAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4g
c3RyYXRlZ3ktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpKTsK
KyAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgs
IHR5cGUsIG5hbWUoKSwgY29udGV4dCgpKTsKICAgICByZXR1cm4geyB9OwogfQogCiBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKLSAgICAgICAgcmV0dXJuIHN0
cmF0ZWd5LT5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSk7Cisg
ICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0
eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFVSTCBQ
YXN0ZWJvYXJkOjpyZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBp
ZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCkpCi0gICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGlu
ZGV4LCBuYW1lKCksIHRpdGxlKTsKKyAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkVVJMRnJv
bVBhc3RlYm9hcmQoaW5kZXgsIG5hbWUoKSwgdGl0bGUsIGNvbnRleHQoKSk7CiAgICAgcmV0dXJu
IHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aAppbmRleCBhMjcxYzBlODU0YzNkODQ3NzU5NjBjMzM2MjkwM2RmZjlmOTIxZWUyLi4yY2M5YjAw
NGZhNzMzZjIzNjQzNDY4NjIyZmFiY2E1MTM3MjFiYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xh
c3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hh
cmVkQnVmZmVyOwpAQCAtNDIsNDMgKzQzLDQzIEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dDsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneSB7CiBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVi
b2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNv
bnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9p
ZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxT
dHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgVVJMIHVybChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRo
bmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Cisg
ICAgdmlydHVhbCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFVSTCB1cmwoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAg
dmlydHVhbCBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgaW50NjRfdCBh
ZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0
ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1
YWwgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0
dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBh
c3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29s
b3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgYm9v
bCBjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JM
b2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwogI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAg
IHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFsIE9w
dGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQpID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+
PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCkgPSAwOwotICAgIHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFN0
cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxWZWN0b3I8UGFzdGVi
b2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogCi0gICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwotICAg
IHZpcnR1YWwgaW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRD
dXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0
b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5z
U3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAKICNpZiBQ
TEFURk9STShHVEspCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvRHJhZ0RhdGFDb2NvYS5tbQppbmRleCBlNDMzZWRiMzhlOGM1OGEwMDY1NGRiNWE1OWUxYmNk
NDA5N2EzZDA5Li5iNTJmN2I4MWNmZWQyZjNjYzQwNWZmMmRjZDkxZWNiMTZjYjQ4NmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTE2
Miw3ICsxNjIsOCBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFn
ZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbgogYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNVUkxUeXBlSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlw
ZXM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRU
eXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRl
UGFzdGVib2FyZENvbnRleHQoKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0Lmdl
dCgpKTsKICAgICByZXR1cm4gdHlwZXMuY29udGFpbnModXJsUGFzdGVib2FyZFR5cGUoKSk7CiB9
CiAgICAgCkBAIC0xNzQsNyArMTc1LDggQEAgYm9vbCBEcmFnRGF0YTo6Y2FuU21hcnRSZXBsYWNl
KCkgY29uc3QKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29sb3IoKSBjb25zdAogewogICAgIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIGF1dG8g
Y29udGV4dCA9IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKGNvbG9yUGFz
dGVib2FyZFR5cGUoKSk7CiB9CiAKQEAgLTE4NSwxOSArMTg3LDIxIEBAIGJvb2wgRHJhZ0RhdGE6
OmNvbnRhaW5zRmlsZXMoKSBjb25zdAogCiB1bnNpZ25lZCBEcmFnRGF0YTo6bnVtYmVyT2ZGaWxl
cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+Z2V0TnVtYmVyT2ZGaWxlcyhtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRv
IGNvbnRleHQgPSBjcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpOworICAgIHJldHVybiBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldE51bWJlck9mRmlsZXMobV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IERyYWdE
YXRhOjphc0ZpbGVuYW1lcygpIGNvbnN0CiB7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFz
dGVib2FyZENvbnRleHQoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5n
ZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lG
aWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmaWxlTmFtZXMo
KTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdHM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRQYXRobmFtZXNGb3JUeXBlKHJlc3VsdHMsIFN0
cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRQYXRo
bmFtZXNGb3JUeXBlKHJlc3VsdHMsIFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlw
ZSgpKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIHJlc3Vs
dHM7CiAjZWxzZQogICAgIHJldHVybiBmaWxlTmFtZXMoKTsKQEAgLTIwNiw4ICsyMTAsOSBAQCBW
ZWN0b3I8U3RyaW5nPiBEcmFnRGF0YTo6YXNGaWxlbmFtZXMoKSBjb25zdAogCiBib29sIERyYWdE
YXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiB7CisgICAgYXV0byBjb250ZXh0ID0gY3Jl
YXRlUGFzdGVib2FyZENvbnRleHQoKTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVz
LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0Lmdl
dCgpKTsKIAogICAgIHJldHVybiB0eXBlcy5jb250YWlucyhzdHJpbmdQYXN0ZWJvYXJkVHlwZSgp
KQogICAgICAgICB8fCB0eXBlcy5jb250YWlucyhydGZkUGFzdGVib2FyZFR5cGUoKSkKQEAgLTIx
NSw3ICsyMjAsNyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgICAgICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5
RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpCiAjZW5kaWYKLSAgICAgICAgfHwgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb250YWluc1N0cmluZ1NhZmVGb3JE
T01Ub1JlYWRGb3JUeXBlKHVybFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOwor
ICAgICAgICB8fCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNv
bnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUodXJsUGFzdGVib2FyZFR5cGUoKSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiB9CiAKIFN0cmluZyBEcmFnRGF0YTo6
YXNQbGFpblRleHQoKSBjb25zdApAQCAtMjM2LDcgKzI0MSw4IEBAIFN0cmluZyBEcmFnRGF0YTo6
YXNQbGFpblRleHQoKSBjb25zdAogCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
Y29sb3IobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVi
b2FyZENvbnRleHQoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5jb2xvcihtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKIH0K
IAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBv
c2UgcHVycG9zZSkgY29uc3QKQEAgLTI1MCw4ICsyNTYsOSBAQCBib29sIERyYWdEYXRhOjpjb250
YWluc0NvbXBhdGlibGVDb250ZW50KERyYWdnaW5nUHVycG9zZSBwdXJwb3NlKSBjb25zdAogICAg
IGlmIChwdXJwb3NlID09IERyYWdnaW5nUHVycG9zZTo6Rm9yRWRpdGluZyAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgp
ICYmIGNvbnRhaW5zRmlsZXMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBhdXRvIGNv
bnRleHQgPSBjcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHR5
cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0
VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQuZ2V0KCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICByZXR1cm4gdHlwZXMuY29udGFpbnMoU3RyaW5nKFdlYkFyY2hpdmVQYm9hcmRUeXBlKSkKICAg
ICAgICAgfHwgdHlwZXMuY29udGFpbnMoaHRtbFBhc3RlYm9hcmRUeXBlKCkpCkBAIC0yNzUsMjMg
KzI4MiwyNSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNQcm9taXNlKCkgY29uc3QKIHsKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVh
dGVQYXN0ZWJvYXJkQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBsZWdhY3lGaWxlc1Byb21pc2VQ
YXN0ZWJvYXJkVHlwZSgpIGNvbnRhaW5zIFVUSXMsIG5vdCBwYXRoIG5hbWVzLiBBbHNvLCB3aHkg
ZG8gd2UKICAgICAvLyB0aGluayBwcm9taXNlcyBzaG91bGQgb25seSBjb250YWluIG9uZSBmaWxl
IChvciBVVEkpPwogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzOwogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFBhdGhu
YW1lc0ZvclR5cGUoZmlsZXMsIFN0cmluZyhsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlw
ZSgpKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRQYXRobmFtZXNGb3JUeXBlKGZpbGVzLCBTdHJpbmcobGVnYWN5
RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQu
Z2V0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGZpbGVzLnNpemUoKSA9PSAxOwogfQogCiBib29s
IERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kpIGNvbnN0CiB7
Ci0gICAgaWYgKHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29u
dGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSkpCisgICAg
YXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKTsKKyAgICBpZiAocGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb250YWluc1VSTFN0cmluZ1N1
aXRhYmxlRm9yTG9hZGluZyhtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5n
ZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lG
aWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpKSkgJiYgZmlsZU5hbWVzKCkuc2l6ZSgpID09IDEp
CiAgICAgICAgIHJldHVybiAhIVtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZU5hbWVzKCkuZmly
c3QoKV07CiAjZW5kaWYKQEAgLTMwMSwxMCArMzEwLDExIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSkgY29uc3QKIAogU3RyaW5nIERyYWdEYXRh
Ojphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7
CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKTsKICAgICAvLyBG
SVhNRTogVXNlIGZpbGVuYW1lUG9saWN5LgogCiAgICAgU3RyaW5nIHVybFRpdGxlOwotICAgIGF1
dG8gdXJsU3RyaW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT51cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSwgdXJsVGl0bGUp
OworICAgIGF1dG8gdXJsU3RyaW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT51cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJkTmFtZSwg
dXJsVGl0bGUsIGNvbnRleHQuZ2V0KCkpOwogICAgIGlmICh0aXRsZSkKICAgICAgICAgKnRpdGxl
ID0gdXJsVGl0bGU7CiAKQEAgLTMxMyw3ICszMjMsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJM
KEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIAogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKICAgICBp
ZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBl
KCkpKSAmJiBmaWxlTmFtZXMoKS5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIFtVUkxCeUNh
bm9uaWNhbGl6aW5nVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZU5hbWVzKClbMF1dKSBh
YnNvbHV0ZVN0cmluZ107CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA1NDU3ZTA1NTA4YTAyODJkNDk4YjYyNTk3MTNi
MmI3MThiNWIwYmVjLi44NzkyYjE2YmVkMWEzODY2NWI0MGRjNGI2MzY2MDQyOTlmZTIyZTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
CkBAIC0xMzMsNyArMTMzLDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpzaG91bGRUcmVhdENvY29hVHlw
ZUFzRmlsZShjb25zdCBTdHJpbmcmIGNvY29hVHlwZSkKIAogUGFzdGVib2FyZDo6RmlsZUNvbnRl
bnRTdGF0ZSBQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKCkKIHsKLSAgICBib29sIG1heUNv
bnRhaW5GaWxlUGF0aHMgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmdldE51bWJlck9mRmlsZXMobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYm9vbCBtYXlDb250
YWluRmlsZVBhdGhzID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5nZXROdW1iZXJPZkZpbGVzKG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtYXlDb250YWluRmlsZVBhdGhzKSB7CkBAIC0x
NTcsNyArMTU3LDcgQEAgUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQYXN0ZWJvYXJkOjpm
aWxlQ29udGVudFN0YXRlKCkKIAogICAgIGlmICghbWF5Q29udGFpbkZpbGVQYXRocykgewogICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBjb2NvYVR5cGVzOwotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKGNvY29hVHlwZXMsIG1fcGFzdGVi
b2FyZE5hbWUpOworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmdldFR5cGVzKGNvY29hVHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChjb2NvYVR5cGVzLmZpbmRNYXRjaGluZyhbXShjb25zdCBTdHJpbmcmIGNv
Y29hVHlwZSkgeyByZXR1cm4gc2hvdWxkVHJlYXRDb2NvYVR5cGVBc0ZpbGUoY29jb2FUeXBlKTsg
fSkgPT0gbm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gRmlsZUNvbnRlbnRTdGF0ZTo6Tm9G
aWxlT3JJbWFnZURhdGE7CiAKQEAgLTE3MCwxMiArMTcwLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICByZXR1cm4gY29jb2FUeXBlID09IFN0cmlu
ZyhrVVRUeXBlVVJMKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAg
ICB9KTsKLSAgICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGluZGV4T2ZVUkwgIT0gbm90Rm91
bmQgJiYgIXBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29udGFp
bnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb2NvYVR5cGVzW2luZGV4T2ZVUkxdLCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGluZGV4T2ZV
UkwgIT0gbm90Rm91bmQgJiYgIXBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb2NvYVR5cGVzW2lu
ZGV4T2ZVUkxdLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIH0KIAogICAgIC8v
IEVuZm9yY2UgY2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1cml0eS4gV2UgY2hlY2sgYWZ0
ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAgIC8vIHN1cmUgaXQgZG9lc24n
dCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdlIGNvdW50IGFuZCBhY2Nlc3Np
bmcgdGhlIGRhdGEuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKSkK
KyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpCiAg
ICAgICAgIHJldHVybiBGaWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YTsKIAogICAg
IC8vIEV2ZW4gd2hlbiB0aGVyZSdzIG9ubHkgaW1hZ2UgZGF0YSBpbiB0aGUgcGFzdGVib2FyZCBh
bmQgbm8gZmlsZSByZXByZXNlbnRhdGlvbnMsIHdlIHN0aWxsIHJ1biB0aGUgcmlzayBvZiBleHBv
c2luZyBmaWxlIHBhdGhzCkBAIC0xODcsMTEgKzE4NywxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9y
QmluZGluZ3MoY29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gdHlw
ZXMgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKG1fcGFzdGVib2FyZE5hbWUsIG9yaWdpbik7CisgICAgVmVj
dG9yPFN0cmluZz4gdHlwZXMgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKG1fcGFzdGVib2FyZE5hbWUsIG9y
aWdpbiwgY29udGV4dCgpKTsKIAogICAgIC8vIEVuZm9yY2UgY2hhbmdlQ291bnQgb3Vyc2VsdmVz
IGZvciBzZWN1cml0eS4gV2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0
byBiZQogICAgIC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0
aGUgY2hhbmdlIGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFu
Z2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1
cm4gdHlwZXM7CkBAIC0yOTUsMjIgKzI5NSwyMiBAQCBjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSYgUGFzdGVib2FyZDo6cmVhZEN1c3RvbURhdGEoKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
Q3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhKQogewot
ICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPndyaXRlQ3VzdG9tRGF0YShkYXRhLCBuYW1lKCkpOworICAgIG1fY2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlQ3VzdG9t
RGF0YShkYXRhLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIGludDY0X3QgUGFzdGVib2FyZDo6
Y2hhbmdlQ291bnQoKSBjb25zdAogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpOworICAg
IHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5n
ZUNvdW50KG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+
IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKIHsKICAgICBWZWN0b3I8
U3RyaW5nPiBjb2NvYVR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+Z2V0VHlwZXMoY29jb2FUeXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyhjb2Nv
YVR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgLy8gRW5mb3JjZSBj
aGFuZ2VDb3VudCBvdXJzZWx2ZXMgZm9yIHNlY3VyaXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5n
IGluc3RlYWQgb2YgYmVmb3JlIHRvIGJlCiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBi
ZXR3ZWVuIG91ciB0ZXN0aW5nIHRoZSBjaGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0
YS4KLSAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpKQorICAgIGlmICht
X2NoYW5nZUNvdW50ICE9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAogICAgIHJldHVybiBjb2NvYVR5cGVzOwpAQCAtMzE4LDExICszMTgsMTEgQEAg
VmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0
eXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJz
ZWx2ZXMgZm9yIHNlY3VyaXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQgb2YgYmVm
b3JlIHRvIGJlCiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91ciB0ZXN0
aW5nIHRoZSBjaGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KLSAgICBpZiAobV9j
aGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpKQorICAgIGlmIChtX2NoYW5nZUNvdW50ICE9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQo
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICByZXR1cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwCmluZGV4IGYwZmFkZDcwODY5NTYzOGY3YzgxZTkyNjcxZjY3YzE4NGUzOGMy
NjUuLmZiZTcxOTg4MzI3YWQwZDA0YmJlMTk5YjJjM2MzYTJmOGJlN2NmOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTM1NSw3ICszNTUs
NyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25z
dCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcih0eXBlcyk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUobV9uYW1lLCBvcmlnaW4pOworICAg
IHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5cGVz
U2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKG1fbmFtZSwgb3JpZ2luLCBjb250ZXh0KCkpOwogfQog
CiBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdz
KCkKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0YShj
b25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT53cml0ZUN1c3RvbURhdGEoZGF0YSwgbV9uYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlQ3VzdG9tRGF0YShkYXRhLCBtX25hbWUsIGNv
bnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzMzY1YTNl
Yjg2YmIwYWI0OWE5YzBhYmFkZjQ4MWRkZjA4MDllNzNlLi43OWY1YWJhYjhlMmE0ZDhlNmQyNDY3
MzVjYzhmNDZhY2Y5YjAzZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXN0
ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIDogbV9jb250ZXh0KFdU
Rk1vdmUoY29udGV4dCkpCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1lKHBhc3RlYm9hcmROYW1lKQot
ICAgICwgbV9jaGFuZ2VDb3VudChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmNoYW5nZUNvdW50KHBhc3RlYm9hcmROYW1lKSkKKyAgICAsIG1fY2hhbmdlQ291bnQo
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChw
YXN0ZWJvYXJkTmFtZSwgbV9jb250ZXh0LmdldCgpKSkKIHsKIH0KIApAQCAtODMsOSArODMsOSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKLXN0
YXRpYyBpbnQ2NF90IGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lID0geyB9KQorc3RhdGljIGludDY0X3QgY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUgPSB7IH0sIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0ID0gbnVsbHB0cikKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChwYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hh
bmdlQ291bnQocGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiAvLyBGSVhNRTogRG9lcyB0
aGlzIG5lZWQgdG8gYmUgZGVjbGFyZWQgaW4gdGhlIGhlYWRlciBmaWxlPwpAQCAtMTE1LDcgKzEx
NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoc3RkOjp1bmlxdWVfcHRyPFBhCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiB7Ci0gICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChjb250ZW50
LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvbnRlbnQsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZXNvdXJjZU1JTUVUeXBlKE5T
U3RyaW5nICptaW1lVHlwZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6
cmVzb3VyY2VNSU1FVHlwZShOU1N0cmluZyAqbWltZVR5cGUpCiAKIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkSW1hZ2UsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQocGFzdGVib2Fy
ZEltYWdlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9u
KQpAQCAtMTMzLDEzICsxMzMsMTMgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKICAgICAvLyBGSVhNRTogV2Ug
dmVuZCAicHVibGljLnRleHQiIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgg
cHJlLWlPUyAxMSBhcHBzLiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgc3RvcCB2ZW5kaW5nIHRo
aXMgVVRJLAogICAgIC8vIGFuZCBpbnN0ZWFkIHNldCBkYXRhIGZvciBjb25jcmV0ZSBwbGFpbiB0
ZXh0IHR5cGVzLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzMzMTc+LgogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtV
VFR5cGVUZXh0LCB0ZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtVVFR5cGVUZXh0
LCB0ZXh0LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVi
b2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKIHsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRVUkwsIG1fcGFz
dGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZFVSTCwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJM
c1Bib2FyZFR5cGUoY29uc3QgUGFzdGVib2FyZFVSTCYpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUoY29uc3QgUGFz
dGVib2FyZFVSTCYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9y
KQogewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
Q29sb3IoY29sb3IsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0Q29sb3IoY29sb3IsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKQEAg
LTE2OCw5ICsxNjgsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4
dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIFBhc3RlYm9hcmRT
dHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpOwogCiAgICAgaWYgKGFsbG93VVJMID09IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6
OkFsbG93VVJMKSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAg
ICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
VG9RdWVyeSwga1VUVHlwZVVSTCwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci1BTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KKyAgICAgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleFRvUXVlcnksIGtVVFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAg
ICBpZiAoIXRleHQudGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHRleHQuaXNVUkwgPSB0
cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTgyLDkgKzE4Miw5IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgIC8vIG9uZSBvZiB0aGUgY29uY3JldGUgInB1Ymxp
Yy5wbGFpbi10ZXh0IiByZXByZXNlbnRhdGlvbnMgKGUuZy4ga1VUVHlwZVVURjhQbGFpblRleHQp
LiBJbiB0aGUgZnV0dXJlLCB3ZQogICAgIC8vIHNob3VsZCBjb25zaWRlciByZW1vdmluZyBzdXBw
b3J0IGZvciByZWFkaW5nIHBsYWluIHRleHQgZnJvbSAicHVibGljLnRleHQiLgogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VUVHlwZVBsYWluVGV4dCwg
bV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKGl0ZW1JbmRleFRvUXVlcnksIGtVVFR5cGVQbGFpblRleHQsIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKHRleHQudGV4dC5pc0VtcHR5KCkpCi0gICAg
ICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXhUb1F1ZXJ5LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHRleHQu
dGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5
LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwpAQCAtMjEz
LDE0ICsyMTMsMTQgQEAgUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQ
YXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm8KIHsKIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJB
cmNoaXZlUGJvYXJkVHlwZV0gfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0
cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0
ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2Fy
ZE5hbWUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAg
ICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAg
ICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRXZWJBcmNoaXZlKCpidWZmZXIpID8gUmVh
ZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAg
fQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilr
VVRUeXBlSFRNTF0pIHsKLSAgICAgICAgU3RyaW5nIGh0bWxTdHJpbmcgPSBzdHJhdGVneS5yZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlSFRNTCwgbV9wYXN0ZWJvYXJk
TmFtZSk7CisgICAgICAgIFN0cmluZyBodG1sU3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUhUTUwsIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAg
ICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVy
bmFsbHk7CiAgICAgICAgIHJldHVybiAhaHRtbFN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVh
ZEhUTUwoaHRtbFN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0
OjpEaWROb3RSZWFkVHlwZTsKQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYg
KFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJU
RkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0
ZWJvYXJkTmFtZSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0
ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQg
IT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3Rl
Ym9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFk
ZXIucmVhZFJURkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVz
dWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3Ry
aW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
dGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAg
ICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0
dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAg
ICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0
OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUx
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250
YWluc09iamVjdDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3Ry
YXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXND
aGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZElt
YWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRp
ZE5vdFJlYWRUeXBlOwpAQCAtMjU5LDIxICsyNTksMjEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZVVSTF0pIHsKICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAg
ICBVUkwgdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgbV9w
YXN0ZWJvYXJkTmFtZSwgdGl0bGUpOworICAgICAgICBVUkwgdXJsID0gc3RyYXRlZ3kucmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgdGl0bGUsIGNvbnRl
eHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAg
ICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFs
bHk7CiAgICAgICAgIHJldHVybiAhdXJsLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkVVJMKHVybCwg
dGl0bGUpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVh
ZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXR5cGUsIGtVVFR5cGVQbGFpblRleHQpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcg
PSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUGxh
aW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0
ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVQbGFpblRleHQs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50
ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0
ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiAhc3RyaW5nLmlzTnVs
bCgpICYmIHJlYWRlci5yZWFkUGxhaW5UZXh0KHN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRU
eXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoVVRU
eXBlQ29uZm9ybXNUbygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpdHlwZSwga1VUVHlwZVRleHQpKSB7
Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoaXRlbUluZGV4LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0
cmluZyBzdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYg
KG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFk
ZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJu
ICFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSA/IFJlYWRl
clJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjgz
LDcgKzI4Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVy
biBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogfQogCi1zdGF0aWMgdm9pZCByZWFkVVJM
QWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVy
JiByZWFkZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgdHlw
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludCBpdGVtSW5kZXgp
CitzdGF0aWMgdm9pZCByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRl
Z3ksIGNvbnN0IFN0cmluZyYgdHlwZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludCBpdGVtSW5kZXgsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoIVVUVHlwZUNv
bmZvcm1zVG8odHlwZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVHlwZVZD
YXJkKSkKQEAgLTI5MSw3ICsyOTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBTdHJpbmcgdGl0
bGU7Ci0gICAgYXV0byB1cmwgPSBzdHJhdGVneS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCBwYXN0ZWJvYXJkTmFtZSwgdGl0bGUpOworICAgIGF1dG8gdXJsID0gc3RyYXRlZ3kucmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgcGFzdGVib2FyZE5hbWUsIHRpdGxlLCBjb250
ZXh0KTsKICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJlYWRlci5yZWFkVVJMKHVy
bCwgdGl0bGUpOwogfQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGlj
CiAKICAgICBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKIAotICAgIHNpemVfdCBudW1iZXJPZkl0ZW1zID0g
c3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAg
c2l6ZV90IG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCht
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgaWYgKCFudW1iZXJPZkl0ZW1zKQog
ICAgICAgICByZXR1cm47CkBAIC0zMzgsMTUgKzMzOCwxNSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJl
YWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpYwogICAgICAgICBpZiAoaXRlbUluZGV4ICYmIGkgIT0gKml0ZW1JbmRleCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAg
ICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaSwgbV9w
YXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKCFp
bmZvKQogICAgICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKICAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYmIHByZWZlcnNBdHRhY2htZW50UmVw
cmVzZW50YXRpb24oKmluZm8pKSB7CiAgICAgICAgICAgICBhdXRvIHR5cGVGb3JGaWxlVXBsb2Fk
ID0gaW5mby0+Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwg
dHlwZUZvckZpbGVVcGxvYWQsIG1fcGFzdGVib2FyZE5hbWUpKSB7Ci0gICAgICAgICAgICAgICAg
cmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFkZXIsIHN0cmF0ZWd5LCB0
eXBlRm9yRmlsZVVwbG9hZCwgbV9wYXN0ZWJvYXJkTmFtZSwgaSk7CisgICAgICAgICAgICBpZiAo
YXV0byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwgdHlwZUZv
ckZpbGVVcGxvYWQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKKyAgICAgICAgICAg
ICAgICByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KHJlYWRlciwgc3RyYXRl
Z3ksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lLCBpLCBjb250ZXh0KCkpOwog
ICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9yRmls
ZVVwbG9hZCwgaW5mby0+c3VnZ2VzdGVkRmlsZU5hbWUsIGluZm8tPnByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAt
MzgyLDEyICszODIsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVs
aXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwKIHsKICAgICBBU1NFUlQo
cmVzcGVjdHNVVElGaWRlbGl0aWVzKCkpOwogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKLSAgICBmb3IgKE5TVUludGVnZXIg
aW5kZXggPSAwLCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQobV9wYXN0ZWJvYXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgewor
ICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5n
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOyBpbmRl
eCA8IG51bWJlck9mSXRlbXM7ICsraW5kZXgpIHsKICAgICAgICAgaWYgKGl0ZW1JbmRleCAmJiBp
bmRleCAhPSAqaXRlbUluZGV4KQogICAgICAgICAgICAgY29udGludWU7CiAKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQotICAgICAgICBhdXRvIGluZm8gPSBzdHJhdGVneS5pbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50
KTsKKyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKTsKICAg
ICAgICAgaWYgKCFpbmZvKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTUsNyArMzk1LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwKICAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVu
dCA9IHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSAmJiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxl
ZCgpICYmICFhdHRhY2htZW50RmlsZVBhdGguaXNFbXB0eSgpOwogICAgICAgICBhdXRvIGNvbnRl
bnRUeXBlID0gaW5mby0+Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CiAgICAg
ICAgIGlmIChjYW5SZWFkQXR0YWNobWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0
aW9uKCppbmZvKSkgewotICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5l
Y2Vzc2FyeShyZWFkZXIsIHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
aW5kZXgpOworICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2Fy
eShyZWFkZXIsIHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgaW5kZXgs
IGNvbnRleHQoKSk7CiAgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0
YWNobWVudEZpbGVQYXRoKSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVu
dFR5cGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTQ1Miw3ICs0NTIs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogYm9vbCBQYXN0ZWJvYXJk
OjpoYXNEYXRhKCkKIHsKLSAgICByZXR1cm4gISFwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUp
OworICAgIHJldHVybiAhIXBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
IH0KIAogc3RhdGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShOU1N0cmluZyAqdHlwZSkK
QEAgLTQ4OCwxMiArNDg4LDEyIEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5n
JiB0eXBlKQogICAgIGlmICghY29jb2FUeXBlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJk
KGNvY29hVHlwZS5nZXQoKSwgU3RyaW5nKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQo
Y29jb2FUeXBlLmdldCgpLCBTdHJpbmcoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChTdHJpbmcoKSwgU3Ry
aW5nKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoU3RyaW5nKCksIFN0cmluZygpLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBp
bnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtNTA1
LDcgKzUwNSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZhbHVl
c0FzU3RyaW5ncyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGluCiAgICAgaWYgKCFjb2NvYVR5cGUp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHZhbHVlcyA9IHN0cmF0ZWd5LmFsbFN0
cmluZ3NGb3JUeXBlKGNvY29hVHlwZS5nZXQoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIGF1dG8g
dmFsdWVzID0gc3RyYXRlZ3kuYWxsU3RyaW5nc0ZvclR5cGUoY29jb2FUeXBlLmdldCgpLCBwYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiAgICAgaWYgKFtjb2NvYVR5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtVVFR5cGVQbGFpblRleHRdKSB7CiAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5tYXAoWyZd
IChhdXRvJiB2YWx1ZSkgLT4gU3RyaW5nIHsKQEAgLTU1OCwxNiArNTU4LDE2IEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRh
dGEpCiAgICAgaWYgKCFjb2NvYVR5cGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29j
b2FUeXBlLmdldCgpLCBkYXRhLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlw
ZS5nZXQoKSwgZGF0YSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogVmVjdG9y
PFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZpbGVQYXRocygpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gZmlsZVBhdGhzOwogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKLSAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBu
dW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJv
YXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgeworICAgIGZvciAoTlNV
SW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOyBpbmRleCA8IG51bWJlck9m
SXRlbXM7ICsraW5kZXgpIHsKICAgICAgICAgLy8gQ3VycmVudGx5LCBkcmFnIGFuZCBkcm9wIGlz
IHRoZSBvbmx5IGNhc2Ugb24gaU9TIHdoZXJlIHRoZSAicGFzdGVib2FyZCIgbWF5IGNvbnRhaW4g
ZmlsZSBwYXRocy4KLSAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAg
ICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgs
IG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiAgICAgICAgIGlm
ICghaW5mbykKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCBlNjVmYTg3Y2Qx
ZTlhMWRlZDcwMWU0MmRlYWY0NWEyZWU1NDNiYWI2Li41OWQzYmM4MTQ3MWQzZTdiY2E3N2NkYTIy
ZDdhMDU4OTVhNWEyMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3
cGUvUGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGli
d3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFN0cmluZyBQYXN0ZWJv
YXJkOjpyZWFkT3JpZ2luKCkKIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCB0eXBlLCBuYW1lKCkp
OworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9
CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmlu
ZyYpCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5n
JikKIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBs
YWluVGV4dFVSTFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50
ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSk7
CisgICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYt
OCIsIG5hbWUoKSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFs
PHNpemVfdD4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IGY3ZjhmZmU0ZjhlOWY4YzNhOTZiMzI3NmNiYTM1ZDgzYjZkOWQ0YzguLjExMGRkMjUx
MGI4NWYxMDZkM2M5MTU4MTEwZDA4MGQ1ODBlMjhhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC05Myw3ICs5Myw3IEBAIFBhc3RlYm9hcmQ6
OlBhc3RlYm9hcmQoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQp
CiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4
dD4mJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcHJvbWlzZWRGaWxlUGF0aHMpCiAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250
ZXh0KSkKICAgICAsIG1fcGFzdGVib2FyZE5hbWUocGFzdGVib2FyZE5hbWUpCi0gICAgLCBtX2No
YW5nZUNvdW50KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hh
bmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSkpCisgICAgLCBtX2NoYW5nZUNvdW50KHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJv
YXJkTmFtZSwgbV9jb250ZXh0LmdldCgpKSkKICAgICAsIG1fcHJvbWlzZWRGaWxlUGF0aHMocHJv
bWlzZWRGaWxlUGF0aHMpCiB7CiAgICAgQVNTRVJUKHBhc3RlYm9hcmROYW1lKTsKQEAgLTEyNyw3
ICsxMjcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
KGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIAogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7
Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+c2V0VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudCYgY29udGVudCkKQEAgLTE1NCwzNSArMTU0LDM1IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIHR5cGVzLmFwcGVuZFZlY3Rvcihjb250ZW50LmNsaWVudFR5cGVz
KTsKICAgICB0eXBlcy5hcHBlbmQoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKTsK
IAotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBtX2NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRU
eXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAgIC8vIEZJWE1F
OiBUaGUgZm9sbG93aW5nIGNvZGUgc2hvdWxkIGJlIHJlZmFjdG9yZWQsIHN1Y2ggdGhhdCBpdCBv
bmx5IHJlcXVpcmVzIGEgc2luZ2xlIGNhbGwgb3V0IHRvIHRoZSBjbGllbnQgbGF5ZXIuCiAgICAg
Ly8gSW4gV2ViS2l0MiwgdGhpcyBjdXJyZW50bHkgcmVzdWx0cyBpbiBtYW55IHVubmVjZXNzYXJ5
IHN5bmNocm9ub3VzIHJvdW5kLXRyaXAgSVBDIG1lc3NhZ2VzLgogCiAgICAgQVNTRVJUKGNvbnRl
bnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5jbGllbnRE
YXRhW2ldLmdldCgpLCBjb250ZW50LmNsaWVudFR5cGVzW2ldLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmNsaWVudERhdGFbaV0uZ2V0KCks
IGNvbnRlbnQuY2xpZW50VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAg
ICAgaWYgKGNvbnRlbnQuY2FuU21hcnRDb3B5T3JEZWxldGUpCi0gICAgICAgIG1fY2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZl
ckZvclR5cGUobnVsbHB0ciwgV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5h
bWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKG51bGxwdHIsIFdlYlNtYXJ0UGFzdGVQ
Ym9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChjb250ZW50
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKLSAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShj
b250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBl
LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdC5nZXQoKSwga1VUVHlwZVdlYkFyY2hpdmUsIG1fcGFzdGVib2FyZE5hbWUpOwot
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVu
dC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LmdldCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgfQogICAgIGlmIChjb250ZW50LmRhdGFJblJURkRGb3JtYXQpCi0gICAg
ICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBs
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBsZWdhY3lS
VEZEUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBp
ZiAoY29udGVudC5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUo
Y29udGVudC5kYXRhSW5SVEZGb3JtYXQuZ2V0KCksIGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCks
IG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQu
ZGF0YUluUlRGRm9ybWF0LmdldCgpLCBsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmICghY29udGVudC5kYXRhSW5IVE1MRm9ybWF0
LmlzTnVsbCgpKQotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluSFRN
TEZvcm1hdCwgbGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOwor
ICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCwgbGVn
YWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAg
ICAgaWYgKCFjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdC5pc051bGwoKSkKLSAgICAgICAgbV9j
aGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0U3RyaW5nRm9yVHlwZShjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCwgbGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmlu
Z0ZvclR5cGUoY29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXQsIGxlZ2FjeVN0cmluZ1Bhc3RlYm9h
cmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKICAgICBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBkYXRhOwogICAgIGRhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdp
bik7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLnB0
cigpLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUp
OworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS5wdHIo
KSwgUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpOwogCiB9CiAKQEAgLTE5MywxNSArMTkzLDE1IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24gc21h
cnRSZXBsCiAgICAgaWYgKHNtYXJ0UmVwbGFjZU9wdGlvbiA9PSBDYW5TbWFydFJlcGxhY2UpCiAg
ICAgICAgIHR5cGVzLmFwcGVuZChXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSk7CiAKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lKTsKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHRleHQsIGxlZ2FjeVN0
cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh0ZXh0LCBsZWdh
Y3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
ICAgIGlmIChzbWFydFJlcGxhY2VPcHRpb24gPT0gQ2FuU21hcnRSZXBsYWNlKQotICAgICAgICBt
X2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRCdWZmZXJGb3JUeXBlKDAsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZSgwLCBXZWJTbWFydFBhc3RlUGJv
YXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAotc3RhdGljIGxvbmcg
d3JpdGVVUkxGb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCitz
dGF0aWMgbG9uZyB3cml0ZVVSTEZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVi
b2FyZFVSTCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBu
ZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0VHlwZXModHlwZXMsIHBhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIG5ld0NoYW5nZUNv
dW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBl
cyh0eXBlcywgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogICAgIAogICAgIEFTU0VSVCghcGFz
dGVib2FyZFVSTC51cmwuaXNFbXB0eSgpKTsKICAgICAKQEAgLTIxNiwzNiArMjE2LDM2IEBAIHN0
YXRpYyBsb25nIHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hCiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlKSkgewogICAgICAgICBQYXN0ZWJvYXJkVVJMIHVybCA9IHsgcGFz
dGVib2FyZFVSTC51cmwsIFN0cmluZyh0aXRsZSkuc3RyaXBXaGl0ZVNwYWNlKCksIGVtcHR5U3Ry
aW5nKCkgfTsKLSAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFVSTCh1cmwsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAg
ICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldFVSTCh1cmwsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKICAgICB9CiAgICAg
aWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpKSkpCi0g
ICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKFtjb2NvYVVSTCBhYnNvbHV0ZVN0cmluZ10sIGxl
Z2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dFN0cmluZ0ZvclR5cGUoW2NvY29hVVJMIGFic29sdXRlU3RyaW5nXSwgbGVnYWN5VVJMUGFzdGVi
b2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJVUkxQYm9hcmRUeXBlKSkKLSAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUodXNl
clZpc2libGVTdHJpbmcsIFdlYlVSTFBib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAg
ICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUodXNlclZpc2libGVTdHJpbmcsIFdlYlVSTFBib2FyZFR5
cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vi
VVJMTmFtZVBib2FyZFR5cGUpKQotICAgICAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh0aXRsZSwg
V2ViVVJMTmFtZVBib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbmV3Q2hhbmdl
Q291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0
cmluZ0ZvclR5cGUodGl0bGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpKSkpCi0gICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJWaXNpYmxl
U3RyaW5nLCBsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJWaXNpYmxlU3RyaW5nLCBsZWdhY3lTdHJp
bmdQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiAKICAgICByZXR1
cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAgICAgCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHdy
aXRlVVJMRm9yVHlwZXMod3JpdGFibGVUeXBlc0ZvclVSTCgpLCBtX3Bhc3RlYm9hcmROYW1lLCBw
YXN0ZWJvYXJkVVJMKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh3cml0
YWJsZVR5cGVzRm9yVVJMKCksIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRVUkwsIGNvbnRl
eHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9h
cmRUeXBlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7CiAgICAgUGFzdGVi
b2FyZFVSTCB1cmwgPSB7IHBhc3RlYm9hcmRVUkwudXJsLCBwYXN0ZWJvYXJkVVJMLnRpdGxlLnN0
cmlwV2hpdGVTcGFjZSgpLCBlbXB0eVN0cmluZygpIH07Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VVJMKHVybCwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VVJMKHVybCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3Ip
CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSB7IGxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5
cGUoKSB9OwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgIG1fY2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldENvbG9yKGNvbG9y
LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnNldENvbG9yKGNvbG9yLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
fQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZElt
YWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIE5TRmlsZVdy
YXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdl
KQogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdy
aXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QmIG5ld0NoYW5nZUNvdW50KQorc3Rh
dGljIHZvaWQgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoTlNGaWxlV3JhcHBlciAq
d3JhcHBlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCYgbmV3Q2hhbmdl
Q291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5n
V2l0aEF0dGFjaG1lbnQ6YWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRo
RmlsZVdyYXBwZXI6d3JhcHBlcl0pLmdldCgpXTsKIApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRp
YyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndy
YXBwZXIsIGNvbnN0IFN0cmluCiAgICAgaWYgKCFSVEZERGF0YSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEp
LnB0cigpLCBsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUpOworICAg
IG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkREYXRhKS5wdHIo
KSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3Rl
Ym9hcmRJbWFnZSkKQEAgLTI4NCwyNCArMjg0LDI0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAK
LSAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJk
TmFtZSwgcGFzdGVib2FyZEltYWdlLnVybCk7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5
cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9y
VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwsIGNvbnRl
eHQoKSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFn
ZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKICAgICBpZiAoYXV0byBhcmNoaXZlRGF0YSA9IHBhc3RlYm9hcmRJbWFn
ZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7Ci0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUo
YXJjaGl2ZURhdGEuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1l
KTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJj
aGl2ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKLUFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUo
YXJjaGl2ZURhdGEuZ2V0KCksIGtVVFR5cGVXZWJBcmNoaXZlLCBtX3Bhc3RlYm9hcmROYW1lKTsK
LUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hp
dmVEYXRhLmdldCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQog
ICAgIGlmICghcGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQuaXNFbXB0eSgpKQotICAg
ICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9ybWF0
LCBsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgd3Jp
dGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXIocGFzdGVib2FyZEltYWdl
KSwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIG1fY2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmlu
Z0ZvclR5cGUocGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQsIGxlZ2FjeUhUTUxQYXN0
ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgIHdyaXRlRmls
ZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KGZpbGVXcmFwcGVyKHBhc3RlYm9hcmRJbWFnZSksIG1f
cGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiB9CiAKIGJvb2wgUGFz
dGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVz
KHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgIHJldHVybiB0eXBlcy5jb250YWlucyhXZWJTbWFydFBhc3RlUGJvYXJkVHlw
ZSk7CiB9CiAKQEAgLTMyMywxOCArMzIzLDE4IEBAIHN0YXRpYyBTdHJpbmcgam9pblBhdGhuYW1l
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKQogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUlu
ZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3Rl
Ym9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitz
dGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcm
IHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0
cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQotICAgICAgICByZXR1cm4gc3Ry
YXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9h
cmROYW1lKTsKLSAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJv
YXJkTmFtZSk7CisgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOworICAgIHJldHVy
biBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsK
IH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQ
YXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQorc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1J
bmRleChjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0
ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQot
ICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5k
ZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1cm4gc3RyYXRlZ3kuYnVmZmVyRm9y
VHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQpOworICAgIHJldHVybiBzdHJhdGVneS5idWZmZXJGb3JUeXBlKHR5cGUsIHBhc3RlYm9h
cmROYW1lLCBjb250ZXh0KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQ
bGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3dVUkwsIE9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4KQpAQCAtMzQzLDI1ICszNDMsMjUgQEAgdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQ
b2xpY3kgYWxsb3cKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIGlmIChpdGVtSW5k
ZXgpIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbUluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KCppdGVtSW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQp
KQorICAgICAgICBpZiAoYXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoKml0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29u
dGV4dCgpKSkKICAgICAgICAgICAgIHR5cGVzID0gaXRlbUluZm8tPnBsYXRmb3JtVHlwZXNCeUZp
ZGVsaXR5OwogICAgIH0gZWxzZQotICAgICAgICBzdHJhdGVneS5nZXRUeXBlcyh0eXBlcywgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhO
U1Bhc3RlYm9hcmRUeXBlU3RyaW5nKSkpIHsKLSAgICAgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmlu
Z0F0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVTdHJpbmcsIGl0ZW1JbmRleCwg
c3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0ZXh0LnRleHQgPSByZWFkU3Ry
aW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVN0cmluZywgaXRlbUluZGV4
LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgdGV4dC5p
c1VSTCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNv
bnRhaW5zKFN0cmluZyhsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAg
dGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVN0cmluZ1Bh
c3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOwor
ICAgICAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5
U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBk
YXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
KSB7CiAgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQu
dGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5p
c1VSTCA9IGZhbHNlOwpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQ
YXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93
CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBl
UlRGRCkpKSB7Ci0gICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFz
dGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ks
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGF0
dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5p
bF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3Ry
aW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CkBAIC0zODEsNyArMzgx
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBs
YWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29u
dGFpbnMoU3RyaW5nKGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAo
YXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3Rl
Ym9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVn
YWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmRhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAg
ICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAg
ICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5IGFsbG93CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhO
U1Bhc3RlYm9hcmRUeXBlUlRGKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZm
ZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0
cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVSVEYsIGl0ZW1JbmRl
eCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAg
IGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURjpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRl
ZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKQEAg
LTQwOCw3ICs0MDgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4
dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogCiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aG5hbWVzOwotICAgICAgICBzdHJhdGVneS5nZXRQYXRo
bmFtZXNGb3JUeXBlKHBhdGhuYW1lcywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwg
bV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHN0cmF0ZWd5LmdldFBhdGhuYW1lc0ZvclR5cGUo
cGF0aG5hbWVzLCBsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogICAgICAgICB0ZXh0LnRleHQgPSBqb2luUGF0aG5hbWVzKHBhdGhu
YW1lcyk7CiAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NDE2LDcgKzQxNiw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0
JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAKICAgICAvLyBGSVhNRTog
VGhlIGNvZGUgYWJvdmUgbG9va3MgYXQgdGhlIHR5cGVzIHZlY3RvciBmaXJzdCwgYnV0IHRoaXMg
anVzdCBnZXRzIHRoZSBzdHJpbmcgd2l0aG91dCBjaGVja2luZy4gV2h5IHRoZSBkaWZmZXJlbmNl
PwogICAgIGlmIChhbGxvd1VSTCA9PSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VS
TCkgewotICAgICAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgo
bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgICAgIHRleHQudGV4dCA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1J
bmRleChsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICB0ZXh0LmlzVVJMID0gIXRleHQudGV4
dC5pc051bGwoKTsKICAgICB9CiB9CkBAIC00MjcsMTUgKzQyNywxNSBAQCB2b2lkIFBhc3RlYm9h
cmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJl
YWRpbmdQb2xpYwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgaWYgKGl0ZW1JbmRl
eCkgewotICAgICAgICBpZiAoYXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoKml0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCkp
CisgICAgICAgIGlmIChhdXRvIGl0ZW1JbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleCgqaXRlbUluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50LCBjb250
ZXh0KCkpKQogICAgICAgICAgICAgdHlwZXMgPSBpdGVtSW5mby0+cGxhdGZvcm1UeXBlc0J5Rmlk
ZWxpdHk7CiAgICAgfSBlbHNlCi0gICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXModHlwZXMsIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKICAgICByZWFkZXIuY29udGVudE9yaWdpbiA9IHJlYWRP
cmlnaW4oKTsKIAogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkp
IHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9h
cmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoV2ViQXJjaGl2ZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRXZWJBcmNoaXZlKCpidWZmZXIpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZv
aWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBX
ZWJDb250ZW50UmVhZGluZ1BvbGljCiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlV2ViQXJjaGl2ZSkpKSB7
Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChrVVRUeXBlV2ViQXJjaGl2ZSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFt
ZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KGtVVFR5cGVXZWJBcmNoaXZlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBj
aGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkV2ViQXJjaGl2ZSgqYnVmZmVyKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ1Nyw0NiArNDU3LDQ2IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKHBvbGljeSA9PSBXZWJDb250ZW50
UmVhZGluZ1BvbGljeTo6QW55VHlwZSAmJiB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5Rmls
ZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhz
OwotICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKHBhdGhzLCBsZWdhY3lGaWxl
bmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgc3RyYXRl
Z3kuZ2V0UGF0aG5hbWVzRm9yVHlwZShwYXRocywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5
cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEZpbGVQYXRocyhwYXRocykpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcg
PSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBl
KCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBTdHJp
bmcgc3RyaW5nID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeUhUTUxQYXN0
ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8ICgh
c3RyaW5nLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkSFRNTChzdHJpbmcpKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TUGFzdGVi
b2FyZFR5cGVIVE1MKSkpIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IHJlYWRTdHJpbmdBdFBy
ZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlSFRNTCwgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5n
QXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZUhUTUwsIGl0ZW1JbmRleCwgc3Ry
YXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5n
ZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJl
YWRIVE1MKHN0cmluZykpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0
eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAg
ICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJl
ZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1fY2hh
bmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGRCkpKSB7Ci0gICAgICAgIGlmIChh
dXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRU
eXBlUlRGRCwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAg
ICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFz
dGVib2FyZFR5cGVSVEZELCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3Vu
dCgpIHx8IHJlYWRlci5yZWFkUlRGRCgqYnVmZmVyKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2Fj
eVJURlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgaXRl
bUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8g
YnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3RlYm9h
cmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwg
cmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRU
eXBlUlRGKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVy
cmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVSVEYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1f
cGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0cmF0
ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9j
aGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkUlRGKCpidWZmZXIpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTA2LDI4ICs1MDYsMjggQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCkpKSkg
ewotICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5k
ZXgobGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFz
dGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBz
dHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYg
KG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpLCAiaW1hZ2UvdGlmZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhO
U1Bhc3RlYm9hcmRUeXBlVElGRikpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRC
dWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlVElGRiwgaXRlbUluZGV4
LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVUSUZGLCBp
dGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAg
ICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFk
SW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksICJpbWFnZS90aWZmIl9zKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFp
bnMoU3RyaW5nKGxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoYXV0
byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UERGUGFzdGVi
b2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxl
Z2FjeVBERlBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwg
ImFwcGxpY2F0aW9uL3BkZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBl
UERGKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVk
SXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVQREYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFz
dGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUERGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFu
Z2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCksICJhcHBsaWNhdGlvbi9wZGYiX3MpKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtNTM1LDcgKzUzNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlm
ICh0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZVBORykpKSB7Ci0gICAgICAgIGlmIChhdXRv
IGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBlUE5HLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBi
dWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoa1VUVHlwZVBORywgaXRlbUlu
ZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAg
ICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdl
KGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCAiaW1hZ2UvcG5nIl9zKSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVKUEVHKSkpIHsKLSAgICAgICAg
aWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGtVVFR5cGVK
UEVHLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBp
ZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoa1VUVHlwZUpQ
RUcsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsK
ICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVy
LnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL2pwZWciX3MpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTUyLDIxICs1NTIsMjEgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lVUkxQYXN0
ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnVybChtX3Bhc3Rl
Ym9hcmROYW1lKTsKLSAgICAgICAgU3RyaW5nIHRpdGxlID0gcmVhZFN0cmluZ0F0UHJlZmVycmVk
SXRlbUluZGV4KFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnVybChtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBTdHJpbmcgdGl0bGUgPSByZWFkU3RyaW5nQXRQ
cmVmZXJyZWRJdGVtSW5kZXgoV2ViVVJMTmFtZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRl
Z3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IGNoYW5nZUNvdW50KCkgfHwgKCF1cmwuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRVUkwo
dXJsLCB0aXRsZSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0eXBl
cy5jb250YWlucyhTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAg
ICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5
U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJk
TmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVt
SW5kZXgobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQg
IT0gY2hhbmdlQ291bnQoKSB8fCAoIXN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWlu
VGV4dChzdHJpbmcpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhr
VVRUeXBlVVRGOFBsYWluVGV4dCkpKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVn
eS5zdHJpbmdGb3JUeXBlKGtVVFR5cGVVVEY4UGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoa1VUVHlwZVVU
RjhQbGFpblRleHQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmICht
X2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVh
ZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNTc2LDcgKzU3Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogYm9v
bCBQYXN0ZWJvYXJkOjpoYXNEYXRhKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5
cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0
KCkpOwogICAgIHJldHVybiAhdHlwZXMuaXNFbXB0eSgpOwogfQogCkBAIC02MDgsNyArNjA4LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgU3RyaW5n
IGNvY29hVHlwZSA9IGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSh0eXBlKTsKICAgICBp
ZiAoY29jb2FUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmlu
Z0ZvclR5cGUoZW1wdHlTdHJpbmcoKSwgY29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAg
ICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5zZXRTdHJpbmdGb3JUeXBlKGVtcHR5U3RyaW5nKCksIGNvY29hVHlwZSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVh
ZFBsYXRmb3JtVmFsdWVzQXNTdHJpbmdzKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTYxOCw3ICs2MTgs
NyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmlu
Z3MoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBpbgogICAgIGlmIChjb2NvYVR5cGUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byB2YWx1ZXMgPSBzdHJhdGVneS5hbGxT
dHJpbmdzRm9yVHlwZShjb2NvYVR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIHZhbHVl
cyA9IHN0cmF0ZWd5LmFsbFN0cmluZ3NGb3JUeXBlKGNvY29hVHlwZSwgcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAgICAgaWYgKGNvY29hVHlwZSA9PSBTdHJpbmcobGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSkpIHsKICAgICAgICAgdmFsdWVzID0gdmFsdWVzLm1hcChbJl0gKGF1dG8m
IHZhbHVlKSAtPiBTdHJpbmcgewogICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZSBwcmVjb21wb3Nl
ZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBWZWN0b3I8
U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3Ry
aW5nJiBkb21UeXBlLCBpbgogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2ZXMg
Zm9yIHNlY3VyaXR5LiAgV2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0
byBiZQogICAgIC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0
aGUgY2hhbmdlIGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKGNoYW5nZUNv
dW50ICE9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdl
Q291bnQocGFzdGVib2FyZE5hbWUpKQorICAgIGlmIChjaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KHBhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIHZhbHVl
czsKQEAgLTY4Miw4ICs2ODIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgICAgICB0eXBlcy5hcHBlbmQo
Y29jb2FUeXBlKTsKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dFN0cmluZ0ZvclR5cGUoY29jb2FEYXRhLCBjb2NvYVR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwor
ICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5
cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBtX2NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRT
dHJpbmdGb3JUeXBlKGNvY29hRGF0YSwgY29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02OTMsOCArNjkzLDggQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgZWxz
ZSB3ZSBrbm93IG9mIGdvZXMgb24gdGhlIHBib2FyZCBhcyBhIHN0cmluZwogICAgICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlczsKICAgICAgICAgdHlwZXMuYXBwZW5kKGNvY29hVHlwZSk7Ci0gICAg
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YWRkVHlwZXMo
dHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNv
Y29hRGF0YSwgY29jb2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5hZGRUeXBlcyh0eXBlcywgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShjb2Nv
YURhdGEsIGNvY29hVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICB9CiB9
CiAKQEAgLTcwMywxNCArNzAzLDE0IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRG
aWxlUGF0aHMoKQogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHN0
cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBzdHJhdGVneS5n
ZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAgIGlmICh0
eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSkp
KQogICAgICAgICByZXR1cm4gbV9wcm9taXNlZEZpbGVQYXRoczsKIAogICAgIGlmICh0eXBlcy5j
b250YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKLSAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0aG5h
bWVzRm9yVHlwZShmaWxlUGF0aHMsIGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIG1f
cGFzdGVib2FyZE5hbWUpOworICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKGZp
bGVQYXRocywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKICAgICAgICAgcmV0dXJuIGZpbGVQYXRoczsKICAgICB9CiAKQEAgLTc5
Niw3ICs3OTYsNyBAQCBzdGF0aWMgdm9pZCBzZXREcmFnSW1hZ2VJbXBsKE5TSW1hZ2UgKmltYWdl
LCBOU1BvaW50IG9mZnNldCkKIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFn
ZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogewogICAgIC8vIERvbid0IGFsbG93
IHNldHRpbmcgdGhlIGRyYWcgaW1hZ2UgaWYgc29tZW9uZSBrZXB0IGEgcGFzdGVib2FyZCBhbmQg
aXMgdHJ5aW5nIHRvIHNldCB0aGUgaW1hZ2UgdG9vIGxhdGUuCi0gICAgaWYgKG1fY2hhbmdlQ291
bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VD
b3VudChtX3Bhc3RlYm9hcmROYW1lKSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERhc2hib2Fy
ZCB3YW50cyB0byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcgZHJhZ2dpbmcs
IGJ1dCBDb2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCA0OTU3
NThiMzI0NzhhZDk0ZWUwZjU0ZjFhNmRhMjdkOWI4ZjVkMzU5Li5jMDc2ZDk0YjZlMjRiY2QyZDE5
ZGI0NzU5Y2QxOWJiYWYzYmFmYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpkaWRNb2RpZnlDb250ZW50c09mUGFzdGVib2Fy
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgfQogfQogCi12b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5cGVzKGNvbm5lY3Rpb24s
IHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMKICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLAordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQ
YXRobmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYgcGF0aG5hbWVzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNh
bmRib3hFeHRlbnNpb25zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NI
RUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCB7IH0pKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocGF0aG5hbWVzKSwgV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9ucykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21w
bGV0aW9uSGFuZGxlcih7IH0pKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRTdHJpbmdzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVD
S19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSkpOwogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAg
ICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFs
bFN0cmluZ3NGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NB
R0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9u
SGFuZGxlcih7IH0pKTsKIApAQCAtMjE4LDEyICsyMTgsMTIgQEAgdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwKICAgICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdU
Rk1vdmUoaGFuZGxlKSwgc2l6ZSB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hhbmdl
Q291bnQoKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29s
b3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcihJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6Q29sb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5B
Y2Nlc3NQYXN0ZWJvYXJkRGF0YShjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5jb2xvcigpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OmdldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmICghY2FuQWNjZXNzUGFzdGVib2FyZERhdGEoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUp
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTIzOSw3ICsyMzks
NyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsKCkuc3RyaW5nKCkpOwogfQogCi12b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJv
YXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTigh
cGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CiAKQEAgLTI1
Miw3ICsyNTIsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVz
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUwogICAgIGNvbXBsZXRpb25IYW5k
bGVyKG5ld0NoYW5nZUNvdW50KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBh
c3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwg
Y29tcGxldGlvbkhhbmRsZXIoMCkpOwogCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbnN0IFMKICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAK
LXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJv
YXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYg
cGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3Rl
Ym9hcmROYW1lLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoMCkpOwogCkBAIC0yODQsNyAr
Mjg0LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBQYXMKICAgICBjb21wbGV0aW9uSGFuZGxlcigw
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRDb2xvcihJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0
ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJv
YXJkTmFtZS5pc0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKDApKTsKIApAQCAtMjk0LDcgKzI5
NCw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3
Q2hhbmdlQ291bnQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9y
VHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09N
UExFVElPTighcGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7
CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCks
IGNvbXBsZXRpb25IYW5kbGVyKDApKTsKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLAogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5nZUNvdW50KTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2Fk
aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9h
ZGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQ
YXN0ZWJvYXJkVHlwZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6
OkNvbm5lY3Rpb24mIGNvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5jb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZygpKTsK
IH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGlu
ZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXJsU3RyaW5n
U3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmREYXRhKGNvbm5l
Y3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgeyB9KTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbgog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUodXJsU3RyaW5nKSwgV1RGTW92ZSh0aXRsZSkp
OwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5
cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYgaXBjSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRC
dWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1w
dHkoKSwgY29tcGxldGlvbkhhbmRsZXIoMCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElP
TighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CkBAIC0z
NDQsNyArMzQ0LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZm
ZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRO
dW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFz
dGVib2FyZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKDApOwpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpnZXROdW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgU3RyCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5udW1iZXJPZkZpbGVzKCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighb3JpZ2luLmlzTnVs
bCgpLCBjb21wbGV0aW9uSGFuZGxlcih7IH0pKTsKIApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS50eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShvcmlnaW4p
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4m
IGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6d3JpdGVDdXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgVmVj
dG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNL
X0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIo
MCkpOwogCkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
Q3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFZlY3QKICAgICBj
b21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0
ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNh
bkFjY2Vzc1Bhc3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oY2hhbmdlQ291bnQp
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVt
SW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0
ZWJvYXJkVHlwZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBjaGFu
Z2VDb3VudCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNz
UGFzdGVib2FyZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKDApOwpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5jb3VudCgpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04o
IXBhc3RlYm9hcmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9KSk7CiAKQEAg
LTQwNiw3ICs0MDYsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgcwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRl
eCwgcGFzdGVib2FyZFR5cGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRV
UkxGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFjYW5BY2Nlc3NQYXN0ZWJvYXJkRGF0YShjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFt
ZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7CkBAIC00MTYs
NyArNDE2LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemUKICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHVybCksIFdURk1vdmUodGl0bGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlw
ZS5pc0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKHsgfSkpOwogCkBAIC00MzksNyArNDM5LDcg
QEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHMKICAgICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2l6ZSB9KTsKIH0KIAotdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdT
YWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmRUeXBlcyhjb25u
ZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNv
bnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
VVJMVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVi
b2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlVVJMVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogewogICAgIE1FU1NBR0VfQ0hF
Q0soIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSk7CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdAogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpEaWRXcml0ZVRvUGFzdGVib2FyZEFzeW5jaHJvbm91c2x5KHBhc3RlYm9hcmROYW1l
KSwgMCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bh
c3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29u
dGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkTmFt
ZS5pc0VtcHR5KCkpOwogCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24KICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkV3JpdGVU
b1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSksIDApOwogfQogCi12b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2Fy
ZEltYWdlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5KCkpOwogCkBAIC00
ODIsNyArNDgyLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VUb1Bhc3Rl
Ym9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkV3JpdGVUb1Bhc3RlYm9hcmRBc3luY2hyb25v
dXNseShwYXN0ZWJvYXJkTmFtZSksIDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdU
b1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7CiAgICAgTUVTU0FHRV9D
SEVDSyghcGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpKTsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0
ZWJvYXJkVHlwZS5pc0VtcHR5KCkgfHwgdGV4dC5pc0VtcHR5KCkpOwpAQCAtNDk0LDcgKzQ5NCw3
IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkRpZFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVi
b2FyZE5hbWUpLCAwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBk
YXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlm
aWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVw
ZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRleCBiYzdjYzBhNDhk
MDk2MTE3NTY0OTE3YTkwNWYzYjgxZjRkNDVlODk2Li4xNjkzZjgxZDM0MGE2NGM0YjE2MzM1MmE4
NTRjN2U1NjM1ZDA4NjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5jcHAKQEAgLTgwLDYyICs4MCw2MiBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlBh
c3RlYm9hcmRQcm94eTo6d2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
bwogI2lmICFQTEFURk9STShDT0NPQSkKIAogI2lmICFQTEFURk9STShHVEspCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAotdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5n
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0
cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9u
SGFuZGxlcigwKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGludDY0X3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9h
cmRJdGVtSW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJp
bmcmLCBpbnQ2NF90LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6bnVsbG9wdCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgaW50
NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBj
b25zdCBTdHJpbmcmLCBpbnQ2NF90LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEY6Om51bGxvcHQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21w
bGV0aW9uSGFuZGxlcigwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxG
cm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
IHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgeyB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9
CiAKICNpZiAhVVNFKExJQldQRSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKIH0KIAogI2VuZGlmIC8vICFVU0UoTElCV1BFKQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNV
UkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxl
Rm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGlu
ZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcm
JiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9LCB7IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkuaAppbmRleCA0MzRkMTc2NGQwZTBlZmY4MTJiMTJhNzQyNjUzNDIyYWZlZDBiYjBmLi5mNWNk
NTk1OGIyY2Y0MzM2YzViZDAyZmI2ZGRjZTNjNjAzZTE3ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtMjgsMTAgKzI4LDEyIEBACiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgog
I2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNl
dC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTg1LDQyICs4Nyw0MiBAQCBwcml2YXRlOgogICAg
IFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24mKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCB3cml0
ZVVSTFRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCB3cml0ZVdl
YkNvbnRlbnRUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICB2
b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAg
dm9pZCB3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKLSAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OworICAgIHZvaWQgd3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik7CisgICAgdm9pZCB3cml0ZVdlYkNvbnRl
bnRUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4p
OworICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsKKyAgICB2
b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPik7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2
b2lkIGdldE51bWJlck9mRmlsZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZv
aWQgZ2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYp
OwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIHBhdGhuYW1lcywg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBl
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYmKT4mJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0g
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDb2xvciYm
KT4mJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOwotICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZv
aWQgc2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFVS
TChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4m
Jik7Ci0gICAgdm9pZCBzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDY0X3QpPiYmKTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldE51bWJlck9mRmlsZXMoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIGdldFBh
c3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmIHBhdGhuYW1lcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+JiYpOwor
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIGdldFBh
c3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldFBh
c3RlYm9hcmRDb2xvcihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6Q29sb3ImJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFVSTChJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOworICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkVHlwZXMo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNl
dFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAg
dm9pZCBzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYm
KTsKICNlbmRpZgogCi0gICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25u
ZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJik7Ci0gICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwg
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKLSAgICB2b2lkIHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYpOwot
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
JiYpOwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24m
LCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiYmKT4mJik7Ci0gICAgdm9pZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYpOwotCi0gICAgdm9pZCB3cml0ZUN1c3RvbURhdGEo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYp
OwotICAgIHZvaWQgY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvbnRhaW5zVVJMU3Ry
aW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQg
dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBT
dHJpbmcmJiB0aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQ
Qzo6Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9p
ZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRs
ZSk+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlv
biYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmKTsKKyAg
ICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBp
bnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4+JiYpPiYmKTsKKworICAgIHZvaWQgd3JpdGVDdXN0b21EYXRhKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgdHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4m
Jik7CisgICAgdm9pZCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCBjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGlu
ZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYm
IHRpdGxlKT4mJik7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBnZXRUeXBlcyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
c3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
c3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhOTU2ZDVhNzYzZDEzNDRlOGU2MTBhZGI0
MTM0YTY3NTE1ZDhjYmJlLi5mMjNmODVjZDU1ODAyNmQwOTk4NGY2ODcxODgwMjFmYzhlNzhhNzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw0MiArMjIsNDIgQEAKIAogbWVzc2FnZXMgLT4gV2ViUGFz
dGVib2FyZFByb3h5IE5vdFJlZkNvdW50ZWQgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgV3JpdGVVUkxUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwgdXJs
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIFdhbnRzQ29ubmVjdGlvbgotICAgIFdyaXRlV2ViQ29u
dGVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29u
dGVudCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBXcml0ZUlt
YWdlVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2Fy
ZEltYWdlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIFdhbnRzQ29ubmVjdGlvbgotICAgIFdyaXRl
U3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQsIFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkgV2FudHNDb25uZWN0aW9uCi0gICAgVXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpCisgICAgV3JpdGVVUkxUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRVUkwgdXJsLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRlV2ViQ29udGVu
dFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29udGVu
dCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBXcml0ZUltYWdlVG9QYXN0ZWJvYXJkKHN0
cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlLCBTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIFdh
bnRzQ29ubmVjdGlvbgorICAgIFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgU3RyaW5nIHRleHQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHNDb25uZWN0aW9uCisgICAgVXBkYXRl
U3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpCiAjZW5kaWYKIAotICAgIFdyaXRlQ3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE+IGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGludDY0X3Qg
Y2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFR5cGVzU2FmZUZv
ckRPTVRvUmVhZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIG9yaWdpbikg
LT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBBbGxQYXN0ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50KSAtPiAoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4+IGFsbEluZm8pIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4gaW5mbykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgR2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkg
U3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAg
IFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KLSAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmlu
ZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgot
ICAgIENvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoU3RyaW5nIHR5cGUsIFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cyBXYW50c0Nv
bm5lY3Rpb24KKyAgICBXcml0ZUN1c3RvbURhdGEoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhPiBkYXRhLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJv
bm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4sIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCisgICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCkgLT4gKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+PiBhbGxJbmZvKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBJbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm8p
IFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVj
dGlvbgorICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5n
IHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgs
IFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMgV2FudHND
b25uZWN0aW9uCisgICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBT
dHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgaGFuZGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb250YWlu
c1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKFN0cmluZyB0eXBlLCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChi
b29sIHJlc3VsdCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCi0gICAgR2V0TnVtYmVyT2ZGaWxlcyhT
dHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZpbGVzKSBTeW5jaHJv
bm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29u
bmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5h
bWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNp
b25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4g
KFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3Rl
Ym9hcmRTdHJpbmdzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHN0cmluZ3MpIFN5bmNocm9ub3VzIFdhbnRzQ29u
bmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3Rl
Ym9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChpbnQ2NF90IGNoYW5n
ZUNvdW50KSBTeW5jaHJvbm91cwotICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpIC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCi0gICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChT
dHJpbmcgdXJsU3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBBZGRQYXN0
ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJv
YXJkVHlwZXMpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0
b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkg
LT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAg
IFNldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9y
IGNvbG9yKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0
aW9uCi0gICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJpbmcpIC0+IChpbnQ2NF90IGNoYW5n
ZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkQnVm
ZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIC0+IChpbnQ2NF90IGNoYW5n
ZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBDb250YWluc1VSTFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChib29sIHJlc3Vs
dCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgVVJMU3RyaW5nU3VpdGFibGVGb3JM
b2FkaW5nKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRs
ZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rp
b24KKyAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlw
ZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRQYXRobmFt
ZXNGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmlu
Zz4gcGF0aG5hbWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRi
b3hFeHRlbnNpb25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJv
YXJkU3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmlu
ZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRT
dHJpbmdzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxT
dHJpbmc+IHN0cmluZ3MpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3Rl
Ym9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9h
cmRUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29u
bmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90
IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cworICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisg
ICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsU3RyaW5nKSBTeW5jaHJv
bm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBBZGRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGludDY0X3Qg
Y2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldFBhc3RlYm9h
cmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yIGNvbG9yLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VD
b3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgU2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0
cmluZyBzdHJpbmcsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+
IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBT
ZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5n
ZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb250YWluc1VSTFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMg
V2FudHNDb25uZWN0aW9uCisgICAgVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkg
LT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9u
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2xpYndwZS9XZWJQYXN0ZWJvYXJkUHJveHlMaWJXUEUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxpYldQRS5jcHAKaW5kZXgg
YjkxMDVjODU4ZjdjOWM3ZjJiMzkwNDMxYzdhNDZhZGEwOGY0ZTM2MC4uOWE1NzZhMmM5NmJiNTlm
ZjlkMGIzYjk5MjM5Y2VkNTUyZjU4YzdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxpYldQRS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxpYldQRS5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmcKICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYs
IHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0
Zm9ybVBhc3RlYm9hcmQoKS5yZWFkU3RyaW5nKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
aW5kZXggMjQ4MDBmNmM1OTM1NGVhNWY1YWI1ODRkOTZiODE2YTc0ZGU2Y2MwOC4uYTJjOGJiMWE0
NzE3OGNjMGMzNDdhZGM0N2JkMDY0OThkYjU3YzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC03OCw2ICs3OCw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUERGRG9jdW1l
bnRJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2VQYXN0ZWJvYXJkQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdp
bkRhdGEuaD4KQEAgLTI1OTIsMTAgKzI1OTMsMTEgQEAgdm9pZCBQREZQbHVnaW46Om9wZW5XaXRo
TmF0aXZlQXBwbGljYXRpb24oKQogdm9pZCBQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9h
cmQoTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU0FycmF5ICppdGVtcywgTlNBcnJheSAqdHlw
ZXMpCiB7CiAgICAgYXV0byBwYXN0ZWJvYXJkVHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4odHlw
ZXMpOworICAgIGF1dG8gcGFnZUlkZW50aWZpZXIgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmNvcmVG
cmFtZSgpID8gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnBhZ2VJRCgpIDogV1RGOjpudWxsb3B0Owog
CiAgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudDsKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJv
YXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlcyksCisgICAgd2ViUHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRU
eXBlcywgcGFnZUlkZW50aWZpZXIpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAKICAg
ICBmb3IgKE5TVUludGVnZXIgaSA9IDAsIGNvdW50ID0gaXRlbXMuY291bnQ7IGkgPCBjb3VudDsg
KytpKSB7CkBAIC0yNjA5LDE1ICsyNjExLDE1IEBAIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1z
VG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5n
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIHx8IFt0eXBlIGlzRXF1YWxUb1N0cmluZzpO
U1Bhc3RlYm9hcmRUeXBlU3RyaW5nXSkgewotICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBwbGFpblRleHRTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0
YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7Ci0gICAgICAgICAgICB3ZWJQ
cm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1l
LCB0eXBlLCBwbGFpblRleHRTdHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAw
KTsKKyAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
OworICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9y
VHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3RyaW5nLmdldCgpLCBwYWdlSWRl
bnRpZmllciksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJp
bmdGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAg
ICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgICAgIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVm
ZmVyLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1v
cnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIG1lbWNweShzaGFyZWRN
ZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBh
c3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXplKCkgfSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlOjpSZXBseShu
ZXdDaGFuZ2VDb3VudCksIDApOworICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQ
YXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlci0+c2l6ZSgpIH0sIHBhZ2VJZGVu
dGlmaWVyKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgICAgIH0KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDM2NmZiODExNDU3MGU5NGU4
ZWY5MTRmM2MyMTA2OTgzMzQ3YTY1ZTQuLjQ5NTQwNDNiYzA4MTE3ZjVlNzI3MDIwMmJjYTEwYzk4
ZTJmM2FiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC01Niw2ICs1
Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtUGFzdGVi
b2FyZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2VyLmg+CkBAIC0xMDksMTAg
KzExMCwxOCBAQCBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxv
YlJlZ2lzdHJ5KCkKICAgICByZXR1cm4gbmV3IEJsb2JSZWdpc3RyeVByb3h5OwogfQogCitzdGF0
aWMgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyKGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQoreworICAgIGlmICghaXM8UGFnZVBhc3RlYm9hcmRDb250ZXh0
Pihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBk
b3duY2FzdDxQYWdlUGFzdGVib2FyZENvbnRleHQ+KCpjb250ZXh0KS5wYWdlSUQoKTsKK30KKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogLy8gUGFzdGVib2FyZFN0cmF0ZWd5CiAKLXZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0
aGUgb3ZlcnJpZGVzLgogICAgIC8vIFRoZSBwdXJwb3NlIG9mIHRoZSBvdmVycmlkZXMgaXMgdG8g
YXZvaWQgbWVzc2FnaW5nIGJhY2sgdG8gdGhlIFVJIHByb2Nlc3MuCkBAIC0xMjEsMTAgKzEzMCwx
MCBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIGlmICghdHlwZXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpH
ZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8Y2hhcj4gb3ZlcnJp
ZGVCdWZmZXI7CkBAIC0xMzMsNzMgKzE0Miw3MyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJgog
CiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUg
cGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRs
ZTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQnVm
ZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZTo6UmVwbHkoaXBjSGFu
ZGxlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZEJ1ZmZlckZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBwYWdlSWRl
bnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3Rl
Ym9hcmRCdWZmZXJGb3JUeXBlOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKICAgICBpZiAoaXBjSGFu
ZGxlLmhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBj
SGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4o
c2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCi12
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3Ry
aW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkg
c2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwg
cGFzdGVib2FyZFR5cGUpLAorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Okdl
dFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlw
ZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVz
LCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KSwgMCk7CiAgICAgQVNTRVJUKHBhdGhuYW1l
cy5zaXplKCkgPT0gc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCkpOwogICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShzYW5kYm94RXh0ZW5zaW9uc0hhbmRs
ZUFycmF5KTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTdHJpbmcgdmFsdWU7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5
cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6R2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KHZhbHVlKSwgMCk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBwYWdlSWRlbnRpZmllcihjb250
ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdG
b3JUeXBlOjpSZXBseSh2YWx1ZSksIDApOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotVmVjdG9y
PFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorVmVj
dG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB2
YWx1ZXM7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2Fy
ZFN0cmluZ3NGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZTo6UmVwbHko
dmFsdWVzKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFz
dGVib2FyZFN0cmluZ3NGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgcGFn
ZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQ
YXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGU6OlJlcGx5KHZhbHVlcyksIDApOwogICAgIHJldHVybiB2
YWx1ZXM7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgY2hhbmdlQ291bnQgeyAwIH07
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2FpdEZvclBlbmRpbmdQYXN0ZWJvYXJkV3Jp
dGVzVG9GaW5pc2gocGFzdGVib2FyZE5hbWUpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OkdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChwYXN0ZWJvYXJkTmFtZSksIE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudDo6UmVwbHko
Y2hhbmdlQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpH
ZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENoYW5n
ZUNvdW50OjpSZXBseShjaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBjaGFuZ2VDb3VudDsK
IH0KIAotQ29sb3IgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcihjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQorQ29sb3IgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcihjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBDb2xvciBjb2xvcjsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpHZXRQYXN0ZWJvYXJkQ29sb3IocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KGNvbG9yKSwgMCk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENvbG9yKHBhc3RlYm9h
cmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkdldFBhc3RlYm9hcmRDb2xvcjo6UmVwbHkoY29sb3IpLCAwKTsKICAgICByZXR1cm4g
Y29sb3I7CiB9CiAKLVVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6R2V0UGFzdGVib2FyZFVSTChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRVUkw6OlJlcGx5KHVybFN0cmluZyksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRVUkwocGFzdGVi
b2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6R2V0UGFzdGVib2FyZFVSTDo6UmVwbHkodXJsU3RyaW5nKSwgMCk7CiAgICAgcmV0
dXJuIFVSTCh7IH0sIHVybFN0cmluZyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0
ZWJvYXJkVHlwZXMpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBZGRQYXN0ZWJvYXJk
VHlwZXM6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJv
YXJkVHlwZXMsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwog
ICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAgfTsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBh
c3RlYm9hcmRUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9h
cmRUeXBlczo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhc3Rl
Ym9hcmRUeXBlcywgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7
CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0
X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUo
KSkgewpAQCAtMjEyLDgxICsyMjEsODEgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmkKICAgICAg
ICAgfQogICAgIH0KICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBh
c3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBX
VEZNb3ZlKGhhbmRsZSksIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCB9KSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGU6OlJlcGx5KG5l
d0NoYW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
U2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBl
LCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwIH0sIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGU6OlJlcGx5KG5ld0No
YW5nZUNvdW50KSwgMCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3Rl
Ym9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkws
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQ7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFVSTChwYXN0ZWJvYXJkVVJMLCBwYXN0
ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRV
Ukw6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFVSTChwYXN0ZWJvYXJkVVJMLCBwYXN0ZWJvYXJkTmFt
ZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpTZXRQYXN0ZWJvYXJkVVJMOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVy
biBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
K2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQogewogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZENvbG9yKHBhc3RlYm9h
cmROYW1lLCBjb2xvciksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9h
cmRDb2xvcjo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQ29sb3IocGFzdGVib2FyZE5hbWUsIGNvbG9y
LCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlNldFBhc3RlYm9hcmRDb2xvcjo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1
cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpz
ZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgbmV3Q2hh
bmdlQ291bnQgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBz
dHJpbmcpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUsIHN0cmluZywgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVw
bHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAK
LWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK2ludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9m
RmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgdWludDY0X3QgbnVtYmVyT2ZGaWxlcyB7IDAgfTsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXROdW1iZXJPZkZpbGVzKHBhc3RlYm9h
cmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0TnVtYmVyT2ZGaWxlczo6
UmVwbHkobnVtYmVyT2ZGaWxlcyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkdldE51bWJlck9mRmlsZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0TnVtYmVyT2ZGaWxlczo6
UmVwbHkobnVtYmVyT2ZGaWxlcyksIDApOwogICAgIHJldHVybiBudW1iZXJPZkZpbGVzOwogfQog
Ci1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZv
ckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2Jvb2wgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBib29sIHJlc3VsdDsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpD
b250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhwYXN0ZWJvYXJkTmFtZSksIE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2Fk
aW5nOjpSZXBseShyZXN1bHQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpDb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhwYXN0ZWJvYXJkTmFtZSwg
cGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpD
b250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZzo6UmVwbHkocmVzdWx0KSwgMCk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJs
U3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJpbmdTdWl0
YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU3RyaW5nIHVybDsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVUkxTdHJpbmdTdWl0YWJsZUZv
ckxvYWRpbmcocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpV
UkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmc6OlJlcGx5KHVybCwgdGl0bGUpLCAwKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRp
bmcocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nOjpSZXBseSh1cmws
IHRpdGxlKSwgMCk7CiAgICAgcmV0dXJuIHVybDsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25z
dCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2Fy
ZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53aWxsV3Jp
dGVUb1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVVSTFRvUGFzdGVib2FyZCh1cmwsIHBhc3RlYm9h
cmROYW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVVSTFRv
UGFzdGVib2FyZCh1cmwsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSks
IDApOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQo
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndpbGxXcml0ZVRvUGFzdGVib2Fy
ZEFzeW5jaHJvbm91c2x5KHBhc3RlYm9hcmROYW1lKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OldyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb250ZW50LCBwYXN0ZWJvYXJk
TmFtZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVXZWJDb250
ZW50VG9QYXN0ZWJvYXJkKGNvbnRlbnQsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIDApOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiBpbWFnZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRv
UGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIGltYWdlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmRBc3lu
Y2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpXcml0ZUltYWdlVG9QYXN0ZWJvYXJkKGltYWdlLCBwYXN0ZWJvYXJkTmFtZSksIDApOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVJbWFnZVRvUGFzdGVib2FyZChp
bWFnZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgMCk7CiB9CiAK
LXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmRB
c3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSwgdGV4dCwgcGFz
dGVib2FyZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRl
U3RyaW5nVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlLCB0ZXh0LCBwYXN0ZWJvYXJkTmFtZSwg
cGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpVcGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMs
IHBhc3RlYm9hcmROYW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpV
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmROYW1l
LCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIDApOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKQEAgLTM1Niw1MiArMzY1LDUyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
CiAKICNlbmRpZiAvLyBVU0UoTElCV1BFKQogCi1WZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQorVmVjdG9yPFN0cmluZz4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUocGFzdGVib2FyZE5hbWUsIG9yaWdpbiksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlOjpSZXBseSh0eXBlcyksIDApOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdy
aXRlKHBhc3RlYm9hcmROYW1lLCBvcmlnaW4sIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGU6
OlJlcGx5KHR5cGVzKSwgMCk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCi1pbnQ2NF90IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0
ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgbmV3Q2hhbmdl
Q291bnQgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVD
dXN0b21EYXRhKGRhdGEsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6V3JpdGVDdXN0b21EYXRhOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlQ3VzdG9tRGF0YShkYXRhLCBwYXN0
ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpXcml0ZUN1c3RvbURhdGE6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAg
ICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9y
VHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OkNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGU6OlJlcGx5KHJlc3VsdCksIDAp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVy
KGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNTdHJpbmdT
YWZlRm9yRE9NVG9SZWFkRm9yVHlwZTo6UmVwbHkocmVzdWx0KSwgMCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1z
Q291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIHVpbnQ2NF90IGl0
ZW1zQ291bnQgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudDo6UmVwbHkoaXRlbXNDb3VudCksIDAp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVtc0NvdW50OjpSZXBseShpdGVt
c0NvdW50KSwgMCk7CiAgICAgcmV0dXJuIGl0ZW1zQ291bnQ7CiB9CiAKLU9wdGlvbmFsPFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50KQorT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQogewogICAgIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxJbmZvOwot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5m
byhwYXN0ZWJvYXJkTmFtZSwgY2hhbmdlQ291bnQpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm86OlJlcGx5KGFsbEluZm8pLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVi
b2FyZE5hbWUsIGNoYW5nZUNvdW50LCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5m
byksIDApOwogICAgIHJldHVybiBhbGxJbmZvOwogfQogCi1PcHRpb25hbDxQYXN0ZWJvYXJkSXRl
bUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQpCitPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewogICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mbzsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFtZSwgY2hhbmdlQ291bnQpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwg
MCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUsIGNoYW5nZUNvdW50LCBwYWdlSWRlbnRp
Zmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXg6OlJlcGx5KGluZm8pLCAwKTsKICAgICByZXR1cm4gaW5mbzsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0
ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
bmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250
ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CiAgICAgaWYgKGlwY0hhbmRsZS5oYW5kbGUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC00MDksMTcgKzQxOCwxNyBAQCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaQogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwg
aXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAotVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IFN0cmluZyB1cmxTdHJpbmc7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5n
LCB0aXRsZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRV
UkxGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJv
YXJkOjpSZXBseSh1cmxTdHJpbmcsIHRpdGxlKSwgMCk7CiAgICAgcmV0dXJuIFVSTCh7IH0sIHVy
bFN0cmluZyk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGluZGV4
LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgMCk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkOjpSZXBseSh2YWx1ZSksIDApOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGE0ODM3MDk3ODllNTY4Yjc4OGYyYzU4MzNjMGZm
NTkzNzgxMDdjOWMuLmIzOGEwYjFkMGU1ZjlmODFiNTFlZjk2MjM5N2Y3NDhmYzg0YzhkMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDMyICs0NywzMiBAQCBwcml2YXRl
OgogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjogUGFzdGVib2FyZFVS
TCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgd3Jp
dGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6IFBhc3RlYm9hcmRV
UkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdy
aXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaW50IGdldE51bWJlck9mRmlsZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+
JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGdl
dFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBjaGFuZ2VDb3VudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Cisg
ICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogCi0gICAgaW50NjRfdCBhZGRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50
NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBz
ZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZm
ZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogCi0gICAg
Ym9vbCBjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JM
b2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJy
aWRlOworICAgIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAg
ICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CkBAIC04OCwxNSArODgsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIGludCBnZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2
NF90IGNoYW5nZUNvdW50KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIG92ZXJyaWRlOwotICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90
IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE+JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb250YWluc1N0cmluZ1Nh
ZmVGb3JET01Ub1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50IGdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gdHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CisgICAgaW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBjb250YWluc1N0cmluZ1Nh
ZmVGb3JET01Ub1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5k
ZXggMzZjZDFjYWUwMGU5YzZlY2QzZGE3MWQ5OGUzMDMwYjExMTcxMWIzOS4uMzc4ZDRkNjI1NTNh
YzIzMDM4ZWU2OThkNDA5MDY0ODdiYzM1NWYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKQEAgLTQ4LDM5ICs0OCwzOSBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVi
b2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHdyaXRlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
ZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgotICAgIFN0cmluZyByZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKLSAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJp
ZGU7Ci0gICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIG92ZXJyaWRlOwotICAgIE9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCkgb3ZlcnJpZGU7Ci0gICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFZlY3Rv
cjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3QgY2hh
bmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgV2Vi
Q29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFVSTCBy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0UGF0
aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFN0cmluZyBzdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IGNoYW5nZUNvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBV
UkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAKLSAgICBpbnQ2NF90IHdyaXRlQ3VzdG9tRGF0YShj
b25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZl
Rm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOworICAgIGludDY0X3Qgd3JpdGVDdXN0b21EYXRhKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogCi0gICAgaW50NjRfdCBhZGRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBib29sIGNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBTdHJp
bmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBp
bnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgYm9vbCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBjb250YWluc1VSTFN0cmluZ1N1aXRh
YmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFN0cmluZyB1cmxTdHJpbmdTdWl0
YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBlYmJiM2JlYTZlZGJiNDdiY2I0ZTJkMGIy
OTdmY2QwNWViYTYzMjk1Li4xOTNmMjBkNGUwNTIxMDRmOTU4MzM1ZjYxNzM1NWZiODMxOTc4ZTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMTIsMTU5ICsxMTIsMTU5IEBA
IEJsb2JSZWdpc3RyeSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnko
KQogICAgIHJldHVybiBuZXcgV2ViQmxvYlJlZ2lzdHJ5OwogfQogCi12b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
YnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
Cit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAg
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRQYXRobmFtZXNGb3JUeXBlKHBh
dGhuYW1lcywgcGFzdGVib2FyZFR5cGUpOwogfQogCi1WZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitWZWN0b3I8U3RyaW5nPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5h
bGxTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnN0cmluZ0ZvclR5cGUocGFz
dGVib2FyZFR5cGUpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y2hhbmdl
Q291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKTsKIH0KIAotQ29sb3IgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorQ29sb3IgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuY29sb3IoKTsgICAgCiB9CiAKLVVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorVVJMIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS51cmwoKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFkZFR5cGVzKHBhc3RlYm9hcmRUeXBlcyk7CiB9
CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlw
ZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VVJMKHBhc3RlYm9hcmRVUkwpOwog
fQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldENvbG9yKGNvbG9yKTsKIH0KIAot
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFN0
cmluZ0ZvclR5cGUoc3RyaW5nLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLWludCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK2ludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLm51bWJlck9mRmlsZXMoKTsK
IH0KIAotVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp0eXBlc1NhZmVGb3JE
T01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIG9yaWdpbikKK1ZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS50eXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZShvcmlnaW4pOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRhKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlKQorYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZSh0eXBlKTsKIH0KIAotT3B0
aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KQorT3B0aW9uYWw8V2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2
NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChpbmRleCwgY2hhbmdlQ291bnQpOwogfQogCi1PcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCkKK09wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNoYW5nZUNvdW50KTsKIH0KIAotaW50IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK2ludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsK
ICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CiAKLVVS
TCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkucmVhZFVSTChpbmRleCwgdGl0bGUpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCB0eXBlKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNV
UkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKCk7
CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQorU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS51cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcodGl0bGUpOwogfQogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25z
dCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLndyaXRlKHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0
ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVu
dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVu
dCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3Jp
dGUoY29udGVudCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIGltYWdlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgaW1hZ2UsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGltYWdlKTsKIH0KIAotdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRUeXBlLCB0
ZXh0KTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRl
U3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVy
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420861</attachid>
            <date>2021-02-18 12:46:41 -0800</date>
            <delta_ts>2021-02-18 16:01:46 -0800</delta_ts>
            <desc>Try to fix GTK build</desc>
            <filename>bug-222071-20210218124640.patch</filename>
            <type>text/plain</type>
            <size>196758</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZhMDIyODNhNTc3MDMw
NmI1OGVkNThkNTgxMmM1ODkyZmUxZDhhZS4uZmU3ZDNmZDFlMDQwMzEwNzA5OGI5MDdjMTgxYmE3
N2M2MDMyMjgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBsdW1iIGFuIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFdlYlBhc3RlYm9hcmRQcm94eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBVcGRhdGUgdmFyaW91cyBgUGFz
dGVib2FyZFN0cmF0ZWd5YCBtZXRob2RzIHRvIGFkZGl0aW9uYWxseSB0YWtlIGEgYGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KmA7IGFkZGl0aW9uYWxseQorICAgICAgICB1cGRhdGUgY2FsbCBzaXRl
cyBvZiBgUGFzdGVib2FyZFN0cmF0ZWd5YCBtZXRob2RzIHRvIHBhc3MgaW4gYSBjb250ZXh0IChl
LmcuIGBQYXN0ZWJvYXJkOjpjb250ZXh0KClgLCBpbiB0aGUKKyAgICAgICAgdmFzdCBtYWpvcml0
eSBvZiBjYXNlcyBiZWxvdykuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rp
b24pOgorICAgICAgICAqIHBhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0Zv
ckRyYWdIYW5kbGluZ01ldGhvZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1J
bmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpyZWFkVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMVHlwZUlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6Om51bWJlck9mRmlsZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5hbWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6YXNDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6Y29udGFpbnNQcm9taXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmZpbGVDb250ZW50U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6d3JpdGVDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNoYW5nZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlQ3VzdG9tRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OmNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVBs
YWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVUkxBbG9uZ3NpZGVBdHRhY2htZW50SWZOZWNlc3Nh
cnkpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRl
bGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6Omhhc0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6cmVhZFBsYXRmb3JtVmFsdWVzQXNTdHJpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OndyaXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJl
YWRGaWxlUGF0aHMpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6Ondy
aXRlUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMRm9yVHlwZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6aGFz
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNB
c1N0cmluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEZpbGVQYXRocyk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UpOgorCiAyMDIxLTAyLTE4ICBDb21taXQg
UXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
ZXZlcnRpbmcgcjI3Mjg0OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGE2NGZiYWYzNzk3YmI5ZjQxOTNhZWVkYmJj
NWEwZDZkZDk5YWVjOS4uNjA0MmUwZmYyYjhiZDJjNjk4MWIyNDBjMjZlN2U0NDQzZmZhNzA1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMjEtMDItMTggIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHRocm91Z2ggV2ViUGFzdGVib2FyZFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIwNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBgY29uc3QgUGFzdGVib2FyZENvbnRleHQqYCBh
cmd1bWVudHMgdG8gdGhlIGBQYXN0ZWJvYXJkU3RyYXRlZ3lgIG1ldGhvZHMgb24gYFdlYlBsYXRm
b3JtU3RyYXRlZ2llc2AsIGNvbnZlcnQKKyAgICAgICAgdGhlbSB0byBgUGFnZUlkZW50aWZpZXJg
cywgYW5kIHNlbmQgdGhlbSBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIHZpYSBgV2ViUGFzdGVib2Fy
ZFByb3h5YCBtZXRob2RzLgorCisgICAgICAgIFdoaWxlIGN1cnJlbnRseSB1bnVzZWQgaW5zaWRl
IGBXZWJQYXN0ZWJvYXJkUHJveHlgLCB0aGUgbmV4dCBwYXRjaCB3aWxsIGF0dGVtcHQgdG8gdXNl
IHRoZXNlIHBhZ2UgaWRlbnRpZmllcnMgdG8KKyAgICAgICAgcmV0cmlldmUgYSBkYXRhIG93bmVy
IHR5cGUgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBgV2ViUGFnZVByb3h5YCwgYW5kIHRoZW4gZm9y
d2FyZCB0aGlzIGRhdGEgb3duZXIgdHlwZSB0byB0aGUKKyAgICAgICAgYFBsYXRmb3JtUGFzdGVi
b2FyZGAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2Fy
ZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkUGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDaGFuZ2VDb3Vu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZENv
bG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJk
VVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJvYXJk
VHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVi
b2FyZFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVi
b2FyZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0
ZWJvYXJkU3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5
cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldE51bWJlck9mRmls
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp3
cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmFs
bFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OndyaXRlVVJMVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3Rv
bURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9h
cmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJv
YXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRv
UmVhZEZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRh
aW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZFByb3h5Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFz
dGVib2FyZFByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5
Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbGli
d3BlL1dlYlBhc3RlYm9hcmRQcm94eUxpYldQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBh
Z2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0
aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YWxsU3RyaW5nc0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNoYW5nZUNvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFVSTCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9mRmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmxTdHJp
bmdTdWl0YWJsZUZvckxvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMjEtMDItMTggIFBlciBB
cm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBSZW1vdmUgYWNjZXNz
IHRvIGF1ZGlvIElPS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggN2Q5ZTNhMDI5
NGVjZWE3NmNmY2Y4NGFlNDc0YTk4MmExNDRkM2NkZi4uY2I5ZDhlNGJiZDU3NzdhMTZjNmFmOTIx
MTgzYTE1YTM4NDY4YzJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQzIEBACisyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFBsdW1iIGFuIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdoIFdl
YlBhc3RlYm9hcmRQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyMDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAg
ICAgICBBZGQgYGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KmAgYXJndW1lbnRzIHRvIHRoZSBgUGFz
dGVib2FyZFN0cmF0ZWd5YCBtZXRob2RzIG9uIGBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNgLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxs
U3RyaW5nc0ZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdG
b3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y2hhbmdlQ291bnQpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVybCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFk
ZFR5cGVzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VVJMKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0Q29sb3IpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRT
dHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0TnVtYmVy
T2ZGaWxlcyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVD
dXN0b21EYXRhKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNTdHJp
bmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5n
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMpOgorCiAyMDIxLTAyLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFBsdW1iIGFuIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB0aHJvdWdo
IFBhc3RlYm9hcmQtcmVsYXRlZCBjb2RlcGF0aHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tCmluZGV4IDMxZjAxZjc5NjJiZmE4NDdmNjQyZjlmNjc5MDk5NDIw
MGMwMGUyZTMuLmE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNDcsNiArNDcs
NyBAQAogI2ltcG9ydCAiSFRNTFNwYW5FbGVtZW50LmgiCiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3Rl
Ym9hcmRUeXBlcy5oIgogI2ltcG9ydCAiTGVnYWN5V2ViQXJjaGl2ZS5oIgorI2ltcG9ydCAiUGFn
ZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQ
YXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgpAQCAt
MjQ3LDkgKzI0OCwxMCBAQCB2b2lkIEVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9u
KCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgdHlw
ZXMuYXBwZW5kKFN0cmluZyhsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKSk7CisgICAgYXV0
byBjb250ZXh0ID0gUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUobV9kb2N1bWVudC5wYWdl
SUQoKSk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBO
U0ZpbmRQYm9hcmQpOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0U3RyaW5nRm9yVHlwZShXVEZNb3ZlKHN0cmluZ0Zyb21TZWxlY3Rpb24pLCBsZWdh
Y3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBOU0ZpbmRQYm9hcmQpOworICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIE5TRmluZFBi
b2FyZCwgY29udGV4dC5nZXQoKSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKFdURk1vdmUoc3RyaW5nRnJvbVNlbGVjdGlv
biksIGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIE5TRmluZFBib2FyZCwgY29udGV4dC5n
ZXQoKSk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZWxzZQogICAg
IGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCAzMDNhZTViM2IyZjA2MWZlZGM1YzY1
NGQzYjk3NDNmNWMyN2RkZmU3Li5jNDBlMzAxYWJlODFmMDFjYzI0NzE3ODI5NTUzM2U4MzYzODk2
ODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQpA
QCAtMTQ1LDcgKzE0NSw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAot
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+dXBkYXRlU3Vw
cG9ydGVkVHlwZUlkZW50aWZpZXJzKHN1cHBvcnRlZFR5cGVzLCBkcmFnRGF0YS5wYXN0ZWJvYXJk
TmFtZSgpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBkcmFnRGF0YS5jcmVhdGVQYXN0ZWJvYXJkQ29u
dGV4dCgpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKHN1cHBvcnRlZFR5cGVzLCBkcmFnRGF0YS5w
YXN0ZWJvYXJkTmFtZSgpLCBjb250ZXh0LmdldCgpKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDlm
MTZkODg2MWQxZWExNWY1MTM5MzQzNWEzZTRlNWJjMGE3ZGJmMjMuLjdjMTBhZWMzY2Y1NjNhMDdj
Y2RmMTVkZmQzNWIyZGQ3YmExZTAzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUlu
Zm8+PiBQYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdAogewogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5hbGxQ
YXN0ZWJvYXJkSXRlbUluZm8obmFtZSgpLCBtX2NoYW5nZUNvdW50KTsKKyAgICAgICAgcmV0dXJu
IHN0cmF0ZWd5LT5hbGxQYXN0ZWJvYXJkSXRlbUluZm8obmFtZSgpLCBtX2NoYW5nZUNvdW50LCBj
b250ZXh0KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KQEAgLTc1LDcg
Kzc1LDcgQEAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjpwYXN0ZWJv
YXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdAogewogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKSkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5pbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KGluZGV4LCBuYW1lKCksIG1fY2hhbmdlQ291bnQpOworICAgICAgICByZXR1cm4gc3Ry
YXRlZ3ktPmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG5hbWUoKSwgbV9jaGFuZ2VD
b3VudCwgY29udGV4dCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKICNlbmRp
ZgpAQCAtODUsMjEgKzg1LDIxIEBAIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVi
b2FyZDo6cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3QKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewog
ICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKSkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSk7CisgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCkpCi0gICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGluZGV4LCB0eXBlLCBuYW1lKCkpOworICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCiBVUkwgUGFzdGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5k
ZXgsIFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4gc3RyYXRl
Z3ktPnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbmRleCwgbmFtZSgpLCB0aXRsZSk7CisgICAgICAg
IHJldHVybiBzdHJhdGVneS0+cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBuYW1lKCksIHRp
dGxlLCBjb250ZXh0KCkpOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggYTI3MWMwZTg1NGMzZDg0Nzc1OTYw
YzMzNjI5MDNkZmY5ZjkyMWVlMi4uMmNjOWIwMDRmYTczM2YyMzY0MzQ2ODYyMmZhYmNhNTEzNzIx
YmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgK
QEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Citj
bGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xh
c3MgU2VsZWN0aW9uRGF0YTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTQyLDQzICs0Myw0MyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3kg
ewogcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0
IFBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkSW1h
Z2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
ZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9h
cmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
ZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90
IGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0
dWFsIENvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZp
cnR1YWwgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVh
bCBpbnQ2NF90IGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Cisg
ICAgdmlydHVhbCBVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50IGdldE51bWJlck9mRmlsZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CiAKLSAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAg
IHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1
YWwgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29s
b3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2
NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOworICAgIHZpcnR1YWwg
aW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmly
dHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVh
bCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90
IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZv
ckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwg
U3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zVVJM
U3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgotICAgIHZpcnR1
YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlKSA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KSA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25h
bDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpID0gMDsKLSAgICB2
aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFVS
TCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZp
cnR1YWwgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludCBnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4pID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgd3JpdGVDdXN0b21E
YXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zU3RyaW5nU2FmZUZv
ckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRf
dCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwgVmVj
dG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KaW5kZXggZTQz
M2VkYjM4ZThjNThhMDA2NTRkYjVhNTllMWJjZDQwOTdhM2QwOS4uYjUyZjdiODFjZmVkMmYzY2M0
MDVmZjJkY2Q5MWVjYjE2Y2I0ODZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0xNjIsNyArMTYyLDggQEAgRHJhZ0RhdGE6OkRyYWdE
YXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24KIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMVHlwZUlkZW50aWZpZXIoKSBjb25z
dAogewogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUp
OworICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIHR5cGVzLmNvbnRh
aW5zKHVybFBhc3RlYm9hcmRUeXBlKCkpOwogfQogICAgIApAQCAtMTc0LDcgKzE3NSw4IEBAIGJv
b2wgRHJhZ0RhdGE6OmNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0CiBib29sIERyYWdEYXRhOjpjb250
YWluc0NvbG9yKCkgY29uc3QKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVQYXN0ZWJvYXJkQ29u
dGV4dCgpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQuZ2V0KCkpOwogICAgIHJl
dHVybiB0eXBlcy5jb250YWlucyhjb2xvclBhc3RlYm9hcmRUeXBlKCkpOwogfQogCkBAIC0xODUs
MTkgKzE4NywyMSBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0ZpbGVzKCkgY29uc3QKIAogdW5z
aWduZWQgRHJhZ0RhdGE6Om51bWJlck9mRmlsZXMoKSBjb25zdAogewotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldE51bWJlck9mRmlsZXMo
bV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENv
bnRleHQoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5nZXROdW1iZXJPZkZpbGVzKG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQuZ2V0KCkp
OwogfQogCiBWZWN0b3I8U3RyaW5nPiBEcmFnRGF0YTo6YXNGaWxlbmFtZXMoKSBjb25zdAogewor
ICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5h
bWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0
VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQuZ2V0KCkpOwogICAgIGlmICh0
eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSkp
KQogICAgICAgICByZXR1cm4gZmlsZU5hbWVzKCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1
bHRzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0
UGF0aG5hbWVzRm9yVHlwZShyZXN1bHRzLCBTdHJpbmcobGVnYWN5RmlsZW5hbWVzUGFzdGVib2Fy
ZFR5cGUoKSksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0UGF0aG5hbWVzRm9yVHlwZShyZXN1bHRzLCBTdHJpbmco
bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQuZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHRzOwogI2Vsc2UKICAgICByZXR1cm4gZmlsZU5h
bWVzKCk7CkBAIC0yMDYsOCArMjEwLDkgQEAgVmVjdG9yPFN0cmluZz4gRHJhZ0RhdGE6OmFzRmls
ZW5hbWVzKCkgY29uc3QKIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25z
dAogeworICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CiAgICAg
VmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1cm4gdHlwZXMuY29u
dGFpbnMoc3RyaW5nUGFzdGVib2FyZFR5cGUoKSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMo
cnRmZFBhc3RlYm9hcmRUeXBlKCkpCkBAIC0yMTUsNyArMjIwLDcgQEAgYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgfHwg
dHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCkpKQog
I2VuZGlmCi0gICAgICAgIHx8IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZSh1cmxQYXN0ZWJvYXJk
VHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgfHwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRG
b3JUeXBlKHVybFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQuZ2V0
KCkpOwogfQogCiBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKQEAgLTIzNiw3
ICsyNDEsOCBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKIAogQ29sb3Ig
RHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNvbG9yKG1fcGFzdGVib2FyZE5hbWUpOworICAg
IGF1dG8gY29udGV4dCA9IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCk7CisgICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29sb3IobV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dC5nZXQoKSk7CiB9CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29t
cGF0aWJsZUNvbnRlbnQoRHJhZ2dpbmdQdXJwb3NlIHB1cnBvc2UpIGNvbnN0CkBAIC0yNTAsOCAr
MjU2LDkgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2lu
Z1B1cnBvc2UgcHVycG9zZSkgY29uc3QKICAgICBpZiAocHVycG9zZSA9PSBEcmFnZ2luZ1B1cnBv
c2U6OkZvckVkaXRpbmcgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSAmJiBjb250YWluc0ZpbGVzKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRl
eHQoKTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1l
KTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5
cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkpCiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKGh0bWxQ
YXN0ZWJvYXJkVHlwZSgpKQpAQCAtMjc1LDIzICsyODIsMjUgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zUHJvbWlzZSgpIGNvbnN0
CiB7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGFzdGVib2FyZENvbnRleHQoKTsKICAgICAv
LyBGSVhNRTogbGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSBjb250YWlucyBVVElz
LCBub3QgcGF0aCBuYW1lcy4gQWxzbywgd2h5IGRvIHdlCiAgICAgLy8gdGhpbmsgcHJvbWlzZXMg
c2hvdWxkIG9ubHkgY29udGFpbiBvbmUgZmlsZSAob3IgVVRJKT8KICAgICBWZWN0b3I8U3RyaW5n
PiBmaWxlczsKICNpZiBQTEFURk9STShNQUMpCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5nZXRQYXRobmFtZXNGb3JUeXBlKGZpbGVzLCBTdHJpbmcobGVn
YWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSksIG1fcGFzdGVib2FyZE5hbWUpOworICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0UGF0aG5hbWVz
Rm9yVHlwZShmaWxlcywgU3RyaW5nKGxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCkp
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0LmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBm
aWxlcy5zaXplKCkgPT0gMTsKIH0KIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5h
bWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAogewotICAgIGlmIChwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2Fk
aW5nKG1fcGFzdGVib2FyZE5hbWUpKQorICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZVBhc3RlYm9h
cmRDb250ZXh0KCk7CisgICAgaWYgKHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcobV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dC5nZXQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5h
bWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0
VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQuZ2V0KCkpOwogICAgIGlmICh0
eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSkp
ICYmIGZpbGVOYW1lcygpLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4gISFbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOmZpbGVOYW1lcygpLmZpcnN0KCldOwogI2VuZGlmCkBAIC0zMDEsMTAgKzMx
MCwxMSBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xp
Y3kpIGNvbnN0CiAKIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9s
aWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogeworICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZVBh
c3RlYm9hcmRDb250ZXh0KCk7CiAgICAgLy8gRklYTUU6IFVzZSBmaWxlbmFtZVBvbGljeS4KIAog
ICAgIFN0cmluZyB1cmxUaXRsZTsKLSAgICBhdXRvIHVybFN0cmluZyA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5n
KG1fcGFzdGVib2FyZE5hbWUsIHVybFRpdGxlKTsKKyAgICBhdXRvIHVybFN0cmluZyA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+dXJsU3RyaW5nU3VpdGFibGVG
b3JMb2FkaW5nKG1fcGFzdGVib2FyZE5hbWUsIHVybFRpdGxlLCBjb250ZXh0LmdldCgpKTsKICAg
ICBpZiAodGl0bGUpCiAgICAgICAgICp0aXRsZSA9IHVybFRpdGxlOwogCkBAIC0zMTMsNyArMzIz
LDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0
cmluZyogdGl0bGUpIGNvbnN0CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdh
Y3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpKSkgJiYgZmlsZU5hbWVzKCkuc2l6ZSgpID09
IDEpCiAgICAgICAgIHJldHVybiBbVVJMQnlDYW5vbmljYWxpemluZ1VSTChbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOmZpbGVOYW1lcygpWzBdXSkgYWJzb2x1dGVTdHJpbmddOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXgg
NTQ1N2UwNTUwOGEwMjgyZDQ5OGI2MjU5NzEzYjJiNzE4YjViMGJlYy4uODc5MmIxNmJlZDFhMzg2
NjViNDBkYzRiNjM2NjA0Mjk5ZmUyMmU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMTMzLDcgKzEzMyw3IEBAIGJvb2wgUGFz
dGVib2FyZDo6c2hvdWxkVHJlYXRDb2NvYVR5cGVBc0ZpbGUoY29uc3QgU3RyaW5nJiBjb2NvYVR5
cGUpCiAKIFBhc3RlYm9hcmQ6OkZpbGVDb250ZW50U3RhdGUgUGFzdGVib2FyZDo6ZmlsZUNvbnRl
bnRTdGF0ZSgpCiB7Ci0gICAgYm9vbCBtYXlDb250YWluRmlsZVBhdGhzID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXROdW1iZXJPZkZpbGVzKG1fcGFzdGVi
b2FyZE5hbWUpOworICAgIGJvb2wgbWF5Q29udGFpbkZpbGVQYXRocyA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0TnVtYmVyT2ZGaWxlcyhtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
bWF5Q29udGFpbkZpbGVQYXRocykgewpAQCAtMTU3LDcgKzE1Nyw3IEBAIFBhc3RlYm9hcmQ6OkZp
bGVDb250ZW50U3RhdGUgUGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSgpCiAKICAgICBpZiAo
IW1heUNvbnRhaW5GaWxlUGF0aHMpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY29jb2FUeXBl
czsKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5n
ZXRUeXBlcyhjb2NvYVR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyhjb2NvYVR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAoY29jb2FUeXBlcy5maW5k
TWF0Y2hpbmcoW10oY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpIHsgcmV0dXJuIHNob3VsZFRyZWF0
Q29jb2FUeXBlQXNGaWxlKGNvY29hVHlwZSk7IH0pID09IG5vdEZvdW5kKQogICAgICAgICAgICAg
cmV0dXJuIEZpbGVDb250ZW50U3RhdGU6Ok5vRmlsZU9ySW1hZ2VEYXRhOwogCkBAIC0xNzAsMTIg
KzE3MCwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAg
ICAgcmV0dXJuIGNvY29hVHlwZSA9PSBTdHJpbmcoa1VUVHlwZVVSTCk7CiBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfSk7Ci0gICAgICAgIG1heUNvbnRhaW5GaWxl
UGF0aHMgPSBpbmRleE9mVVJMICE9IG5vdEZvdW5kICYmICFwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5
cGUoY29jb2FUeXBlc1tpbmRleE9mVVJMXSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1h
eUNvbnRhaW5GaWxlUGF0aHMgPSBpbmRleE9mVVJMICE9IG5vdEZvdW5kICYmICFwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNvbnRhaW5zU3RyaW5nU2FmZUZvckRP
TVRvUmVhZEZvclR5cGUoY29jb2FUeXBlc1tpbmRleE9mVVJMXSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKICAgICB9CiAKICAgICAvLyBFbmZvcmNlIGNoYW5nZUNvdW50IG91cnNlbHZl
cyBmb3Igc2VjdXJpdHkuIFdlIGNoZWNrIGFmdGVyIHJlYWRpbmcgaW5zdGVhZCBvZiBiZWZvcmUg
dG8gYmUKICAgICAvLyBzdXJlIGl0IGRvZXNuJ3QgY2hhbmdlIGJldHdlZW4gb3VyIHRlc3Rpbmcg
dGhlIGNoYW5nZSBjb3VudCBhbmQgYWNjZXNzaW5nIHRoZSBkYXRhLgotICAgIGlmIChtX2NoYW5n
ZUNvdW50ICE9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hh
bmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSkpCisgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKQogICAgICAgICByZXR1cm4gRmlsZUNvbnRlbnRTdGF0
ZTo6Tm9GaWxlT3JJbWFnZURhdGE7CiAKICAgICAvLyBFdmVuIHdoZW4gdGhlcmUncyBvbmx5IGlt
YWdlIGRhdGEgaW4gdGhlIHBhc3RlYm9hcmQgYW5kIG5vIGZpbGUgcmVwcmVzZW50YXRpb25zLCB3
ZSBzdGlsbCBydW4gdGhlIHJpc2sgb2YgZXhwb3NpbmcgZmlsZSBwYXRocwpAQCAtMTg3LDExICsx
ODcsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIFZlY3RvcjxTdHJp
bmc+IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2lu
KQogewotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT50eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShtX3Bhc3Rl
Ym9hcmROYW1lLCBvcmlnaW4pOworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT50eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShtX3Bhc3RlYm9hcmROYW1lLCBvcmlnaW4sIGNvbnRleHQoKSk7CiAKICAgICAvLyBF
bmZvcmNlIGNoYW5nZUNvdW50IG91cnNlbHZlcyBmb3Igc2VjdXJpdHkuIFdlIGNoZWNrIGFmdGVy
IHJlYWRpbmcgaW5zdGVhZCBvZiBiZWZvcmUgdG8gYmUKICAgICAvLyBzdXJlIGl0IGRvZXNuJ3Qg
Y2hhbmdlIGJldHdlZW4gb3VyIHRlc3RpbmcgdGhlIGNoYW5nZSBjb3VudCBhbmQgYWNjZXNzaW5n
IHRoZSBkYXRhLgotICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSkpCisg
ICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIHR5cGVzOwpAQCAtMjk1LDIyICsyOTUsMjIg
QEAgY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIFBhc3RlYm9hcmQ6OnJlYWRDdXN0b21EYXRh
KCkKIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPiYgZGF0YSkKIHsKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZUN1c3RvbURhdGEoZGF0YSwg
bmFtZSgpKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT53cml0ZUN1c3RvbURhdGEoZGF0YSwgbmFtZSgpLCBjb250ZXh0KCkp
OwogfQogCiBpbnQ2NF90IFBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VD
b3VudChtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2Vj
dXJpdHlDaGVjaygpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gY29jb2FUeXBlczsKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKGNvY29hVHlw
ZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXMoY29jb2FUeXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKIAogICAgIC8vIEVuZm9yY2UgY2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1
cml0eS4gV2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAg
IC8vIHN1cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdl
IGNvdW50IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudCht
X3Bhc3RlYm9hcmROYW1lKSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gY29jb2FU
eXBlczsKQEAgLTMxOCwxMSArMzE4LDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJl
YWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5
cGUpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAg
YXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAg
IC8vIEVuZm9yY2UgY2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1cml0eS4gV2UgY2hlY2sg
YWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAgIC8vIHN1cmUgaXQgZG9l
c24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdlIGNvdW50IGFuZCBhY2Nl
c3NpbmcgdGhlIGRhdGEuCi0gICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1l
KSkKKyAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBmMGZhZGQ3MDg2
OTU2MzhmN2M4MWU5MjY3MWY2N2MxODRlMzhjMjY1Li5mYmU3MTk4ODMyN2FkMGQwNGJiZTE5OWIy
YzNjM2EyZjhiZTdjZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2Fy
ZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MoY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgICAgIHJl
dHVybiBjb3B5VG9WZWN0b3IodHlwZXMpOwogICAgIH0KIAotICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnR5cGVzU2FmZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKG1fbmFtZSwgb3JpZ2luKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT50eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShtX25h
bWUsIG9yaWdpbiwgY29udGV4dCgpKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6
dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21E
YXRhPiYgZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVDdXN0b21EYXRhKGRhdGEsIG1fbmFt
ZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0
ZUN1c3RvbURhdGEoZGF0YSwgbV9uYW1lLCBjb250ZXh0KCkpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IENvbG9yJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KaW5kZXggMzM2NWEzZWI4NmJiMGFiNDlhOWMwYWJhZGY0ODFkZGYwODA5
ZTczZS4uNzlmNWFiYWI4ZTJhNGQ4ZTZkMjQ2NzM1Y2M4ZjQ2YWNmOWIwM2Q0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTU1LDcgKzU1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUGFzdGVib2FyZDo6UGFzdGVib2FyZChzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKICAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV9wYXN0
ZWJvYXJkTmFtZShwYXN0ZWJvYXJkTmFtZSkKLSAgICAsIG1fY2hhbmdlQ291bnQocGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChwYXN0ZWJvYXJk
TmFtZSkpCisgICAgLCBtX2NoYW5nZUNvdW50KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQocGFzdGVib2FyZE5hbWUsIG1fY29udGV4dC5nZXQo
KSkpCiB7CiB9CiAKQEAgLTgzLDkgKzgzLDkgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZShjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAKICNlbmRpZiAv
LyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCi1zdGF0aWMgaW50NjRfdCBjaGFuZ2VDb3VudEZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSA9IHsgfSkKK3N0YXRpYyBpbnQ2
NF90IGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
ID0geyB9LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCA9IG51bGxwdHIpCiB7Ci0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hh
bmdlQ291bnQocGFzdGVib2FyZE5hbWUpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KTsKIH0KIAogLy8gRklYTUU6IERvZXMgdGhpcyBuZWVkIHRvIGJlIGRlY2xhcmVkIGluIHRo
ZSBoZWFkZXIgZmlsZT8KQEAgLTExNSw3ICsxMTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0cjxQ
YQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBj
b250ZW50KQogewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29udGVudCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2Fy
ZChjb250ZW50LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiBTdHJpbmcgUGFz
dGVib2FyZDo6cmVzb3VyY2VNSU1FVHlwZShOU1N0cmluZyAqbWltZVR5cGUpCkBAIC0xMjUsNyAr
MTI1LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlc291cmNlTUlNRVR5cGUoTlNTdHJpbmcgKm1p
bWVUeXBlKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYg
cGFzdGVib2FyZEltYWdlKQogewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZEltYWdlLCBtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PndyaXRlVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRJbWFnZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKQEAgLTEzMywxMyArMTMzLDEzIEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxh
Y2VPcHRpb24pCiAgICAgLy8gRklYTUU6IFdlIHZlbmQgInB1YmxpYy50ZXh0IiBoZXJlIGZvciBi
YWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHByZS1pT1MgMTEgYXBwcy4gSW4gdGhlIGZ1dHVy
ZSwgd2Ugc2hvdWxkIHN0b3AgdmVuZGluZyB0aGlzIFVUSSwKICAgICAvLyBhbmQgaW5zdGVhZCBz
ZXQgZGF0YSBmb3IgY29uY3JldGUgcGxhaW4gdGV4dCB0eXBlcy4gU2VlIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMzE3Pi4KIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChrVVRUeXBlVGV4dCwgdGV4dCwgbV9wYXN0ZWJvYXJk
TmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53
cml0ZVRvUGFzdGVib2FyZChrVVRUeXBlVGV4dCwgdGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCiB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7Ci0g
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFz
dGVib2FyZChwYXN0ZWJvYXJkVVJMLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmRVUkwsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRUeXBlKGNvbnN0IFBhc3RlYm9hcmRV
UkwmKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRo
eVdlYlVSTHNQYm9hcmRUeXBlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldENvbG9yKGNvbG9yLCBtX3Bhc3RlYm9hcmROYW1l
KTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldENv
bG9yKGNvbG9yLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogfQogCiBib29sIFBhc3Rl
Ym9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCkBAIC0xNjgsOSArMTY4LDkgQEAgdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQ
b2xpY3kgYWxsb3cKICAgICBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKIAogICAgIGlmIChhbGxvd1VSTCA9
PSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCkgewotQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleFRvUXVlcnksIGtVVFR5cGVVUkwsIG1fcGFzdGVi
b2FyZE5hbWUpOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgIHRleHQudGV4dCA9IHN0
cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5LCBrVVRUeXBl
VVJMLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgaWYgKCF0ZXh0LnRleHQuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTE4Miw5ICsxODIsOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAv
LyBvbmUgb2YgdGhlIGNvbmNyZXRlICJwdWJsaWMucGxhaW4tdGV4dCIgcmVwcmVzZW50YXRpb25z
IChlLmcuIGtVVFR5cGVVVEY4UGxhaW5UZXh0KS4gSW4gdGhlIGZ1dHVyZSwgd2UKICAgICAvLyBz
aG91bGQgY29uc2lkZXIgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgcmVhZGluZyBwbGFpbiB0ZXh0IGZy
b20gInB1YmxpYy50ZXh0Ii4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0g
ICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRl
eFRvUXVlcnksIGtVVFR5cGVQbGFpblRleHQsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHRleHQu
dGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5
LCBrVVRUeXBlUGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlm
ICh0ZXh0LnRleHQuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VUVHlwZVRleHQsIG1fcGFz
dGVib2FyZE5hbWUpOworICAgICAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VUVHlwZVRleHQsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAg
IHRleHQuaXNVUkwgPSBmYWxzZTsKQEAgLTIxMywxNCArMjEzLDE0IEBAIFBhc3RlYm9hcmQ6OlJl
YWRlclJlc3VsdCBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlw
ZShQYXN0ZWJvCiB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlm
IChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQXJjaGl2ZVBib2FyZFR5cGVdIHx8IFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV0pIHsK
LSAgICAgICAgYXV0byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgYXV0byBidWZmZXIg
PSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBj
aGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2Fy
ZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5y
ZWFkV2ViQXJjaGl2ZSgqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJS
ZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogICAgIH0KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9T
dHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUxdKSB7Ci0gICAgICAgIFN0cmlu
ZyBodG1sU3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRl
eCwga1VUVHlwZUhUTUwsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBTdHJpbmcgaHRtbFN0
cmluZyA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5
cGVIVE1MLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFu
Z2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3Vs
dDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gIWh0bWxT
dHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRIVE1MKGh0bWxTdHJpbmcpID8gUmVhZGVyUmVz
dWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yMzYsMTQg
KzIzNiwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAjaWYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAg
ICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAg
ICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVy
UmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQog
CiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRl
Z3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hh
bmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRX
YXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVh
ZFJURigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRp
ZE5vdFJlYWRUeXBlOwpAQCAtMjUxLDcgKzI1MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYg
KFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAg
IGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4g
UmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJl
dHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwg
dHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6
OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKQEAgLTI1OSwyMSArMjU5
LDIxIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICAgICBpZiAoW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVUkxdKSB7CiAg
ICAgICAgIFN0cmluZyB0aXRsZTsKLSAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnJlYWRVUkxG
cm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIHRpdGxlKTsKKyAgICAg
ICAgVVJMIHVybCA9IHN0cmF0ZWd5LnJlYWRVUkxGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIG1f
cGFzdGVib2FyZE5hbWUsIHRpdGxlLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VD
b3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6
UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gIXVybC5pc051
bGwoKSAmJiByZWFkZXIucmVhZFVSTCh1cmwsIHRpdGxlKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5
cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogICAgIH0KIAogICAgIGlmIChVVFR5
cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZil0eXBlLCBrVVRUeXBlUGxhaW5UZXh0
KSkgewotICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVBsYWluVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCBrVVRUeXBlUGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAg
ICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5Owog
ICAgICAgICByZXR1cm4gIXN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChz
dHJpbmcpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVh
ZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXR5cGUsIGtVVFR5cGVUZXh0KSkgewotICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3Ry
YXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVRleHQsIG1f
cGFzdGVib2FyZE5hbWUpOworICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVRleHQsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50
KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdl
ZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiAhc3RyaW5nLmlzTnVsbCgpICYmIHJlYWRlci5y
ZWFkUGxhaW5UZXh0KHN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVz
dWx0OjpEaWROb3RSZWFkVHlwZTsKQEAgLTI4Myw3ICsyODMsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlw
ZTsKIH0KIAotc3RhdGljIHZvaWQgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2Fy
eShQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBQYXN0ZWJvYXJkU3RyYXRlZ3km
IHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHR5cGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBpbnQgaXRlbUluZGV4KQorc3RhdGljIHZvaWQgcmVhZFVSTEFsb25nc2lk
ZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVy
LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHR5cGVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQgaXRlbUluZGV4LCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgaWYgKCFVVFR5cGVDb25mb3Jtc1RvKHR5cGVJZGVudGlmaWVyLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFR5cGVWQ2FyZCkpCkBAIC0yOTEsNyArMjkxLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAgICAgU3RyaW5nIHRpdGxlOwotICAgIGF1dG8gdXJsID0gc3RyYXRlZ3ku
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgcGFzdGVib2FyZE5hbWUsIHRpdGxlKTsK
KyAgICBhdXRvIHVybCA9IHN0cmF0ZWd5LnJlYWRVUkxGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IHBhc3RlYm9hcmROYW1lLCB0aXRsZSwgY29udGV4dCk7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgp
KQogICAgICAgICByZWFkZXIucmVhZFVSTCh1cmwsIHRpdGxlKTsKIH0KQEAgLTMyMCw3ICszMjAs
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJl
YWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogCiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5JiBz
dHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAK
LSAgICBzaXplX3QgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0ZWd5LmdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KG1fcGFzdGVib2FyZE5hbWUpOworICAgIHNpemVfdCBudW1iZXJPZkl0ZW1zID0gc3RyYXRl
Z3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
IAogICAgIGlmICghbnVtYmVyT2ZJdGVtcykKICAgICAgICAgcmV0dXJuOwpAQCAtMzM4LDE1ICsz
MzgsMTUgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVy
JiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKICAgICAgICAgaWYgKGl0ZW1JbmRleCAm
JiBpICE9ICppdGVtSW5kZXgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRv
IGluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGksIG1fcGFzdGVib2Fy
ZE5hbWUsIG1fY2hhbmdlQ291bnQpOworICAgICAgICBhdXRvIGluZm8gPSBzdHJhdGVneS5pbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGksIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQs
IGNvbnRleHQoKSk7CiAgICAgICAgIGlmICghaW5mbykKICAgICAgICAgICAgIHJldHVybjsKIAog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAgIGlmIChjYW5SZWFkQXR0YWNo
bWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9uKCppbmZvKSkgewogICAgICAg
ICAgICAgYXV0byB0eXBlRm9yRmlsZVVwbG9hZCA9IGluZm8tPmNvbnRlbnRUeXBlRm9ySGlnaGVz
dEZpZGVsaXR5SXRlbSgpOwotICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gc3RyYXRlZ3ku
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9h
cmROYW1lKSkgewotICAgICAgICAgICAgICAgIHJlYWRVUkxBbG9uZ3NpZGVBdHRhY2htZW50SWZO
ZWNlc3NhcnkocmVhZGVyLCBzdHJhdGVneSwgdHlwZUZvckZpbGVVcGxvYWQsIG1fcGFzdGVib2Fy
ZE5hbWUsIGkpOworICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpKSB7CisgICAgICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1l
bnRJZk5lY2Vzc2FyeShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlRm9yRmlsZVVwbG9hZCwgbV9wYXN0
ZWJvYXJkTmFtZSwgaSwgY29udGV4dCgpKTsKICAgICAgICAgICAgICAgICByZWFkZXIucmVhZERh
dGFCdWZmZXIoKmJ1ZmZlciwgdHlwZUZvckZpbGVVcGxvYWQsIGluZm8tPnN1Z2dlc3RlZEZpbGVO
YW1lLCBpbmZvLT5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTM4MiwxMiArMzgyLDEyIEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyJiByZWFkZXIsCiB7CiAgICAgQVNTRVJUKHJlc3BlY3RzVVRJRmlkZWxpdGllcygpKTsKICAg
ICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCk7Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMCwgbnVtYmVyT2ZJdGVtcyA9IHN0
cmF0ZWd5LmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOyBpbmRleCA8
IG51bWJlck9mSXRlbXM7ICsraW5kZXgpIHsKKyAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAw
LCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsgaW5kZXggPCBudW1iZXJPZkl0ZW1zOyArK2luZGV4KSB7
CiAgICAgICAgIGlmIChpdGVtSW5kZXggJiYgaW5kZXggIT0gKml0ZW1JbmRleCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICAgICAg
YXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbV9w
YXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0
ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1f
Y2hhbmdlQ291bnQsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmICghaW5mbykKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAg
ICAgICAgIGJvb2wgY2FuUmVhZEF0dGFjaG1lbnQgPSBwb2xpY3kgPT0gV2ViQ29udGVudFJlYWRp
bmdQb2xpY3k6OkFueVR5cGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSAmJiAhYXR0YWNobWVudEZpbGVQYXRoLmlz
RW1wdHkoKTsKICAgICAgICAgYXV0byBjb250ZW50VHlwZSA9IGluZm8tPmNvbnRlbnRUeXBlRm9y
SGlnaGVzdEZpZGVsaXR5SXRlbSgpOwogICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYg
cHJlZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbigqaW5mbykpIHsKLSAgICAgICAgICAgIHJl
YWRVUkxBbG9uZ3NpZGVBdHRhY2htZW50SWZOZWNlc3NhcnkocmVhZGVyLCBzdHJhdGVneSwgY29u
dGVudFR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGluZGV4KTsKKyAgICAgICAgICAgIHJlYWRVUkxB
bG9uZ3NpZGVBdHRhY2htZW50SWZOZWNlc3NhcnkocmVhZGVyLCBzdHJhdGVneSwgY29udGVudFR5
cGUsIG1fcGFzdGVib2FyZE5hbWUsIGluZGV4LCBjb250ZXh0KCkpOwogICAgICAgICAgICAgcmVh
ZGVyLnJlYWRGaWxlUGF0aChXVEZNb3ZlKGF0dGFjaG1lbnRGaWxlUGF0aCksIGluZm8tPnByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUsIGNvbnRlbnRUeXBlKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CkBAIC00NTIsNyArNDUyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAKIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCiB7Ci0gICAgcmV0dXJuICEh
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICByZXR1cm4gISFwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgdXRpVHlwZUZy
b21Db2NvYVR5cGUoTlNTdHJpbmcgKnR5cGUpCkBAIC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIFBh
c3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBpZiAoIWNvY29hVHlwZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChjb2NvYVR5cGUuZ2V0KCksIFN0cmluZygpLCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlwZS5nZXQoKSwgU3RyaW5nKCksIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIo
KQogewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3Jp
dGVUb1Bhc3RlYm9hcmQoU3RyaW5nKCksIFN0cmluZygpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0
ZWJvYXJkKFN0cmluZygpLCBTdHJpbmcoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
IH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFBsYXRmb3JtVmFsdWVzQXNTdHJp
bmdzKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTUwNSw3ICs1MDUsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
YXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5nJiBkb21U
eXBlLCBpbgogICAgIGlmICghY29jb2FUeXBlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
YXV0byB2YWx1ZXMgPSBzdHJhdGVneS5hbGxTdHJpbmdzRm9yVHlwZShjb2NvYVR5cGUuZ2V0KCks
IHBhc3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIHZhbHVlcyA9IHN0cmF0ZWd5LmFsbFN0cmluZ3NG
b3JUeXBlKGNvY29hVHlwZS5nZXQoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmIChbY29jb2FUeXBlIGlzRXF1
YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUGxhaW5UZXh0XSkgewogICAg
ICAgICB2YWx1ZXMgPSB2YWx1ZXMubWFwKFsmXSAoYXV0byYgdmFsdWUpIC0+IFN0cmluZyB7CkBA
IC01NTgsMTYgKzU1OCwxNiBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIGlmICghY29jb2FUeXBlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlwZS5nZXQoKSwgZGF0YSwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT53cml0ZVRvUGFzdGVib2FyZChjb2NvYVR5cGUuZ2V0KCksIGRhdGEsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxl
UGF0aHMoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKICAgICBhdXRvJiBzdHJh
dGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7Ci0gICAg
Zm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMCwgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0ZWd5LmdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOyBpbmRleCA8IG51bWJlck9mSXRl
bXM7ICsraW5kZXgpIHsKKyAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0
ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsgaW5kZXggPCBudW1iZXJPZkl0ZW1zOyArK2luZGV4KSB7CiAgICAgICAgIC8v
IEN1cnJlbnRseSwgZHJhZyBhbmQgZHJvcCBpcyB0aGUgb25seSBjYXNlIG9uIGlPUyB3aGVyZSB0
aGUgInBhc3RlYm9hcmQiIG1heSBjb250YWluIGZpbGUgcGF0aHMuCi0gICAgICAgIGF1dG8gaW5m
byA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVib2Fy
ZE5hbWUsIG1fY2hhbmdlQ291bnQpOworICAgICAgICBhdXRvIGluZm8gPSBzdHJhdGVneS5pbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNv
dW50LCBjb250ZXh0KCkpOwogICAgICAgICBpZiAoIWluZm8pCiAgICAgICAgICAgICByZXR1cm4g
eyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVi
b2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2Fy
ZExpYldQRS5jcHAKaW5kZXggZTY1ZmE4N2NkMWU5YTFkZWQ3MDFlNDJkZWFmNDVhMmVlNTQzYmFi
Ni4uNTlkM2JjODE0NzFkM2U3YmNhNzdjZGEyMmQ3YTA1ODk1YTVhMjFiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAt
NzQsNyArNzQsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdpbigpCiAKIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICByZXR1cm4g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgdHlwZSwgbmFtZSgpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwg
dHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0
cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmKQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQ
YXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBPcHRp
b25hbDxzaXplX3Q+KQogewotICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3Bs
YWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCkpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAK
IHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNv
bnRlbnRSZWFkaW5nUG9saWN5LCBPcHRpb25hbDxzaXplX3Q+KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBmN2Y4ZmZlNGY4ZTlmOGMzYTk2YjMy
NzZjYmEzNWQ4M2I2ZDlkNGM4Li4xMTBkZDI1MTBiODVmMTA2ZDNjOTE1ODExMGQwODBkNTgwZTI4
YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpA
QCAtOTMsNyArOTMsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogUGFzdGVib2FyZDo6UGFzdGVib2FyZChzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb21pc2VkRmlsZVBhdGhzKQog
ICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1l
KHBhc3RlYm9hcmROYW1lKQotICAgICwgbV9jaGFuZ2VDb3VudChwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpKQor
ICAgICwgbV9jaGFuZ2VDb3VudChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUsIG1fY29udGV4dC5nZXQoKSkpCiAg
ICAgLCBtX3Byb21pc2VkRmlsZVBhdGhzKHByb21pc2VkRmlsZVBhdGhzKQogewogICAgIEFTU0VS
VChwYXN0ZWJvYXJkTmFtZSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZShjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAK
IHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoKQogewotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKFZlY3RvcjxTdHJp
bmc+KCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKFZlY3RvcjxTdHJpbmc+
KCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCkBAIC0xNTQsMzUgKzE1
NCwzNSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB0eXBlcy5hcHBl
bmRWZWN0b3IoY29udGVudC5jbGllbnRUeXBlcyk7CiAgICAgdHlwZXMuYXBwZW5kKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSk7CiAKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAKICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBjb2RlIHNob3VsZCBi
ZSByZWZhY3RvcmVkLCBzdWNoIHRoYXQgaXQgb25seSByZXF1aXJlcyBhIHNpbmdsZSBjYWxsIG91
dCB0byB0aGUgY2xpZW50IGxheWVyLgogICAgIC8vIEluIFdlYktpdDIsIHRoaXMgY3VycmVudGx5
IHJlc3VsdHMgaW4gbWFueSB1bm5lY2Vzc2FyeSBzeW5jaHJvbm91cyByb3VuZC10cmlwIElQQyBt
ZXNzYWdlcy4KIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250
ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNv
bnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBtX2NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRC
dWZmZXJGb3JUeXBlKGNvbnRlbnQuY2xpZW50RGF0YVtpXS5nZXQoKSwgY29udGVudC5jbGllbnRU
eXBlc1tpXSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUo
Y29udGVudC5jbGllbnREYXRhW2ldLmdldCgpLCBjb250ZW50LmNsaWVudFR5cGVzW2ldLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChjb250ZW50LmNhblNtYXJ0Q29weU9y
RGVsZXRlKQotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKG51bGxwdHIsIFdlYlNtYXJ0UGFz
dGVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9y
VHlwZShudWxscHRyLCBXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7Ci0g
ICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0
LmdldCgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAg
IG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LmdldCgp
LCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAot
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgbV9jaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVy
Rm9yVHlwZShjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQuZ2V0KCksIGtVVFR5cGVXZWJB
cmNoaXZlLCBtX3Bhc3RlYm9hcmROYW1lKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAg
ICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC5nZXQo
KSwga1VUVHlwZVdlYkFyY2hpdmUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KICAgICBpZiAoY29u
dGVudC5kYXRhSW5SVEZERm9ybWF0KQotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRl
bnQuZGF0YUluUlRGREZvcm1hdC5nZXQoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIG1f
cGFzdGVib2FyZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0
YUluUlRGREZvcm1hdC5nZXQoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0KQot
ICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LmdldCgp
LCBsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJblJURkZvcm1hdC5nZXQoKSwgbGVnYWN5
UlRGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBp
ZiAoIWNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdC5pc051bGwoKSkKLSAgICAgICAgbV9jaGFuZ2VD
b3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3Ry
aW5nRm9yVHlwZShjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQsIGxlZ2FjeUhUTUxQYXN0ZWJvYXJk
VHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShj
b250ZW50LmRhdGFJbkhUTUxGb3JtYXQsIGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmICghY29udGVudC5kYXRhSW5TdHJpbmdG
b3JtYXQuaXNOdWxsKCkpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUoY29udGVudC5kYXRh
SW5TdHJpbmdGb3JtYXQsIGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2Fy
ZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluU3RyaW5n
Rm9ybWF0LCBsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpOwogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgZGF0YTsKICAgICBkYXRhLnNl
dE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUo
ZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS5wdHIoKSwgUGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGRh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkucHRyKCksIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogfQogCkBAIC0xOTMsMTUg
KzE5MywxNSBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uIHNtYXJ0UmVwbAogICAgIGlmIChzbWFydFJlcGxhY2VP
cHRpb24gPT0gQ2FuU21hcnRSZXBsYWNlKQogICAgICAgICB0eXBlcy5hcHBlbmQoV2ViU21hcnRQ
YXN0ZVBib2FyZFR5cGUpOwogCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgbV9jaGFu
Z2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
U3RyaW5nRm9yVHlwZSh0ZXh0LCBsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldFN0cmluZ0ZvclR5cGUodGV4dCwgbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBpZiAoc21hcnRSZXBsYWNlT3B0aW9uID09
IENhblNtYXJ0UmVwbGFjZSkKLSAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZSgwLCBXZWJTbWFy
dFBhc3RlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZl
ckZvclR5cGUoMCwgV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSk7CiB9CiAKLXN0YXRpYyBsb25nIHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQorc3RhdGljIGxvbmcgd3JpdGVVUkxGb3JUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewotICAgIGF1dG8gbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBwYXN0ZWJvYXJk
TmFtZSk7CisgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KTsKICAgICAKICAgICBBU1NFUlQoIXBhc3RlYm9hcmRVUkwudXJsLmlzRW1wdHkoKSk7CiAg
ICAgCkBAIC0yMTYsMzYgKzIxNiwzNiBAQCBzdGF0aWMgbG9uZyB3cml0ZVVSTEZvclR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYQogCiAgICAg
aWYgKHR5cGVzLmNvbnRhaW5zKFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSkpIHsKICAgICAg
ICAgUGFzdGVib2FyZFVSTCB1cmwgPSB7IHBhc3RlYm9hcmRVUkwudXJsLCBTdHJpbmcodGl0bGUp
LnN0cmlwV2hpdGVTcGFjZSgpLCBlbXB0eVN0cmluZygpIH07Ci0gICAgICAgIG5ld0NoYW5nZUNv
dW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRVUkwo
dXJsLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRVUkwodXJsLCBwYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCk7CiAgICAgfQogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVn
YWN5VVJMUGFzdGVib2FyZFR5cGUoKSkpKQotICAgICAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShb
Y29jb2FVUkwgYWJzb2x1dGVTdHJpbmddLCBsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0
ZWJvYXJkTmFtZSk7CisgICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKFtjb2NvYVVSTCBhYnNv
bHV0ZVN0cmluZ10sIGxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2ViVVJMUGJvYXJkVHlwZSkpCi0gICAg
ICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJWaXNpYmxlU3RyaW5nLCBXZWJVUkxQYm9hcmRU
eXBlLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHVzZXJW
aXNpYmxlU3RyaW5nLCBXZWJVUkxQYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYlVSTE5hbWVQYm9hcmRUeXBlKSkKLSAgICAgICAg
bmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldFN0cmluZ0ZvclR5cGUodGl0bGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBwYXN0ZWJv
YXJkTmFtZSk7CisgICAgICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHRpdGxlLCBXZWJVUkxOYW1l
UGJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSkpKQotICAgICAgICBuZXdD
aGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0U3RyaW5nRm9yVHlwZSh1c2VyVmlzaWJsZVN0cmluZywgbGVnYWN5U3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUpOworICAgICAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh1
c2VyVmlzaWJsZVN0cmluZywgbGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQpOwogCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogICAgIAog
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJM
KQogewotICAgIG1fY2hhbmdlQ291bnQgPSB3cml0ZVVSTEZvclR5cGVzKHdyaXRhYmxlVHlwZXNG
b3JVUkwoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFVSTCk7CisgICAgbV9jaGFuZ2VD
b3VudCA9IHdyaXRlVVJMRm9yVHlwZXMod3JpdGFibGVUeXBlc0ZvclVSTCgpLCBtX3Bhc3RlYm9h
cmROYW1lLCBwYXN0ZWJvYXJkVVJMLCBjb250ZXh0KCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBw
YXN0ZWJvYXJkVVJMKQogewogICAgIFBhc3RlYm9hcmRVUkwgdXJsID0geyBwYXN0ZWJvYXJkVVJM
LnVybCwgcGFzdGVib2FyZFVSTC50aXRsZS5zdHJpcFdoaXRlU3BhY2UoKSwgZW1wdHlTdHJpbmco
KSB9OwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldFVSTCh1cmwsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIG1fY2hhbmdl
Q291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFVS
TCh1cmwsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVz
ID0geyBsZWdhY3lDb2xvclBhc3RlYm9hcmRUeXBlKCkgfTsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRDb2xvcihjb2xvciwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRDb2xvcihjb2xvciwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIH0KIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZp
bGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjU1
LDcgKzI1NSw3IEBAIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0
ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVs
ZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVu
dChOU0ZpbGVXcmFwcGVyICp3cmFwcGVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBp
bnQ2NF90JiBuZXdDaGFuZ2VDb3VudCkKK3N0YXRpYyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJBc1JU
RkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QmIG5ld0NoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtOU0F0dHJp
YnV0ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmFkb3B0TlMoW1tOU1Rl
eHRBdHRhY2htZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVyOndyYXBwZXJdKS5nZXQoKV07
CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZE
QXR0YWNobWVudChOU0ZpbGVXcmFwcGVyICp3cmFwcGVyLCBjb25zdCBTdHJpbgogICAgIGlmICgh
UlRGRERhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkREYXRhKS5wdHIoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRU
eXBlKCksIHBhc3RlYm9hcmROYW1lKTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShSVEZERGF0YSkucHRyKCksIGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgp
LCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCkBAIC0yODQsMjQgKzI4NCwy
NCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCi0gICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJM
Rm9yVHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwpOwot
ICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5w
dHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAg
IG1fY2hhbmdlQ291bnQgPSB3cml0ZVVSTEZvclR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1l
LCBwYXN0ZWJvYXJkSW1hZ2UudXJsLCBjb250ZXh0KCkpOworICAgIG1fY2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBhc3Rl
Ym9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKGF1dG8g
YXJjaGl2ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewot
ICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdldCgpLCBXZWJBcmNoaXZl
UGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5
cGUoYXJjaGl2ZURhdGEuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdldCgpLCBrVVRUeXBlV2Vi
QXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAg
ICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0QnVmZmVyRm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwga1VUVHlwZVdlYkFyY2hp
dmUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIH0KICAgICBpZiAoIXBhc3RlYm9hcmRJbWFnZS5kYXRh
SW5IVE1MRm9ybWF0LmlzRW1wdHkoKSkKLSAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShwYXN0
ZWJvYXJkSW1hZ2UuZGF0YUluSFRNTEZvcm1hdCwgbGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCks
IG1fcGFzdGVib2FyZE5hbWUpOwotICAgIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50
KGZpbGVXcmFwcGVyKHBhc3RlYm9hcmRJbWFnZSksIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdl
Q291bnQpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRJbWFnZS5kYXRh
SW5IVE1MRm9ybWF0LCBsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKKyAgICB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChmaWxl
V3JhcHBlcihwYXN0ZWJvYXJkSW1hZ2UpLCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50
LCBjb250ZXh0KCkpOwogfQogCiBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiB7
CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICByZXR1cm4gdHlwZXMuY29u
dGFpbnMoV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUpOwogfQogCkBAIC0zMjMsMTggKzMyMywxOCBA
QCBzdGF0aWMgU3RyaW5nIGpvaW5QYXRobmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcykKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1zdGF0aWMgU3RyaW5n
IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1J
bmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0
ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgcmV0dXJuIHN0cmF0ZWd5
LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUpOworICAgICAgICByZXR1cm4gc3Ry
YXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9h
cmROYW1lLCBjb250ZXh0KTsKKyAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBl
LCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBP
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3N0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRp
b25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSk7Ci0g
ICAgcmV0dXJuIHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUpOwor
ICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5k
ZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKKyAgICByZXR1cm4gc3RyYXRlZ3ku
YnVmZmVyRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5IGFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKQEAgLTM0
MywyNSArMzQzLDI1IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0
JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAKICAgICBWZWN0b3I8U3Ry
aW5nPiB0eXBlczsKICAgICBpZiAoaXRlbUluZGV4KSB7Ci0gICAgICAgIGlmIChhdXRvIGl0ZW1J
bmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCgqaXRlbUluZGV4LCBtX3Bh
c3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50KSkKKyAgICAgICAgaWYgKGF1dG8gaXRlbUluZm8g
PSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KCppdGVtSW5kZXgsIG1fcGFzdGVi
b2FyZE5hbWUsIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSkpCiAgICAgICAgICAgICB0eXBlcyA9
IGl0ZW1JbmZvLT5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eTsKICAgICB9IGVsc2UKLSAgICAgICAg
c3RyYXRlZ3kuZ2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBzdHJh
dGVneS5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAg
IGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJkVHlwZVN0cmluZykpKSB7Ci0g
ICAgICAgIHRleHQudGV4dCA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3Rl
Ym9hcmRUeXBlU3RyaW5nLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICAgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFz
dGVib2FyZFR5cGVTdHJpbmcsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIHRleHQudGV4dCA9IHJlYWRTdHJpbmdBdFByZWZl
cnJlZEl0ZW1JbmRleChsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0
cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmlu
Z0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIHRl
eHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBpZiAo
dHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdh
Y3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJk
TmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gYXR0
cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmls
XSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJp
bmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKQEAgLTM3MSw3ICszNzEs
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxh
aW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJkVHlwZVJURkQpKSkgewotICAgICAgICBpZiAoYXV0byBk
YXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVSVEZE
LCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAo
YXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5
cGVSVEZELCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
KSB7CiAgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQu
dGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5p
c1VSTCA9IGZhbHNlOwpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQ
YXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93
CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZQYXN0ZWJv
YXJkVHlwZSgpKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZl
cnJlZEl0ZW1JbmRleChsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0
ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURjpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVu
dEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmli
dXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsK
QEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWlu
VGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIH0KIAogICAg
IGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJkVHlwZVJURikpKSB7Ci0gICAg
ICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0
ZWJvYXJkVHlwZVJURiwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsK
KyAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChO
U1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6ZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAg
ICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAg
ICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQ
b2xpY3kgYWxsb3cKIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZW5h
bWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhuYW1l
czsKLSAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0aG5hbWVzRm9yVHlwZShwYXRobmFtZXMsIGxlZ2Fj
eUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBz
dHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKHBhdGhuYW1lcywgbGVnYWN5RmlsZW5hbWVzUGFz
dGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgdGV4
dC50ZXh0ID0gam9pblBhdGhuYW1lcyhwYXRobmFtZXMpOwogICAgICAgICB0ZXh0LmlzVVJMID0g
ZmFsc2U7CiAgICAgICAgIHJldHVybjsKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1Bv
bGljeSBhbGxvdwogCiAgICAgLy8gRklYTUU6IFRoZSBjb2RlIGFib3ZlIGxvb2tzIGF0IHRoZSB0
eXBlcyB2ZWN0b3IgZmlyc3QsIGJ1dCB0aGlzIGp1c3QgZ2V0cyB0aGUgc3RyaW5nIHdpdGhvdXQg
Y2hlY2tpbmcuIFdoeSB0aGUgZGlmZmVyZW5jZT8KICAgICBpZiAoYWxsb3dVUkwgPT0gUGxhaW5U
ZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwpIHsKLSAgICAgICAgdGV4dC50ZXh0ID0gcmVh
ZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIGl0
ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0ZXh0LnRleHQg
PSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5VVJMUGFzdGVib2FyZFR5cGUo
KSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAg
ICAgICAgdGV4dC5pc1VSTCA9ICF0ZXh0LnRleHQuaXNOdWxsKCk7CiAgICAgfQogfQpAQCAtNDI3
LDE1ICs0MjcsMTUgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKIAogICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzOwogICAgIGlmIChpdGVtSW5kZXgpIHsKLSAgICAgICAgaWYgKGF1dG8gaXRlbUlu
Zm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KCppdGVtSW5kZXgsIG1fcGFz
dGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQpKQorICAgICAgICBpZiAoYXV0byBpdGVtSW5mbyA9
IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoKml0ZW1JbmRleCwgbV9wYXN0ZWJv
YXJkTmFtZSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKSkKICAgICAgICAgICAgIHR5cGVzID0g
aXRlbUluZm8tPnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5OwogICAgIH0gZWxzZQotICAgICAgICBz
dHJhdGVneS5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHN0cmF0
ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCiAgICAg
cmVhZGVyLmNvbnRlbnRPcmlnaW4gPSByZWFkT3JpZ2luKCk7CiAKICAgICBpZiAodHlwZXMuY29u
dGFpbnMoV2ViQXJjaGl2ZVBib2FyZFR5cGUpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChXZWJBcmNoaXZlUGJvYXJkVHlwZSwgaXRl
bUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8g
YnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KFdlYkFyY2hpdmVQYm9hcmRU
eXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7
CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRl
ci5yZWFkV2ViQXJjaGl2ZSgqYnVmZmVyKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogCiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmICh0eXBlcy5jb250YWlucyhT
dHJpbmcoa1VUVHlwZVdlYkFyY2hpdmUpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoa1VUVHlwZVdlYkFyY2hpdmUsIGl0ZW1JbmRl
eCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZl
ciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBlV2ViQXJjaGl2ZSwgaXRl
bUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAg
ICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZFdl
YkFyY2hpdmUoKmJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC00NTcsNDYgKzQ1Nyw0NiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAog
ICAgIGlmIChwb2xpY3kgPT0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUgJiYgdHlw
ZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCkpKSkgewog
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKLSAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0aG5h
bWVzRm9yVHlwZShwYXRocywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0
ZWJvYXJkTmFtZSk7CisgICAgICAgIHN0cmF0ZWd5LmdldFBhdGhuYW1lc0ZvclR5cGUocGF0aHMs
IGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVh
ZGVyLnJlYWRGaWxlUGF0aHMocGF0aHMpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCkp
KSkgewotICAgICAgICBTdHJpbmcgc3RyaW5nID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUlu
ZGV4KGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHJlYWRTdHJpbmdBdFByZWZl
cnJlZEl0ZW1JbmRleChsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJh
dGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCAoIXN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVh
ZEhUTUwoc3RyaW5nKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5
cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlSFRNTCkpKSB7Ci0gICAgICAgIFN0
cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJk
VHlwZUhUTUwsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAg
ICBTdHJpbmcgc3RyaW5nID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVi
b2FyZFR5cGVIVE1MLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8ICgh
c3RyaW5nLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkSFRNTChzdHJpbmcpKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJU
RkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBi
dWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9h
cmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwg
cmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJk
VHlwZVJURkQpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ks
IG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZm
ZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGRCwgaXRlbUluZGV4LCBz
dHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYg
KG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZFJURkQoKmJ1ZmZl
cikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYg
KHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxl
Z2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJl
ZEl0ZW1JbmRleChsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFu
Z2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkUlRGKCpidWZmZXIpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICh0eXBlcy5j
b250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJkVHlwZVJURikpKSB7Ci0gICAgICAgIGlmIChhdXRv
IGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBl
UlRGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBp
ZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJv
YXJkVHlwZVJURiwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8
fCByZWFkZXIucmVhZFJURigqYnVmZmVyKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTUwNiwyOCArNTA2LDI4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxl
Z2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgp
LCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAo
YXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5VElGRlBh
c3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50
KCkgfHwgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL3Rp
ZmYiX3MpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJkVHlwZVRJRkYpKSkgewotICAg
ICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQ
YXN0ZWJvYXJkVHlwZVRJRkYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUp
KSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1J
bmRleChOU1Bhc3RlYm9hcmRUeXBlVElGRiwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
Y2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
LCAiaW1hZ2UvdGlmZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lQREZQYXN0ZWJvYXJk
VHlwZSgpKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVy
cmVkSXRlbUluZGV4KGxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRl
Z3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRC
dWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAg
ICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1h
Z2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksICJhcHBsaWNhdGlvbi9wZGYiX3MpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJkVHlwZVBERikpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1
ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUERG
LCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAo
YXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJk
VHlwZVBERiwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCBy
ZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCAiYXBwbGljYXRpb24vcGRm
Il9zKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTUzNSw3ICs1MzUs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5
cGVQTkcpKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoa1VUVHlwZVBORywgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJk
TmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVk
SXRlbUluZGV4KGtVVFR5cGVQTkcsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5n
ZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImlt
YWdlL3BuZyJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01NDQs
NyArNTQ0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhrVVRUeXBlSlBFRykpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBlSlBFRywgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9w
YXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0
UHJlZmVycmVkSXRlbUluZGV4KGtVVFR5cGVKUEVHLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCksICJpbWFnZS9qcGVnIl9zKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTU1MiwyMSArNTUyLDIxIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIGlmICh0eXBlcy5j
b250YWlucyhTdHJpbmcobGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIFVS
TCB1cmwgPSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgIFN0cmluZyB0
aXRsZSA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChXZWJVUkxOYW1lUGJvYXJkVHlw
ZSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFVSTCB1
cmwgPSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAg
U3RyaW5nIHRpdGxlID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KFdlYlVSTE5hbWVQ
Ym9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0
KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8ICghdXJs
LmlzTnVsbCgpICYmIHJlYWRlci5yZWFkVVJMKHVybCwgdGl0bGUpKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBTdHJpbmcgc3RyaW5nID0gcmVhZFN0cmlu
Z0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBTdHJpbmcgc3RyaW5n
ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcu
aXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
IGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZVVURjhQbGFpblRleHQpKSkgewotICAg
ICAgICBTdHJpbmcgc3RyaW5nID0gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZShrVVRUeXBlVVRGOFBs
YWluVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJh
dGVneS5zdHJpbmdGb3JUeXBlKGtVVFR5cGVVVEY4UGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgp
IHx8ICghc3RyaW5nLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkUGxhaW5UZXh0KHN0cmluZykpKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU3Niw3ICs1NzYsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCiB7CiAg
ICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICByZXR1cm4gIXR5cGVzLmlzRW1w
dHkoKTsKIH0KIApAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29u
c3QgU3RyaW5nJiB0eXBlKQogICAgIFN0cmluZyBjb2NvYVR5cGUgPSBjb2NvYVR5cGVGcm9tSFRN
TENsaXBib2FyZFR5cGUodHlwZSk7CiAgICAgaWYgKGNvY29hVHlwZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGVtcHR5U3RyaW5nKCksIGNvY29h
VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShlbXB0eVN0
cmluZygpLCBjb2NvYVR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiB9CiAKIFZl
Y3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyhjb25z
dCBTdHJpbmcmIGRvbVR5cGUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCkBAIC02MTgsNyArNjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2Fy
ZDo6cmVhZFBsYXRmb3JtVmFsdWVzQXNTdHJpbmdzKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgaW4K
ICAgICBpZiAoY29jb2FUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IGF1dG8gdmFsdWVzID0gc3RyYXRlZ3kuYWxsU3RyaW5nc0ZvclR5cGUoY29jb2FUeXBlLCBwYXN0
ZWJvYXJkTmFtZSk7CisgICAgYXV0byB2YWx1ZXMgPSBzdHJhdGVneS5hbGxTdHJpbmdzRm9yVHlw
ZShjb2NvYVR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChjb2NvYVR5
cGUgPT0gU3RyaW5nKGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCkpKSB7CiAgICAgICAgIHZh
bHVlcyA9IHZhbHVlcy5tYXAoWyZdIChhdXRvJiB2YWx1ZSkgLT4gU3RyaW5nIHsKICAgICAgICAg
ICAgIHJldHVybiBbdmFsdWUgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107
CkBAIC02MjcsNyArNjI3LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFBsYXRm
b3JtVmFsdWVzQXNTdHJpbmdzKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgaW4KIAogICAgIC8vIEVu
Zm9yY2UgY2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1cml0eS4gIFdlIGNoZWNrIGFmdGVy
IHJlYWRpbmcgaW5zdGVhZCBvZiBiZWZvcmUgdG8gYmUKICAgICAvLyBzdXJlIGl0IGRvZXNuJ3Qg
Y2hhbmdlIGJldHdlZW4gb3VyIHRlc3RpbmcgdGhlIGNoYW5nZSBjb3VudCBhbmQgYWNjZXNzaW5n
IHRoZSBkYXRhLgotICAgIGlmIChjaGFuZ2VDb3VudCAhPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KHBhc3RlYm9hcmROYW1lKSkKKyAgICBp
ZiAoY2hhbmdlQ291bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5jaGFuZ2VDb3VudChwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAogICAgIHJldHVybiB2YWx1ZXM7CkBAIC02ODIsOCArNjgyLDggQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlczsKICAgICAgICAgdHlwZXMuYXBwZW5kKGNvY29hVHlwZSk7Ci0gICAgICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFz
dGVib2FyZE5hbWUpOwotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvY29hRGF0YSwgY29j
b2FUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShjb2NvYURhdGEsIGNvY29h
VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIAogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNjkzLDggKzY5Myw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgICAgICAvLyBldmVyeXRoaW5nIGVsc2Ugd2Uga25vdyBvZiBnb2VzIG9uIHRoZSBwYm9h
cmQgYXMgYSBzdHJpbmcKICAgICAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgICAgIHR5
cGVzLmFwcGVuZChjb2NvYVR5cGUpOwotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPmFkZFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAg
ICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShjb2NvYURhdGEsIGNvY29hVHlwZSwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+YWRkVHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAg
ICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUoY29jb2FEYXRhLCBjb2NvYVR5cGUsIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgfQogfQogCkBAIC03MDMsMTQgKzcwMywxNCBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZVBhdGhzKCkKICAgICBhdXRvJiBzdHJhdGVn
eSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAKICAgICBW
ZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBzdHJhdGVneS5nZXRUeXBlcyh0eXBlcywgbV9wYXN0
ZWJvYXJkTmFtZSk7CisgICAgc3RyYXRlZ3kuZ2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZp
bGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCkpKSkKICAgICAgICAgcmV0dXJuIG1fcHJvbWlzZWRG
aWxlUGF0aHM7CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVuYW1l
c1Bhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlUGF0aHM7
Ci0gICAgICAgIHN0cmF0ZWd5LmdldFBhdGhuYW1lc0ZvclR5cGUoZmlsZVBhdGhzLCBsZWdhY3lG
aWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgc3Ry
YXRlZ3kuZ2V0UGF0aG5hbWVzRm9yVHlwZShmaWxlUGF0aHMsIGxlZ2FjeUZpbGVuYW1lc1Bhc3Rl
Ym9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIHJldHVy
biBmaWxlUGF0aHM7CiAgICAgfQogCkBAIC03OTYsNyArNzk2LDcgQEAgc3RhdGljIHZvaWQgc2V0
RHJhZ0ltYWdlSW1wbChOU0ltYWdlICppbWFnZSwgTlNQb2ludCBvZmZzZXQpCiB2b2lkIFBhc3Rl
Ym9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2Nh
dGlvbikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5nIHRoZSBkcmFnIGltYWdlIGlmIHNv
bWVvbmUga2VwdCBhIHBhc3RlYm9hcmQgYW5kIGlzIHRyeWluZyB0byBzZXQgdGhlIGltYWdlIHRv
byBsYXRlLgotICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSkpCisgICAg
aWYgKG1fY2hhbmdlQ291bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBEYXNoYm9hcmQgd2FudHMgdG8gYmUgYWJsZSB0byBzZXQgdGhl
IGRyYWcgaW1hZ2UgZHVyaW5nIGRyYWdnaW5nLCBidXQgQ29jb2EgZG9lcyBub3QgYWxsb3cgdGhp
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0KaW5kZXggNDk1NzU4YjMyNDc4YWQ5NGVlMGY1NGYxYTZkYTI3ZDli
OGY1ZDM1OS4uYzA3NmQ5NGI2ZTI0YmNkMmQxOWRiNDc1OWNkMTliYmFmM2JhZmE4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
ZGlkTW9kaWZ5Q29udGVudHNPZlBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQog
ICAgIH0KIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFR5cGVzKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vz
c1Bhc3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShwYXN0ZWJvYXJk
VHlwZXMpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRo
bmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwKK3ZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsCiAgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIHBhdGhuYW1lcywgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0ZW5zaW9ucyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlw
ZS5pc0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9KSk7CkBAIC0xNzUsNyArMTc1
LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JU
eXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHBhdGhuYW1lcyksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnMpKTsKIH0KIAotdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBh
c3RlYm9hcmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9KSk7CiAKQEAgLTE4
NSw3ICsxODUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc3RyaW5nRm9yVHlwZShwYXN0
ZWJvYXJkVHlwZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2Fy
ZFN0cmluZ3NGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVib2FyZFR5cGUu
aXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcih7IH0pKTsKIApAQCAtMTk1LDcgKzE5NSw3IEBA
IHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkVHlw
ZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9h
cmRUeXBlLmlzRW1wdHkoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9KSk7CiAKQEAgLTIxOCwxMiAr
MjE4LDEyIEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQnVmZmVyRm9y
VHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIHNpemUgfSk7CiB9CiAK
LXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmNoYW5nZUNvdW50KCkpOwogfQogCi12b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZENvbG9yKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpDb2xvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZERhdGEoY29ubmVjdGlv
biwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVi
b2FyZENvbG9yKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUwogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29sb3IoKSk7
CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmREYXRh
KGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHIK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LnVybCgpLnN0cmluZygpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFkZFBhc3Rl
Ym9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgY29t
cGxldGlvbkhhbmRsZXIoMCkpOwogCkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmFkZFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IFMKICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3Rl
Ym9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9O
KCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKDApKTsKIApAQCAt
MjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVHlw
ZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTCiAgICAgY29tcGxldGlvbkhh
bmRsZXIobmV3Q2hhbmdlQ291bnQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0
UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVT
U0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5KCksIGNvbXBsZXRp
b25IYW5kbGVyKDApKTsKIApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
UGFzCiAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpzZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZENvbG9yKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGNvbG9yLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NB
R0VfQ0hFQ0tfQ09NUExFVElPTighcGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBjb21wbGV0aW9u
SGFuZGxlcigwKSk7CiAKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZENvbG9yKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
UwogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5nZUNvdW50KTsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmROYW1lLmlzRW1w
dHkoKSwgY29tcGxldGlvbkhhbmRsZXIoMCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElP
TighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxlcigwKSk7CkBAIC0z
MDUsNyArMzA1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRTdHJp
bmdGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihuZXdDaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpjb250
YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29u
dGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5cGVzKGNvbm5lY3Rpb24sIHBh
c3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
QEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNVUkxT
dHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiBjbwogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29udGFpbnNVUkxT
dHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5
Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYg
dXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFj
YW5BY2Nlc3NQYXN0ZWJvYXJkRGF0YShjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7CkBAIC0zMjMsNyArMzIzLDcg
QEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHVybFN0cmluZyksIFdURk1vdmUodGl0bGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01Q
TEVUSU9OKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKDApKTsK
ICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oIXBhc3RlYm9hcmRUeXBlLmlzRW1wdHkoKSwg
Y29tcGxldGlvbkhhbmRsZXIoMCkpOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sCiAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQpOwogfQogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldE51bWJlck9mRmlsZXMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBwYXN0
ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigwKTsKQEAgLTM1
Miw3ICszNTIsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cgogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkubnVtYmVyT2ZGaWxlcygpKTsK
IH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdy
aXRlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NI
RUNLX0NPTVBMRVRJT04oIW9yaWdpbi5pc051bGwoKSwgY29tcGxldGlvbkhhbmRsZXIoeyB9KSk7
CiAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZl
Rm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudHlwZXNTYWZl
Rm9yRE9NVG9SZWFkQW5kV3JpdGUob3JpZ2luKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBW
ZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRh
dGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkTmFtZS5p
c0VtcHR5KCksIGNvbXBsZXRpb25IYW5kbGVyKDApKTsKIApAQCAtMzcyLDcgKzM3Miw3IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBWZWN0CiAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291
bnQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZv
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NQYXN0ZWJvYXJkVHlwZXMoY29ubmVj
dGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29ucwogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNoYW5nZUNvdW50KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVt
SW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3Rl
Ym9hcmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCk7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChpbmRleCwgY2hhbmdlQ291bnQpKTsKIH0KIAotdm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmRUeXBlcyhjb25uZWN0aW9uLCBw
YXN0ZWJvYXJkTmFtZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigwKTsKQEAg
LTM5Niw3ICszOTYsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjbwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKSk7CiB9CiAK
LXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKCFwYXN0ZWJvYXJkVHlwZS5pc0VtcHR5KCksIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSkpOwogCkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHMKICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnJlYWRTdHJpbmcoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZy
b21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZERh
dGEoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoeyB9LCB7IH0pOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBzaXplCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHRpdGxl
KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hF
Q0tfQ09NUExFVElPTighcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpLCBjb21wbGV0aW9uSGFuZGxl
cih7IH0pKTsKIApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhh
bmRsZSksIHNpemUgfSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0
cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFj
YW5BY2Nlc3NQYXN0ZWJvYXJkVHlwZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtNDQ5LDcgKzQ0OSw3IEBA
IHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRG
b3JUeXBlKElQQzo6Q29ubmVjdGlvbiYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVVSTFRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVVSTFRvUGFzdGVi
b2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5KCkp
OwogCkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVVJM
VG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QKICAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkV3JpdGVUb1Bhc3RlYm9hcmRB
c3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSksIDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7CiAgICAg
TUVTU0FHRV9DSEVDSyghcGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpKTsKIApAQCAtNDcxLDcgKzQ3
MSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9h
cmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkRpZFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFz
dGVib2FyZE5hbWUpLCAwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1h
Z2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJk
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZElt
YWdlJiBwYXN0ZWJvYXJkSW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyghcGFzdGVi
b2FyZE5hbWUuaXNFbXB0eSgpKTsKIApAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRp
ZFdyaXRlVG9QYXN0ZWJvYXJkQXN5bmNocm9ub3VzbHkocGFzdGVib2FyZE5hbWUpLCAwKTsKIH0K
IAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OndyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKQogewogICAgIE1FU1NBR0VfQ0hFQ0soIXBhc3RlYm9hcmROYW1lLmlzRW1wdHko
KSk7CiAgICAgTUVTU0FHRV9DSEVDSyghcGFzdGVib2FyZFR5cGUuaXNFbXB0eSgpIHx8IHRleHQu
aXNFbXB0eSgpKTsKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjbwog
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEaWRXcml0ZVRvUGFz
dGVib2FyZEFzeW5jaHJvbm91c2x5KHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7CiAgICAgUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMo
aWRlbnRpZmllcnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5jcHAKaW5kZXggYmM3Y2MwYTQ4ZDA5NjExNzU2NDkxN2E5MDVmM2I4MWY0ZDQ1ZTg5
Ni4uMTY5M2Y4MWQzNDBhNjRjNGIxNjMzNTJhODU0YzdlNTYzNWQwODY3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCkBAIC04MCw2MiArODAs
NjIgQEAgV2ViUHJvY2Vzc1Byb3h5KiBXZWJQYXN0ZWJvYXJkUHJveHk6OndlYlByb2Nlc3NQcm94
eUZvckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW8KICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKICNp
ZiAhUExBVEZPUk0oR1RLKQotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1
c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9h
cmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50
NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVDdXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CiB9CiAjZW5kaWYKIAotdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8o
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwogfQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24m
LCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CiB9CiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9u
Jiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
IHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXpl
X3QsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7CiB9CiAK
LXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpD
b25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogfQogCiAjaWYgIVVTRShMSUJXUEUpCiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0
aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6
ZV90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKICNlbmRpZiAv
LyAhVVNFKExJQldQRSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zU3RyaW5n
U2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1N0cmluZ1NhZmVGb3JE
T01Ub1JlYWRGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0
cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmlu
ZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3Ry
aW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKaW5kZXggNDM0ZDE3NjRkMGUwZWZmODEy
YjEyYTc0MjY1MzQyMmFmZWQwYmIwZi4uZjVjZDU5NThiMmNmNDMzNmM1YmQwMmZiNmRkY2UzYzYw
M2UxNzg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2Fy
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5
LmgKQEAgLTI4LDEwICsyOCwxMiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC04
NSw0MiArODcsNDIgQEAgcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQ
cm94eUZvckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJikgY29uc3Q7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHZvaWQgd3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOwotICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCB1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICB2b2lkIHdyaXRlVVJMVG9QYXN0ZWJv
YXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4pOworICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsKKyAgICB2
b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsKKyAgICB2b2lkIHdyaXRlU3RyaW5nVG9QYXN0
ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPik7CisgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXROdW1iZXJPZkZpbGVzKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRQYXRo
bmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJiBwYXRobmFtZXMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
JiYpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKLSAgICB2b2lk
IGdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIGdldFBhc3Rl
Ym9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZENoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZENvbG9yKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29sb3ImJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZFVSTChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGFkZFBhc3Rl
Ym9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDY0X3QpPiYmKTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYm
KTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZENv
bG9yKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBzZXRQYXN0
ZWJvYXJkU3RyaW5nRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKLSAgICB2b2lkIHNldFBhc3RlYm9h
cmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9p
ZCBnZXROdW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBwYXRobmFtZXMsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5JiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdG
b3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYpOworICAgIHZvaWQg
Z2V0UGFzdGVib2FyZENoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQ2NF90KT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYpPiYmKTsK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGFkZFBhc3Rl
Ym9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwor
ICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZENvbG9yKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0
X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQYXN0
ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwotICAgIHZvaWQgcmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmlu
ZyYmIHRpdGxlKT4mJik7Ci0gICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpD
b25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKLSAgICB2b2lkIGluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYpOwotICAgIHZv
aWQgYWxsUGFzdGVib2FyZEl0ZW1JbmZvKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYmKTsK
LQotICAgIHZvaWQgd3JpdGVDdXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKLSAgICB2b2lkIHR5
cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIGNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7Ci0gICAgdm9pZCBjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKKyAgICB2b2lk
IHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKElQQzo6
Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmKTsKKyAgICB2b2lkIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0
aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90
IGNoYW5nZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4m
Jik7CisgICAgdm9pZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4mJik7CisKKyAgICB2b2lk
IHdyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZvaWQgY29udGFpbnNTdHJpbmdT
YWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY29udGFp
bnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHVybFN0cmluZ1N1aXRh
YmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOwogCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIHZvaWQgZ2V0VHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggYTk1NmQ1YTc2M2QxMzQ0ZThlNjEwYWRiNDEzNGE2NzUxNWQ4Y2JiZS4uZjIzZjg1Y2Q1NTgw
MjZkMDk5ODRmNjg3MTg4MDIxZmM4ZTc4YTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNDIgKzIy
LDQyIEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSBOb3RSZWZDb3VudGVkIHsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdyaXRlVVJMVG9QYXN0ZWJvYXJkKHN0cnVj
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHVybCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSBXYW50
c0Nvbm5lY3Rpb24KLSAgICBXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkg
V2FudHNDb25uZWN0aW9uCi0gICAgV3JpdGVJbWFnZVRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29y
ZTo6UGFzdGVib2FyZEltYWdlIHBhc3RlYm9hcmRJbWFnZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1l
KSBXYW50c0Nvbm5lY3Rpb24KLSAgICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIFN0cmluZyB0ZXh0LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIFdhbnRzQ29u
bmVjdGlvbgotICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5n
PiBpZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQorICAgIFdyaXRlVVJMVG9QYXN0
ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHVybCwgU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBXYW50c0Nv
bm5lY3Rpb24KKyAgICBXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHNDb25uZWN0aW9uCisg
ICAgV3JpdGVJbWFnZVRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdl
IHBhc3RlYm9hcmRJbWFnZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBXcml0ZVN0cmlu
Z1RvUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyB0ZXh0LCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IFdhbnRzQ29ubmVjdGlvbgorICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhWZWN0
b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogI2VuZGlmCiAKLSAgICBXcml0ZUN1c3Rv
bURhdGEoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiBkYXRhLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KLSAgICBUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4pIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkgLT4gKE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxJbmZvKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KLSAgICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIC0+IChPcHRpb25h
bDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm8pIFN5bmNocm9ub3VzIFdhbnRzQ29u
bmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgot
ICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3Rl
Ym9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0
X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0
aXRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgUmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlKSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBDb250YWluc1N0cmluZ1NhZmVGb3JET01U
b1JlYWRGb3JUeXBlKFN0cmluZyB0eXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChib29s
IHJlc3VsdCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgV3JpdGVDdXN0b21EYXRh
KFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gZGF0YSwgU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAo
aW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgVHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcg
b3JpZ2luLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVj
dG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbykgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCisgICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRf
dCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoT3B0aW9uYWw8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24K
KyAgICBHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBpdGVtc0Nv
dW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAo
U3RyaW5nIHN0cmluZykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgUmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsLCBTdHJp
bmcgdGl0bGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkgU3luY2hyb25vdXMg
V2FudHNDb25uZWN0aW9uCisgICAgQ29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlw
ZShTdHJpbmcgdHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzIFdhbnRz
Q29ubmVjdGlvbgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBQYXN0ZWJvYXJkIG1lc3Nh
Z2VzLgotICAgIEdldE51bWJlck9mRmlsZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWlu
dDY0X3QgbnVtYmVyT2ZGaWxlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgR2V0
UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+
IHR5cGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkUGF0
aG5hbWVzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHBhdGhuYW1lcywgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9ucykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0
aW9uCi0gICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChWZWN0b3I8U3RyaW5nPiBz
dHJpbmdzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkQnVm
ZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkg
LT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlKSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMKLSAgICBHZXRQ
YXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViQ29yZTo6Q29sb3Ig
Y29sb3IpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRVUkwo
U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybFN0cmluZykgU3luY2hyb25vdXMg
V2FudHNDb25uZWN0aW9uCi0gICAgQWRkUGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzKSAtPiAoaW50NjRfdCBjaGFuZ2VD
b3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZFR5cGVz
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzKSAt
PiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
U2V0UGFzdGVib2FyZFVSTChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJk
VVJMLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBXZWJDb3JlOjpDb2xvciBjb2xvcikgLT4gKGludDY0X3QgY2hhbmdlQ291
bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldFBhc3RlYm9hcmRTdHJpbmdG
b3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJp
bmcgc3RyaW5nKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgaGFuZGxlKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCi0gICAgQ29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoU3RyaW5nIHBh
c3RlYm9hcmROYW1lKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlv
bgotICAgIFVSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUp
IC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlv
bgorICAgIEdldE51bWJlck9mRmlsZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAodWludDY0X3QgbnVtYmVyT2ZGaWxl
cykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFR5cGVzKFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rp
b24KKyAgICBHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+IHBhdGhuYW1lcywgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9ucykgU3luY2hyb25vdXMgV2Fu
dHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nv
bm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiBzdHJpbmdzKSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
aGFuZGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkQ2hh
bmdlQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMKKyAg
ICBHZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoV2ViQ29yZTo6Q29sb3IgY29sb3IpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRVUkwoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoU3RyaW5nIHVybFN0cmluZykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQWRk
UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFz
dGVib2FyZFR5cGVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAg
U2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4g
cGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisg
ICAgU2V0UGFzdGVib2FyZFVSTChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCBwYXN0ZWJv
YXJkVVJMLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBXZWJDb3JlOjpDb2xvciBjb2xvciwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVj
dGlvbgorICAgIFNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgc3RyaW5nLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgU2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoU3Ry
aW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCisgICAgQ29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFVSTFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUp
IFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEsp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFBy
b3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJv
eHlHdGsuY3BwCmluZGV4IDA5Y2E1NTYyMTg2YTNhYmE0NGY1YjQ3NDgzNmQzOWNhYjUwNDg0OWUu
LjY3ZGNhNDcyMzc0YWYwODMyYWNiNWQwODkzNGY3YjM4ZWU1OTFiN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCkBA
IC04Nyw3ICs4Nyw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpkaWREZXN0cm95RnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUpCiAgICAgICAgIG1fcHJpbWFyeVNlbGVjdGlvbk93bmVyID0g
bnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgY2xpcGJvYXJkID0gQ2xp
cGJvYXJkOjpnZXQocGFzdGVib2FyZE5hbWUpOwogICAgIGNsaXBib2FyZC5yZWFkQnVmZmVyKFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIFsmY2xpcGJvYXJkLCBvcmlnaW4sIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIGJ1ZmZlcikgbXV0YWJsZSB7CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Ondy
aXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1
c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0
b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGRhdGEuaXNF
bXB0eSgpIHx8IGRhdGEuc2l6ZSgpID4gMSkgewogICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0
IG1vcmUgdGhhbiBvbmUgY3VzdG9tIGl0ZW0gaW4gdGhlIGNsaXBib2FyZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpYndwZS9XZWJQYXN0ZWJvYXJkUHJveHlMaWJXUEUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxp
YldQRS5jcHAKaW5kZXggYjkxMDVjODU4ZjdjOWM3ZjJiMzkwNDMxYzdhNDZhZGEwOGY0ZTM2MC4u
OWE1NzZhMmM5NmJiNTlmZjlkMGIzYjk5MjM5Y2VkNTUyZjU4YzdmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxpYldQRS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxp
YldQRS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmcKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlv
biYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQ
Qzo6Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0
aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQoKS5yZWFkU3RyaW5nKGluZGV4LCBwYXN0ZWJv
YXJkVHlwZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KaW5kZXggMjQ4MDBmNmM1OTM1NGVhNWY1YWI1ODRkOTZiODE2YTc0ZGU2
Y2MwOC4uYTJjOGJiMWE0NzE3OGNjMGMzNDdhZGM0N2JkMDY0OThkYjU3YzFjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC03
OCw2ICs3OCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUERGRG9jdW1lbnRJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KQEAgLTI1OTIsMTAgKzI1OTMsMTEgQEAgdm9pZCBQREZQ
bHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oKQogdm9pZCBQREZQbHVnaW46OndyaXRl
SXRlbXNUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU0FycmF5ICppdGVt
cywgTlNBcnJheSAqdHlwZXMpCiB7CiAgICAgYXV0byBwYXN0ZWJvYXJkVHlwZXMgPSBtYWtlVmVj
dG9yPFN0cmluZz4odHlwZXMpOworICAgIGF1dG8gcGFnZUlkZW50aWZpZXIgPSBtX2ZyYW1lICYm
IG1fZnJhbWUtPmNvcmVGcmFtZSgpID8gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnBhZ2VJRCgpIDog
V1RGOjpudWxsb3B0OwogCiAgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudDsKICAgICBhdXRvJiB3
ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7Ci0gICAgd2ViUHJvY2Vzcy5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlcyks
CisgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5h
bWUsIHBhc3RlYm9hcmRUeXBlcywgcGFnZUlkZW50aWZpZXIpLAogICAgICAgICBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KG5ld0NoYW5nZUNv
dW50KSwgMCk7CiAKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDAsIGNvdW50ID0gaXRlbXMuY291
bnQ7IGkgPCBjb3VudDsgKytpKSB7CkBAIC0yNjA5LDE1ICsyNjExLDE1IEBAIHZvaWQgUERGUGx1
Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNB
cnJheSAqaXRlbXMsCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoW3R5cGUg
aXNFcXVhbFRvU3RyaW5nOmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldIHx8IFt0eXBlIGlz
RXF1YWxUb1N0cmluZzpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXSkgewotICAgICAgICAgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBwbGFpblRleHRTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7Ci0g
ICAgICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBl
KHBhc3RlYm9hcmROYW1lLCB0eXBlLCBwbGFpblRleHRTdHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3
Q2hhbmdlQ291bnQpLCAwKTsKKyAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0U3RyaW5nID0gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10pOworICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0
ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3RyaW5n
LmdldCgpLCBwYWdlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKICAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKLSAg
ICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9y
eTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBzaGFyZWRNZW1v
cnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAg
IG1lbWNweShzaGFyZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgICAgICAgICB3ZWJQcm9jZXNz
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBl
LCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXpl
KCkgfSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJG
b3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOworICAgICAgICAgICAgd2ViUHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlw
ZSwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlci0+c2l6
ZSgpIH0sIHBhZ2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0
UGFzdGVib2FyZEJ1ZmZlckZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDM2
NmZiODExNDU3MGU5NGU4ZWY5MTRmM2MyMTA2OTgzMzQ3YTY1ZTQuLjQ5NTQwNDNiYzA4MTE3ZjVl
NzI3MDIwMmJjYTEwYzk4ZTJmM2FiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtUGFzdGVib2FyZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2Vy
Lmg+CkBAIC0xMDksMTAgKzExMCwxOCBAQCBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKICAgICByZXR1cm4gbmV3IEJsb2JSZWdpc3RyeVBy
b3h5OwogfQogCitzdGF0aWMgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVy
KGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoreworICAgIGlmICghaXM8UGFnZVBh
c3RlYm9hcmRDb250ZXh0Pihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIHJldHVybiBkb3duY2FzdDxQYWdlUGFzdGVib2FyZENvbnRleHQ+KCpjb250ZXh0KS5w
YWdlSUQoKTsKK30KKwogI2lmIFBMQVRGT1JNKENPQ09BKQogLy8gUGFzdGVib2FyZFN0cmF0ZWd5
CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAv
LyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIC8vIFRoZSBwdXJwb3NlIG9mIHRoZSBv
dmVycmlkZXMgaXMgdG8gYXZvaWQgbWVzc2FnaW5nIGJhY2sgdG8gdGhlIFVJIHByb2Nlc3MuCkBA
IC0xMjEsMTAgKzEzMCwxMCBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIGlmICghdHlw
ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwg
MCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5
cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0
b3I8Y2hhcj4gb3ZlcnJpZGVCdWZmZXI7CkBAIC0xMzMsNzMgKzE0Miw3MyBAQCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJgogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9j
ZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGlwY0hhbmRsZTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpH
ZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUp
LCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZTo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6R2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9h
cmRUeXBlLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlOjpSZXBseShpcGNIYW5kbGUpLCAwKTsK
ICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVk
TWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0
YVNpemUpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheTsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShw
YXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUpLAorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKHBhc3RlYm9hcmROYW1l
LCBwYXN0ZWJvYXJkVHlwZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLAogICAgICAgICBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6
UmVwbHkocGF0aG5hbWVzLCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KSwgMCk7CiAgICAg
QVNTRVJUKHBhdGhuYW1lcy5zaXplKCkgPT0gc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5z
aXplKCkpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShzYW5kYm94
RXh0ZW5zaW9uc0hhbmRsZUFycmF5KTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTdHJp
bmcgdmFsdWU7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5
KHZhbHVlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFz
dGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBwYWdl
SWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpSZXBseSh2YWx1ZSksIDApOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAotVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJpbmdz
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQorVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxTdHJp
bmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBW
ZWN0b3I8U3RyaW5nPiB2YWx1ZXM7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6R2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJk
VHlwZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRTdHJpbmdz
Rm9yVHlwZTo6UmVwbHkodmFsdWVzKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6R2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0
ZWJvYXJkVHlwZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGU6OlJlcGx5KHZhbHVlcyksIDAp
OwogICAgIHJldHVybiB2YWx1ZXM7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgY2hh
bmdlQ291bnQgeyAwIH07CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2FpdEZvclBlbmRp
bmdQYXN0ZWJvYXJkV3JpdGVzVG9GaW5pc2gocGFzdGVib2FyZE5hbWUpOwotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChwYXN0ZWJv
YXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRDaGFu
Z2VDb3VudDo6UmVwbHkoY2hhbmdlQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQocGFzdGVib2FyZE5hbWUsIHBh
Z2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
UGFzdGVib2FyZENoYW5nZUNvdW50OjpSZXBseShjaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVy
biBjaGFuZ2VDb3VudDsKIH0KIAotQ29sb3IgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcihj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorQ29sb3IgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBDb2xvciBjb2xvcjsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ29sb3IocGFzdGVib2FyZE5hbWUpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KGNvbG9y
KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2Fy
ZENvbG9yKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRDb2xvcjo6UmVwbHkoY29sb3IpLCAw
KTsKICAgICByZXR1cm4gY29sb3I7CiB9CiAKLVVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVy
bChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewogICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFVSTChwYXN0ZWJvYXJkTmFtZSksIE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRVUkw6OlJlcGx5KHVybFN0
cmluZyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3Rl
Ym9hcmRVUkwocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFVSTDo6UmVwbHkodXJsU3RyaW5n
KSwgMCk7CiAgICAgcmV0dXJuIFVSTCh7IH0sIHVybFN0cmluZyk7CiB9CiAKLWludDY0X3QgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzKHBhc3Rl
Ym9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpBZGRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzKHBhc3RlYm9h
cmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzOjpSZXBseShuZXdDaGFu
Z2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAgfTsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXMocGFz
dGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlNldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVi
b2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlcywgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KG5ld0No
YW5nZUNvdW50KSwgMCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAm
JiBidWZmZXItPnNpemUoKSkgewpAQCAtMjEyLDgxICsyMjEsODEgQEAgaW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFN0cmkKICAgICAgICAgfQogICAgIH0KICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsg
MCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRC
dWZmZXJGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
MCB9KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUocGFzdGVib2FyZE5hbWUs
IHBhc3RlYm9hcmRUeXBlLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxl
KSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwIH0sIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5
cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50
OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VVJMKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmIHBhc3RlYm9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwm
IHBhc3RlYm9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQ7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFVSTChwYXN0
ZWJvYXJkVVJMLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlNldFBhc3RlYm9hcmRVUkw6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFVSTChwYXN0ZWJvYXJkVVJM
LCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVVJMOjpSZXBseShuZXdDaGFuZ2VDb3VudCks
IDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcihj
b25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQg
eyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2Fy
ZENvbG9yKHBhc3RlYm9hcmROYW1lLCBjb2xvciksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlNldFBhc3RlYm9hcmRDb2xvcjo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQ29sb3IocGFzdGVi
b2FyZE5hbWUsIGNvbG9yLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRDb2xvcjo6UmVwbHkobmV3Q2hhbmdlQ291bnQp
LCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IGludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBh
c3RlYm9hcmRUeXBlLCBzdHJpbmcpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlw
ZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIHN0cmluZywgcGFnZUlkZW50aWZpZXIo
Y29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3Ry
aW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hh
bmdlQ291bnQ7CiB9CiAKLWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9mRmls
ZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgdWludDY0X3QgbnVtYmVyT2ZGaWxl
cyB7IDAgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXROdW1iZXJP
ZkZpbGVzKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
TnVtYmVyT2ZGaWxlczo6UmVwbHkobnVtYmVyT2ZGaWxlcyksIDApOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldE51bWJlck9mRmlsZXMocGFzdGVib2FyZE5hbWUsIHBh
Z2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
TnVtYmVyT2ZGaWxlczo6UmVwbHkobnVtYmVyT2ZGaWxlcyksIDApOwogICAgIHJldHVybiBudW1i
ZXJPZkZpbGVzOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNVUkxT
dHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2Jv
b2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9h
ZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBib29sIHJlc3VsdDsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpDb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhwYXN0ZWJv
YXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkNvbnRhaW5zVVJMU3RyaW5n
U3VpdGFibGVGb3JMb2FkaW5nOjpSZXBseShyZXN1bHQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpDb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhw
YXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpDb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZzo6UmVwbHko
cmVzdWx0KSwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgU3RyaW5nIHVybDsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVUkxT
dHJpbmdTdWl0YWJsZUZvckxvYWRpbmcocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmc6OlJlcGx5KHVybCwgdGl0
bGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVUkxTdHJpbmdT
dWl0YWJsZUZvckxvYWRpbmcocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VVJMU3RyaW5nU3VpdGFibGVGb3JMb2Fk
aW5nOjpSZXBseSh1cmwsIHRpdGxlKSwgMCk7CiAgICAgcmV0dXJuIHVybDsKIH0KIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRv
UGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQo
Y29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFt
ZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVVSTFRvUGFzdGVib2Fy
ZCh1cmwsIHBhc3RlYm9hcmROYW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpXcml0ZVVSTFRvUGFzdGVib2FyZCh1cmwsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRp
Zmllcihjb250ZXh0KSksIDApOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3Jp
dGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRl
bnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRl
bnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndpbGxX
cml0ZVRvUGFzdGVib2FyZEFzeW5jaHJvbm91c2x5KHBhc3RlYm9hcmROYW1lKTsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb250
ZW50LCBwYXN0ZWJvYXJkTmFtZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6V3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnRlbnQsIHBhc3RlYm9hcmROYW1lLCBw
YWdlSWRlbnRpZmllcihjb250ZXh0KSksIDApOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiBp
bWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2Um
IGltYWdlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53aWxsV3JpdGVU
b1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZUltYWdlVG9QYXN0ZWJvYXJkKGltYWdlLCBwYXN0ZWJv
YXJkTmFtZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVJbWFn
ZVRvUGFzdGVib2FyZChpbWFnZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgMCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53aWxsV3Jp
dGVUb1Bhc3RlYm9hcmRBc3luY2hyb25vdXNseShwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChwYXN0ZWJvYXJk
VHlwZSwgdGV4dCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OldyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlLCB0ZXh0LCBw
YXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCAwKTsKIH0KIAotdm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVcGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmROYW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpVcGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMs
IHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIDApOwogfQogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKQEAgLTM1Niw1MiArMzY1LDUyIEBAIHZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zCiAKICNlbmRpZiAvLyBVU0UoTElCV1BFKQogCi1WZWN0b3I8U3RyaW5n
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQorVmVjdG9y
PFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXM7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VHlwZXNTYWZlRm9y
RE9NVG9SZWFkQW5kV3JpdGUocGFzdGVib2FyZE5hbWUsIG9yaWdpbiksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlOjpSZXBseSh0eXBl
cyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlR5cGVzU2FmZUZv
ckRPTVRvUmVhZEFuZFdyaXRlKHBhc3RlYm9hcmROYW1lLCBvcmlnaW4sIHBhZ2VJZGVudGlmaWVy
KGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGU6OlJlcGx5KHR5cGVzKSwgMCk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQog
Ci1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZl
Y3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNv
bnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlu
dDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6V3JpdGVDdXN0b21EYXRhKGRhdGEsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVDdXN0b21EYXRhOjpSZXBseShuZXdDaGFuZ2VDb3Vu
dCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlQ3VzdG9t
RGF0YShkYXRhLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZUN1c3RvbURhdGE6OlJlcGx5KG5ld0NoYW5n
ZUNvdW50KSwgMCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1ib29sIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitib29sIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6Q29udGFpbnNTdHJpbmdTYWZl
Rm9yRE9NVG9SZWFkRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGU6OlJl
cGx5KHJlc3VsdCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkNv
bnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUs
IHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
Q29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZTo6UmVwbHkocmVzdWx0KSwgMCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIHVpbnQ2NF90IGl0ZW1zQ291bnQgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZEl0ZW1zQ291bnQocGFzdGVib2FyZE5hbWUpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudDo6UmVwbHko
aXRlbXNDb3VudCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Okdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250
ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50OjpSZXBseShpdGVtc0NvdW50KSwgMCk7CiAgICAgcmV0dXJuIGl0ZW1zQ291bnQ7CiB9CiAK
LU9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBp
bnQ2NF90IGNoYW5nZUNvdW50KQorT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQogewogICAgIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUlu
Zm8+PiBhbGxJbmZvOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhwYXN0ZWJvYXJkTmFtZSwgY2hhbmdlQ291bnQpLCBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm86OlJlcGx5KGFsbEluZm8p
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJk
SXRlbUluZm8ocGFzdGVib2FyZE5hbWUsIGNoYW5nZUNvdW50LCBwYWdlSWRlbnRpZmllcihjb250
ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5m
bzo6UmVwbHkoYWxsSW5mbyksIDApOwogICAgIHJldHVybiBhbGxJbmZvOwogfQogCi1PcHRpb25h
bDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQpCitPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mbzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFtZSwgY2hhbmdlQ291bnQp
LCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
OjpSZXBseShpbmZvKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUsIGNoYW5nZUNv
dW50LCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXg6OlJlcGx5KGluZm8pLCAwKTsKICAgICByZXR1
cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRs
ZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdl
SWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CiAgICAgaWYgKGlwY0hh
bmRsZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC00MDks
MTcgKzQxOCwxNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaQogICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1
ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAotVVJMIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFt
ZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6
UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZE5hbWUsIHBh
Z2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZFVSTEZyb21QYXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJpbmcsIHRpdGxlKSwgMCk7CiAgICAgcmV0
dXJuIFVSTCh7IH0sIHVybFN0cmluZyk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTdHJpbmcgdmFs
dWU7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHZh
bHVlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBh
Z2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIDApOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGE0ODM3MDk3ODllNTY4
Yjc4OGYyYzU4MzNjMGZmNTkzNzgxMDdjOWMuLmIzOGEwYjFkMGU1ZjlmODFiNTFlZjk2MjM5N2Y3
NDhmYzg0YzhkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDMyICs0
NywzMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3Jl
OjogUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZElt
YWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHVw
ZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRp
ZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQg
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29y
ZTo6IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaW50IGdl
dE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBl
KFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVVJMIHVybChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBT
dHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBjaGFu
Z2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogCi0gICAgaW50NjRf
dCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldFVSTChjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7Ci0gICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IGFkZFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJD
b3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRV
UkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogCi0gICAgYm9vbCBjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBTdHJpbmcgdXJsU3Ry
aW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmlu
ZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZv
ckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVG
b3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShHVEspCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBAIC04OCwxNSArODgsMTUgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAg
IGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIG92ZXJy
aWRlOwotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBvdmVycmlk
ZTsKLSAgICBpbnQ2NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBj
b250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFN0cmluZyByZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0
bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50
IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBP
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBj
b250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggMzZjZDFjYWUwMGU5YzZlY2QzZGE3MWQ5OGUzMDMwYjExMTcxMWIz
OS4uMzc4ZDRkNjI1NTNhYzIzMDM4ZWU2OThkNDA5MDY0ODdiYzM1NWYxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ4LDM5ICs0OCwzOSBAQCBwcml2YXRlOgogCiAgICAgLy8g
V2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHdyaXRlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKKyAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgotICAg
IFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBVUkwgcmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSkgb3ZlcnJpZGU7Ci0gICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIG92
ZXJyaWRlOwotICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCkgb3ZlcnJpZGU7Ci0gICAgaW50IGdldE51bWJlck9mRmlsZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwot
ICAgIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7Ci0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKKyAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IGNoYW5nZUNv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKKyAgICBVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAKLSAgICBpbnQ2NF90IHdy
aXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFN0
cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOworICAgIGludDY0X3Qgd3Jp
dGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4m
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogCi0g
ICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNl
dFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldFVS
TChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludDY0X3Qg
c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBib29sIGNv
bnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb250YWluc1VSTFN0
cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIGludDY0X3Qg
YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKKyAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JU
eXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRTdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBjb250YWluc1N0cmluZ1NhZmVGb3JET01Ub1JlYWRG
b3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBjb250YWlu
c1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFN0cmlu
ZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBlYmJiM2JlYTZl
ZGJiNDdiY2I0ZTJkMGIyOTdmY2QwNWViYTYzMjk1Li4xOTNmMjBkNGUwNTIxMDRmOTU4MzM1ZjYx
NzM1NWZiODMxOTc4ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMTIs
MTU5ICsxMTIsMTU5IEBAIEJsb2JSZWdpc3RyeSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVh
dGVCbG9iUmVnaXN0cnkoKQogICAgIHJldHVybiBuZXcgV2ViQmxvYlJlZ2lzdHJ5OwogfQogCi12
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLXZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+
JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRQYXRo
bmFtZXNGb3JUeXBlKHBhdGhuYW1lcywgcGFzdGVib2FyZFR5cGUpOwogfQogCi1WZWN0b3I8U3Ry
aW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitWZWN0b3I8
U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5hbGxTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnN0
cmluZ0ZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0
X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKTsKIH0KIAotQ29sb3Ig
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQorQ29sb3IgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcihjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29sb3IoKTsgICAgCiB9CiAKLVVSTCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorVVJM
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS51cmwoKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFkZFR5cGVzKHBhc3Rl
Ym9hcmRUeXBlcyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwog
fQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
c2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotaW50NjRfdCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJv
YXJkVVJMLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VVJMKHBh
c3RlYm9hcmRVUkwpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50
NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQog
ewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldENvbG9y
KGNvbG9yKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLnNldFN0cmluZ0ZvclR5cGUoc3RyaW5nLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAK
LWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK2ludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9m
RmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLm51
bWJlck9mRmlsZXMoKTsKIH0KIAotVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKK1ZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS50eXBl
c1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShvcmlnaW4pOwogfQogCi1pbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRhKTsKIH0KIAotYm9vbCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlKQorYm9v
bCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZSh0
eXBlKTsKIH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KQorT3B0aW9u
YWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgY2hhbmdlQ291bnQpOwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCkKK09wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNoYW5nZUNvdW50KTsKIH0KIAotaW50IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK2ludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwg
dHlwZSk7CiB9CiAKLVVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYg
dGl0bGUpCitVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwgdGl0bGUpOwogfQogCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCB0eXBlKTsKIH0KIAotYm9v
bCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2Fk
aW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbnRhaW5zVVJMU3RyaW5nU3VpdGFi
bGVGb3JMb2FkaW5nKCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybFN0
cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsU3RyaW5nU3VpdGFi
bGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS51cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcodGl0bGUpOwog
fQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRv
UGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2Vi
Q29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIGlt
YWdlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYg
aW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGlt
YWdlKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0
ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBh
c3RlYm9hcmRUeXBlLCB0ZXh0KTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVw
ZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRp
ZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>