<?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>226342</bug_id>
          
          <creation_ts>2021-05-27 10:09:25 -0700</creation_ts>
          <short_desc>Enable WebPageProxy&apos;s release logging in ephemeral sessions</short_desc>
          <delta_ts>2021-06-01 13:10:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226510</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1764382</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 10:09:25 -0700</bug_when>
    <thetext>Enable WebPageProxy&apos;s release logging in ephemeral sessions. Our release logging doesn&apos;t contain anything sensitive and not having this logging makes it hard to debug issues in apps using ephemeral sessions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764383</commentid>
    <comment_count>1</comment_count>
      <attachid>429893</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 10:10:52 -0700</bug_when>
    <thetext>Created attachment 429893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764399</commentid>
    <comment_count>2</comment_count>
      <attachid>429899</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 10:34:49 -0700</bug_when>
    <thetext>Created attachment 429899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764432</commentid>
    <comment_count>3</comment_count>
      <attachid>429905</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 11:39:40 -0700</bug_when>
    <thetext>Created attachment 429905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764445</commentid>
    <comment_count>4</comment_count>
      <attachid>429908</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 11:56:47 -0700</bug_when>
    <thetext>Created attachment 429908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764455</commentid>
    <comment_count>5</comment_count>
      <attachid>429912</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 12:30:56 -0700</bug_when>
    <thetext>Created attachment 429912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764544</commentid>
    <comment_count>6</comment_count>
      <attachid>429940</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 15:31:53 -0700</bug_when>
    <thetext>Created attachment 429940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764685</commentid>
    <comment_count>7</comment_count>
      <attachid>429989</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 22:49:46 -0700</bug_when>
    <thetext>Created attachment 429989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765654</commentid>
    <comment_count>8</comment_count>
      <attachid>429989</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-01 10:02:48 -0700</bug_when>
    <thetext>Comment on attachment 429989
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765656</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-01 10:04:26 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 429989 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765669</commentid>
    <comment_count>10</comment_count>
      <attachid>430276</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 10:26:48 -0700</bug_when>
    <thetext>Created attachment 430276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765684</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-01 11:14:36 -0700</bug_when>
    <thetext>Committed r278315 (238351@main): &lt;https://commits.webkit.org/238351@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430276.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765685</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-01 11:15:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/78723435&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429893</attachid>
            <date>2021-05-27 10:10:52 -0700</date>
            <delta_ts>2021-05-27 10:39:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226342-20210527101051.patch</filename>
            <type>text/plain</type>
            <size>80357</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliNDk4OGJlYjYyZmU4MjE2
NmIwMDU2ZDk5N2E1YjQ2Yjk0M2VkYWEuLjJjZjA1NWViZGU2NTVlOGMyMzY5MTcwOGRkYmZhNjA2
NGFjNGQ1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA1LTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIFdlYlBhZ2VQcm94eSdz
IHJlbGVhc2UgbG9nZ2luZyBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBXZWJQYWdlUHJveHkncyByZWxl
YXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zLiBPdXIgcmVsZWFzZSBsb2dnaW5nIGRv
ZXNuJ3QKKyAgICAgICAgY29udGFpbiBhbnl0aGluZyBzZW5zaXRpdmUgYW5kIG5vdCBoYXZpbmcg
dGhpcyBsb2dnaW5nIG1ha2VzIGl0IGhhcmQgdG8gZGVidWcgaXNzdWVzIGluCisgICAgICAgIGFw
cHMgdXNpbmcgZXBoZW1lcmFsIHNlc3Npb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhp
bnRzKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVT
dGFydEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgpOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6cHJlc2VudFZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnRyeUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVk
T3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxlQWN0aXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtE
dWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RTdG9yYWdlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZv
cmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvZ2dlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDIxLTA1LTI3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRk
IHZhbGlkYXRpb24gd2hlbiByZWFkaW5nIERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyOjp3
YWl0aW5nU3RhdHVzIGluIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4IGZkOGM3MDdkOTllODQ5MThlY2EwYjA3
ZWZlMWM4YTRjZDI4YzRjODYuLmM5MGMyOTkwNGE0YTU1MTVlYzA5ZjczYjJmYTQ2MDM0NmQyODRj
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC00
NCw3ICs0NCw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0
b3IuaD4KIAotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19JRihtX3BhZ2UgJiYgbV9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQXBw
U1NPLCAiJXAgLSBbSW5pdGlhdGluZ0FjdGlvbj0lc10gU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
IiBmbXQsIHRoaXMsIHRvU3RyaW5nKG1fYWN0aW9uKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUg
QVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKEFw
cFNTTywgIiVwIC0gW0luaXRpYXRpbmdBY3Rpb249JXNdIFNPQXV0aG9yaXphdGlvblNlc3Npb246
OiIgZm10LCB0aGlzLCB0b1N0cmluZyhtX2FjdGlvbiksICMjX19WQV9BUkdTX18pCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpiZWNvbWVDb21wbGV0ZWQoKQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246
OnNob3VsZFN0YXJ0KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzaG91bGRTdGFy
dDoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygic2hvdWxkU3RhcnQ6
Iik7CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSk7CiAgICAgaWYgKCFtX3Bh
Z2UpCkBAIC0xMjcsMTIgKzEyNywxMiBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnNo
b3VsZFN0YXJ0KCkKIAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzdGFydCgpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6Iik7CisgICAgQVVUSE9SSVpBVElPTlNF
U1NJT05fUkVMRUFTRV9MT0coInN0YXJ0OiIpOwogCiAgICAgQVNTRVJUKChtX3N0YXRlID09IFN0
YXRlOjpJZGxlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OldhaXRpbmcpICYmIG1fbmF2aWdhdGlvbkFj
dGlvbik7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmU7CiAgICAgW21fc29BdXRob3JpemF0
aW9uIGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6bV9uYXZpZ2F0aW9uQWN0aW9uLT5yZXF1
ZXN0KCkudXJsKCkgcmVzcG9uc2VDb2RlOjAgY29tcGxldGlvbjptYWtlQmxvY2tQdHIoW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoU09BdXRob3JpemF0aW9uSGludHMgKmF1
dGhvcml6YXRpb25IaW50cywgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RhcnQ6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uSGludHMgKGVycm9yPSVs
ZCkiLCBlcnJvciA/IGVycm9yLmNvZGUgOiAwKTsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJ
T05fUkVMRUFTRV9MT0coInN0YXJ0OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkhpbnRzIChlcnJv
cj0lbGQpIiwgZXJyb3IgPyBlcnJvci5jb2RlIDogMCk7CiAKICAgICAgICAgaWYgKCF3ZWFrVGhp
cyB8fCBlcnJvciB8fCAhYXV0aG9yaXphdGlvbkhpbnRzKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6c3RhcnQoKQog
CiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhv
cml6YXRpb25IaW50cyhjb25zdCBTdHJpbmcmIGhpbnRzKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50czogKGhpbnRz
PSVzKSIsIGhpbnRzLnV0ZjgoKS5kYXRhKCkpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JF
TEVBU0VfTE9HKCJjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHM6IChoaW50
cz0lcykiLCBoaW50cy51dGY4KCkuZGF0YSgpKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpBY3RpdmUpOwogICAgIGlmICghbV9wYWdlKQpAQCAtMTU4LDEzICsxNTgsMTMgQEAgdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0
aW9uSGludHMoY29uc3QgU3RyaW4KIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGlu
dWVTdGFydEFmdGVyRGVjaWRlUG9saWN5KGNvbnN0IFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3km
IHBvbGljeSkKIHsKICAgICBpZiAocG9saWN5ID09IFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6
Oklnbm9yZSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVN0YXJ0
QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6SWdu
b3JlIik7CisgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb250aW51
ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGlj
eTo6SWdub3JlIik7CiAKICAgICAgICAgZmFsbEJhY2tUb1dlYlBhdGgoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlU3RhcnRB
ZnRlckRlY2lkZVBvbGljeTogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpBbGxv
dyIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb250aW51ZVN0YXJ0
QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6QWxs
b3ciKTsKIAogICAgIGlmICghbV9zb0F1dGhvcml6YXRpb24gfHwgIW1fcGFnZSB8fCAhbV9uYXZp
Z2F0aW9uQWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBT
T0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3koY29u
c3QgU09BdXRob3JpemF0aW8KIAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpmYWxsQmFj
a1RvV2ViUGF0aCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZmFsbEJhY2tUb1dl
YlBhdGg6Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImZhbGxCYWNr
VG9XZWJQYXRoOiIpOwogCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkFjdGl2ZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6ZmFsbEJhY2tUb1dlYlBhdGgoKQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmFi
b3J0KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhYm9ydDoiKTsKKyAgICBBVVRI
T1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiYWJvcnQ6Iik7CiAKICAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6SWRsZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAg
IHJldHVybjsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246
OmNvbXBsZXRlKE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UsIE5TRGF0YSAqZAogICAg
IC8vIFNldCBjb29raWVzLgogICAgIGF1dG8gY29va2llcyA9IHRvQ29va2llVmVjdG9yKFtOU0hU
VFBDb29raWUgY29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkczpodHRwUmVzcG9uc2UuYWxs
SGVhZGVyRmllbGRzIGZvclVSTDpyZXNwb25zZS51cmwoKV0pOwogCi0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiY29tcGxldGU6IChodHRwU3RhdHVzQ29kZT0lZCwgaGFzQ29va2llcz0lZCwg
aGFzRGF0YT0lZCkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAhY29va2llcy5pc0VtcHR5
KCksICEhZGF0YS5sZW5ndGgpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9H
KCJjb21wbGV0ZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBoYXNDb29raWVzPSVkLCBoYXNEYXRhPSVk
KSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICFjb29raWVzLmlzRW1wdHkoKSwgISFkYXRh
Lmxlbmd0aCk7CiAKICAgICBpZiAoY29va2llcy5pc0VtcHR5KCkpIHsKICAgICAgICAgY29tcGxl
dGVJbnRlcm5hbChyZXNwb25zZSwgZGF0YSk7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBTT0F1
dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZShOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3Bv
bnNlLCBOU0RhdGEgKmQKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb21wbGV0ZTogQ29va2llcyBh
cmUgc2V0LiIpOworICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiY29t
cGxldGU6IENvb2tpZXMgYXJlIHNldC4iKTsKIAogICAgICAgICBjb21wbGV0ZUludGVybmFsKHJl
c3BvbnNlLCBkYXRhLmdldCgpKTsKICAgICB9KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFNP
QXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlKE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVz
cG9uc2UsIE5TRGF0YSAqZAogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnByZXNlbnRW
aWV3Q29udHJvbGxlcihTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciB2aWV3Q29udHJvbGxl
ciwgVUlDYWxsYmFjayB1aUNhbGxiYWNrKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InByZXNlbnRWaWV3Q29udHJvbGxlcjoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxF
QVNFX0xPRygicHJlc2VudFZpZXdDb250cm9sbGVyOiIpOwogCiAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkFjdGl2ZSk7CiAgICAgLy8gT25seSBleHBlY3QgYXQgbW9zdCBvbmUgVUkgc2Vz
c2lvbiBmb3IgdGhlIHdob2xlIGF1dGhvcml6YXRpb24gc2Vzc2lvbi4KQEAgLTI3NSw3ICsyNzUs
NyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnByZXNlbnRWaWV3Q29udHJvbGxlcihT
T0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicHJlc2VudFZpZXdDb250cm9sbGVyOiBDYWxsaW5n
IGJlZ2luU2hlZXQgb24gJXAgZm9yIHNoZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1fc2hl
ZXRXaW5kb3cuZ2V0KCkpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJw
cmVzZW50Vmlld0NvbnRyb2xsZXI6IENhbGxpbmcgYmVnaW5TaGVldCBvbiAlcCBmb3Igc2hlZXQg
JXAuIiwgcHJlc2VudGluZ1dpbmRvdywgbV9zaGVldFdpbmRvdy5nZXQoKSk7CiAgICAgW3ByZXNl
bnRpbmdXaW5kb3cgYmVnaW5TaGVldDptX3NoZWV0V2luZG93LmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOm5pbF07CiAjZWxpZiBQTEFURk9STShJT1MpCiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV9wYWdlLT51aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3
Q29udHJvbGxlcigpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vz
c2lvbjo6cHJlc2VudFZpZXdDb250cm9sbGVyKFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
CiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6Iik7
CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJv
bGxlcjoiKTsKIAogICAgIEFTU0VSVChtX3ZpZXdDb250cm9sbGVyKTsKICNpZiBQTEFURk9STShN
QUMpCkBAIC0zMDMsMTMgKzMwMywxMyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmRp
c21pc3NWaWV3Q29udHJvbGxlcigpCiAgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPnBsYXRmb3Jt
V2luZG93KCkpIHsKICAgICAgICAgYXV0byAqcHJlc2VudGluZ1dpbmRvdyA9IG1fcGFnZS0+cGxh
dGZvcm1XaW5kb3coKTsKICAgICAgICAgaWYgKHByZXNlbnRpbmdXaW5kb3cubWluaWF0dXJpemVk
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRy
b2xsZXI6IFBhZ2UncyB3aW5kb3cgaXMgbWluaWF0dXJpemVkLiBXYWl0aW5nIHRvIGRpc21pc3Mg
dW50aWwgYWN0aXZlLiIpOworICAgICAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFT
RV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogUGFnZSdzIHdpbmRvdyBpcyBtaW5pYXR1cml6
ZWQuIFdhaXRpbmcgdG8gZGlzbWlzcyB1bnRpbCBhY3RpdmUuIik7CiAgICAgICAgICAgICBpZiAo
bV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyKSB7Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBbTWlu
aWF0dXJpemVkXSBBbHJlYWR5IGhhcyBhIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCkuIEhp
ZGRlbiBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVP
YnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1Zp
ZXdDb250cm9sbGVyOiBbTWluaWF0dXJpemVkXSBBbHJlYWR5IGhhcyBhIGRlbWluaWF0dXJpemVk
IG9ic2VydmVyICglcCkuIEhpZGRlbiBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2VudGluZ1dpbmRv
d0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9i
c2VydmVyLmdldCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIgPSBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpO
U1dpbmRvd0RpZERlbWluaWF0dXJpemVOb3RpZmljYXRpb24gb2JqZWN0OnByZXNlbnRpbmdXaW5k
b3cgcXVldWU6bmlsIHVzaW5nQmxvY2s6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
LCB0aGlzXSAoTlNOb3RpZmljYXRpb24gKikgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogV2luZG93IGhhcyBkZW1pbmlhdHVy
aXplZC4gQ29tcGxldGluZyB0aGUgZGlzbWlzc2FsLiIpOworICAgICAgICAgICAgICAgIEFVVEhP
UklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFdpbmRv
dyBoYXMgZGVtaW5pYXR1cml6ZWQuIENvbXBsZXRpbmcgdGhlIGRpc21pc3NhbC4iKTsKICAgICAg
ICAgICAgICAgICBkaXNtaXNzVmlld0NvbnRyb2xsZXIoKTsKICAgICAgICAgICAgICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fcHJlc2Vu
dGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKV07CiAgICAgICAgICAgICAg
ICAgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyID0gbnVsbHB0cjsK
QEAgLTMxOSwxMyArMzE5LDEzIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlz
c1ZpZXdDb250cm9sbGVyKCkKICAgICB9CiAKICAgICBpZiAoTlNBcHAuaGlkZGVuKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogQXBwbGlj
YXRpb24gaXMgaGlkZGVuLiBXYWl0aW5nIHRvIGRpc21pc3MgdW50aWwgYWN0aXZlLiIpOworICAg
ICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9s
bGVyOiBBcHBsaWNhdGlvbiBpcyBoaWRkZW4uIFdhaXRpbmcgdG8gZGlzbWlzcyB1bnRpbCBhY3Rp
dmUuIik7CiAgICAgICAgIGlmIChtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjog
W0hpZGRlbl0gQWxyZWFkeSBoYXMgYW4gVW5oaWRlIG9ic2VydmVyICglcCkuIERlbWluaWF0dXJp
emVkIG9ic2VydmVyIGlzICVwIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9i
c2VydmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOworICAg
ICAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29u
dHJvbGxlcjogW0hpZGRlbl0gQWxyZWFkeSBoYXMgYW4gVW5oaWRlIG9ic2VydmVyICglcCkuIERl
bWluaWF0dXJpemVkIG9ic2VydmVyIGlzICVwIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5p
YXR1cml6ZU9ic2VydmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fYXBwbGljYXRp
b25EaWRVbmhpZGVPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TQXBwbGljYXRpb25EaWRVbmhpZGVOb3RpZmljYXRpb24g
b2JqZWN0Ok5TQXBwIHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOltwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKSwgdGhpc10gKE5TTm90aWZpY2F0aW9uICopIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogQXBwbGljYXRpb24gaXMg
bm8gbG9uZ2VyIGhpZGRlbi4gQ29tcGxldGluZyB0aGUgZGlzbWlzc2FsLiIpOworICAgICAgICAg
ICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxl
cjogQXBwbGljYXRpb24gaXMgbm8gbG9uZ2VyIGhpZGRlbi4gQ29tcGxldGluZyB0aGUgZGlzbWlz
c2FsLiIpOwogICAgICAgICAgICAgZGlzbWlzc1ZpZXdDb250cm9sbGVyKCk7CiAgICAgICAgICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1f
YXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKV07CiAgICAgICAgICAgICBtX2FwcGxp
Y2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAtMzM3LDEwICszMzcsMTAgQEAg
dm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQogICAg
IG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlciA9IG51bGxwdHI7CiAKICAgICBhdXRvICpw
cmVzZW50aW5nV2luZG93ID0gbV9zaGVldFdpbmRvdy5nZXQoKS5zaGVldFBhcmVudDsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IENhbGxpbmcgZW5k
U2hlZXQgb24gJXAgZm9yIHNoZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1fc2hlZXRXaW5k
b3cuZ2V0KCkpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNz
Vmlld0NvbnRyb2xsZXI6IENhbGxpbmcgZW5kU2hlZXQgb24gJXAgZm9yIHNoZWV0ICVwLiIsIHBy
ZXNlbnRpbmdXaW5kb3csIG1fc2hlZXRXaW5kb3cuZ2V0KCkpOwogICAgIFtwcmVzZW50aW5nV2lu
ZG93IGVuZFNoZWV0Om1fc2hlZXRXaW5kb3cuZ2V0KCldOwogICAgIG1fc2hlZXRXaW5kb3cgPSBu
dWxscHRyOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxl
cjogRmluaXNoZWQgY2FsbCB3aXRoIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCkgYW5kIEhp
ZGRlbiBvYnNlcnZlciAoJXApIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9i
c2VydmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOworICAg
IEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6
IEZpbmlzaGVkIGNhbGwgd2l0aCBkZW1pbmlhdHVyaXplZCBvYnNlcnZlciAoJXApIGFuZCBIaWRk
ZW4gb2JzZXJ2ZXIgKCVwKSIsIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNl
cnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKICNlbGlm
IFBMQVRGT1JNKElPUykKICAgICBbW21fdmlld0NvbnRyb2xsZXIgcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyXSBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxd
OwogI2VuZGlmCkBAIC0zNTAsNiArMzUwLDYgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9u
OjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI3Vu
ZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBBVVRIT1JJWkFUSU9OU0VTU0lPTl9S
RUxFQVNFX0xPRwogCiAjZW5kaWYgLy8gSEFWRShBUFBfU1NPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDIyNmQyOTMzNDA1ZWE1
YjZmMGJjMzY5ZTUxZmQwNzg2MmUzN2FmNzYuLmZmNjI4M2Y2OWI3OTNiNjEwNmI2ZTQ5NDkyNTQ3
ZWY1NjU0NGVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAKQEAgLTU1LDggKzU1LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
Y2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQ
YWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiXSBQcm92
aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50
NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX25hdmlnYXRpb25JRCwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYo
bV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZVBy
b3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpLCBuYXZpZ2F0
aW9uSUQ9JSIgUFJJdTY0ICJdIFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9w
YWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fbmF2aWdhdGlvbklELCAjI19fVkFfQVJHU19f
KQorI2RlZmluZSBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQs
IC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAi
LCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAi
XSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX25hdmlnYXRpb25JRCwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUFJPVklT
SU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2Vi
UGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWksIG5hdmlnYXRpb25JRD0lIiBQUkl1NjQgIl0gUHJv
dmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMjX19WQV9BUkdTX18pCiAKIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2Vzcywgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4g
c3VzcGVuZGVkUGFnZSwgdWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIGlzU2VydmVyUmVkaXJl
Y3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBBUEk6OldlYnNp
dGVQb2xpY2llcyogd2Vic2l0ZVBvbGljaWVzKQogICAgIDogbV9wYWdlKHBhZ2UpCkBAIC03Niw3
ICs3Niw3IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAjZW5kaWYKICNlbmRpZgogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdl
UHJveHk6IHN1c3BlbmRlZFBhZ2U9JXAiLCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKKyAgICBQUk9W
SVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25h
bFBhZ2VQcm94eTogc3VzcGVuZGVkUGFnZT0lcCIsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCiAg
ICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogICAgIG1fcHJvY2Vz
cy0+YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoKnRoaXMpOwpAQCAtMTE4LDcgKzExOCw3IEBAIFBy
b3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHkoKQogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6
Iik7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N3
YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZToiKTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQ
cm9jZXNzRGlkVGVybWluYXRlKCk7CiB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQogICAgICAgICAKICAgICBBU1NFUlQobV9wcm9jZXNz
LT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpOwogCi0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcg
YSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiKTsKICAgICBBU1NFUlQobV9tYWluRnJhbWUp
OwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCk7CiAg
ICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRp
b24pOwpAQCAtMTY0LDE0ICsxNjQsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6aW5p
dGlhbGl6ZVdlYlBhZ2UoUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnMKIAogdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJsb2FkRGF0YToiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkRGF0YToiKTsKIAogICAgIG1fcGFnZS5sb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBu
YXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBX
ZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3RO
YXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJz
aXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJsb2FkUmVxdWVzdDoiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDoiKTsKIAogICAgIC8vIElmIHRoaXMgaXMg
YSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4g
dGhlIG5ldyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhp
cyBjYXNlLAogICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdz
IHByb2Nlc3NJZGVudGlmaWVyIGFzIHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMg
QmFja0ZvcndhcmQgaXRlbSB0byBoYXBwZW4gaW4gdGhlCkBAIC0xODQsNyArMTg0LDcgQEAgdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJDb3JlOjpSZXMKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mIGl0ZW0sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9s
aWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJn
b1RvQmFja0ZvcndhcmRJdGVtOiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06Iik7CiAKICAgICBhdXRv
IGl0ZW1TdGF0ZXMgPSBtX3BhZ2UuYmFja0ZvcndhcmRMaXN0KCkuZmlsdGVyZWRJdGVtU3RhdGVz
KFt0aGlzLCB0YXJnZXRJdGVtID0gJml0ZW1dKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgaWYgKGF1
dG8qIGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSA9IGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCkp
IHsKQEAgLTIxNCw3ICsyMTQsNyBAQCBpbmxpbmUgYm9vbCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
dmFsaWRhdGVJbnB1dChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgTwogCiB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRDcmVhdGVNYWluRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkp
OworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywg
ImRpZENyZWF0ZU1haW5GcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQo
KSk7CiAgICAgQVNTRVJUKCFtX21haW5GcmFtZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZy
YW1lUHJveHk6OmNyZWF0ZShtX3BhZ2UsIGZyYW1lSUQpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5h
dmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJh
bWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgUFJPVklTSU9OQUxQQUdF
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAgICAg
QVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFVSTCA9IHVybDsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2
NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNF
X0xPR19FUlJPUihQcm9jZXNzU3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogICAgIEFTU0VSVCgh
bV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJM
ID0geyB9OwogCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUkKICAg
ICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRD
b21taXRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkp
OworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywg
ImRpZENvbW1pdExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50
NjQoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07CiAgICAgbV9wcm9jZXNzLT5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKQEAgLTQyMSwxNCArNDIxLDE0IEBAIHZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZShjb25z
dCBXZWJDb3JlOjpDb250CiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVD
b250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9JXUi
LCBjb250ZXh0SUQpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nl
c3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJv
cGFnYXRpb246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7CiAgICAgbV9jb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MgPSBjb250ZXh0SUQ7CiB9CiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVD
b250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0Nv
bnRleHRJRCBjb250ZXh0SUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uOiBjb250ZXh0SUQ9JXUiLCBjb250ZXh0SUQpOworICAgIFBST1ZJU0lPTkFMUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRleHRJbkdQVVBy
b2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7
CiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MgPSBj
b250ZXh0SUQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA5ODM1YTY0NTcwNGE1
Zjk2YzIzNGNiOTAzMzRmYjg0OTg1MThjMGFhLi4xNDk1ZDg5YzIyNDNjYjQ4YjA1M2JiZjU5OTU1
NGM5MWM5NDdlOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbQpAQCAtNTA0LDcgKzUwNCw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eTo6aGFzVmlzaWJsZUNvbnRlbnQoKSBjb25zdAogCiBib29sIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwor
ICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKTsKIH0KIAogQ0FMYXllciAqUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
bGF5ZXJXaXRoSURGb3JUZXN0aW5nKHVpbnQ2NF90IGxheWVySUQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNTJlMmI4ZTA5ZjliMGFlNGEzNDA0
NGYyMmQ2ODMyYzgwZWMzMzg0Li41ZWFjNjUzNDc1MGE3Zjk5ZGM4NmNmMjYwNjFhODE5M2JhMjlk
NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxNSw4
ICszMTUsOCBAQAogI2RlZmluZSBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCB1cmwpIE1FU1NB
R0VfQ0hFQ0tfQkFTRShjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRPclByZXZpb3VzV2ViUHJv
Y2Vzcyhwcm9jZXNzLCB1cmwpLCBwcm9jZXNzLT5jb25uZWN0aW9uKCkpCiAjZGVmaW5lIE1FU1NB
R0VfQ0hFQ0tfQ09NUExFVElPTihwcm9jZXNzLCBhc3NlcnRpb24sIGNvbXBsZXRpb24pIE1FU1NB
R0VfQ0hFQ0tfQ09NUExFVElPTl9CQVNFKGFzc2VydGlvbiwgcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LCBjb21wbGV0aW9uKQogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwg
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFu
bmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQg
IiwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQ
YWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laV0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAg
LSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVp
XSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93
ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19f
VkFfQVJHU19fKQorI2RlZmluZSBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5l
bCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJ
RD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWldIFdlYlBhZ2VQcm94
eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAK
IC8vIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3aGVlbCBldmVudHMgd2UgY2FuIGhvbGQgaW4g
dGhlIHF1ZXVlIGJlZm9yZSB3ZSBzdGFydCBwdXNoaW5nIHRoZW0gcHJlZW1wdGl2ZWx5Lgogc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHdoZWVsRXZlbnRRdWV1ZVNpemVUaHJlc2hvbGQgPSAxMDsKQEAg
LTUxMCw3ICs1MTAsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgICwgbV9saW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKG1fY29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWlucygpKQogI2VuZGlmCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJjb25zdHJ1Y3RvcjoiKTsKIAogICAgIGlmICghbV9jb25maWd1cmF0
aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CkBAIC01NzIsNyArNTcyLDcgQEAgV2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzLCBSZWYKIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiIpOworICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGVzdHJ1Y3RvcjoiKTsKIAogICAgIEFTU0VS
VChtX3Byb2Nlc3MtPndlYlBhZ2UobV9pZGVudGlmaWVyKSAhPSB0aGlzKTsKICNpZiBBU1NFUlRf
RU5BQkxFRApAQCAtODIzLDcgKzgyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9j
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgUHJvCiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNzKCkpOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2VzczoiKTsK
KyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5jaFByb2Nlc3M6Iik7
CiAKICAgICAvLyBJbiBjYXNlIHdlIGFyZSBjdXJyZW50bHkgY29ubmVjdGVkIHRvIHRoZSBkdW1t
eSBwcm9jZXNzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgaW5zcGVjdG9yIHByb3h5CiAgICAg
Ly8gZGlzY29ubmVjdHMgZnJvbSB0aGUgZHVtbXkgcHJvY2VzcyBmaXJzdC4KQEAgLTg2NSwxMiAr
ODY1LDEyIEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxl
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBp
ZCAlaSBiZWNhdXNlIGhhcyBub3QgY29tbWl0dGVkIGFueSBsb2FkIHlldCIsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQ
cm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVu
ZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgaGFzIG5vdCBjb21t
aXR0ZWQgYW55IGxvYWQgeWV0IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpc1BhZ2VPcGVuZWRCeURPTVNo
b3dpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90
IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGl0IGlz
IHNob3dpbmcgdGhlIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3
YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3Vy
cmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGl0IGlzIHNob3dpbmcgdGhlIGlu
aXRpYWwgZW1wdHkgZG9jdW1lbnQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NzksMjUgKzg3OSwyNSBAQCBib29s
IFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIE9wdAogICAgIC8vIElmIHRoZSBzb3VyY2UgYW5kIHRoZSBkZXN0aW5h
dGlvbiBiYWNrIC8gZm9yd2FyZCBsaXN0IGl0ZW1zIGFyZSB0aGUgc2FtZSwgdGhlbiB0aGlzIGlz
IGEgY2xpZW50LXNpZGUgcmVkaXJlY3QuIEluIHRoaXMgY2FzZSwKICAgICAvLyB0aGVyZSBpcyBu
byBuZWVkIHRvIHN1c3BlbmQgdGhlIHByZXZpb3VzIHBhZ2UgYXMgdGhlcmUgd2lsbCBiZSBubyB3
YXkgdG8gZ2V0IGJhY2sgdG8gaXQuCiAgICAgaWYgKGZyb21JdGVtICYmIGZyb21JdGVtID09IG1f
YmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTog
Tm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIHRo
aXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcs
ICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBh
Z2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJlZGly
ZWN0IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIGlmIChmcm9tSXRlbSAmJiBmcm9tSXRlbS0+dXJsKCkgIT0gcGFn
ZUxvYWRTdGF0ZSgpLnVybCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGZyb21JdGVt
J3MgVVJMIGRvZXMgbm90IG1hdGNoIHRoZSBwYWdlIFVSTC4iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJv
Y2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRp
bmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGZyb21JdGVtJ3MgVVJM
IGRvZXMgbm90IG1hdGNoIHRoZSBwYWdlIFVSTC4iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc1N1
c3BlbmRlZFBhZ2VUb1ByZXZlbnRGbGFzaGluZyA9IHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoID09IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoOjpZ
ZXM7CiAgICAgaWYgKCFuZWVkc1N1c3BlbmRlZFBhZ2VUb1ByZXZlbnRGbGFzaGluZyAmJiAoIWZy
b21JdGVtIHx8ICFzaG91bGRVc2VCYWNrRm9yd2FyZENhY2hlKCkpKSB7CiAgICAgICAgIGlmICgh
ZnJvbUl0ZW0pCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2Fw
cGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJl
bnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgdGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAg
ICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5k
Q3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHBy
b2Nlc3MgcGlkICVpIHRoZXJlIGlzIG5vIGFzc29jaWF0ZWQgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1
cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9j
ZXNzIHBpZCAlaSB0aGUgYmFjayAvIGZvcndhcmQgY2FjaGUgaXMgZGlzYWJsZWQiLCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5v
dCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgdGhlIGJhY2sgLyBm
b3J3YXJkIGNhY2hlIGlzIGRpc2FibGVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3Vz
cGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3
YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50
IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
KTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94
eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlD
bG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gpOwogCiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywg
IldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBw
cm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgaWRlbnRpZmllcigp
LnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJp
bmcoKSA6IDApOwpAQCAtOTI3LDcgKzkyNyw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRV
c2VCYWNrRm9yd2FyZENhY2hlKCkgY29uc3QKIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92
aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwcm92aXNp
b25hbFBhZ2UpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9Qcm92aXNpb25hbFBhZ2U6IG5ld1dlYlBhZ2VJRD0l
IiBQUkl1NjQsIHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQoKSk7CisgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJzd2FwVG9Qcm92aXNpb25hbFBhZ2U6
IG5ld1dlYlBhZ2VJRD0lIiBQUkl1NjQsIHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkudG9V
SW50NjQoKSk7CiAKICAgICBtX3Byb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKTsK
ICAgICBtX3dlYlBhZ2VJRCA9IHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCk7CkBAIC05NDEs
OCArOTQxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6
OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHAKICNlbmRpZgogI2VuZGlmCiAKKyAg
ICAvLyBGSVhNRTogRG8gd2UgcmVhbGx5IG5lZWQgdG8gZGlzYWJsZSB0aGlzIGxvZ2dpbmcgaW4g
ZXBoZW1lcmFsIHNlc3Npb25zPwogICAgIGlmIChtX2xvZ2dlcikKLSAgICAgICAgbV9sb2dnZXIt
PnNldEVuYWJsZWQodGhpcywgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpOworICAgICAgICBt
X2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCAhc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSk7CiAK
ICAgICBtX2hhc1J1bm5pbmdQcm9jZXNzID0gdHJ1ZTsKIApAQCAtMTAzNSwxMCArMTAzNiwxMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0Zv
clJlbG9hZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5j
aFByb2Nlc3NGb3JSZWxvYWQ6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBw
YWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGlu
ZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KICAgICAKQEAgLTEwNDcsNyArMTA0OCw3IEBAIFJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAg
ICAgbGF1bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6
Q3Jhc2gpOwogCiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9y
UmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkIik7CisgICAgICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVu
dCBpdGVtIHRvIHJlbG9hZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTExMDksNyArMTExMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgaWYgKG1f
aXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImNsb3NlOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5n
LCAiY2xvc2U6Iik7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAtMTE4OCw3ICsxMTg5
LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzLCAidHJ5Q2xvc2U6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KFByb2Nlc3MsICJ0cnlDbG9zZToiKTsKIAogICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYg
dGhlIHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0
aGUgcHJvY2Vzcywgc28gd2UgY2hlY2sgYSBwZXItcHJvY2VzcyBzdGF0dXMgYml0LgpAQCAtMTIx
Myw3ICsxMjE0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnRyeUNsb3NlVGltZWRPdXQoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUHJvY2VzcywgInRyeUNsb3NlVGltZWRPdXQ6IFRpbWVkIG91dCB3YWl0aW5nIGZv
ciB0aGUgcHJvY2VzcyB0byByZXNwb25kIHRvIHRoZSBXZWJQYWdlOjpUcnlDbG9zZSBJUEMsIGNs
b3NpbmcgdGhlIHBhZ2Ugbm93Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9S
KFByb2Nlc3MsICJ0cnlDbG9zZVRpbWVkT3V0OiBUaW1lZCBvdXQgd2FpdGluZyBmb3IgdGhlIHBy
b2Nlc3MgdG8gcmVzcG9uZCB0byB0aGUgV2ViUGFnZTo6VHJ5Q2xvc2UgSVBDLCBjbG9zaW5nIHRo
ZSBwYWdlIG5vdyIpOwogICAgIGNsb3NlUGFnZSgpOwogfQogCkBAIC0xMzEwLDcgKzEzMTEsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRSZXF1ZXN0OiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9h
ZFJlcXVlc3Q6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxh
dW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NM
YXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKQEAgLTEzMzIsNyArMTMzMyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQ6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkOiIpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1f
cGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0xMzY4LDEwICsxMzY5LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6Iik7CisgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRmlsZToiKTsKIAogICAgIGlmICht
X2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTEzODAsNyArMTM4MSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5n
LCBjb25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7CiAg
ICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsIik7CisgICAgICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90
IGxvY2FsIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTM5MCw3ICsx
MzkxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBlbHNlIHsKICAgICAgICAgcmVz
b3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwoVVJMKCksIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5n
KTsKICAgICAgICAgaWYgKCFyZXNvdXJjZURpcmVjdG9yeVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcmVz
b3VyY2UgVVJMIGlzIG5vdCBsb2NhbCIpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbCIpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDI0LDcg
KzE0MjUsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YToiKTsKKyAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImxvYWREYXRhOiIpOwogCiAjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQogICAgIGlmIChNSU1FVHlwZSA9PSAidGV4dC9odG1sIl9zICYmICFpc0Z1bGxX
ZWJCcm93c2VyKCkpCkBAIC0xNDMyLDcgKzE0MzMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
YwogI2VuZGlmCiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9z
ZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNDUwLDcgKzE0NTEs
NyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiB3ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKICAgICBBU1NFUlQoIW1f
aXNDbG9zZWQpOwogCkBAIC0xNDc4LDcgKzE0NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgc2ltdWxhdGVkUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHNpbXVsYXRlZFJlc3BvbnNlLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZFNpbXVsYXRlZFJlcXVlc3Q6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJsb2FkU2ltdWxhdGVkUmVxdWVzdDoiKTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBpZiAoc2ltdWxhdGVkUmVzcG9uc2UubWltZVR5cGUoKSA9PSAidGV4dC9o
dG1sIl9zICYmICFpc0Z1bGxXZWJCcm93c2VyKCkpCkBAIC0xNDg2LDcgKzE0ODcsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdQogI2VuZGlmCiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVkUmVxdWVz
dDogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJsb2FkU2ltdWxhdGVkUmVxdWVzdDogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNTMyLDEzICsxNTMzLDEzIEBAIFJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
LCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkQWx0ZXJuYXRlSFRNTCIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5n
LCAibG9hZEFsdGVybmF0ZUhUTUwiKTsKIAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBp
biB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8g
bm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxv
YWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAg
ICAgLy8gaGFuZGxlZCBwcm9wZXJseS4KICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGlu
Z0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdl
IGlzIGNsb3NlZCAob3Igb3RoZXIpIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhlciki
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU3NSwxMCArMTU3NiwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBodG1sRGF0YSwgY29uc3QgUwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVE
YXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6
Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2
ZURhdGE6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2VkIik7
CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFdlYkFyY2hp
dmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
NjAyLDEwICsxNjAzLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEo
QVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVuUG9pbnQp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxp
bmtXaXRoU2ltdWxhdGVkQ2xpY2s6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazoiKTsKIAogICAgIGlm
IChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
Im5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDoiKTsK
KyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERG
TGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTE2MjEsMTAgKzE2MjIsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5h
dmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiIpOworICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAic3RvcExvYWRpbmc6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkIik7
CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE2MzgsNyArMTYzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
dG9wTG9hZGluZygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVs
b2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiIpOworICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAicmVsb2FkOiIpOwogCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTE3MTksMTEgKzE3MjAsMTEg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJ
dGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0
ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiIpOworICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbToiKTsKICAgICBMT0co
TG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJM
ICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChtX2lzQ2xv
c2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImdvVG9CYWNr
Rm9yd2FyZEl0ZW06IHBhZ2UgaXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxF
QVNFX0xPRyhMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZSBpcyBjbG9zZWQiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNzQ5LDEwICsxNzUwLDEwIEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZXN0b3Jl
U2Nyb2xsUG9zaXRpb24oKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjoiKTsKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkIik7CisgICAg
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBv
c2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yMDIxLDcgKzIwMjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0
ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZAogICAgICAgICBpZiAo
aXNOb3dWaXNpYmxlKQogICAgICAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpOwogICAgICAgICBpZiAod2FzVmlzaWJsZSAhPSBpc05vd1Zpc2libGUp
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFZpZXdTdGF0ZSwgInVwZGF0ZUFj
dGl2aXR5U3RhdGU6IHZpZXcgdmlzaWJpbGl0eSBzdGF0ZSBjaGFuZ2VkICVkIC0+ICVkIiwgd2Fz
VmlzaWJsZSwgaXNOb3dWaXNpYmxlKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhWaWV3U3RhdGUsICJ1cGRhdGVBY3Rpdml0eVN0YXRlOiB2aWV3IHZpc2liaWxpdHkgc3Rh
dGUgY2hhbmdlZCAlZCAtPiAlZCIsIHdhc1Zpc2libGUsIGlzTm93VmlzaWJsZSk7CiAgICAgfQog
ICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRl
ZCAmJiBwYWdlQ2xpZW50KCkuaXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQoKSkKICAgICAgICAgbV9h
Y3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKQEAg
LTIxODEsMTEgKzIxODIsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0
YXRlQ2hhbmdlKCkKICNlbmRpZgogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6aXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2Vzc2lvbklEKCkuaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRs
ZVN0YXRlKCkKIHsKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgPSBtX3ByZWZl
cmVuY2VzLT5wYWdlVmlzaWJpbGl0eUJhc2VkUHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpOwpA
QCAtMjIwNCwyMyArMjIwMCwyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVT
dGF0ZSgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaXNWaWV3VmlzaWJsZSgp
KSB7CiAgICAgICAgIGlmICghbV9pc1Zpc2libGVBY3Rpdml0eSB8fCAhbV9pc1Zpc2libGVBY3Rp
dml0eS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2lu
ZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgdmlzaWJsZSIpOwor
ICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
dXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNz
ZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgdmlzaWJsZSIpOwogICAgICAgICAgICAgbV9pc1Zp
c2libGVBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5
KCJWaWV3IGlzIHZpc2libGUiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChtX2lzVmlzaWJsZUFjdGl2aXR5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBp
cyBubyBsb25nZXIgdmlzaWJsZSIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVs
ZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25n
ZXIgdmlzaWJsZSIpOwogICAgICAgICBtX2lzVmlzaWJsZUFjdGl2aXR5ID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBib29sIGlzQXVkaWJsZSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rp
dml0eVN0YXRlOjpJc0F1ZGlibGUpOwogICAgIGlmIChpc0F1ZGlibGUpIHsKICAgICAgICAgaWYg
KCFtX2lzQXVkaWJsZUFjdGl2aXR5IHx8ICFtX2lzQXVkaWJsZUFjdGl2aXR5LT5pc1ZhbGlkKCkp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24s
ICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBh
c3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgcGxheWluZyBhdWRpbyIpOworICAgICAgICAgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVT
dGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ug
d2UgYXJlIHBsYXlpbmcgYXVkaW8iKTsKICAgICAgICAgICAgIG1faXNBdWRpYmxlQWN0aXZpdHkg
PSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyBwbGF5
aW5nIGF1ZGlvIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgICAgICBtX2F1
ZGlibGVBY3Rpdml0eVRpbWVyLnN0b3AoKTsKICAgICB9IGVsc2UgaWYgKG1faXNBdWRpYmxlQWN0
aXZpdHkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lv
biwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyB3aWxsIHJlbGVhc2UgYSBmb3JlZ3Jv
dW5kIGFzc2VydGlvbiBpbiAlZyBzZWNvbmRzIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5
aW5nIGF1ZGlvIiwgYXVkaWJsZUFjdGl2aXR5Q2xlYXJEZWxheS5zZWNvbmRzKCkpOworICAgICAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJv
dHRsZVN0YXRlOiBVSVByb2Nlc3Mgd2lsbCByZWxlYXNlIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24g
aW4gJWcgc2Vjb25kcyBiZWNhdXNlIHdlIGFyZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIsIGF1
ZGlibGVBY3Rpdml0eUNsZWFyRGVsYXkuc2Vjb25kcygpKTsKICAgICAgICAgaWYgKCFtX2F1ZGli
bGVBY3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBtX2F1ZGlibGVBY3Rpdml0
eVRpbWVyLnN0YXJ0T25lU2hvdChhdWRpYmxlQWN0aXZpdHlDbGVhckRlbGF5KTsKICAgICB9CkBA
IC0yMjI4LDExICsyMjI0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0
YXRlKCkKICAgICBib29sIGlzQ2FwdHVyaW5nTWVkaWEgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFp
bnMoQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSk7CiAgICAgaWYgKGlzQ2FwdHVyaW5n
TWVkaWEpIHsKICAgICAgICAgaWYgKCFtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgfHwgIW1faXNDYXB0
dXJpbmdBY3Rpdml0eS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNz
IGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBp
cyBhY3RpdmUiKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBm
b3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlIik7CiAg
ICAgICAgICAgICBtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyBjYXB0dXJpbmcgbWVkaWEiX3MpLm1vdmVUb1Vu
aXF1ZVB0cigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2lzQ2FwdHVyaW5nQWN0aXZp
dHkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwg
InVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5k
IGFzc2VydGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgbm8gbG9uZ2VyIGFjdGl2ZSIpOwor
ICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRh
dGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3Nl
cnRpb24gYmVjYXVzZSBtZWRpYSBjYXB0dXJlIGlzIG5vIGxvbmdlciBhY3RpdmUiKTsKICAgICAg
ICAgbV9pc0NhcHR1cmluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKQEAgLTIy
NDEsNyArMjIzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXVkaWJs
ZUFjdGl2aXR5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5z
aW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5nIGF1ZGlvIik7
CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRl
VGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0
aW9uIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5nIGF1ZGlvIik7CiAgICAgbV9pc0F1
ZGlibGVBY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAjZW5kaWYKQEAgLTI1MjQsNyArMjUyMCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVSZW5kZXJpbmdBZnRlckNvbW1pdHRpbmdMb2Fk
KCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTWFraW5nVmlld0JsYW5rRHVlVG9MYWNrT2ZSZW5k
ZXJpbmdVcGRhdGUoKQogewogICAgIEFTU0VSVChtX2hhc1VwZGF0ZWRSZW5kZXJpbmdBZnRlckRp
ZENvbW1pdExvYWQpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInN0b3BN
YWtpbmdWaWV3QmxhbmtEdWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZToiKTsKKyAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgInN0b3BNYWtpbmdWaWV3QmxhbmtEdWVUb0xhY2tP
ZlJlbmRlcmluZ1VwZGF0ZToiKTsKICAgICBwYWdlQ2xpZW50KCkubWFrZVZpZXdCbGFuayhmYWxz
ZSk7CiB9CiAKQEAgLTI1NDAsNyArMjUzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYWtlVmll
d0JsYW5rSWZVbnBhaW50ZWRTaW5jZUxhc3RMb2FkQ29tbWl0KCkKICAgICAgICAgc3RhdGljIGJv
b2wgc2hvdWxkTWFrZVZpZXdCbGFuayA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgaWYgKHNob3Vs
ZE1ha2VWaWV3QmxhbmspIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2VzcywgIm1ha2VWaWV3QmxhbmtJZlVucGFpbnRlZFNpbmNlTGFzdExvYWRDb21taXQ6IE1ha2lu
ZyB0aGUgdmlldyBibGFuayBiZWNhdXNlIG9mIGEgSlMgcHJvbXB0IGJlZm9yZSB0aGUgZmlyc3Qg
cGFpbnQgZm9yIGl0cyBwYWdlIik7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2VzcywgIm1ha2VWaWV3QmxhbmtJZlVucGFpbnRlZFNpbmNlTGFzdExvYWRDb21taXQ6
IE1ha2luZyB0aGUgdmlldyBibGFuayBiZWNhdXNlIG9mIGEgSlMgcHJvbXB0IGJlZm9yZSB0aGUg
Zmlyc3QgcGFpbnQgZm9yIGl0cyBwYWdlIik7CiAgICAgICAgICAgICBwYWdlQ2xpZW50KCkubWFr
ZVZpZXdCbGFuayh0cnVlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTMzNDcsNyArMzM0Myw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Ok5h
dmlnYXRpb24qIG5hdmlnYXRpb24sIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdh
dGlvbkFjdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlY2VpdmVkTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1LCBwb2xpY3lB
Y3Rpb249JXUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5hdmln
YXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbik7CisgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbjogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9u
PSV1IiwgZnJhbWUuZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9u
LT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24pOwogCiAgICAgUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUu
Y29weVJlZigpOwogICAgIGlmIChwb2xpY2llcykgewpAQCAtMzQwOSwxMCArMzQwNSwxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBib29sIHNob3VsZFByb2Nlc3NTd2FwID0g
cHJvY2Vzc0Zvck5hdmlnYXRpb24ucHRyKCkgIT0gc291cmNlUHJvY2Vzcy5wdHIoKTsKICAgICAg
ICAgaWYgKHNob3VsZFByb2Nlc3NTd2FwKSB7CiAgICAgICAgICAgICBwb2xpY3lBY3Rpb24gPSBQ
b2xpY3lBY3Rpb246OlN0b3BBbGxMb2FkczsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwg
c3dhcHBpbmcgcHJvY2VzcyAlaSB3aXRoIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNv
bj0lIiBQVUJMSUNfTE9HX1NUUklORywgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvY2Vzc0Zvck5h
dmlnYXRpb24tPnByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLCBzd2FwcGluZyBwcm9jZXNzICVpIHdpdGggcHJv
Y2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29uPSUiIFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9j
ZXNzSWRlbnRpZmllcigpLCBwcm9jZXNzRm9yTmF2aWdhdGlvbi0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGlu
ZywgIihQcm9jZXNzU3dhcHBpbmcpIFN3aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3IHBy
b2Nlc3MgKCVpKSBmb3IgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIiwgcHJvY2Vzc0lkZW50
aWZpZXIoKSwgcHJvY2Vzc0Zvck5hdmlnYXRpb24tPnByb2Nlc3NJZGVudGlmaWVyKCksIG5hdmln
YXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkpOwogICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoga2VlcCB1c2luZyBwcm9j
ZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19TVFJJTkcsIHByb2Nl
c3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOiBrZWVwIHVzaW5nIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNv
bj0lIiBQVUJMSUNfTE9HX1NUUklORywgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uLnV0Zjgo
KS5kYXRhKCkpOwogCiAgICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
b3B0aW9uYWxIYW5kbGU7CiAgICAgICAgIGlmIChzaG91bGRQcm9jZXNzU3dhcCkgewpAQCAtMzQ5
MSw3ICszNDg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdh
Y3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFz
SW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1vdXNl
RXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQog
ewogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3Byb3Zp
c2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9
JWkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOwog
CiAgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9j
ZXNzID0gbV9tYWluRnJhbWUgPyBtYWtlT3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkg
OiBXVEY6Om51bGxvcHQ7CiAKQEAgLTM1MjksMTIgKzM1MjUsMTIgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJv
Y2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5k
ZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQ
cm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0
aW9uSW5OZXdQcm9jZXNzOiBuZXdQcm9jZXNzUElEPSVpLCBoYXNTdXNwZW5kZWRQYWdlPSVpIiwg
bmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlKTsKKyAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2VzczogbmV3UHJvY2Vzc1BJRD0laSwgaGFzU3VzcGVuZGVkUGFnZT0laSIsIG5ld1Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZSk7CiAgICAgTE9HKExvYWRp
bmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIg
cHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0
cmluZygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbmV3UHJvY2Vzcy0+aXNJblByb2Nlc3NDYWNo
ZSgpKTsKIAogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJv
Y2VzczogVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgcHJvdmlzaW9uYWwgbG9hZCwgY2FuY2Vs
bGluZyBpdCAocHJvdmlzb25hbE5hdmlnYXRpb25JRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSki
LCBtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubmF2aWdhdGlv
bklEKCkpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5n
LCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiBUaGVyZSBpcyBhbHJlYWR5IGEgcGVu
ZGluZyBwcm92aXNpb25hbCBsb2FkLCBjYW5jZWxsaW5nIGl0IChwcm92aXNvbmFsTmF2aWdhdGlv
bklEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1KSIsIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0
aW9uSUQoKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgICAgIGlmIChtX3Byb3Zp
c2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCkgIT0gbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSkK
ICAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5jYW5jZWwoKTsKICAgICAgICAgbV9wcm92
aXNpb25hbFBhZ2UgPSBudWxscHRyOwpAQCAtMzY2Nyw3ICszNjYzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3Vz
cGVuZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInN1c3BlbmQ6
Iik7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNTdXNwZW5kZWQpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKQEAgLTM2NzcsNyArMzY3Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN1bWU6Iik7CisgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJyZXN1bWU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkgfHwgIW1faXNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CkBAIC0zNzIzLDcgKzM3MTksNyBAQCBTZXNzaW9uU3RhdGUgV2ViUGFn
ZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExp
c3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9t
U2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9u
U3RhdGU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJyZXN0b3Jl
RnJvbVNlc3Npb25TdGF0ZToiKTsKIAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJl
ZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsKQEAg
LTQ1NDEsNyArNDUzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICAgICAgbmF2aWdh
dGlvbiA9IG5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAogICAg
IExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVp
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwg
bmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX2lkZW50aWZpZXIudG9VSW50NjQo
KSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRC50b1VJbnQ2NCgpLCBuYXZp
Z2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFt
ZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0coTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1l
SUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0byB0cmFuc2FjdGlv
biA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5j
bGVhclBlbmRpbmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uKTsKQEAgLTQ1NzgsNyArNDU3NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgVVJMJiYgdXJsLCBTCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZy
YW1lKTsKIAogICAgIGlmICghY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dl
YlByb2Nlc3MobV9wcm9jZXNzLCB1cmwpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIFdlYlBhZ2VQcm94eTo6RGlkRXhwbGljaXRPcGVu
Rm9yRnJhbWUoKSBJUEMgZnJvbSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGJlY2F1c2UgdGhlIGZp
bGUgVVJMIGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJJZ25vcmluZyBXZWJQYWdlUHJveHk6OkRpZEV4cGxp
Y2l0T3BlbkZvckZyYW1lKCkgSVBDIGZyb20gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBiZWNhdXNl
IHRoZSBmaWxlIFVSTCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ2MDMsNyArNDU5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50CiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcs
ICJXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQg
IiwgdXJsICVzIiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0
KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtNDYzMiw3ICs0NjI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjwKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2ViQ29yZTo6
TG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0
LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2
NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ2NDUsNyArNDY0MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZv
ckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQ9
JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogZnJhbWVJRD0l
IiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NjkzLDcgKzQ2ODksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGlu
dWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
IHsKICAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIg
aW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBw
cm92aXNpb25hbFVSTCAlcyIsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGRvbWFpbj0lcywgY29kZT0lZCIsIGZyYW1l
SUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JD
b2RlKCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAiLCBkb21haW49
JXMsIGNvZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ3NjQsNyArNDc2MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZy
YW1lSW5mb0RhdGEmCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5
ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2
NCwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tG
b3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBs
aXN0IGlzIG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIg
UFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDg4OCw3ICs0ODg0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
RnJhbWVJbmZvRGF0YSYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1
NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQs
IGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rv
cihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTE2LDcgKzQ5MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHVpbnQ2NAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRG
b3JGcmFtZSAtIFdlYlBhZ2VQcm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiBk
aWRGaW5pc2hMb2FkIiwgdGhpcywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0
LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50
b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTQ5NjcsNyArNDk2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQgIiwg
ZG9tYWluPSVzLCBjb2RlPSVkIiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51
dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HX0VSUk9SKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBS
SXU2NCAiLCBkb21haW49JXMsIGNvZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRv
bWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGll
bnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMTIsNyArNTAwOCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
OiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xp
ZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01MTk4LDcgKzUxOTQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4m
JiBzZW5kZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxs
dSIsIGZyYW1lLmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOworICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSIsIGZyYW1lLmZyYW1lSUQoKS50
b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1
cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC01
MjE0LDcgKzUyMTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICBtX3BhZ2VM
b2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbik7CiAKICAgICBpZiAo
IWNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKHByb2Nlc3Ms
IHJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
UHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVj
YXVzZSBpdCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMg
bWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKICAgICAg
ICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NTI4MCw3ICs1Mjc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRlclVu
YmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVz
b3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOworICAgICAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVl
c3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFuZGxlZCBieSBj
b250ZW50IGZpbHRlciIpOwogICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQ
b2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdh
dGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShzZW5k
ZXIpKTsKICAgICB9CiAjZW5kaWYKQEAgLTUyOTUsNyArNTI5MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzCiAjZW5kaWYKIAogICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNl
dFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5h
dmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIGZyYW1lSW5mbywgdXNlckRhdGFPYmplY3QgPSBw
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xp
Y2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5n
LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZERvbWFpbikg
bXV0YWJsZSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNhbGxlZDogZnJhbWVJRD0lbGx1
LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1LCBzYWZlQnJvd3NpbmdXYXJuaW5n
PSVkLCBpc0FwcEJvdW5kRG9tYWluPSVkIiwgZnJhbWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBu
YXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQpcG9s
aWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3VuZERvbWFpbik7Cisg
ICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjogbGlzdGVuZXIgY2FsbGVkOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRp
b25JRD0lbGx1LCBwb2xpY3lBY3Rpb249JXUsIHNhZmVCcm93c2luZ1dhcm5pbmc9JWQsIGlzQXBw
Qm91bmREb21haW49JWQiLCBmcmFtZS0+ZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24g
PyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24s
ICEhc2FmZUJyb3dzaW5nV2FybmluZywgISFpc0FwcEJvdW5kRG9tYWluKTsKIAogICAgICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMsIGZyYW1lLCBzZW5k
ZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24gPSBXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xp
Y2llcyA9IG1ha2VSZWZQdHIocG9saWNpZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKQEAgLTUz
MTQsNyArNTMxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgICAgICBpZiAo
IXNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGZyYW1l
LT5pc01haW5GcmFtZSgpLCBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBpc0Fw
cEJvdW5kRG9tYWluKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBlcnJvckZvclVu
cGVybWl0dGVkQXBwQm91bmREb21haW5OYXZpZ2F0aW9uKG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1
ZXN0KCkudXJsKCkpOwogICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgRnJhbWVJbmZvRGF0YSB7IGZy
YW1lSW5mbyB9LCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgdXNlckRhdGFPYmplY3QpOwotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgIklnbm9y
aW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBpcyBhdHRl
bXB0aW5nIHRvIG5hdmlnYXRlIGF3YXkgZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIG9yIG5hdmln
YXRlIGFmdGVyIHVzaW5nIHJlc3RyaWN0ZWQgQVBJcyIpOworICAgICAgICAgICAgICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiSWdub3JpbmcgcmVxdWVzdCB0byBs
b2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIGF0dGVtcHRpbmcgdG8gbmF2aWdh
dGUgYXdheSBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4gb3IgbmF2aWdhdGUgYWZ0ZXIgdXNpbmcg
cmVzdHJpY3RlZCBBUElzIik7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9s
aWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KQEAgLTU1OTAsNyArNTU4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0
b3JlLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDoiKTsKKyAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhU2hhcmVkOiIpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
cGFnZUNsaWVudCgpKTsKIApAQCAtNTYxMCw3ICs1NjA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywg
Y29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRv
VUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKQEAgLTU2MzcsNyArNTYzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0OiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0OiIpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTc2Nyw3ICs1NzYzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNsb3NlUGFnZSgpCiAgICAgaWYgKGlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImNsb3NlUGFnZToiKTsKKyAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImNsb3NlUGFnZToiKTsKICAgICBw
YWdlQ2xpZW50KCkuY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKICAgICBtX3VpQ2xpZW50LT5jbG9z
ZSh0aGlzKTsKIH0KQEAgLTc0ODgsNyArNzQ4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1
c2VkRnJhbWVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4mIGZyYW1lSUQp
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkKIHsK
LSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVj
b21lVW5yZXNwb25zaXZlOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQ
cm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZToiKTsKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzUwMCw3ICs3NDk2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOiIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29t
ZVJlc3BvbnNpdmU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTc1NDEsNyArNzUzNyw3IEBAIFVSTCBXZWJQYWdlUHJveHk6OmN1cnJlbnRS
ZXNvdXJjZURpcmVjdG9yeVVSTCgpIGNvbnN0CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0
ZUFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24p
CiB7CiAgICAgaWYgKHJlYXNvbiAhPSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRp
b25Td2FwKQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJw
cm9jZXNzRGlkVGVybWluYXRlOiAocGlkICVkKSwgcmVhc29uICVkIiwgcHJvY2Vzc0lkZW50aWZp
ZXIoKSwgcmVhc29uKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBy
b2Nlc3MsICJwcm9jZXNzRGlkVGVybWluYXRlOiAocGlkICVkKSwgcmVhc29uICVkIiwgcHJvY2Vz
c0lkZW50aWZpZXIoKSwgcmVhc29uKTsKIAogICAgIEFTU0VSVChtX2hhc1J1bm5pbmdQcm9jZXNz
KTsKIApAQCAtNzU5NSw3ICs3NTkxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsb2FkQWZ0ZXJQ
cm9jZXNzVGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24gcmVhc29uKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZTogcmVhc29uPSVkIiwgcmVhc29u
KTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImRpc3BhdGNo
UHJvY2Vzc0RpZFRlcm1pbmF0ZTogcmVhc29uPSVkIiwgcmVhc29uKTsKIAogICAgIGJvb2wgaGFu
ZGxlZEJ5Q2xpZW50ID0gZmFsc2U7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQpAQCAtNzYxMiwx
MSArNzYwOCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVy
bWluYXRpb24oKQogICAgIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIuc3RvcCgpOwogCiAg
ICAgaWYgKCsrbV9yZWNlbnRDcmFzaENvdW50ID4gbWF4aW11bVdlYlByb2Nlc3NSZWxhdW5jaEF0
dGVtcHRzKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzcywg
InRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNyYXNoZWQgYW5kIHRo
ZSBjbGllbnQgZGlkIG5vdCBoYW5kbGUgaXQsIG5vdCByZWxvYWRpbmcgdGhlIHBhZ2UgYmVjYXVz
ZSB3ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhdHRlbXB0cyIpOworICAgICAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgInRyeVJlbG9hZEFmdGVyUHJv
Y2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNyYXNoZWQgYW5kIHRoZSBjbGllbnQgZGlkIG5vdCBo
YW5kbGUgaXQsIG5vdCByZWxvYWRpbmcgdGhlIHBhZ2UgYmVjYXVzZSB3ZSByZWFjaGVkIHRoZSBt
YXhpbXVtIG51bWJlciBvZiBhdHRlbXB0cyIpOwogICAgICAgICBtX3JlY2VudENyYXNoQ291bnQg
PSAwOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2VzcywgInRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNyYXNo
ZWQgYW5kIHRoZSBjbGllbnQgZGlkIG5vdCBoYW5kbGUgaXQsIHJlbG9hZGluZyB0aGUgcGFnZSIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAidHJ5UmVsb2FkQWZ0ZXJQ
cm9jZXNzVGVybWluYXRpb246IHByb2Nlc3MgY3Jhc2hlZCBhbmQgdGhlIGNsaWVudCBkaWQgbm90
IGhhbmRsZSBpdCwgcmVsb2FkaW5nIHRoZSBwYWdlIik7CiAgICAgcmVsb2FkKFJlbG9hZE9wdGlv
bjo6RXhwaXJlZE9ubHkpOwogfQogCkBAIC04MjYzLDE2ICs4MjU5LDE2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBj
dXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChTdG9yYWdlLCAicmVxdWVzdFN0b3JhZ2VTcGFjZSBmb3IgZnJhbWUg
JSIgUFJJdTY0ICIsIGN1cnJlbnQgcXVvdGEgJSIgUFJJdTY0ICIgY3VycmVudCB1c2FnZSAlIiBQ
Ukl1NjQgIiBleHBlY3RlZCB1c2FnZSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwgY3Vy
cmVudFF1b3RhLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSk7CisgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNwYWNlIGZvciBm
cmFtZSAlIiBQUkl1NjQgIiwgY3VycmVudCBxdW90YSAlIiBQUkl1NjQgIiBjdXJyZW50IHVzYWdl
ICUiIFBSSXU2NCAiIGV4cGVjdGVkIHVzYWdlICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgp
LCBjdXJyZW50UXVvdGEsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlKTsKIAog
ICAgIFN0b3JhZ2VSZXF1ZXN0czo6c2luZ2xldG9uKCkucHJvY2Vzc09yQXBwZW5kKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VVUkwgPSBjdXJyZW50VVJMKCksIGZy
YW1lSUQsIG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1cnJl
bnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0
ZWRVc2FnZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgdGhpcy0+bWFrZVN0b3JhZ2VTcGFjZVJlcXVlc3QoZnJhbWVJ
RCwgb3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lLCBkaXNwbGF5TmFtZSwgY3VycmVudFF1
b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVz
YWdlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1l
SUQsIHBhZ2VVUkwgPSBXVEZNb3ZlKHBhZ2VVUkwpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBjdXJyZW50UXVvdGFdKGF1dG8gcXVvdGEpIG11dGFibGUg
ewogCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFN0b3JhZ2UsICJyZXF1ZXN0
U3RvcmFnZVNwYWNlIHJlc3BvbnNlIGZvciBmcmFtZSAlIiBQUkl1NjQgIiwgcXVvdGEgJSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCksIHF1b3RhKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhTdG9yYWdlLCAicmVxdWVzdFN0b3JhZ2VTcGFjZSByZXNwb25zZSBmb3Ig
ZnJhbWUgJSIgUFJJdTY0ICIsIHF1b3RhICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpLCBx
dW90YSk7CiAgICAgICAgICAgICBVTlVTRURfVkFSSUFCTEUoZnJhbWVJRCk7CiAKICAgICAgICAg
ICAgIGlmIChxdW90YSA8PSBjdXJyZW50UXVvdGEgJiYgdGhpcy0+Y3VycmVudFVSTCgpID09IHBh
Z2VVUkwpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFN0b3JhZ2Us
ICJzdG9yYWdlIHNwYWNlIGluY3JlYXNlIGRlbmllZCIpOworICAgICAgICAgICAgICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhTdG9yYWdlLCAic3RvcmFnZSBzcGFjZSBpbmNyZWFzZSBkZW5p
ZWQiKTsKICAgICAgICAgICAgICAgICBtX2lzUXVvdGFJbmNyZWFzZURlbmllZCA9ICB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocXVvdGEpOwpAQCAt
OTM2MSw3ICs5MzU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVJlcG9ydGVkTWVkaWFD
YXB0dXJlU3RhdGUoKQogICAgIGlmICghaGF2ZVJlcG9ydGVkQ2FwdHVyZSAmJiB3aWxsUmVwb3J0
Q2FwdHVyZSkKICAgICAgICAgbV91cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlVGltZXIu
c3RhcnRPbmVTaG90KG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkpOwogCi0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChXZWJSVEMsICJ1cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRl
OiBmcm9tICVkIHRvICVkIiwgbV9yZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlLnRvUmF3KCksIGFj
dGl2ZUNhcHR1cmVTdGF0ZS50b1JhdygpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0co
V2ViUlRDLCAidXBkYXRlUmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZTogZnJvbSAlZCB0byAlZCIs
IG1fcmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZS50b1JhdygpLCBhY3RpdmVDYXB0dXJlU3RhdGUu
dG9SYXcoKSk7CiAKICAgICBib29sIG1pY3JvcGhvbmVDYXB0dXJlQ2hhbmdlZCA9IChtX3JlcG9y
dGVkTWVkaWFDYXB0dXJlU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVNYXNrKSAh
PSAoYWN0aXZlQ2FwdHVyZVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9DYXB0dXJlTWFzayk7
CiAgICAgYm9vbCBjYW1lcmFDYXB0dXJlQ2hhbmdlZCA9IChtX3JlcG9ydGVkTWVkaWFDYXB0dXJl
U3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVNYXNrKSAhPSAoYWN0aXZlQ2FwdHVy
ZVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6VmlkZW9DYXB0dXJlTWFzayk7CkBAIC05NjAwLDEzICs5
NTk2LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21p
c3NlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRFeGNlZWRJbmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUoKQogewotICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkRXhjZWVkSW5hY3Rp
dmVNZW1vcnlMaW1pdFdoaWxlQWN0aXZlIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
X0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRX
aGlsZUFjdGl2ZSIpOwogICAgIG1fdWlDbGllbnQtPmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJj
ZUxpbWl0V2hpbGVJbkZvcmVncm91bmQoKnRoaXMsIGtXS1Jlc291cmNlTGltaXRNZW1vcnkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJ
bkZvcmVncm91bmQoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUGVyZm9y
bWFuY2VMb2dnaW5nLCAiZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZvcmVncm91
bmQiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dn
aW5nLCAiZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZvcmVncm91bmQiKTsKICAg
ICBtX3VpQ2xpZW50LT5kaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3Jl
Z3JvdW5kKCp0aGlzLCBrV0tSZXNvdXJjZUxpbWl0Q1BVKTsKIH0KIApAQCAtMTA0MTQsNyArMTA0
MTAsOCBAQCBMb2dnZXImIFdlYlBhZ2VQcm94eTo6bG9nZ2VyKCkKIHsKICAgICBpZiAoIW1fbG9n
Z2VyKSB7CiAgICAgICAgIG1fbG9nZ2VyID0gTG9nZ2VyOjpjcmVhdGUodGhpcyk7Ci0gICAgICAg
IG1fbG9nZ2VyLT5zZXRFbmFibGVkKHRoaXMsIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpKTsK
KyAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyByZWFsbHkgbmVlZCB0byBiZSBkaXNhYmxlZCBp
biBlcGhlbWVyYWwgc2Vzc2lvbnM/CisgICAgICAgIG1fbG9nZ2VyLT5zZXRFbmFibGVkKHRoaXMs
ICFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gKm1fbG9n
Z2VyOwpAQCAtMTA2NzMsNyArMTA2NzAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBcHBC
b3VuZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbAogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1
bmRlZiBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0cKKyN1bmRlZiBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0dfRVJST1IKICN1bmRlZiBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04KICN1bmRlZiBNRVNT
QUdFX0NIRUNLX1VSTAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggNjc2YzdjMzAwYzQ0ODYwZmM4MjIzNmJjNjRhZjZmNTA0Yjgz
NWFlNS4uYTFjMTNkOWYwMGE5OThmMjU4ZWZjYWRkZmQxYWY5ZDJmYjQ1M2RlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1ODgsNyArMTU4OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFdlYkNv
cmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpIGZpbmFsOwog
ICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6UGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBwbGF5
YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsgfQor
ICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNl
c3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOyB9CiAgICAgYm9vbCB1c2VpVHVu
ZXNBVk91dHB1dENvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBQbGF0Zm9ybVZpZXcqIHBsYXRm
b3JtVmlldygpIGNvbnN0IGZpbmFsOwogCkBAIC0xNjIyLDggKzE2MjIsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc05ldmVyUmljaGx5RWRpdGFibGVGb3JUb3VjaEJhcigpIGNvbnN0IHsgcmV0dXJu
IG1faXNOZXZlclJpY2hseUVkaXRhYmxlRm9yVG91Y2hCYXI7IH0KICNlbmRpZgogCi0gICAgYm9v
bCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQogI2lmIEVOQUJMRShHQU1FUEFE
KQogICAgIHZvaWQgZ2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mLCBX
ZWJDb3JlOjpFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKTsKICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="451182"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429899</attachid>
            <date>2021-05-27 10:34:49 -0700</date>
            <delta_ts>2021-05-27 11:47:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226342-20210527103448.patch</filename>
            <type>text/plain</type>
            <size>94090</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliNDk4OGJlYjYyZmU4MjE2
NmIwMDU2ZDk5N2E1YjQ2Yjk0M2VkYWEuLjJjZjA1NWViZGU2NTVlOGMyMzY5MTcwOGRkYmZhNjA2
NGFjNGQ1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA1LTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIFdlYlBhZ2VQcm94eSdz
IHJlbGVhc2UgbG9nZ2luZyBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBXZWJQYWdlUHJveHkncyByZWxl
YXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zLiBPdXIgcmVsZWFzZSBsb2dnaW5nIGRv
ZXNuJ3QKKyAgICAgICAgY29udGFpbiBhbnl0aGluZyBzZW5zaXRpdmUgYW5kIG5vdCBoYXZpbmcg
dGhpcyBsb2dnaW5nIG1ha2VzIGl0IGhhcmQgdG8gZGVidWcgaXNzdWVzIGluCisgICAgICAgIGFw
cHMgdXNpbmcgZXBoZW1lcmFsIHNlc3Npb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhp
bnRzKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVT
dGFydEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgpOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6cHJlc2VudFZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnRyeUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVk
T3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxlQWN0aXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtE
dWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RTdG9yYWdlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZv
cmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvZ2dlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDIxLTA1LTI3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRk
IHZhbGlkYXRpb24gd2hlbiByZWFkaW5nIERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyOjp3
YWl0aW5nU3RhdHVzIGluIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDhjYzMzOTc2YzMzNDY1
MzM3ZDU2MDAwMjA1YzNmNTNlMTYyODYxNDkuLjA0ZGNkYzg4YTIxZmZmOGEzOGYxNjEzNzBhNDAy
NDIyZWViM2MxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCkBAIC03OCw3ICs3OCw3IEBAIC0gKHZvaWQpX2FjdGlvbjooaWQpc2VuZGVy
IFwKICAgICAgICAgW19jb250ZW50VmlldyBfYWN0aW9uICMjIEZvcldlYlZpZXc6c2VuZGVyXTsg
XAogfQogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoLi4uKSBSRUxFQVNFX0xPR19J
RihfcGFnZSAmJiBfcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFZpZXdTdGF0ZSwg
X19WQV9BUkdTX18pCisjZGVmaW5lIFdLV0VCVklFV19SRUxFQVNFX0xPRyguLi4pIFJFTEVBU0Vf
TE9HKFZpZXdTdGF0ZSwgX19WQV9BUkdTX18pCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlbGF5
QmVmb3JlTm9WaXNpYmxlQ29udGVudHNSZWN0c0xvZ2dpbmcgPSAxX3M7CiBzdGF0aWMgY29uc3Qg
U2Vjb25kcyBkZWxheUJlZm9yZU5vQ29tbWl0c0xvZ2dpbmcgPSA1X3M7CkBAIC02ODYsMTMgKzY4
NiwxMyBAQCAtICh2b2lkKV9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXQKIAogLSAodm9pZClfcHJv
Y2Vzc1dpbGxTd2FwCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZp
ZXcgX3Byb2Nlc3NXaWxsU3dhcF0iLCBzZWxmKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0co
IiVwIC1bV0tXZWJWaWV3IF9wcm9jZXNzV2lsbFN3YXBdIiwgc2VsZik7CiAgICAgW3NlbGYgX3By
b2Nlc3NXaWxsU3dhcE9yRGlkRXhpdF07CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX3Byb2Nlc3NEaWRF
eGl0XSIsIHNlbGYpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcg
X3Byb2Nlc3NEaWRFeGl0XSIsIHNlbGYpOwogCiAgICAgW3NlbGYgX3Byb2Nlc3NXaWxsU3dhcE9y
RGlkRXhpdF07CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdAog
CiAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3MKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAtW1dLV2ViVmlldyBfZGlkUmVsYXVuY2hQcm9jZXNzXSIsIHNlbGYpOworICAgIFdL
V0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcgX2RpZFJlbGF1bmNoUHJvY2Vzc10i
LCBzZWxmKTsKICAgICBfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGUgPSBOTzsKICAgICBf
dmlld1N0YWJpbGl0eVdoZW5WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVTY2hlZHVsZWQgPSB7IH07
CiAgICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKQEAgLTc4NiwxNCArNzg2LDE0IEBAIC0gKHZv
aWQpX2RpZENvbW1pdExheWVyVHJlZUR1cmluZ0FuaW1hdGVkUmVzaXplOihjb25zdCBXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyCiAtICh2b2lkKV90cmFja1RyYW5zYWN0aW9uQ29tbWl0Oihjb25z
dCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlv
bgogewogICAgIGlmIChfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFi
bGVTY3JvbGxWaWV3KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAorICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAogICAgICAgICBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpLCBf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSwgX25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1p
dExvYWRGb3JNYWluRnJhbWUsIF9maXJzdFBhaW50QWZ0ZXJDb21taXRMb2FkVHJhbnNhY3Rpb25J
RC50b1VJbnQ2NCgpLCBbX2NvbnRlbnRWaWV3IHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlXSwgW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSwgX2N1cnJlbnRs
eUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCk7CiAgICAgfQogCiAgICAgaWYg
KF90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0KSB7
CiAgICAgICAgIGF1dG8gdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPSBN
b25vdG9uaWNUaW1lOjpub3coKSAtICpfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVXaXRoUGVuZGluZ0NvbW1pdDsKICAgICAgICAgaWYgKHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdp
dGhQZW5kaW5nQ29tbWl0ID4gZGVsYXlCZWZvcmVOb0NvbW1pdHNMb2dnaW5nKQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJW
aWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZz
IGFmdGVyIHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklE
ICVsbHUiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZp
cnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9u
LnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxF
QVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXll
clRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29u
dGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklEICVsbHUiLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5k
aW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50
b1VJbnQ2NCgpKTsKICAgICAgICAgX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
V2l0aFBlbmRpbmdDb21taXQgPSBXVEY6Om51bGxvcHQ7CiAgICAgfQogfQpAQCAtODkzLDcgKzg5
Myw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlCiAgICAgfQogCiAgICAgaWYgKF9yZXNpemVB
bmltYXRpb25WaWV3KQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2Vi
VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSBkeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlIGlz
IE5vdFJlc2l6aW5nLCBidXQgc3RpbGwgaGF2ZSBhIGxpdmUgcmVzaXplQW5pbWF0aW9uVmlldyAo
dW5wYWlyZWQgYmVnaW4vZW5kQW5pbWF0ZWRSZXNpemU/KSIsIHNlbGYpOworICAgICAgICBXS1dF
QlZJRVdfUkVMRUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAt
IGR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgaXMgTm90UmVzaXppbmcsIGJ1dCBzdGlsbCBoYXZl
IGEgbGl2ZSByZXNpemVBbmltYXRpb25WaWV3ICh1bnBhaXJlZCBiZWdpbi9lbmRBbmltYXRlZFJl
c2l6ZT8pIiwgc2VsZik7CiAKICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld0ZvclRyYW5zYWN0
aW9uOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKIApAQCAtMTk3MSw3ICsxOTcxLDcgQEAgLSAodm9p
ZClfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVBZnRlclNjcm9sbEluVmlldzooVUlT
Y3JvbGxWaWV3ICopc2Nyb2wKICAgICBpZiAoX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRl
KSB7CiAgICAgICAgIGF1dG8gdGltZU5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgICAg
ICBpZiAoKHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0
ZSkgPiBkZWxheUJlZm9yZU5vVmlzaWJsZUNvbnRlbnRzUmVjdHNMb2dnaW5nKSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCItW1dLV2ViVmlldyAlcCBfc2NoZWR1bGVWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVBZnRlclNjcm9sbEluVmlld106IF9oYXNTY2hlZHVsZWRWaXNp
YmxlUmVjdFVwZGF0ZSBpcyB0cnVlIGJ1dCBoYXZlbid0IHVwZGF0ZWQgdmlzaWJsZSBjb250ZW50
IHJlY3RzIGZvciAlLjJmcyAobGFzdCB1cGRhdGUgd2FzICUuMmZzIGFnbykgLSB2YWxpZCAlZCIs
CisgICAgICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIi1bV0tXZWJWaWV3ICVwIF9zY2hl
ZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZUFmdGVyU2Nyb2xsSW5WaWV3XTogX2hhc1NjaGVk
dWxlZFZpc2libGVSZWN0VXBkYXRlIGlzIHRydWUgYnV0IGhhdmVuJ3QgdXBkYXRlZCB2aXNpYmxl
IGNvbnRlbnQgcmVjdHMgZm9yICUuMmZzIChsYXN0IHVwZGF0ZSB3YXMgJS4yZnMgYWdvKSAtIHZh
bGlkICVkIiwKICAgICAgICAgICAgICAgICBzZWxmLCAodGltZU5vdyAtIF90aW1lT2ZSZXF1ZXN0
Rm9yVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKS52YWx1ZSgpLCAodGltZU5vdyAtIF90aW1lT2ZM
YXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKS52YWx1ZSgpLCBbc2VsZiBfaXNWYWxpZF0pOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTIwNjYsNyArMjA2Niw3IEBAIC0gKHZvaWQp
X3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICAgICAgW19wYXNzd29yZFZpZXcgc2V0RnJh
bWU6c2VsZi5ib3VuZHNdOwogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9jb21wdXRl
ZENvbnRlbnRJbnNldERpZENoYW5nZV07CiAgICAgICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHNGb3JBbnlSZWFzb24gPSBZRVM7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0czpdIC0gdXNlc1N0YW5kYXJkQ29udGVudFZpZXcgaXMgTk8sIGJhaWxpbmciLCBz
ZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBXS1dFQlZJRVdf
UkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0czpdIC0gdXNlc1N0YW5kYXJkQ29udGVudFZpZXcgaXMgTk8sIGJhaWxp
bmciLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yMDc0LDEzICsyMDc0LDEzIEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2li
bGVDb250ZW50UmVjdHMKICAgICBpZiAoX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlV2l0aFBlbmRpbmdDb21taXQpIHsKICAgICAgICAgYXV0byB0aW1lU2luY2VGaXJzdFJlcXVl
c3RXaXRoUGVuZGluZ0NvbW1pdCA9IHRpbWVOb3cgLSAqX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlV2l0aFBlbmRpbmdDb21taXQ7CiAgICAgICAgIGlmICh0aW1lU2luY2VGaXJz
dFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdCA+IGRlbGF5QmVmb3JlTm9Db21taXRzTG9nZ2luZykK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1
KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0gaGF2ZSBub3QgcmVj
ZWl2ZWQgYSBjb21taXQgJS4yZnMgYWZ0ZXIgdmlzaWJsZSBjb250ZW50IHJlY3QgdXBkYXRlOyBs
YXN0VHJhbnNhY3Rpb25JRCAlbGx1Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpLCB0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdC52YWx1ZSgpLCBfbGFz
dFRyYW5zYWN0aW9uSUQudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXS1dFQlZJRVdfUkVMRUFT
RV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0czpdIC0gaGF2ZSBub3QgcmVjZWl2ZWQgYSBjb21taXQgJS4yZnMgYWZ0ZXIgdmlz
aWJsZSBjb250ZW50IHJlY3QgdXBkYXRlOyBsYXN0VHJhbnNhY3Rpb25JRCAlbGx1Iiwgc2VsZiwg
X3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCB0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRo
UGVuZGluZ0NvbW1pdC52YWx1ZSgpLCBfbGFzdFRyYW5zYWN0aW9uSUQudG9VSW50NjQoKSk7CiAg
ICAgfQogCiAgICAgaWYgKF9pbnZva2luZ1VJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2spIHsK
ICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvclVJU2Nyb2xsVmll
d0RlbGVnYXRlQ2FsbGJhY2sgPSBZRVM7CiAgICAgICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHNGb3JBbnlSZWFzb24gPSBZRVM7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0czpdIC0gX2ludm9raW5nVUlTY3JvbGxWaWV3RGVsZWdhdGVDYWxsYmFjayBpcyBZ
RVMsIGJhaWxpbmciLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAg
ICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2Vi
VmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0gX2ludm9raW5nVUlTY3JvbGxWaWV3
RGVsZWdhdGVDYWxsYmFjayBpcyBZRVMsIGJhaWxpbmciLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmll
cigpLnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDkzLDEzICsy
MDkzLDEzIEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICAgICAgfHwg
X2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCkgewogICAgICAg
ICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uID0gWUVTOwog
ICAgICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFibGVTY3Jv
bGxWaWV3ID0gWUVTOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVBy
b3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHNj
cm9sbCB2aWV3IHN0YXRlIGlzIG5vbi1zdGFibGUsIGJhaWxpbmcgKF9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5G
cmFtZSAlZCwgc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgJWQs
IFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10gJWQsIF9jdXJyZW50bHlBZGp1c3RpbmdTY3Jv
bGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQgJWQpIiwKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0Vf
TE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHM6XSAtIHNjcm9sbCB2aWV3IHN0YXRlIGlzIG5vbi1zdGFibGUsIGJhaWxpbmcgKF9k
eW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29t
bWl0TG9hZEZvck1haW5GcmFtZSAlZCwgc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGUgJWQsIFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10gJWQsIF9jdXJyZW50
bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQgJWQpIiwKICAgICAgICAgICAg
IHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVw
ZGF0ZU1vZGUsIF9uZWVkc1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRMb2FkRm9yTWFpbkZyYW1l
LCBbX2NvbnRlbnRWaWV3IHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlXSwgW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSwgX2N1cnJlbnRseUFkanVzdGluZ1Nj
cm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvckFueVJlYXNvbikKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tX
ZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0gLSBwZXJmb3JtaW5nIGZpcnN0IHZp
c2libGUgY29udGVudCByZWN0IHVwZGF0ZSBhZnRlciBkZWZlcnJpbmcgdXBkYXRlcyIsIHNlbGYs
IF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIFdLV0VCVklFV19SRUxF
QVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzOl0gLSBwZXJmb3JtaW5nIGZpcnN0IHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZSBhZnRlciBkZWZlcnJpbmcgdXBkYXRlcyIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAKICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9y
VUlTY3JvbGxWaWV3RGVsZWdhdGVDYWxsYmFjayA9IE5POwogICAgIF9kaWREZWZlclVwZGF0ZVZp
c2libGVDb250ZW50UmVjdHNGb3JVbnN0YWJsZVNjcm9sbFZpZXcgPSBOTzsKQEAgLTIxNTMsNyAr
MjE1Myw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICB9CiAKICAg
ICBpZiAoKHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0
ZSkgPiBkZWxheUJlZm9yZU5vVmlzaWJsZUNvbnRlbnRzUmVjdHNMb2dnaW5nKQotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRl
bnRSZWN0czpdIGZpbmFsbHkgcmFuICUuMmZzIGFmdGVyIGJlaW5nIHNjaGVkdWxlZCIsIHNlbGYs
ICh0aW1lTm93IC0gX3RpbWVPZlJlcXVlc3RGb3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLnZh
bHVlKCkpOworICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF91
cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0gZmluYWxseSByYW4gJS4yZnMgYWZ0ZXIgYmVpbmcg
c2NoZWR1bGVkIiwgc2VsZiwgKHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250
ZW50UmVjdFVwZGF0ZSkudmFsdWUoKSk7CiAKICAgICBfYWx3YXlzU2VuZE5leHRWaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGUgPSBOTzsKICAgICBfdGltZU9mTGFzdFZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZSA9IHRpbWVOb3c7CkBAIC0yMTc5LDcgKzIxNzksNyBAQCBzdGF0aWMgaW50MzJfdCBhY3Rp
dmVPcmllbnRhdGlvbihXS1dlYlZpZXcgKndlYlZpZXcpCiAKIC0gKHZvaWQpX2NhbmNlbEFuaW1h
dGVkUmVzaXplCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlE
PSVsbHUpIC1bV0tXZWJWaWV3IF9jYW5jZWxBbmltYXRlZFJlc2l6ZV0gX2R5bmFtaWNWaWV3cG9y
dFVwZGF0ZU1vZGUgJWQiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIF9k
eW5hbWljVmlld3BvcnRVcGRhdGVNb2RlKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVw
IChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfY2FuY2VsQW5pbWF0ZWRSZXNpemVdIF9k
eW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpLCBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CiAKICAgICBpZiAoX2R5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2Rl
OjpOb3RSZXNpemluZykKICAgICAgICAgcmV0dXJuOwpAQCAtMjIxMSwxMiArMjIxMSwxMiBAQCAt
ICh2b2lkKV9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplCiAKICAgICBpZiAoIV9yZXNpemVBbmlt
YXRpb25WaWV3KSB7CiAgICAgICAgIC8vIFBhcmFub2lhLiBJZiBfcmVzaXplQW5pbWF0aW9uVmll
dyBpcyBudWxsIHdlJ2xsIGVuZCB1cCBzZXR0aW5nIGEgemVybyBzY2FsZSBvbiB0aGUgY29udGVu
dCB2aWV3LgotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2ViVmlldyBf
ZGlkQ29tcGxldGVBbmltYXRlZFJlc2l6ZTpdIC0gX3Jlc2l6ZUFuaW1hdGlvblZpZXcgaXMgbmls
Iiwgc2VsZik7CisgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcg
X2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemU6XSAtIF9yZXNpemVBbmltYXRpb25WaWV3IGlzIG5p
bCIsIHNlbGYpOwogICAgICAgICBbc2VsZiBfY2FuY2VsQW5pbWF0ZWRSZXNpemVdOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQ
cm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplXSIsIHNl
bGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgV0tXRUJWSUVXX1JFTEVB
U0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2RpZENvbXBsZXRlQW5p
bWF0ZWRSZXNpemVdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAog
ICAgIE5TVUludGVnZXIgaW5kZXhPZlJlc2l6ZUFuaW1hdGlvblZpZXcgPSBbW19zY3JvbGxWaWV3
IHN1YnZpZXdzXSBpbmRleE9mT2JqZWN0Ol9yZXNpemVBbmltYXRpb25WaWV3LmdldCgpXTsKICAg
ICBbX3Njcm9sbFZpZXcgaW5zZXJ0U3VidmlldzpfY29udGVudFZpZXcuZ2V0KCkgYXRJbmRleDpp
bmRleE9mUmVzaXplQW5pbWF0aW9uVmlld107CkBAIC0yODg3LDcgKzI4ODcsNyBAQCAtICh2b2lk
KV9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJs
b2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2JlZ2luQW5pbWF0ZWRSZXNpemVX
aXRoVXBkYXRlczpdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmll
dyBfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPSBX
ZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU6OlJlc2l6aW5nV2l0aEFuaW1hdGlvbjsK
IApAQCAtMzAyNCw3ICszMDI0LDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhV
cGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogCiAtICh2b2lkKV9lbmRBbmltYXRl
ZFJlc2l6ZQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0l
bGx1KSAtW1dLV2ViVmlldyBfZW5kQW5pbWF0ZWRSZXNpemVdIF9keW5hbWljVmlld3BvcnRVcGRh
dGVNb2RlICVkIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBfZHluYW1p
Y1ZpZXdwb3J0VXBkYXRlTW9kZSk7CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFn
ZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2VuZEFuaW1hdGVkUmVzaXplXSBfZHluYW1pY1Zp
ZXdwb3J0VXBkYXRlTW9kZSAlZCIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUpOwogCiAgICAgLy8gSWYgd2UgYWxyZWFkeSBo
YXZlIGFuIHVwLXRvLWRhdGUgbGF5ZXIgdHJlZSwgaW1tZWRpYXRlbHkgY29tcGxldGUKICAgICAv
LyB0aGUgcmVzaXplLiBPdGhlcndpc2UsIHdlIHdpbGwgZGVmZXIgY29tcGxldGlvbiB1bnRpbCB3
ZSBkby4KQEAgLTMwMzUsNyArMzAzNSw3IEBAIC0gKHZvaWQpX2VuZEFuaW1hdGVkUmVzaXplCiAK
IC0gKHZvaWQpX3Jlc2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOih2b2lkICheKSh2
b2lkKSl1cGRhdGVCbG9jawogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfcmVzaXplV2hpbGVIaWRpbmdDb250ZW50V2l0aFVw
ZGF0ZXM6XSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgV0tX
RUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3Jl
c2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgW3NlbGYgX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRo
VXBkYXRlczp1cGRhdGVCbG9ja107CiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2Rl
ID09IFdlYktpdDo6RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6UmVzaXppbmdXaXRoQW5pbWF0
aW9uKSB7CkBAIC0zMzM5LDQgKzMzMzksNiBAQCAtIChpZCA8X1dLV2ViVmlld1ByaW50UHJvdmlk
ZXI+KV9wcmludFByb3ZpZGVyCiAKIEBlbmQKIAorI3VuZGVmIFdLV0VCVklFV19SRUxFQVNFX0xP
RworCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNz
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NP
QXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggZmQ4YzcwN2Q5OWU4NDkxOGVjYTBiMDdlZmUx
YzhhNGNkMjhjNGM4Ni4uYzkwYzI5OTA0YTRhNTUxNWVjMDlmNzNiMmZhNDYwMzQ2ZDI4NGMwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9u
L1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTQ0LDcg
KzQ0LDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5o
PgogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0lGKG1fcGFnZSAmJiBtX3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBBcHBTU08s
ICIlcCAtIFtJbml0aWF0aW5nQWN0aW9uPSVzXSBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjoiIGZt
dCwgdGhpcywgdG9TdHJpbmcobV9hY3Rpb24pLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBBVVRI
T1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coQXBwU1NP
LCAiJXAgLSBbSW5pdGlhdGluZ0FjdGlvbj0lc10gU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6IiBm
bXQsIHRoaXMsIHRvU3RyaW5nKG1fYWN0aW9uKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OmJlY29tZUNvbXBsZXRlZCgpCiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6c2hv
dWxkU3RhcnQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNob3VsZFN0YXJ0OiIp
OworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJzaG91bGRTdGFydDoiKTsK
IAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpJZGxlKTsKICAgICBpZiAoIW1fcGFnZSkK
QEAgLTEyNywxMiArMTI3LDEyIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6c2hvdWxk
U3RhcnQoKQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lP
Tl9SRUxFQVNFX0xPRygic3RhcnQ6Iik7CiAKICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gU3RhdGU6
OklkbGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6V2FpdGluZykgJiYgbV9uYXZpZ2F0aW9uQWN0aW9u
KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkFjdGl2ZTsKICAgICBbbV9zb0F1dGhvcml6YXRpb24g
Z2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDptX25hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3Qo
KS51cmwoKSByZXNwb25zZUNvZGU6MCBjb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChTT0F1dGhvcml6YXRpb25IaW50cyAqYXV0aG9y
aXphdGlvbkhpbnRzLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydDogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25IaW50cyAoZXJyb3I9JWxkKSIs
IGVycm9yID8gZXJyb3IuY29kZSA6IDApOworICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9S
RUxFQVNFX0xPRygic3RhcnQ6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uSGludHMgKGVycm9yPSVs
ZCkiLCBlcnJvciA/IGVycm9yLmNvZGUgOiAwKTsKIAogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8
IGVycm9yIHx8ICFhdXRob3JpemF0aW9uSGludHMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
NDIsNyArMTQyLDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzdGFydCgpCiAKIHZv
aWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXph
dGlvbkhpbnRzKGNvbnN0IFN0cmluZyYgaGludHMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiY29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhpbnRzOiAoaGludHM9JXMp
IiwgaGludHMudXRmOCgpLmRhdGEoKSk7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFT
RV9MT0coImNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50czogKGhpbnRzPSVz
KSIsIGhpbnRzLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OkFjdGl2ZSk7CiAgICAgaWYgKCFtX3BhZ2UpCkBAIC0xNTgsMTMgKzE1OCwxMyBAQCB2b2lkIFNP
QXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25I
aW50cyhjb25zdCBTdHJpbgogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0
YXJ0QWZ0ZXJEZWNpZGVQb2xpY3koY29uc3QgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeSYgcG9s
aWN5KQogewogICAgIGlmIChwb2xpY3kgPT0gU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6SWdu
b3JlKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlU3RhcnRBZnRl
ckRlY2lkZVBvbGljeTogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpJZ25vcmUi
KTsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImNvbnRpbnVlU3Rh
cnRBZnRlckRlY2lkZVBvbGljeTogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpJ
Z25vcmUiKTsKIAogICAgICAgICBmYWxsQmFja1RvV2ViUGF0aCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVTdGFydEFmdGVy
RGVjaWRlUG9saWN5OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6OkFsbG93Iik7
CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImNvbnRpbnVlU3RhcnRBZnRl
ckRlY2lkZVBvbGljeTogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpBbGxvdyIp
OwogCiAgICAgaWYgKCFtX3NvQXV0aG9yaXphdGlvbiB8fCAhbV9wYWdlIHx8ICFtX25hdmlnYXRp
b25BY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFNPQXV0
aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeShjb25zdCBT
T0F1dGhvcml6YXRpbwogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmZhbGxCYWNrVG9X
ZWJQYXRoKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJmYWxsQmFja1RvV2ViUGF0
aDoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZmFsbEJhY2tUb1dl
YlBhdGg6Iik7CiAKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QWN0aXZlKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpm
YWxsQmFja1RvV2ViUGF0aCgpCiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6YWJvcnQo
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiIpOworICAgIEFVVEhPUkla
QVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJhYm9ydDoiKTsKIAogICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpJZGxlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29t
cGxldGUoTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSwgTlNEYXRhICpkCiAgICAgLy8g
U2V0IGNvb2tpZXMuCiAgICAgYXV0byBjb29raWVzID0gdG9Db29raWVWZWN0b3IoW05TSFRUUENv
b2tpZSBjb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzOmh0dHBSZXNwb25zZS5hbGxIZWFk
ZXJGaWVsZHMgZm9yVVJMOnJlc3BvbnNlLnVybCgpXSk7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJjb21wbGV0ZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBoYXNDb29raWVzPSVkLCBoYXNE
YXRhPSVkKSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICFjb29raWVzLmlzRW1wdHkoKSwg
ISFkYXRhLmxlbmd0aCk7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImNv
bXBsZXRlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIGhhc0Nvb2tpZXM9JWQsIGhhc0RhdGE9JWQpIiwg
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIWNvb2tpZXMuaXNFbXB0eSgpLCAhIWRhdGEubGVu
Z3RoKTsKIAogICAgIGlmIChjb29raWVzLmlzRW1wdHkoKSkgewogICAgICAgICBjb21wbGV0ZUlu
dGVybmFsKHJlc3BvbnNlLCBkYXRhKTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFNPQXV0aG9y
aXphdGlvblNlc3Npb246OmNvbXBsZXRlKE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2Us
IE5TRGF0YSAqZAogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbXBsZXRlOiBDb29raWVzIGFyZSBz
ZXQuIik7CisgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb21wbGV0
ZTogQ29va2llcyBhcmUgc2V0LiIpOwogCiAgICAgICAgIGNvbXBsZXRlSW50ZXJuYWwocmVzcG9u
c2UsIGRhdGEuZ2V0KCkpOwogICAgIH0pOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU09BdXRo
b3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGUoTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25z
ZSwgTlNEYXRhICpkCiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6cHJlc2VudFZpZXdD
b250cm9sbGVyKFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHZpZXdDb250cm9sbGVyLCBV
SUNhbGxiYWNrIHVpQ2FsbGJhY2spCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicHJl
c2VudFZpZXdDb250cm9sbGVyOiIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0Vf
TE9HKCJwcmVzZW50Vmlld0NvbnRyb2xsZXI6Iik7CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6QWN0aXZlKTsKICAgICAvLyBPbmx5IGV4cGVjdCBhdCBtb3N0IG9uZSBVSSBzZXNzaW9u
IGZvciB0aGUgd2hvbGUgYXV0aG9yaXphdGlvbiBzZXNzaW9uLgpAQCAtMjc1LDcgKzI3NSw3IEBA
IHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6cHJlc2VudFZpZXdDb250cm9sbGVyKFNPQXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJwcmVzZW50Vmlld0NvbnRyb2xsZXI6IENhbGxpbmcgYmVn
aW5TaGVldCBvbiAlcCBmb3Igc2hlZXQgJXAuIiwgcHJlc2VudGluZ1dpbmRvdywgbV9zaGVldFdp
bmRvdy5nZXQoKSk7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coInByZXNl
bnRWaWV3Q29udHJvbGxlcjogQ2FsbGluZyBiZWdpblNoZWV0IG9uICVwIGZvciBzaGVldCAlcC4i
LCBwcmVzZW50aW5nV2luZG93LCBtX3NoZWV0V2luZG93LmdldCgpKTsKICAgICBbcHJlc2VudGlu
Z1dpbmRvdyBiZWdpblNoZWV0Om1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKICNlbGlmIFBMQVRGT1JNKElPUykKICAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIgPSBtX3BhZ2UtPnVpQ2xpZW50KCkucHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyKCk7CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9u
OjpwcmVzZW50Vmlld0NvbnRyb2xsZXIoU09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIKIAog
dm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjoiKTsKKyAg
ICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVy
OiIpOwogCiAgICAgQVNTRVJUKG1fdmlld0NvbnRyb2xsZXIpOwogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTMwMywxMyArMzAzLDEzIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlz
c1ZpZXdDb250cm9sbGVyKCkKICAgICBpZiAobV9wYWdlICYmIG1fcGFnZS0+cGxhdGZvcm1XaW5k
b3coKSkgewogICAgICAgICBhdXRvICpwcmVzZW50aW5nV2luZG93ID0gbV9wYWdlLT5wbGF0Zm9y
bVdpbmRvdygpOwogICAgICAgICBpZiAocHJlc2VudGluZ1dpbmRvdy5taW5pYXR1cml6ZWQpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxl
cjogUGFnZSdzIHdpbmRvdyBpcyBtaW5pYXR1cml6ZWQuIFdhaXRpbmcgdG8gZGlzbWlzcyB1bnRp
bCBhY3RpdmUuIik7CisgICAgICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xP
RygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBQYWdlJ3Mgd2luZG93IGlzIG1pbmlhdHVyaXplZC4g
V2FpdGluZyB0byBkaXNtaXNzIHVudGlsIGFjdGl2ZS4iKTsKICAgICAgICAgICAgIGlmIChtX3By
ZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIpIHsKLSAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFtNaW5pYXR1
cml6ZWRdIEFscmVhZHkgaGFzIGEgZGVtaW5pYXR1cml6ZWQgb2JzZXJ2ZXIgKCVwKS4gSGlkZGVu
IG9ic2VydmVyIGlzICVwIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2Vy
dmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0Nv
bnRyb2xsZXI6IFtNaW5pYXR1cml6ZWRdIEFscmVhZHkgaGFzIGEgZGVtaW5pYXR1cml6ZWQgb2Jz
ZXJ2ZXIgKCVwKS4gSGlkZGVuIG9ic2VydmVyIGlzICVwIiwgbV9wcmVzZW50aW5nV2luZG93RGlk
RGVtaW5pYXR1cml6ZU9ic2VydmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2
ZXIuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlciA9IFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2lu
ZG93RGlkRGVtaW5pYXR1cml6ZU5vdGlmaWNhdGlvbiBvYmplY3Q6cHJlc2VudGluZ1dpbmRvdyBx
dWV1ZTpuaWwgdXNpbmdCbG9jazpbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRo
aXNdIChOU05vdGlmaWNhdGlvbiAqKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBXaW5kb3cgaGFzIGRlbWluaWF0dXJpemVk
LiBDb21wbGV0aW5nIHRoZSBkaXNtaXNzYWwuIik7CisgICAgICAgICAgICAgICAgQVVUSE9SSVpB
VElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogV2luZG93IGhh
cyBkZW1pbmlhdHVyaXplZC4gQ29tcGxldGluZyB0aGUgZGlzbWlzc2FsLiIpOwogICAgICAgICAg
ICAgICAgIGRpc21pc3NWaWV3Q29udHJvbGxlcigpOwogICAgICAgICAgICAgICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9wcmVzZW50aW5n
V2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyLmdldCgpXTsKICAgICAgICAgICAgICAgICBt
X3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAt
MzE5LDEzICszMTksMTMgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmll
d0NvbnRyb2xsZXIoKQogICAgIH0KIAogICAgIGlmIChOU0FwcC5oaWRkZW4pIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBBcHBsaWNhdGlv
biBpcyBoaWRkZW4uIFdhaXRpbmcgdG8gZGlzbWlzcyB1bnRpbCBhY3RpdmUuIik7CisgICAgICAg
IEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6
IEFwcGxpY2F0aW9uIGlzIGhpZGRlbi4gV2FpdGluZyB0byBkaXNtaXNzIHVudGlsIGFjdGl2ZS4i
KTsKICAgICAgICAgaWYgKG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlcikgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBbSGlk
ZGVuXSBBbHJlYWR5IGhhcyBhbiBVbmhpZGUgb2JzZXJ2ZXIgKCVwKS4gRGVtaW5pYXR1cml6ZWQg
b2JzZXJ2ZXIgaXMgJXAiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2
ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7CisgICAgICAg
ICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9s
bGVyOiBbSGlkZGVuXSBBbHJlYWR5IGhhcyBhbiBVbmhpZGUgb2JzZXJ2ZXIgKCVwKS4gRGVtaW5p
YXR1cml6ZWQgb2JzZXJ2ZXIgaXMgJXAiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVy
aXplT2JzZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9hcHBsaWNhdGlvbkRp
ZFVuaGlkZU9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBh
ZGRPYnNlcnZlckZvck5hbWU6TlNBcHBsaWNhdGlvbkRpZFVuaGlkZU5vdGlmaWNhdGlvbiBvYmpl
Y3Q6TlNBcHAgcXVldWU6bmlsIHVzaW5nQmxvY2s6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpLCB0aGlzXSAoTlNOb3RpZmljYXRpb24gKikgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBBcHBsaWNhdGlvbiBpcyBubyBs
b25nZXIgaGlkZGVuLiBDb21wbGV0aW5nIHRoZSBkaXNtaXNzYWwuIik7CisgICAgICAgICAgICBB
VVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBB
cHBsaWNhdGlvbiBpcyBubyBsb25nZXIgaGlkZGVuLiBDb21wbGV0aW5nIHRoZSBkaXNtaXNzYWwu
Iik7CiAgICAgICAgICAgICBkaXNtaXNzVmlld0NvbnRyb2xsZXIoKTsKICAgICAgICAgICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9hcHBs
aWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpXTsKICAgICAgICAgICAgIG1fYXBwbGljYXRp
b25EaWRVbmhpZGVPYnNlcnZlciA9IG51bGxwdHI7CkBAIC0zMzcsMTAgKzMzNywxMCBAQCB2b2lk
IFNPQXV0aG9yaXphdGlvblNlc3Npb246OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiAgICAgbV9z
aGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyID0gbnVsbHB0cjsKIAogICAgIGF1dG8gKnByZXNl
bnRpbmdXaW5kb3cgPSBtX3NoZWV0V2luZG93LmdldCgpLnNoZWV0UGFyZW50OwotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogQ2FsbGluZyBlbmRTaGVl
dCBvbiAlcCBmb3Igc2hlZXQgJXAuIiwgcHJlc2VudGluZ1dpbmRvdywgbV9zaGVldFdpbmRvdy5n
ZXQoKSk7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3
Q29udHJvbGxlcjogQ2FsbGluZyBlbmRTaGVldCBvbiAlcCBmb3Igc2hlZXQgJXAuIiwgcHJlc2Vu
dGluZ1dpbmRvdywgbV9zaGVldFdpbmRvdy5nZXQoKSk7CiAgICAgW3ByZXNlbnRpbmdXaW5kb3cg
ZW5kU2hlZXQ6bV9zaGVldFdpbmRvdy5nZXQoKV07CiAgICAgbV9zaGVldFdpbmRvdyA9IG51bGxw
dHI7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBG
aW5pc2hlZCBjYWxsIHdpdGggZGVtaW5pYXR1cml6ZWQgb2JzZXJ2ZXIgKCVwKSBhbmQgSGlkZGVu
IG9ic2VydmVyICglcCkiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2
ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7CisgICAgQVVU
SE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogRmlu
aXNoZWQgY2FsbCB3aXRoIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCkgYW5kIEhpZGRlbiBv
YnNlcnZlciAoJXApIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVy
LmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOwogI2VsaWYgUExB
VEZPUk0oSU9TKQogICAgIFtbbV92aWV3Q29udHJvbGxlciBwcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXJdIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CiAj
ZW5kaWYKQEAgLTM1MCw2ICszNTAsNiBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmRp
c21pc3NWaWV3Q29udHJvbGxlcigpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jdW5kZWYg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRAorI3VuZGVmIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVB
U0VfTE9HCiAKICNlbmRpZiAvLyBIQVZFKEFQUF9TU08pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMjI2ZDI5MzM0MDVlYTViNmYw
YmMzNjllNTFmZDA3ODYyZTM3YWY3Ni4uZmY2MjgzZjY5Yjc5M2I2MTA2YjZlNDk0OTI1NDdlZjU2
NTQ0ZWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcApAQCAtNTUsOCArNTUsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJ
RD0lIiBQUkl1NjQgIiwgUElEPSVpLCBuYXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICJdIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
LCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fbmF2aWdhdGlvbklELCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX3Bh
Z2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJ
RD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWksIG5hdmlnYXRpb25J
RD0lIiBQUkl1NjQgIl0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX3BhZ2Uu
aWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMjX19WQV9BUkdTX18pCisj
ZGVmaW5lIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4u
KSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdl
YlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpLCBuYXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICJdIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fbmF2aWdhdGlvbklELCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBQUk9WSVNJT05B
TFBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdl
SUQ9JSIgUFJJdTY0ICIsIFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiXSBQcm92aXNp
b25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX25hdmlnYXRpb25JRCwgIyNfX1ZBX0FSR1NfXykKIAogUHJvdmlzaW9uYWxQYWdlUHJveHk6
OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBzdXNw
ZW5kZWRQYWdlLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgaXNTZXJ2ZXJSZWRpcmVjdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiB3ZWJzaXRlUG9saWNpZXMpCiAgICAgOiBtX3BhZ2UocGFnZSkKQEAgLTc2LDcgKzc2
LDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQ
cm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8KICNlbmRpZgogI2VuZGlmCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25hbFBhZ2VQcm94
eTogc3VzcGVuZGVkUGFnZT0lcCIsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIFBST1ZJU0lP
TkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFn
ZVByb3h5OiBzdXNwZW5kZWRQYWdlPSVwIiwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKICAgICBt
X3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7CiAgICAgbV9wcm9jZXNzLT5h
ZGRQcm92aXNpb25hbFBhZ2VQcm94eSgqdGhpcyk7CkBAIC0xMTgsNyArMTE4LDcgQEAgUHJvdmlz
aW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAKIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZToiKTsK
KyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3dhcHBp
bmcsICJwcm9jZXNzRGlkVGVybWluYXRlOiIpOwogICAgIG1fcGFnZS5wcm92aXNpb25hbFByb2Nl
c3NEaWRUZXJtaW5hdGUoKTsKIH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgICAgIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0
YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZyk7CiAKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSIpOwogICAgIEFTU0VSVChtX21haW5GcmFtZSk7CiAg
ICAgYXV0byBlcnJvciA9IFdlYktpdDo6Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KTsKICAgICBl
cnJvci5zZXRUeXBlKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7
CkBAIC0xNjQsMTQgKzE2NCwxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojppbml0aWFs
aXplV2ViUGFnZShSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2VicwogCiB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2Fw
cGluZywgImxvYWREYXRhOiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9H
KFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiIpOwogCiAgICAgbV9wYWdlLmxvYWREYXRhV2l0
aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmln
YXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5hdmln
YXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAogdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQ
b2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
ImxvYWRSZXF1ZXN0OiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiIpOwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNs
aWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUg
bmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNh
c2UsCiAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXBkYXRlIGZyb21JdGVtJ3MgcHJv
Y2Vzc0lkZW50aWZpZXIgYXMgd2Ugd2FudCBmdXR1cmUgbmF2aWdhdGlvbnMgdG8gdGhpcyBCYWNr
Rm9yd2FyZCBpdGVtIHRvIGhhcHBlbiBpbiB0aGUKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIFdlYkNvcmU6OlJlcwogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0Zv
cndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2ll
cykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9C
YWNrRm9yd2FyZEl0ZW06Iik7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbToiKTsKIAogICAgIGF1dG8gaXRl
bVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1TdGF0ZXMoW3Ro
aXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBpZiAoYXV0byog
YmFja0ZvcndhcmRDYWNoZUVudHJ5ID0gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKSkgewpA
QCAtMjE0LDcgKzIxNCw3IEBAIGlubGluZSBib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2YWxp
ZGF0ZUlucHV0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPCiAKIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENy
ZWF0ZU1haW5GcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7Cisg
ICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGlk
Q3JlYXRlTWFpbkZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsK
ICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQ
cm94eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWUKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdh
dGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlE
PSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKICAgICBBU1NF
UlQobV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2Fk
VVJMID0gdXJsOwogCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUkK
ICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBm
cmFtZUlELnRvVUludDY0KCkpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9H
X0VSUk9SKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKCFtX3By
b3Zpc2lvbmFsTG9hZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7
IH07CiAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSQogICAgIGlm
ICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENvbW1p
dExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7Cisg
ICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGlk
Q29tbWl0TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgp
KTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKICAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fd2ViUGFnZUlEKTsKIApAQCAtNDIxLDE0ICs0MjEsMTQgQEAgdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lKGNvbnN0IFdl
YkNvcmU6OkNvbnQKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRl
eHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb246IGNvbnRleHRJRD0ldSIsIGNv
bnRleHRJRCk7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbjogY29udGV4dElEPSV1IiwgY29udGV4dElEKTsKICAgICBtX2NvbnRleHRJREZvclZpc2li
aWxpdHlQcm9wYWdhdGlvbkluV2ViUHJvY2VzcyA9IGNvbnRleHRJRDsKIH0KIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZUNvbnRl
eHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4
dElEIGNvbnRleHRJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2Fw
cGluZywgImRpZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRp
b246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlf
UkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vz
c0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjogY29udGV4dElEPSV1IiwgY29udGV4dElEKTsKICAg
ICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcyA9IGNvbnRl
eHRJRDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDk4MzVhNjQ1NzA0YTVmOTZj
MjM0Y2I5MDMzNGZiODQ5ODUxOGMwYWEuLjE0OTVkODljMjI0M2NiNDhiMDUzYmJmNTk5NTU0Yzkx
Yzk0N2U4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCkBAIC01MDQsNyArNTA0LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpoYXNWaXNpYmxlQ29udGVudCgpIGNvbnN0CiAKIGJvb2wgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV93ZWJQYWdlUHJveHkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CisgICAg
cmV0dXJuIG1fd2ViUGFnZVByb3h5LnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpOwogfQogCiBDQUxheWVyICpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpsYXll
cldpdGhJREZvclRlc3RpbmcodWludDY0X3QgbGF5ZXJJRCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM1MmUyYjhlMDlmOWIwYWU0YTM0MDQ0ZjIy
ZDY4MzJjODBlYzMzODQuLjVlYWM2NTM0NzUwYTdmOTlkYzg2Y2YyNjA2MWE4MTkzYmEyOWQ2YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzE1LDggKzMx
NSw4IEBACiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHVybCkgTUVTU0FHRV9D
SEVDS19CQVNFKGNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNz
KHByb2Nlc3MsIHVybCksIHByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKICNkZWZpbmUgTUVTU0FHRV9D
SEVDS19DT01QTEVUSU9OKHByb2Nlc3MsIGFzc2VydGlvbiwgY29tcGxldGlvbikgTUVTU0FHRV9D
SEVDS19DT01QTEVUSU9OX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzLT5jb25uZWN0aW9uKCksIGNv
bXBsZXRpb24pCiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQs
IC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWws
ICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQ
SUQ9JWldIFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
LCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
ICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hh
bm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJ
RD0lIiBQUkl1NjQgIiwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIlcCAtIFtw
YWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWldIFdl
YlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9B
UkdTX18pCisjZGVmaW5lIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUi
IFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laV0gV2ViUGFnZVByb3h5Ojoi
IGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0
KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKIAogLy8g
UmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHdoZWVsIGV2ZW50cyB3ZSBjYW4gaG9sZCBpbiB0aGUg
cXVldWUgYmVmb3JlIHdlIHN0YXJ0IHB1c2hpbmcgdGhlbSBwcmVlbXB0aXZlbHkuCiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgd2hlZWxFdmVudFF1ZXVlU2l6ZVRocmVzaG9sZCA9IDEwOwpAQCAtNTEw
LDcgKzUxMCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgLCBtX2xpbWl0c05hdmln
YXRpb25zVG9BcHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9uLT5saW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJjb25zdHJ1Y3RvcjoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImNvbnN0cnVjdG9yOiIpOwogCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24t
PmRyYXdzQmFja2dyb3VuZCgpKQogICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9IENvbG9yKENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCBXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIFJlZgogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlc3RydWN0b3I6Iik7CisgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkZXN0cnVjdG9yOiIpOwogCiAgICAgQVNTRVJUKG1f
cHJvY2Vzcy0+d2ViUGFnZShtX2lkZW50aWZpZXIpICE9IHRoaXMpOwogI2lmIEFTU0VSVF9FTkFC
TEVECkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3Mo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQcm8KICAgICBBU1NF
UlQoIW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaGFzUnVubmluZ1Byb2Nlc3MoKSk7CiAKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiIpOworICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibGF1bmNoUHJvY2VzczoiKTsKIAog
ICAgIC8vIEluIGNhc2Ugd2UgYXJlIGN1cnJlbnRseSBjb25uZWN0ZWQgdG8gdGhlIGR1bW15IHBy
b2Nlc3MsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBpbnNwZWN0b3IgcHJveHkKICAgICAvLyBk
aXNjb25uZWN0cyBmcm9tIHRoZSBkdW1teSBwcm9jZXNzIGZpcnN0LgpAQCAtODY1LDEyICs4NjUs
MTIgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKCFoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJ
ZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVp
IGJlY2F1c2UgaGFzIG5vdCBjb21taXR0ZWQgYW55IGxvYWQgeWV0IiwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nl
c3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5n
IGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgYmVjYXVzZSBoYXMgbm90IGNvbW1pdHRl
ZCBhbnkgbG9hZCB5ZXQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGlzUGFnZU9wZW5lZEJ5RE9NU2hvd2lu
Z0luaXRpYWxFbXB0eURvY3VtZW50KCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3Vz
cGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgaXQgaXMgc2hv
d2luZyB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50
IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgaXQgaXMgc2hvd2luZyB0aGUgaW5pdGlh
bCBlbXB0eSBkb2N1bWVudCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTg3OSwyNSArODc5LDI1IEBAIGJvb2wgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgT3B0CiAgICAgLy8gSWYgdGhlIHNvdXJjZSBhbmQgdGhlIGRlc3RpbmF0aW9u
IGJhY2sgLyBmb3J3YXJkIGxpc3QgaXRlbXMgYXJlIHRoZSBzYW1lLCB0aGVuIHRoaXMgaXMgYSBj
bGllbnQtc2lkZSByZWRpcmVjdC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHRoZXJlIGlzIG5vIG5l
ZWQgdG8gc3VzcGVuZCB0aGUgcHJldmlvdXMgcGFnZSBhcyB0aGVyZSB3aWxsIGJlIG5vIHdheSB0
byBnZXQgYmFjayB0byBpdC4KICAgICBpZiAoZnJvbUl0ZW0gJiYgZnJvbUl0ZW0gPT0gbV9iYWNr
Rm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qg
c3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgdGhpcyBp
cyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
KTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1
c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBm
b3IgcHJvY2VzcyBwaWQgJWkgYmVjYXVzZSB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3Qi
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgaWYgKGZyb21JdGVtICYmIGZyb21JdGVtLT51cmwoKSAhPSBwYWdlTG9h
ZFN0YXRlKCkudXJsKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVu
ZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgZnJvbUl0ZW0ncyBV
UkwgZG9lcyBub3QgbWF0Y2ggdGhlIHBhZ2UgVVJMLiIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNz
U3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBj
dXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgZnJvbUl0ZW0ncyBVUkwgZG9l
cyBub3QgbWF0Y2ggdGhlIHBhZ2UgVVJMLiIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBib29sIG5lZWRzU3VzcGVu
ZGVkUGFnZVRvUHJldmVudEZsYXNoaW5nID0gc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExh
eWVyRmx1c2ggPT0gU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2g6OlllczsK
ICAgICBpZiAoIW5lZWRzU3VzcGVuZGVkUGFnZVRvUHJldmVudEZsYXNoaW5nICYmICghZnJvbUl0
ZW0gfHwgIXNob3VsZFVzZUJhY2tGb3J3YXJkQ2FjaGUoKSkpIHsKICAgICAgICAgaWYgKCFmcm9t
SXRlbSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBw
YWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICAg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJy
ZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2Vz
cyBwaWQgJWkgdGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIiwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVu
dFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3Mg
cGlkICVpIHRoZSBiYWNrIC8gZm9yd2FyZCBjYWNoZSBpcyBkaXNhYmxlZCIsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGUgYmFjayAvIGZvcndh
cmQgY2FjaGUgaXMgZGlzYWJsZWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNwZW5k
aW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNwZW5kaW5nIGN1cnJlbnQgcGFn
ZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwog
ICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VVbmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5Pigq
dGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBzaG91bGREZWxheUNsb3Np
bmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCk7CiAKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2Vi
UGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nl
c3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygp
IDogMCk7CkBAIC05MjcsNyArOTI3LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZFVzZUJh
Y2tGb3J3YXJkQ2FjaGUoKSBjb25zdAogdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lv
bmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHByb3Zpc2lvbmFs
UGFnZSkKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgInN3YXBUb1Byb3Zpc2lvbmFsUGFnZTogbmV3V2ViUGFnZUlEPSUiIFBS
SXU2NCwgcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInN3YXBUb1Byb3Zpc2lvbmFsUGFnZTogbmV3
V2ViUGFnZUlEPSUiIFBSSXU2NCwgcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKS50b1VJbnQ2
NCgpKTsKIAogICAgIG1fcHJvY2VzcyA9IHByb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpOwogICAg
IG1fd2ViUGFnZUlEID0gcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKTsKQEAgLTk0MSw4ICs5
NDEsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6dW5p
cXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gcAogI2VuZGlmCiAjZW5kaWYKIAorICAgIC8v
IEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBkaXNhYmxlIHRoaXMgbG9nZ2luZyBpbiBlcGhl
bWVyYWwgc2Vzc2lvbnM/CiAgICAgaWYgKG1fbG9nZ2VyKQotICAgICAgICBtX2xvZ2dlci0+c2V0
RW5hYmxlZCh0aGlzLCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSk7CisgICAgICAgIG1fbG9n
Z2VyLT5zZXRFbmFibGVkKHRoaXMsICFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKTsKIAogICAg
IG1faGFzUnVubmluZ1Byb2Nlc3MgPSB0cnVlOwogCkBAIC0xMDM1LDEwICsxMDM2LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVs
b2FkOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibGF1bmNoUHJv
Y2Vzc0ZvclJlbG9hZDoiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2Ug
aXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAi
bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtMTA0Nyw3ICsxMDQ4LDcgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKICAgICBs
YXVuY2hQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCBQcm9jZXNzTGF1bmNoUmVhc29uOjpDcmFz
aCk7CiAKICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxv
YWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0
ZW0gdG8gcmVsb2FkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTEw
OSw3ICsxMTEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9pc0Ns
b3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiY2xvc2U6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJj
bG9zZToiKTsKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwogCkBAIC0xMTg4LDcgKzExODksNyBA
QCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3MsICJ0cnlDbG9zZToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2VzcywgInRyeUNsb3NlOiIpOwogCiAgICAgLy8gQ2xvc2Ugd2l0aG91dCBkZWxheSBpZiB0aGUg
cHJvY2VzcyBhbGxvd3MgaXQuIE91ciBnb2FsIGlzIHRvIHRlcm1pbmF0ZQogICAgIC8vIHRoZSBw
cm9jZXNzLCBzbyB3ZSBjaGVjayBhIHBlci1wcm9jZXNzIHN0YXR1cyBiaXQuCkBAIC0xMjEzLDcg
KzEyMTQsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6dHJ5Q2xvc2VUaW1lZE91dCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChQcm9jZXNzLCAidHJ5Q2xvc2VUaW1lZE91dDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIHRo
ZSBwcm9jZXNzIHRvIHJlc3BvbmQgdG8gdGhlIFdlYlBhZ2U6OlRyeUNsb3NlIElQQywgY2xvc2lu
ZyB0aGUgcGFnZSBub3ciKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJv
Y2VzcywgInRyeUNsb3NlVGltZWRPdXQ6IFRpbWVkIG91dCB3YWl0aW5nIGZvciB0aGUgcHJvY2Vz
cyB0byByZXNwb25kIHRvIHRoZSBXZWJQYWdlOjpUcnlDbG9zZSBJUEMsIGNsb3NpbmcgdGhlIHBh
Z2Ugbm93Iik7CiAgICAgY2xvc2VQYWdlKCk7CiB9CiAKQEAgLTEzMTAsNyArMTMxMSw3IEBAIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJl
cXVlc3Q6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkUmVx
dWVzdDoiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNo
UHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3QudXJsKCkgfSwgUHJvY2Vzc0xhdW5j
aFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwpAQCAtMTMzMiw3ICsxMzMzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXMKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCi0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb25TaGFyZWQ6Iik7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdl
TG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTEzNjgsMTAgKzEzNjksMTAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZToiKTsKKyAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRGaWxlOiIpOwogCiAgICAgaWYgKG1faXND
bG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZp
bGU6IHBhZ2UgaXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhM
b2FkaW5nLCAibG9hZEZpbGU6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTM4MCw3ICsxMzgxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNv
bnMKIAogICAgIFVSTCBmaWxlVVJMID0gVVJMKFVSTCgpLCBmaWxlVVJMU3RyaW5nKTsKICAgICBp
ZiAoIWZpbGVVUkwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWwiKTsKKyAgICAgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9j
YWwiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMzkwLDcgKzEzOTEs
NyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAgICByZXNvdXJj
ZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwog
ICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJj
ZSBVUkwgaXMgbm90IGxvY2FsIik7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsIik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0MjQsNyArMTQy
NSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxF
QVNFX0xPRyhMb2FkaW5nLCAibG9hZERhdGE6Iik7CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCiAgICAgaWYgKE1JTUVUeXBlID09ICJ0ZXh0L2h0bWwiX3MgJiYgIWlzRnVsbFdlYkJy
b3dzZXIoKSkKQEAgLTE0MzIsNyArMTQzMyw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAj
ZW5kaWYKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZCIp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0NTAsNyArMTQ1MSw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWREYXRhV2l0aE5hdmlnYXRpb24iKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0co
TG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb24iKTsKIAogICAgIEFTU0VSVCghbV9pc0Ns
b3NlZCk7CiAKQEAgLTE0NzgsNyArMTQ3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKIAog
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBzaW11bGF0ZWRSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgc2ltdWxhdGVkUmVzcG9uc2UsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
U2ltdWxhdGVkUmVxdWVzdDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGlu
ZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiIpOwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgIGlmIChzaW11bGF0ZWRSZXNwb25zZS5taW1lVHlwZSgpID09ICJ0ZXh0L2h0bWwi
X3MgJiYgIWlzRnVsbFdlYkJyb3dzZXIoKSkKQEAgLTE0ODYsNyArMTQ4Nyw3IEBAIFJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1CiAjZW5kaWYKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiBw
YWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGlu
ZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1MzIsMTMgKzE1MzMsMTMgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXUKIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRB
bHRlcm5hdGVIVE1MIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJs
b2FkQWx0ZXJuYXRlSFRNTCIpOwogCiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRo
ZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3Qg
YXR0ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9hZCBh
cyB0aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKICAgICAv
LyBoYW5kbGVkIHByb3Blcmx5LgogICAgIGlmIChtX2lzQ2xvc2VkIHx8IG1faXNMb2FkaW5nQWx0
ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMg
Y2xvc2VkIChvciBvdGhlcikiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTc1LDEwICsxNTc2LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0
bWxEYXRhLCBjb25zdCBTCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEo
QVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YToiKTsK
KyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0
YToiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKKyAg
ICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURh
dGE6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2MDIs
MTAgKzE2MDMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6
OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKIAogdm9pZCBXZWJQYWdlUHJv
eHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nLCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljazoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGlu
ZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiIpOwogCiAgICAgaWYgKG1f
aXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiIpOworICAg
ICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5r
V2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDoiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTYyMSwxMCArMTYyMiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdh
dGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAic3RvcExvYWRpbmc6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJzdG9wTG9hZGluZzoiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZp
Z2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQiKTsKKyAg
ICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTYzOCw3ICsxNjM5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BM
b2FkaW5nKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQo
T3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWxvYWQ6Iik7CisgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJyZWxvYWQ6Iik7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTcxOSwxMSArMTcyMCwxMSBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0o
V2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdl
UHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwg
RnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06Iik7CisgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiIpOwogICAgIExPRyhMb2Fk
aW5nLCAiV2ViUGFnZVByb3h5ICVwIGdvVG9CYWNrRm9yd2FyZEl0ZW0gdG8gaXRlbSBVUkwgJXMi
LCB0aGlzLCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3
YXJkSXRlbTogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlIGlzIGNsb3NlZCIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE3NDksMTAgKzE3NTAsMTAgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5
UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhM
b2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiIpOwogCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQiKTsKKyAgICAgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRp
b246IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIw
MjEsNyArMjAyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0eVN0YXRlKE9w
dGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkCiAgICAgICAgIGlmIChpc05v
d1Zpc2libGUpCiAgICAgICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSk7CiAgICAgICAgIGlmICh3YXNWaXNpYmxlICE9IGlzTm93VmlzaWJsZSkKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoVmlld1N0YXRlLCAidXBkYXRlQWN0aXZp
dHlTdGF0ZTogdmlldyB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZWQgJWQgLT4gJWQiLCB3YXNWaXNp
YmxlLCBpc05vd1Zpc2libGUpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KFZpZXdTdGF0ZSwgInVwZGF0ZUFjdGl2aXR5U3RhdGU6IHZpZXcgdmlzaWJpbGl0eSBzdGF0ZSBj
aGFuZ2VkICVkIC0+ICVkIiwgd2FzVmlzaWJsZSwgaXNOb3dWaXNpYmxlKTsKICAgICB9CiAgICAg
aWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkICYm
IHBhZ2VDbGllbnQoKS5pc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCgpKQogICAgICAgICBtX2FjdGl2
aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpOwpAQCAtMjE4
MSwxMSArMjE4Miw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVD
aGFuZ2UoKQogI2VuZGlmCiB9CiAKLWJvb2wgV2ViUGFnZVByb3h5Ojppc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSBjb25zdAotewotICAgIHJldHVybiBzZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3Rh
dGUoKQogewogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9IG1fcHJlZmVyZW5j
ZXMtPnBhZ2VWaXNpYmlsaXR5QmFzZWRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCk7CkBAIC0y
MjA0LDIzICsyMjAwLDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRl
KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChpc1ZpZXdWaXNpYmxlKCkpIHsK
ICAgICAgICAgaWYgKCFtX2lzVmlzaWJsZUFjdGl2aXR5IHx8ICFtX2lzVmlzaWJsZUFjdGl2aXR5
LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEg
Zm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyB2aXNpYmxlIik7CisgICAg
ICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRh
dGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRp
b24gYmVjYXVzZSB0aGUgdmlldyBpcyB2aXNpYmxlIik7CiAgICAgICAgICAgICBtX2lzVmlzaWJs
ZUFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlZp
ZXcgaXMgdmlzaWJsZSJfcykubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKG1faXNWaXNpYmxlQWN0aXZpdHkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBp
cyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIG5v
IGxvbmdlciB2aXNpYmxlIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxlYXNp
bmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIG5vIGxvbmdlciB2
aXNpYmxlIik7CiAgICAgICAgIG1faXNWaXNpYmxlQWN0aXZpdHkgPSBudWxscHRyOwogICAgIH0K
IAogICAgIGJvb2wgaXNBdWRpYmxlID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5
U3RhdGU6OklzQXVkaWJsZSk7CiAgICAgaWYgKGlzQXVkaWJsZSkgewogICAgICAgICBpZiAoIW1f
aXNBdWRpYmxlQWN0aXZpdHkgfHwgIW1faXNBdWRpYmxlQWN0aXZpdHktPmlzVmFsaWQoKSkgewot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVw
ZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2Vy
dGlvbiBiZWNhdXNlIHdlIGFyZSBwbGF5aW5nIGF1ZGlvIik7CisgICAgICAgICAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRl
OiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBh
cmUgcGxheWluZyBhdWRpbyIpOwogICAgICAgICAgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIHBsYXlpbmcg
YXVkaW8iX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICB9CiAgICAgICAgIG1fYXVkaWJs
ZUFjdGl2aXR5VGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSBpZiAobV9pc0F1ZGlibGVBY3Rpdml0
eSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAi
dXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIHdpbGwgcmVsZWFzZSBhIGZvcmVncm91bmQg
YXNzZXJ0aW9uIGluICVnIHNlY29uZHMgYmVjYXVzZSB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcg
YXVkaW8iLCBhdWRpYmxlQWN0aXZpdHlDbGVhckRlbGF5LnNlY29uZHMoKSk7CisgICAgICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxl
U3RhdGU6IFVJUHJvY2VzcyB3aWxsIHJlbGVhc2UgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBpbiAl
ZyBzZWNvbmRzIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5nIGF1ZGlvIiwgYXVkaWJs
ZUFjdGl2aXR5Q2xlYXJEZWxheS5zZWNvbmRzKCkpOwogICAgICAgICBpZiAoIW1fYXVkaWJsZUFj
dGl2aXR5VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgICAgIG1fYXVkaWJsZUFjdGl2aXR5VGlt
ZXIuc3RhcnRPbmVTaG90KGF1ZGlibGVBY3Rpdml0eUNsZWFyRGVsYXkpOwogICAgIH0KQEAgLTIy
MjgsMTEgKzIyMjQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUo
KQogICAgIGJvb2wgaXNDYXB0dXJpbmdNZWRpYSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhB
Y3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhKTsKICAgICBpZiAoaXNDYXB0dXJpbmdNZWRp
YSkgewogICAgICAgICBpZiAoIW1faXNDYXB0dXJpbmdBY3Rpdml0eSB8fCAhbV9pc0NhcHR1cmlu
Z0FjdGl2aXR5LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMg
dGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBtZWRpYSBjYXB0dXJlIGlzIGFj
dGl2ZSIpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBhY3RpdmUiKTsKICAgICAg
ICAgICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIGNhcHR1cmluZyBtZWRpYSJfcykubW92ZVRvVW5pcXVl
UHRyKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1faXNDYXB0dXJpbmdBY3Rpdml0eSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBk
YXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNz
ZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBubyBsb25nZXIgYWN0aXZlIik7CisgICAg
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRo
cm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgbm8gbG9uZ2VyIGFjdGl2ZSIpOwogICAgICAgICBt
X2lzQ2FwdHVyaW5nQWN0aXZpdHkgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgpAQCAtMjI0MSw3
ICsyMjM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxlQWN0
aXZpdHkoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24s
ICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3Vu
ZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcgYXVkaW8iKTsKKyAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJv
dHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcgYXVkaW8iKTsKICAgICBtX2lzQXVkaWJs
ZUFjdGl2aXR5ID0gbnVsbHB0cjsKIH0KICNlbmRpZgpAQCAtMjUyNCw3ICsyNTIwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZVJlbmRlcmluZ0FmdGVyQ29tbWl0dGluZ0xvYWQoKQog
dm9pZCBXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtEdWVUb0xhY2tPZlJlbmRlcmlu
Z1VwZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1faGFzVXBkYXRlZFJlbmRlcmluZ0FmdGVyRGlkQ29t
bWl0TG9hZCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAic3RvcE1ha2lu
Z1ZpZXdCbGFua0R1ZVRvTGFja09mUmVuZGVyaW5nVXBkYXRlOiIpOworICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAic3RvcE1ha2luZ1ZpZXdCbGFua0R1ZVRvTGFja09mUmVu
ZGVyaW5nVXBkYXRlOiIpOwogICAgIHBhZ2VDbGllbnQoKS5tYWtlVmlld0JsYW5rKGZhbHNlKTsK
IH0KIApAQCAtMjU0MCw3ICsyNTM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VWaWV3Qmxh
bmtJZlVucGFpbnRlZFNpbmNlTGFzdExvYWRDb21taXQoKQogICAgICAgICBzdGF0aWMgYm9vbCBz
aG91bGRNYWtlVmlld0JsYW5rID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICBpZiAoc2hvdWxkTWFr
ZVZpZXdCbGFuaykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
LCAibWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdDogTWFraW5nIHRo
ZSB2aWV3IGJsYW5rIGJlY2F1c2Ugb2YgYSBKUyBwcm9tcHQgYmVmb3JlIHRoZSBmaXJzdCBwYWlu
dCBmb3IgaXRzIHBhZ2UiKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQ
cm9jZXNzLCAibWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdDogTWFr
aW5nIHRoZSB2aWV3IGJsYW5rIGJlY2F1c2Ugb2YgYSBKUyBwcm9tcHQgYmVmb3JlIHRoZSBmaXJz
dCBwYWludCBmb3IgaXRzIHBhZ2UiKTsKICAgICAgICAgICAgIHBhZ2VDbGllbnQoKS5tYWtlVmll
d0JsYW5rKHRydWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzM0Nyw3ICszMzQzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9u
QWN0aW9uLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNp
ZXM+JiYgcG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVjZWl2ZWROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb246IGZyYW1lSUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUsIHBvbGljeUFjdGlv
bj0ldSIsIGZyYW1lLmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1LCBwb2xpY3lBY3Rpb249JXUi
LCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbik7CiAKICAgICBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5jb3B5
UmVmKCk7CiAgICAgaWYgKHBvbGljaWVzKSB7CkBAIC0zNDA5LDEwICszNDA1LDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIGJvb2wgc2hvdWxkUHJvY2Vzc1N3YXAgPSBwcm9j
ZXNzRm9yTmF2aWdhdGlvbi5wdHIoKSAhPSBzb3VyY2VQcm9jZXNzLnB0cigpOwogICAgICAgICBp
ZiAoc2hvdWxkUHJvY2Vzc1N3YXApIHsKICAgICAgICAgICAgIHBvbGljeUFjdGlvbiA9IFBvbGlj
eUFjdGlvbjo6U3RvcEFsbExvYWRzOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLCBzd2Fw
cGluZyBwcm9jZXNzICVpIHdpdGggcHJvY2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29uPSUi
IFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCBwcm9jZXNzRm9yTmF2aWdh
dGlvbi0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24sIHN3YXBwaW5nIHByb2Nlc3MgJWkgd2l0aCBwcm9jZXNz
ICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19TVFJJTkcsIHByb2Nlc3NJ
ZGVudGlmaWVyKCksIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLT5wcm9jZXNzSWRlbnRpZmllcigpLCBy
ZWFzb24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAi
KFByb2Nlc3NTd2FwcGluZykgU3dpdGNoaW5nIGZyb20gcHJvY2VzcyAlaSB0byBuZXcgcHJvY2Vz
cyAoJWkpIGZvciBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcyciLCBwcm9jZXNzSWRlbnRpZmll
cigpLCBwcm9jZXNzRm9yTmF2aWdhdGlvbi0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24tPmxvZ2dpbmdTdHJpbmcoKSk7CiAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBrZWVwIHVzaW5nIHByb2Nlc3Mg
JWkgZm9yIG5hdmlnYXRpb24sIHJlYXNvbj0lIiBQVUJMSUNfTE9HX1NUUklORywgcHJvY2Vzc0lk
ZW50aWZpZXIoKSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246IGtlZXAgdXNpbmcgcHJvY2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29uPSUi
IFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgpLmRh
dGEoKSk7CiAKICAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBvcHRp
b25hbEhhbmRsZTsKICAgICAgICAgaWYgKHNob3VsZFByb2Nlc3NTd2FwKSB7CkBAIC0zNDkxLDcg
KzM0ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xp
Y3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29t
bWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRM
UywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNl
Y3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29yZTo6TW91c2VFdmVu
dFBvbGljeSBtb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRD0laSIsIG1fcHJvdmlzaW9u
YWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRD0laSIs
IG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICAg
ICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3Mg
PSBtX21haW5GcmFtZSA/IG1ha2VPcHRpb25hbChtX21haW5GcmFtZS0+ZnJhbWVJRCgpKSA6IFdU
Rjo6bnVsbG9wdDsKIApAQCAtMzUyOSwxMiArMzUyNSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9E
YXRhJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBh
Z2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIG5ld1Byb2Nl
c3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcykKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25J
bk5ld1Byb2Nlc3M6IG5ld1Byb2Nlc3NQSUQ9JWksIGhhc1N1c3BlbmRlZFBhZ2U9JWkiLCBuZXdQ
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2UpOworICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9j
ZXNzOiBuZXdQcm9jZXNzUElEPSVpLCBoYXNTdXNwZW5kZWRQYWdlPSVpIiwgbmV3UHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlKTsKICAgICBMT0coTG9hZGluZywg
IkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3IHdlYiBwcm9j
ZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nU3RyaW5n
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFuZXdQcm9jZXNzLT5pc0luUHJvY2Vzc0NhY2hlKCkp
OwogCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
OiBUaGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyBwcm92aXNpb25hbCBsb2FkLCBjYW5jZWxsaW5n
IGl0IChwcm92aXNvbmFsTmF2aWdhdGlvbklEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1KSIsIG1f
cHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQo
KSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IFRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5n
IHByb3Zpc2lvbmFsIGxvYWQsIGNhbmNlbGxpbmcgaXQgKHByb3Zpc29uYWxOYXZpZ2F0aW9uSUQ9
JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUpIiwgbV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpKTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9u
YWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSAhPSBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpKQogICAg
ICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNhbmNlbCgpOwogICAgICAgICBtX3Byb3Zpc2lv
bmFsUGFnZSA9IG51bGxwdHI7CkBAIC0zNjY3LDcgKzM2NjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIAogdm9pZCBXZWJQYWdl
UHJveHk6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdXNwZW5k
OiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAic3VzcGVuZDoiKTsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1N1c3BlbmRlZCkKICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIApAQCAtMzY3Nyw3ICszNjczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3VtZToiKTsKKyAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgInJlc3VtZToiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSB8fCAhbV9pc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKQEAgLTM3MjMsNyArMzcxOSw3IEBAIFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJv
eHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0
CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNz
aW9uU3RhdGUoU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0ZSkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0
ZToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInJlc3RvcmVGcm9t
U2Vzc2lvblN0YXRlOiIpOwogCiAgICAgbV9zZXNzaW9uUmVzdG9yYXRpb25SZW5kZXJUcmVlU2l6
ZSA9IDA7CiAgICAgbV9oaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCA9IGZhbHNlOwpAQCAtNDU0
MSw3ICs0NTM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgogICAgICAgICBuYXZpZ2F0aW9u
ID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCiAgICAgTE9H
KExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZp
Z2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBw
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRp
b25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9
JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRD0l
IiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0g
bV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFy
UGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24pOwpAQCAtNDU3OCw3ICs0NTc0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEV4cGxpY2l0T3BlbkZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBVUkwmJiB1cmwsIFMKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUp
OwogCiAgICAgaWYgKCFjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRPclByZXZpb3VzV2ViUHJv
Y2VzcyhtX3Byb2Nlc3MsIHVybCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChQcm9jZXNzLCAiSWdub3JpbmcgV2ViUGFnZVByb3h5OjpEaWRFeHBsaWNpdE9wZW5Gb3JG
cmFtZSgpIElQQyBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgYmVjYXVzZSB0aGUgZmlsZSBV
UkwgaXMgb3V0c2lkZSB0aGUgc2FuZGJveCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0dfRVJST1IoUHJvY2VzcywgIklnbm9yaW5nIFdlYlBhZ2VQcm94eTo6RGlkRXhwbGljaXRP
cGVuRm9yRnJhbWUoKSBJUEMgZnJvbSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGJlY2F1c2UgdGhl
IGZpbGUgVVJMIGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNDYwMyw3ICs0NTk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnQKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1
cmwgJXMiLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCwgcmVxdWVzdC51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7
CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBA
IC00NjMyLDcgKzQ2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPAogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2Nr
QmFja0ZvcndhcmRMaXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
IndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZy
YW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcs
ICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBm
cmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
cGFnZUNsaWVudCgpKTsKIApAQCAtNDY0NSw3ICs0NjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY28KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogZnJhbWVJRD0lIiBQ
Ukl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEPSUiIFBS
SXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ2OTMsNyArNDY4OSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBw
cm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxv
YWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3
ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zp
c2lvbmFsVVJMICVzIiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZTogZnJhbWVJRD0lIiBQUkl1NjQgIiwgZG9tYWluPSVzLCBjb2RlPSVkIiwgZnJhbWVJRC50
b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUo
KSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGRvbWFpbj0lcywg
Y29kZT0lZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEo
KSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDc2NCw3ICs0NzYwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYKIHsKICAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0LCBt
X2lkZW50aWZpZXIudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBMT0coQmFja0Zvcndh
cmQsICIoQmFjay9Gb3J3YXJkKSBBZnRlciBsb2FkIGNvbW1pdCwgYmFjay9mb3J3YXJkIGxpc3Qg
aXMgbm93OiVzIiwgbV9iYWNrRm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJpbmcoKSk7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBmcmFt
ZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0coTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1
NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00ODg4LDcgKzQ4ODQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFt
ZUluZm9EYXRhJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwg
ZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGlu
ZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJh
bWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBh
Z2VDbGllbnQoKSk7CiAKQEAgLTQ5MTYsNyArNDkxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZy
YW1lIC0gV2ViUGFnZVByb3h5ICVwIHdpdGggbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiIGRpZEZp
bmlzaExvYWQiLCB0aGlzLCBuYXZpZ2F0aW9uSUQpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZy
YW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcs
ICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUlu
dDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNDk2Nyw3ICs0OTYzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExv
YWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAiLCBkb21h
aW49JXMsIGNvZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0dfRVJST1IoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0
ICIsIGRvbWFpbj0lcywgY29kZT0lZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWlu
KCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFBy
b3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTAxMiw3ICs1MDA4LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBV
UkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IGZy
YW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiBm
cmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQ
cm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUxOTgsNyArNTE5NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNl
bmRlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1Iiwg
ZnJhbWUuZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CisgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1IiwgZnJhbWUuZnJhbWVJRCgpLnRvVUlu
dDY0KCksIG5hdmlnYXRpb25JRCk7CiAKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVu
dCB0YXJnZXQgVVJMICVzIiwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTUyMTQs
NyArNTIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgIG1fcGFnZUxvYWRT
dGF0ZS5jbGVhclBlbmRpbmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uKTsKIAogICAgIGlmICghY2hl
Y2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgcmVx
dWVzdC51cmwoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9j
ZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNl
IGl0IGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HX0VSUk9SKFByb2Nlc3MsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWlu
IHJlc291cmNlIGJlY2F1c2UgaXQgaXMgb3V0c2lkZSB0aGUgc2FuZGJveCIpOwogICAgICAgICBz
ZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01Mjgw
LDcgKzUyNzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS5kaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9j
a05hdmlnYXRpb24ocmVxdWVzdCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJj
ZSBiZWNhdXNlIGl0IHdhcyBoYW5kbGVkIGJ5IGNvbnRlbnQgZmlsdGVyIik7CisgICAgICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0
byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IHdhcyBoYW5kbGVkIGJ5IGNvbnRl
bnQgZmlsdGVyIik7CiAgICAgICAgIHJldHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGlj
eUFjdGlvbjo6SWdub3JlLCBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9u
SUQpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikp
OwogICAgIH0KICNlbmRpZgpAQCAtNTI5NSw3ICs1MjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXMKICNlbmRpZgogCiAgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUuc2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdh
dGlvbiwgbmF2aWdhdGlvbkFjdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAo
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVz
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kRG9tYWluKSBtdXRh
YmxlIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogbGlzdGVuZXIgY2FsbGVkOiBmcmFtZUlEPSVsbHUsIG5h
dmlnYXRpb25JRD0lbGx1LCBwb2xpY3lBY3Rpb249JXUsIHNhZmVCcm93c2luZ1dhcm5pbmc9JWQs
IGlzQXBwQm91bmREb21haW49JWQiLCBmcmFtZS0+ZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmln
YXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lB
Y3Rpb24sICEhc2FmZUJyb3dzaW5nV2FybmluZywgISFpc0FwcEJvdW5kRG9tYWluKTsKKyAgICAg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOiBsaXN0ZW5lciBjYWxsZWQ6IGZyYW1lSUQ9JWxsdSwgbmF2aWdhdGlvbklE
PSVsbHUsIHBvbGljeUFjdGlvbj0ldSwgc2FmZUJyb3dzaW5nV2FybmluZz0lZCwgaXNBcHBCb3Vu
ZERvbWFpbj0lZCIsIGZyYW1lLT5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbiwgISFz
YWZlQnJvd3NpbmdXYXJuaW5nLCAhIWlzQXBwQm91bmREb21haW4pOwogCiAgICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgZnJhbWUsIHNlbmRlciA9
IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVz
ID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewpAQCAtNTMxNCw3
ICs1MzEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgICAgIGlmICghc2V0
SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoZnJhbWUtPmlz
TWFpbkZyYW1lKCksIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIGlzQXBwQm91
bmREb21haW4pKSB7CiAgICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IGVycm9yRm9yVW5wZXJt
aXR0ZWRBcHBCb3VuZERvbWFpbk5hdmlnYXRpb24obmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3Qo
KS51cmwoKSk7CiAgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlzLCBGcmFtZUluZm9EYXRhIHsgZnJhbWVJ
bmZvIH0sIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCB1c2VyRGF0YU9iamVjdCk7Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiSWdub3Jpbmcg
cmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIGF0dGVtcHRp
bmcgdG8gbmF2aWdhdGUgYXdheSBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4gb3IgbmF2aWdhdGUg
YWZ0ZXIgdXNpbmcgcmVzdHJpY3RlZCBBUElzIik7CisgICAgICAgICAgICAgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQg
dGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgYXR0ZW1wdGluZyB0byBuYXZpZ2F0ZSBh
d2F5IGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiBvciBuYXZpZ2F0ZSBhZnRlciB1c2luZyByZXN0
cmljdGVkIEFQSXMiKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lB
Y3Rpb246Oklnbm9yZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpA
QCAtNTU5MCw3ICs1NTg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUs
IEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkOiIpOworICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGFTaGFyZWQ6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdl
Q2xpZW50KCkpOwogCkBAIC01NjEwLDcgKzU2MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25z
dAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIEZyYW1lSWRlbnRpZmllciBm
cmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZv
cm1DbGllbnRSZWRpcmVjdFNoYXJlZDogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50
NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRQZXJmb3Jt
Q2xpZW50UmVkaXJlY3RTaGFyZWQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0
KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtNTYzNyw3ICs1NjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2
ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtU2VydmVyUmVk
aXJlY3Q6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRQZXJm
b3JtU2VydmVyUmVkaXJlY3Q6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rv
cihwYWdlQ2xpZW50KCkpOwogCkBAIC01NzY3LDcgKzU3NjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xvc2VQYWdlKCkKICAgICBpZiAoaXNDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiY2xvc2VQYWdlOiIpOworICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiY2xvc2VQYWdlOiIpOwogICAgIHBhZ2VD
bGllbnQoKS5jbGVhckFsbEVkaXRDb21tYW5kcygpOwogICAgIG1fdWlDbGllbnQtPmNsb3NlKHRo
aXMpOwogfQpAQCAtNzQ4OCw3ICs3NDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzZWRG
cmFtZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiYgZnJhbWVJRCkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogewotICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVV
bnJlc3BvbnNpdmU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nl
c3MsICJwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiIpOwogCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC03NTAwLDcgKzc0OTYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6Iik7Cisg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZToiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNzU0MSw3ICs3NTM3LDcgQEAgVVJMIFdlYlBhZ2VQcm94eTo6Y3VycmVudFJlc291
cmNlRGlyZWN0b3J5VVJMKCkgY29uc3QKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsK
ICAgICBpZiAocmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3
YXApCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nl
c3NEaWRUZXJtaW5hdGU6IChwaWQgJWQpLCByZWFzb24gJWQiLCBwcm9jZXNzSWRlbnRpZmllcigp
LCByZWFzb24pOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vz
cywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IChwaWQgJWQpLCByZWFzb24gJWQiLCBwcm9jZXNzSWRl
bnRpZmllcigpLCByZWFzb24pOwogCiAgICAgQVNTRVJUKG1faGFzUnVubmluZ1Byb2Nlc3MpOwog
CkBAIC03NTk1LDcgKzc1OTEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWxvYWRBZnRlclByb2Nl
c3NUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbiByZWFzb24pCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlOiByZWFzb249JWQiLCByZWFzb24pOwor
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiZGlzcGF0Y2hQcm9j
ZXNzRGlkVGVybWluYXRlOiByZWFzb249JWQiLCByZWFzb24pOwogCiAgICAgYm9vbCBoYW5kbGVk
QnlDbGllbnQgPSBmYWxzZTsKICAgICBpZiAobV9sb2FkZXJDbGllbnQpCkBAIC03NjEyLDExICs3
NjA4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5h
dGlvbigpCiAgICAgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lci5zdG9wKCk7CiAKICAgICBp
ZiAoKyttX3JlY2VudENyYXNoQ291bnQgPiBtYXhpbXVtV2ViUHJvY2Vzc1JlbGF1bmNoQXR0ZW1w
dHMpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAidHJ5
UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb246IHByb2Nlc3MgY3Jhc2hlZCBhbmQgdGhlIGNs
aWVudCBkaWQgbm90IGhhbmRsZSBpdCwgbm90IHJlbG9hZGluZyB0aGUgcGFnZSBiZWNhdXNlIHdl
IHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGF0dGVtcHRzIik7CisgICAgICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAidHJ5UmVsb2FkQWZ0ZXJQcm9jZXNz
VGVybWluYXRpb246IHByb2Nlc3MgY3Jhc2hlZCBhbmQgdGhlIGNsaWVudCBkaWQgbm90IGhhbmRs
ZSBpdCwgbm90IHJlbG9hZGluZyB0aGUgcGFnZSBiZWNhdXNlIHdlIHJlYWNoZWQgdGhlIG1heGlt
dW0gbnVtYmVyIG9mIGF0dGVtcHRzIik7CiAgICAgICAgIG1fcmVjZW50Q3Jhc2hDb3VudCA9IDA7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzLCAidHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb246IHByb2Nlc3MgY3Jhc2hlZCBh
bmQgdGhlIGNsaWVudCBkaWQgbm90IGhhbmRsZSBpdCwgcmVsb2FkaW5nIHRoZSBwYWdlIik7Cisg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJ0cnlSZWxvYWRBZnRlclByb2Nl
c3NUZXJtaW5hdGlvbjogcHJvY2VzcyBjcmFzaGVkIGFuZCB0aGUgY2xpZW50IGRpZCBub3QgaGFu
ZGxlIGl0LCByZWxvYWRpbmcgdGhlIHBhZ2UiKTsKICAgICByZWxvYWQoUmVsb2FkT3B0aW9uOjpF
eHBpcmVkT25seSk7CiB9CiAKQEAgLTgyNjMsMTYgKzgyNTksMTYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3Qg
Y3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJl
bnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNwYWNlIGZvciBmcmFtZSAlIiBQ
Ukl1NjQgIiwgY3VycmVudCBxdW90YSAlIiBQUkl1NjQgIiBjdXJyZW50IHVzYWdlICUiIFBSSXU2
NCAiIGV4cGVjdGVkIHVzYWdlICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpLCBjdXJyZW50
UXVvdGEsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlKTsKKyAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coU3RvcmFnZSwgInJlcXVlc3RTdG9yYWdlU3BhY2UgZm9yIGZyYW1l
ICUiIFBSSXU2NCAiLCBjdXJyZW50IHF1b3RhICUiIFBSSXU2NCAiIGN1cnJlbnQgdXNhZ2UgJSIg
UFJJdTY0ICIgZXhwZWN0ZWQgdXNhZ2UgJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCksIGN1
cnJlbnRRdW90YSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UpOwogCiAgICAg
U3RvcmFnZVJlcXVlc3RzOjpzaW5nbGV0b24oKS5wcm9jZXNzT3JBcHBlbmQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGFnZVVSTCA9IGN1cnJlbnRVUkwoKSwgZnJhbWVJ
RCwgb3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lLCBkaXNwbGF5TmFtZSwgY3VycmVudFF1
b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVz
YWdlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewogICAgICAgICB0aGlzLT5tYWtlU3RvcmFnZVNwYWNlUmVxdWVzdChmcmFtZUlELCBv
cmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsIGRpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGEs
IGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2Us
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwg
cGFnZVVSTCA9IFdURk1vdmUocGFnZVVSTCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGN1cnJlbnRRdW90YV0oYXV0byBxdW90YSkgbXV0YWJsZSB7CiAK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoU3RvcmFnZSwgInJlcXVlc3RTdG9y
YWdlU3BhY2UgcmVzcG9uc2UgZm9yIGZyYW1lICUiIFBSSXU2NCAiLCBxdW90YSAlIiBQUkl1NjQs
IGZyYW1lSUQudG9VSW50NjQoKSwgcXVvdGEpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNwYWNlIHJlc3BvbnNlIGZvciBmcmFt
ZSAlIiBQUkl1NjQgIiwgcXVvdGEgJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCksIHF1b3Rh
KTsKICAgICAgICAgICAgIFVOVVNFRF9WQVJJQUJMRShmcmFtZUlEKTsKIAogICAgICAgICAgICAg
aWYgKHF1b3RhIDw9IGN1cnJlbnRRdW90YSAmJiB0aGlzLT5jdXJyZW50VVJMKCkgPT0gcGFnZVVS
TCkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoU3RvcmFnZSwgInN0
b3JhZ2Ugc3BhY2UgaW5jcmVhc2UgZGVuaWVkIik7CisgICAgICAgICAgICAgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKFN0b3JhZ2UsICJzdG9yYWdlIHNwYWNlIGluY3JlYXNlIGRlbmllZCIp
OwogICAgICAgICAgICAgICAgIG1faXNRdW90YUluY3JlYXNlRGVuaWVkID0gIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihxdW90YSk7CkBAIC05MzYx
LDcgKzkzNTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlUmVwb3J0ZWRNZWRpYUNhcHR1
cmVTdGF0ZSgpCiAgICAgaWYgKCFoYXZlUmVwb3J0ZWRDYXB0dXJlICYmIHdpbGxSZXBvcnRDYXB0
dXJlKQogICAgICAgICBtX3VwZGF0ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGVUaW1lci5zdGFy
dE9uZVNob3QobV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheSk7CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFdlYlJUQywgInVwZGF0ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGU6IGZy
b20gJWQgdG8gJWQiLCBtX3JlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUudG9SYXcoKSwgYWN0aXZl
Q2FwdHVyZVN0YXRlLnRvUmF3KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhXZWJS
VEMsICJ1cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlOiBmcm9tICVkIHRvICVkIiwgbV9y
ZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlLnRvUmF3KCksIGFjdGl2ZUNhcHR1cmVTdGF0ZS50b1Jh
dygpKTsKIAogICAgIGJvb2wgbWljcm9waG9uZUNhcHR1cmVDaGFuZ2VkID0gKG1fcmVwb3J0ZWRN
ZWRpYUNhcHR1cmVTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZU1hc2spICE9IChh
Y3RpdmVDYXB0dXJlU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVNYXNrKTsKICAg
ICBib29sIGNhbWVyYUNhcHR1cmVDaGFuZ2VkID0gKG1fcmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0
ZSAmIE1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZU1hc2spICE9IChhY3RpdmVDYXB0dXJlU3Rh
dGUgJiBNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVNYXNrKTsKQEAgLTk2MDAsMTMgKzk1OTYs
MTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2Vk
KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dEkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEV4
Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRFeGNlZWRJbmFjdGl2ZU1l
bW9yeUxpbWl0V2hpbGVBY3RpdmUiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJS
T1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkRXhjZWVkSW5hY3RpdmVNZW1vcnlMaW1pdFdoaWxl
QWN0aXZlIik7CiAgICAgbV91aUNsaWVudC0+ZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGlt
aXRXaGlsZUluRm9yZWdyb3VuZCgqdGhpcywga1dLUmVzb3VyY2VMaW1pdE1lbW9yeSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXRXaGlsZUluRm9y
ZWdyb3VuZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQZXJmb3JtYW5j
ZUxvZ2dpbmcsICJkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXRXaGlsZUluRm9yZWdyb3VuZCIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcs
ICJkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXRXaGlsZUluRm9yZWdyb3VuZCIpOwogICAgIG1f
dWlDbGllbnQtPmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91
bmQoKnRoaXMsIGtXS1Jlc291cmNlTGltaXRDUFUpOwogfQogCkBAIC0xMDQxNCw3ICsxMDQxMCw4
IEBAIExvZ2dlciYgV2ViUGFnZVByb3h5Ojpsb2dnZXIoKQogewogICAgIGlmICghbV9sb2dnZXIp
IHsKICAgICAgICAgbV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKLSAgICAgICAgbV9s
b2dnZXItPnNldEVuYWJsZWQodGhpcywgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpOworICAg
ICAgICAvLyBGSVhNRTogRG9lcyB0aGlzIHJlYWxseSBuZWVkIHRvIGJlIGRpc2FibGVkIGluIGVw
aGVtZXJhbCBzZXNzaW9ucz8KKyAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgIXNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwogICAgIH0KIAogICAgIHJldHVybiAqbV9sb2dnZXI7
CkBAIC0xMDY3Myw3ICsxMDY3MCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCi0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAorI3VuZGVm
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRworI3VuZGVmIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
R19FUlJPUgogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTgogI3VuZGVmIE1FU1NBR0Vf
Q0hFQ0tfVVJMCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA2NzZjN2MzMDBjNDQ4NjBmYzgyMjM2YmM2NGFmNmY1MDRiODM1YWU1
Li5hMWMxM2Q5ZjAwYTk5OGYyNThlZmNhZGRmZDFhZjlkMmZiNDUzZGUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU4OCw3ICsxNTg4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAgICAg
dm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNr
VGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29u
dGV4dElkZW50aWZpZXIpIGZpbmFsOwotICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOyB9CisgICAg
Ym9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc2Vzc2lv
bklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7IH0KICAgICBib29sIHVzZWlUdW5lc0FW
T3V0cHV0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIFBsYXRmb3JtVmlldyogcGxhdGZvcm1W
aWV3KCkgY29uc3QgZmluYWw7CiAKQEAgLTE2MjIsOCArMTYyMiw2IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzTmV2ZXJSaWNobHlFZGl0YWJsZUZvclRvdWNoQmFyKCkgY29uc3QgeyByZXR1cm4gbV9p
c05ldmVyUmljaGx5RWRpdGFibGVGb3JUb3VjaEJhcjsgfQogI2VuZGlmCiAKLSAgICBib29sIGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwotCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAg
ICAgdm9pZCBnYW1lcGFkQWN0aXZpdHkoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYsIFdlYkNv
cmU6OkV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpOwogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="451192"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429905</attachid>
            <date>2021-05-27 11:39:40 -0700</date>
            <delta_ts>2021-05-27 12:00:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226342-20210527113939.patch</filename>
            <type>text/plain</type>
            <size>97118</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliNDk4OGJlYjYyZmU4MjE2
NmIwMDU2ZDk5N2E1YjQ2Yjk0M2VkYWEuLjJjZjA1NWViZGU2NTVlOGMyMzY5MTcwOGRkYmZhNjA2
NGFjNGQ1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA1LTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIFdlYlBhZ2VQcm94eSdz
IHJlbGVhc2UgbG9nZ2luZyBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBXZWJQYWdlUHJveHkncyByZWxl
YXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zLiBPdXIgcmVsZWFzZSBsb2dnaW5nIGRv
ZXNuJ3QKKyAgICAgICAgY29udGFpbiBhbnl0aGluZyBzZW5zaXRpdmUgYW5kIG5vdCBoYXZpbmcg
dGhpcyBsb2dnaW5nIG1ha2VzIGl0IGhhcmQgdG8gZGVidWcgaXNzdWVzIGluCisgICAgICAgIGFw
cHMgdXNpbmcgZXBoZW1lcmFsIHNlc3Npb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhp
bnRzKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVT
dGFydEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgpOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6cHJlc2VudFZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnRyeUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVk
T3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxlQWN0aXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtE
dWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RTdG9yYWdlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZv
cmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvZ2dlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDIxLTA1LTI3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRk
IHZhbGlkYXRpb24gd2hlbiByZWFkaW5nIERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyOjp3
YWl0aW5nU3RhdHVzIGluIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDhjYzMzOTc2YzMzNDY1
MzM3ZDU2MDAwMjA1YzNmNTNlMTYyODYxNDkuLjA0ZGNkYzg4YTIxZmZmOGEzOGYxNjEzNzBhNDAy
NDIyZWViM2MxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCkBAIC03OCw3ICs3OCw3IEBAIC0gKHZvaWQpX2FjdGlvbjooaWQpc2VuZGVy
IFwKICAgICAgICAgW19jb250ZW50VmlldyBfYWN0aW9uICMjIEZvcldlYlZpZXc6c2VuZGVyXTsg
XAogfQogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoLi4uKSBSRUxFQVNFX0xPR19J
RihfcGFnZSAmJiBfcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFZpZXdTdGF0ZSwg
X19WQV9BUkdTX18pCisjZGVmaW5lIFdLV0VCVklFV19SRUxFQVNFX0xPRyguLi4pIFJFTEVBU0Vf
TE9HKFZpZXdTdGF0ZSwgX19WQV9BUkdTX18pCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlbGF5
QmVmb3JlTm9WaXNpYmxlQ29udGVudHNSZWN0c0xvZ2dpbmcgPSAxX3M7CiBzdGF0aWMgY29uc3Qg
U2Vjb25kcyBkZWxheUJlZm9yZU5vQ29tbWl0c0xvZ2dpbmcgPSA1X3M7CkBAIC02ODYsMTMgKzY4
NiwxMyBAQCAtICh2b2lkKV9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXQKIAogLSAodm9pZClfcHJv
Y2Vzc1dpbGxTd2FwCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZp
ZXcgX3Byb2Nlc3NXaWxsU3dhcF0iLCBzZWxmKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0co
IiVwIC1bV0tXZWJWaWV3IF9wcm9jZXNzV2lsbFN3YXBdIiwgc2VsZik7CiAgICAgW3NlbGYgX3By
b2Nlc3NXaWxsU3dhcE9yRGlkRXhpdF07CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX3Byb2Nlc3NEaWRF
eGl0XSIsIHNlbGYpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcg
X3Byb2Nlc3NEaWRFeGl0XSIsIHNlbGYpOwogCiAgICAgW3NlbGYgX3Byb2Nlc3NXaWxsU3dhcE9y
RGlkRXhpdF07CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdAog
CiAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3MKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAtW1dLV2ViVmlldyBfZGlkUmVsYXVuY2hQcm9jZXNzXSIsIHNlbGYpOworICAgIFdL
V0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcgX2RpZFJlbGF1bmNoUHJvY2Vzc10i
LCBzZWxmKTsKICAgICBfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGUgPSBOTzsKICAgICBf
dmlld1N0YWJpbGl0eVdoZW5WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVTY2hlZHVsZWQgPSB7IH07
CiAgICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKQEAgLTc4NiwxNCArNzg2LDE0IEBAIC0gKHZv
aWQpX2RpZENvbW1pdExheWVyVHJlZUR1cmluZ0FuaW1hdGVkUmVzaXplOihjb25zdCBXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyCiAtICh2b2lkKV90cmFja1RyYW5zYWN0aW9uQ29tbWl0Oihjb25z
dCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlv
bgogewogICAgIGlmIChfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFi
bGVTY3JvbGxWaWV3KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAorICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAogICAgICAgICBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpLCBf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSwgX25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1p
dExvYWRGb3JNYWluRnJhbWUsIF9maXJzdFBhaW50QWZ0ZXJDb21taXRMb2FkVHJhbnNhY3Rpb25J
RC50b1VJbnQ2NCgpLCBbX2NvbnRlbnRWaWV3IHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlXSwgW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSwgX2N1cnJlbnRs
eUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCk7CiAgICAgfQogCiAgICAgaWYg
KF90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0KSB7
CiAgICAgICAgIGF1dG8gdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPSBN
b25vdG9uaWNUaW1lOjpub3coKSAtICpfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVXaXRoUGVuZGluZ0NvbW1pdDsKICAgICAgICAgaWYgKHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdp
dGhQZW5kaW5nQ29tbWl0ID4gZGVsYXlCZWZvcmVOb0NvbW1pdHNMb2dnaW5nKQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJW
aWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZz
IGFmdGVyIHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklE
ICVsbHUiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZp
cnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9u
LnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxF
QVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXll
clRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29u
dGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklEICVsbHUiLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5k
aW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50
b1VJbnQ2NCgpKTsKICAgICAgICAgX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
V2l0aFBlbmRpbmdDb21taXQgPSBXVEY6Om51bGxvcHQ7CiAgICAgfQogfQpAQCAtODkzLDcgKzg5
Myw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlCiAgICAgfQogCiAgICAgaWYgKF9yZXNpemVB
bmltYXRpb25WaWV3KQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2Vi
VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSBkeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlIGlz
IE5vdFJlc2l6aW5nLCBidXQgc3RpbGwgaGF2ZSBhIGxpdmUgcmVzaXplQW5pbWF0aW9uVmlldyAo
dW5wYWlyZWQgYmVnaW4vZW5kQW5pbWF0ZWRSZXNpemU/KSIsIHNlbGYpOworICAgICAgICBXS1dF
QlZJRVdfUkVMRUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAt
IGR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgaXMgTm90UmVzaXppbmcsIGJ1dCBzdGlsbCBoYXZl
IGEgbGl2ZSByZXNpemVBbmltYXRpb25WaWV3ICh1bnBhaXJlZCBiZWdpbi9lbmRBbmltYXRlZFJl
c2l6ZT8pIiwgc2VsZik7CiAKICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld0ZvclRyYW5zYWN0
aW9uOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKIApAQCAtMTk3MSw3ICsxOTcxLDcgQEAgLSAodm9p
ZClfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVBZnRlclNjcm9sbEluVmlldzooVUlT
Y3JvbGxWaWV3ICopc2Nyb2wKICAgICBpZiAoX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRl
KSB7CiAgICAgICAgIGF1dG8gdGltZU5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgICAg
ICBpZiAoKHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0
ZSkgPiBkZWxheUJlZm9yZU5vVmlzaWJsZUNvbnRlbnRzUmVjdHNMb2dnaW5nKSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCItW1dLV2ViVmlldyAlcCBfc2NoZWR1bGVWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVBZnRlclNjcm9sbEluVmlld106IF9oYXNTY2hlZHVsZWRWaXNp
YmxlUmVjdFVwZGF0ZSBpcyB0cnVlIGJ1dCBoYXZlbid0IHVwZGF0ZWQgdmlzaWJsZSBjb250ZW50
IHJlY3RzIGZvciAlLjJmcyAobGFzdCB1cGRhdGUgd2FzICUuMmZzIGFnbykgLSB2YWxpZCAlZCIs
CisgICAgICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIi1bV0tXZWJWaWV3ICVwIF9zY2hl
ZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZUFmdGVyU2Nyb2xsSW5WaWV3XTogX2hhc1NjaGVk
dWxlZFZpc2libGVSZWN0VXBkYXRlIGlzIHRydWUgYnV0IGhhdmVuJ3QgdXBkYXRlZCB2aXNpYmxl
IGNvbnRlbnQgcmVjdHMgZm9yICUuMmZzIChsYXN0IHVwZGF0ZSB3YXMgJS4yZnMgYWdvKSAtIHZh
bGlkICVkIiwKICAgICAgICAgICAgICAgICBzZWxmLCAodGltZU5vdyAtIF90aW1lT2ZSZXF1ZXN0
Rm9yVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKS52YWx1ZSgpLCAodGltZU5vdyAtIF90aW1lT2ZM
YXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKS52YWx1ZSgpLCBbc2VsZiBfaXNWYWxpZF0pOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTIwNjYsNyArMjA2Niw3IEBAIC0gKHZvaWQp
X3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICAgICAgW19wYXNzd29yZFZpZXcgc2V0RnJh
bWU6c2VsZi5ib3VuZHNdOwogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9jb21wdXRl
ZENvbnRlbnRJbnNldERpZENoYW5nZV07CiAgICAgICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHNGb3JBbnlSZWFzb24gPSBZRVM7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0czpdIC0gdXNlc1N0YW5kYXJkQ29udGVudFZpZXcgaXMgTk8sIGJhaWxpbmciLCBz
ZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBXS1dFQlZJRVdf
UkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0czpdIC0gdXNlc1N0YW5kYXJkQ29udGVudFZpZXcgaXMgTk8sIGJhaWxp
bmciLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yMDc0LDEzICsyMDc0LDEzIEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2li
bGVDb250ZW50UmVjdHMKICAgICBpZiAoX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlV2l0aFBlbmRpbmdDb21taXQpIHsKICAgICAgICAgYXV0byB0aW1lU2luY2VGaXJzdFJlcXVl
c3RXaXRoUGVuZGluZ0NvbW1pdCA9IHRpbWVOb3cgLSAqX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlV2l0aFBlbmRpbmdDb21taXQ7CiAgICAgICAgIGlmICh0aW1lU2luY2VGaXJz
dFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdCA+IGRlbGF5QmVmb3JlTm9Db21taXRzTG9nZ2luZykK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1
KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0gaGF2ZSBub3QgcmVj
ZWl2ZWQgYSBjb21taXQgJS4yZnMgYWZ0ZXIgdmlzaWJsZSBjb250ZW50IHJlY3QgdXBkYXRlOyBs
YXN0VHJhbnNhY3Rpb25JRCAlbGx1Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpLCB0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdC52YWx1ZSgpLCBfbGFz
dFRyYW5zYWN0aW9uSUQudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXS1dFQlZJRVdfUkVMRUFT
RV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0czpdIC0gaGF2ZSBub3QgcmVjZWl2ZWQgYSBjb21taXQgJS4yZnMgYWZ0ZXIgdmlz
aWJsZSBjb250ZW50IHJlY3QgdXBkYXRlOyBsYXN0VHJhbnNhY3Rpb25JRCAlbGx1Iiwgc2VsZiwg
X3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCB0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRo
UGVuZGluZ0NvbW1pdC52YWx1ZSgpLCBfbGFzdFRyYW5zYWN0aW9uSUQudG9VSW50NjQoKSk7CiAg
ICAgfQogCiAgICAgaWYgKF9pbnZva2luZ1VJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2spIHsK
ICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvclVJU2Nyb2xsVmll
d0RlbGVnYXRlQ2FsbGJhY2sgPSBZRVM7CiAgICAgICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHNGb3JBbnlSZWFzb24gPSBZRVM7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0czpdIC0gX2ludm9raW5nVUlTY3JvbGxWaWV3RGVsZWdhdGVDYWxsYmFjayBpcyBZ
RVMsIGJhaWxpbmciLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAg
ICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2Vi
VmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0gX2ludm9raW5nVUlTY3JvbGxWaWV3
RGVsZWdhdGVDYWxsYmFjayBpcyBZRVMsIGJhaWxpbmciLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmll
cigpLnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDkzLDEzICsy
MDkzLDEzIEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICAgICAgfHwg
X2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCkgewogICAgICAg
ICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uID0gWUVTOwog
ICAgICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFibGVTY3Jv
bGxWaWV3ID0gWUVTOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVBy
b3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHNj
cm9sbCB2aWV3IHN0YXRlIGlzIG5vbi1zdGFibGUsIGJhaWxpbmcgKF9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5G
cmFtZSAlZCwgc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgJWQs
IFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10gJWQsIF9jdXJyZW50bHlBZGp1c3RpbmdTY3Jv
bGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQgJWQpIiwKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0Vf
TE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHM6XSAtIHNjcm9sbCB2aWV3IHN0YXRlIGlzIG5vbi1zdGFibGUsIGJhaWxpbmcgKF9k
eW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29t
bWl0TG9hZEZvck1haW5GcmFtZSAlZCwgc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGUgJWQsIFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10gJWQsIF9jdXJyZW50
bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQgJWQpIiwKICAgICAgICAgICAg
IHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVw
ZGF0ZU1vZGUsIF9uZWVkc1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRMb2FkRm9yTWFpbkZyYW1l
LCBbX2NvbnRlbnRWaWV3IHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlXSwgW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSwgX2N1cnJlbnRseUFkanVzdGluZ1Nj
cm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvckFueVJlYXNvbikKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tX
ZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0gLSBwZXJmb3JtaW5nIGZpcnN0IHZp
c2libGUgY29udGVudCByZWN0IHVwZGF0ZSBhZnRlciBkZWZlcnJpbmcgdXBkYXRlcyIsIHNlbGYs
IF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIFdLV0VCVklFV19SRUxF
QVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzOl0gLSBwZXJmb3JtaW5nIGZpcnN0IHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZSBhZnRlciBkZWZlcnJpbmcgdXBkYXRlcyIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAKICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9y
VUlTY3JvbGxWaWV3RGVsZWdhdGVDYWxsYmFjayA9IE5POwogICAgIF9kaWREZWZlclVwZGF0ZVZp
c2libGVDb250ZW50UmVjdHNGb3JVbnN0YWJsZVNjcm9sbFZpZXcgPSBOTzsKQEAgLTIxNTMsNyAr
MjE1Myw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICB9CiAKICAg
ICBpZiAoKHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0
ZSkgPiBkZWxheUJlZm9yZU5vVmlzaWJsZUNvbnRlbnRzUmVjdHNMb2dnaW5nKQotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRl
bnRSZWN0czpdIGZpbmFsbHkgcmFuICUuMmZzIGFmdGVyIGJlaW5nIHNjaGVkdWxlZCIsIHNlbGYs
ICh0aW1lTm93IC0gX3RpbWVPZlJlcXVlc3RGb3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLnZh
bHVlKCkpOworICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF91
cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0gZmluYWxseSByYW4gJS4yZnMgYWZ0ZXIgYmVpbmcg
c2NoZWR1bGVkIiwgc2VsZiwgKHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250
ZW50UmVjdFVwZGF0ZSkudmFsdWUoKSk7CiAKICAgICBfYWx3YXlzU2VuZE5leHRWaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGUgPSBOTzsKICAgICBfdGltZU9mTGFzdFZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZSA9IHRpbWVOb3c7CkBAIC0yMTc5LDcgKzIxNzksNyBAQCBzdGF0aWMgaW50MzJfdCBhY3Rp
dmVPcmllbnRhdGlvbihXS1dlYlZpZXcgKndlYlZpZXcpCiAKIC0gKHZvaWQpX2NhbmNlbEFuaW1h
dGVkUmVzaXplCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlE
PSVsbHUpIC1bV0tXZWJWaWV3IF9jYW5jZWxBbmltYXRlZFJlc2l6ZV0gX2R5bmFtaWNWaWV3cG9y
dFVwZGF0ZU1vZGUgJWQiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIF9k
eW5hbWljVmlld3BvcnRVcGRhdGVNb2RlKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVw
IChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfY2FuY2VsQW5pbWF0ZWRSZXNpemVdIF9k
eW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpLCBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CiAKICAgICBpZiAoX2R5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2Rl
OjpOb3RSZXNpemluZykKICAgICAgICAgcmV0dXJuOwpAQCAtMjIxMSwxMiArMjIxMSwxMiBAQCAt
ICh2b2lkKV9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplCiAKICAgICBpZiAoIV9yZXNpemVBbmlt
YXRpb25WaWV3KSB7CiAgICAgICAgIC8vIFBhcmFub2lhLiBJZiBfcmVzaXplQW5pbWF0aW9uVmll
dyBpcyBudWxsIHdlJ2xsIGVuZCB1cCBzZXR0aW5nIGEgemVybyBzY2FsZSBvbiB0aGUgY29udGVu
dCB2aWV3LgotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2ViVmlldyBf
ZGlkQ29tcGxldGVBbmltYXRlZFJlc2l6ZTpdIC0gX3Jlc2l6ZUFuaW1hdGlvblZpZXcgaXMgbmls
Iiwgc2VsZik7CisgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcg
X2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemU6XSAtIF9yZXNpemVBbmltYXRpb25WaWV3IGlzIG5p
bCIsIHNlbGYpOwogICAgICAgICBbc2VsZiBfY2FuY2VsQW5pbWF0ZWRSZXNpemVdOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQ
cm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplXSIsIHNl
bGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgV0tXRUJWSUVXX1JFTEVB
U0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2RpZENvbXBsZXRlQW5p
bWF0ZWRSZXNpemVdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAog
ICAgIE5TVUludGVnZXIgaW5kZXhPZlJlc2l6ZUFuaW1hdGlvblZpZXcgPSBbW19zY3JvbGxWaWV3
IHN1YnZpZXdzXSBpbmRleE9mT2JqZWN0Ol9yZXNpemVBbmltYXRpb25WaWV3LmdldCgpXTsKICAg
ICBbX3Njcm9sbFZpZXcgaW5zZXJ0U3VidmlldzpfY29udGVudFZpZXcuZ2V0KCkgYXRJbmRleDpp
bmRleE9mUmVzaXplQW5pbWF0aW9uVmlld107CkBAIC0yODg3LDcgKzI4ODcsNyBAQCAtICh2b2lk
KV9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJs
b2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2JlZ2luQW5pbWF0ZWRSZXNpemVX
aXRoVXBkYXRlczpdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmll
dyBfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPSBX
ZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU6OlJlc2l6aW5nV2l0aEFuaW1hdGlvbjsK
IApAQCAtMzAyNCw3ICszMDI0LDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhV
cGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogCiAtICh2b2lkKV9lbmRBbmltYXRl
ZFJlc2l6ZQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0l
bGx1KSAtW1dLV2ViVmlldyBfZW5kQW5pbWF0ZWRSZXNpemVdIF9keW5hbWljVmlld3BvcnRVcGRh
dGVNb2RlICVkIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBfZHluYW1p
Y1ZpZXdwb3J0VXBkYXRlTW9kZSk7CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFn
ZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2VuZEFuaW1hdGVkUmVzaXplXSBfZHluYW1pY1Zp
ZXdwb3J0VXBkYXRlTW9kZSAlZCIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUpOwogCiAgICAgLy8gSWYgd2UgYWxyZWFkeSBo
YXZlIGFuIHVwLXRvLWRhdGUgbGF5ZXIgdHJlZSwgaW1tZWRpYXRlbHkgY29tcGxldGUKICAgICAv
LyB0aGUgcmVzaXplLiBPdGhlcndpc2UsIHdlIHdpbGwgZGVmZXIgY29tcGxldGlvbiB1bnRpbCB3
ZSBkby4KQEAgLTMwMzUsNyArMzAzNSw3IEBAIC0gKHZvaWQpX2VuZEFuaW1hdGVkUmVzaXplCiAK
IC0gKHZvaWQpX3Jlc2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOih2b2lkICheKSh2
b2lkKSl1cGRhdGVCbG9jawogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfcmVzaXplV2hpbGVIaWRpbmdDb250ZW50V2l0aFVw
ZGF0ZXM6XSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgV0tX
RUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3Jl
c2l6ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgW3NlbGYgX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRo
VXBkYXRlczp1cGRhdGVCbG9ja107CiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2Rl
ID09IFdlYktpdDo6RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6UmVzaXppbmdXaXRoQW5pbWF0
aW9uKSB7CkBAIC0zMzM5LDQgKzMzMzksNiBAQCAtIChpZCA8X1dLV2ViVmlld1ByaW50UHJvdmlk
ZXI+KV9wcmludFByb3ZpZGVyCiAKIEBlbmQKIAorI3VuZGVmIFdLV0VCVklFV19SRUxFQVNFX0xP
RworCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBmN2Q0MDYzNjFmZTY4Nzhl
ZjczNWIzNWE5ODM3ODhjZDQ1ZTBkNGNmLi4wNzNhN2I3YzRjZTM2MzQ1NGYyYzhkNDg2NjY5MDc3
MWNiZDQ0YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCkBAIC0xMzY4LDEwICsxMzY4LDEwIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpyZWxlYXNlTmV0d29ya0FjdGl2aXR5KE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb24gcmVh
c29uCiAKICAgICBzd2l0Y2ggKHJlYXNvbikgewogICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5UmVs
ZWFzZVJlYXNvbjo6TG9hZENvbXBsZXRlZDoKLSAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJW
aWV3LT5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgTmF2aWdhdGlvblN0YXRlIGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNz
ZXJ0aW9uIGJlY2F1c2UgYSBwYWdlIGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CisgICAgICAgIFJF
TEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRlIGlzIHJlbGVh
c2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdlIGxvYWQgY29t
cGxldGVkIiwgdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5
UmVsZWFzZVJlYXNvbjo6U2NyZWVuTG9ja2VkOgotICAgICAgICBSRUxFQVNFX0xPR19JRihtX3dl
YlZpZXctPl9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCBOYXZpZ2F0aW9uU3RhdGUgaXMgcmVsZWFzaW5nIGJhY2tncm91bmQgcHJvY2VzcyBh
c3NlcnRpb24gYmVjYXVzZSB0aGUgc2NyZWVuIHdhcyBsb2NrZWQiLCB0aGlzKTsKKyAgICAgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBOYXZpZ2F0aW9uU3RhdGUgaXMgcmVs
ZWFzaW5nIGJhY2tncm91bmQgcHJvY2VzcyBhc3NlcnRpb24gYmVjYXVzZSB0aGUgc2NyZWVuIHdh
cyBsb2NrZWQiLCB0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG1fbmV0d29ya0Fj
dGl2aXR5ID0gbnVsbHB0cjsKQEAgLTEzODgsMTcgKzEzODgsMTcgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6OmRpZENoYW5nZUlzTG9hZGluZygpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKG1fcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBz
IGl0cyBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0
YXJ0ZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgLSBOYXZpZ2F0aW9uU3RhdGUga2VlcHMgaXRzIHByb2Nlc3MgbmV0d29yayBhc3NlcnRp
b24gYmVjYXVzZSBhIG5ldyBwYWdlIGxvYWQgc3RhcnRlZCIsIHRoaXMpOwogICAgICAgICAgICAg
bV9yZWxlYXNlTmV0d29ya0FjdGl2aXR5VGltZXIuc3RvcCgpOwogICAgICAgICB9CiAgICAgICAg
IGlmICghbV9uZXR3b3JrQWN0aXZpdHkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1f
d2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGlzIHRha2luZyBhIHByb2Nlc3MgbmV0d29yayBh
c3NlcnRpb24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBzdGFydGVkIiwgdGhpcyk7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGlz
IHRha2luZyBhIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBz
dGFydGVkIiwgdGhpcyk7CiAgICAgICAgICAgICBtX25ldHdvcmtBY3Rpdml0eSA9IG1fd2ViVmll
dy0+X3BhZ2UtPnByb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlBhZ2Ug
TG9hZCJfcykubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1f
bmV0d29ya0FjdGl2aXR5KSB7CiAgICAgICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBpcyB2aXNpYmxl
IHNvIHdlIGRlbGF5IHJlbGVhc2luZyB0aGUgYmFja2dyb3VuZCBhY3Rpdml0eSBmb3IgMyBzZWNv
bmRzIHRvIGdpdmUgaXQgYSBjaGFuY2UgdG8gc3RhcnQgYW5vdGhlciBuYXZpZ2F0aW9uCiAgICAg
ICAgIC8vIGJlZm9yZSBzdXNwZW5kaW5nIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgPHJkYXI6Ly9w
cm9ibGVtLzI3OTEwOTY0Pi4KLSAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFn
ZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBO
YXZpZ2F0aW9uU3RhdGUgd2lsbCByZWxlYXNlIGl0cyBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0aW9u
IHNvb24gYmVjYXVzZSB0aGUgcGFnZSBsb2FkIGNvbXBsZXRlZCIsIHRoaXMpOworICAgICAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIHdpbGwg
cmVsZWFzZSBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBzb29uIGJlY2F1c2UgdGhlIHBh
Z2UgbG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKICAgICAgICAgbV9yZWxlYXNlTmV0d29ya0FjdGl2
aXR5VGltZXIuc3RhcnRPbmVTaG90KDNfcyk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4IGZkOGM3MDdkOTllODQ5MThlY2Ew
YjA3ZWZlMWM4YTRjZDI4YzRjODYuLmM5MGMyOTkwNGE0YTU1MTVlYzA5ZjczYjJmYTQ2MDM0NmQy
ODRjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBA
IC00NCw3ICs0NCw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9W
ZWN0b3IuaD4KIAotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19JRihtX3BhZ2UgJiYgbV9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
QXBwU1NPLCAiJXAgLSBbSW5pdGlhdGluZ0FjdGlvbj0lc10gU09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6IiBmbXQsIHRoaXMsIHRvU3RyaW5nKG1fYWN0aW9uKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9H
KEFwcFNTTywgIiVwIC0gW0luaXRpYXRpbmdBY3Rpb249JXNdIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OiIgZm10LCB0aGlzLCB0b1N0cmluZyhtX2FjdGlvbiksICMjX19WQV9BUkdTX18pCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRp
b25TZXNzaW9uOjpiZWNvbWVDb21wbGV0ZWQoKQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OnNob3VsZFN0YXJ0KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzaG91bGRT
dGFydDoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygic2hvdWxkU3Rh
cnQ6Iik7CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSk7CiAgICAgaWYgKCFt
X3BhZ2UpCkBAIC0xMjcsMTIgKzEyNywxMiBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246
OnNob3VsZFN0YXJ0KCkKIAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzdGFydCgpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6Iik7CisgICAgQVVUSE9SSVpBVElP
TlNFU1NJT05fUkVMRUFTRV9MT0coInN0YXJ0OiIpOwogCiAgICAgQVNTRVJUKChtX3N0YXRlID09
IFN0YXRlOjpJZGxlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OldhaXRpbmcpICYmIG1fbmF2aWdhdGlv
bkFjdGlvbik7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmU7CiAgICAgW21fc29BdXRob3Jp
emF0aW9uIGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6bV9uYXZpZ2F0aW9uQWN0aW9uLT5y
ZXF1ZXN0KCkudXJsKCkgcmVzcG9uc2VDb2RlOjAgY29tcGxldGlvbjptYWtlQmxvY2tQdHIoW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoU09BdXRob3JpemF0aW9uSGludHMg
KmF1dGhvcml6YXRpb25IaW50cywgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnQ6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uSGludHMgKGVycm9y
PSVsZCkiLCBlcnJvciA/IGVycm9yLmNvZGUgOiAwKTsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNF
U1NJT05fUkVMRUFTRV9MT0coInN0YXJ0OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkhpbnRzIChl
cnJvcj0lbGQpIiwgZXJyb3IgPyBlcnJvci5jb2RlIDogMCk7CiAKICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCBlcnJvciB8fCAhYXV0aG9yaXphdGlvbkhpbnRzKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6c3RhcnQo
KQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckdldEF1
dGhvcml6YXRpb25IaW50cyhjb25zdCBTdHJpbmcmIGhpbnRzKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50czogKGhp
bnRzPSVzKSIsIGhpbnRzLnV0ZjgoKS5kYXRhKCkpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9O
X1JFTEVBU0VfTE9HKCJjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHM6ICho
aW50cz0lcykiLCBoaW50cy51dGY4KCkuZGF0YSgpKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09
IFN0YXRlOjpBY3RpdmUpOwogICAgIGlmICghbV9wYWdlKQpAQCAtMTU4LDEzICsxNTgsMTMgQEAg
dm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3Jp
emF0aW9uSGludHMoY29uc3QgU3RyaW4KIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29u
dGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5KGNvbnN0IFNPQXV0aG9yaXphdGlvbkxvYWRQb2xp
Y3kmIHBvbGljeSkKIHsKICAgICBpZiAocG9saWN5ID09IFNPQXV0aG9yaXphdGlvbkxvYWRQb2xp
Y3k6Oklnbm9yZSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVN0
YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6
SWdub3JlIik7CisgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb250
aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBv
bGljeTo6SWdub3JlIik7CiAKICAgICAgICAgZmFsbEJhY2tUb1dlYlBhdGgoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlU3Rh
cnRBZnRlckRlY2lkZVBvbGljeTogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpB
bGxvdyIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb250aW51ZVN0
YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6
QWxsb3ciKTsKIAogICAgIGlmICghbV9zb0F1dGhvcml6YXRpb24gfHwgIW1fcGFnZSB8fCAhbV9u
YXZpZ2F0aW9uQWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0xOTIsNyArMTkyLDcgQEAgdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3ko
Y29uc3QgU09BdXRob3JpemF0aW8KIAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpmYWxs
QmFja1RvV2ViUGF0aCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZmFsbEJhY2tU
b1dlYlBhdGg6Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImZhbGxC
YWNrVG9XZWJQYXRoOiIpOwogCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkFjdGl2ZSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vz
c2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgoKQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246
OmFib3J0KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhYm9ydDoiKTsKKyAgICBB
VVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiYWJvcnQ6Iik7CiAKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6SWRsZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OmNvbXBsZXRlKE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UsIE5TRGF0YSAqZAog
ICAgIC8vIFNldCBjb29raWVzLgogICAgIGF1dG8gY29va2llcyA9IHRvQ29va2llVmVjdG9yKFtO
U0hUVFBDb29raWUgY29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkczpodHRwUmVzcG9uc2Uu
YWxsSGVhZGVyRmllbGRzIGZvclVSTDpyZXNwb25zZS51cmwoKV0pOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiY29tcGxldGU6IChodHRwU3RhdHVzQ29kZT0lZCwgaGFzQ29va2llcz0l
ZCwgaGFzRGF0YT0lZCkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAhY29va2llcy5pc0Vt
cHR5KCksICEhZGF0YS5sZW5ndGgpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0Vf
TE9HKCJjb21wbGV0ZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBoYXNDb29raWVzPSVkLCBoYXNEYXRh
PSVkKSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICFjb29raWVzLmlzRW1wdHkoKSwgISFk
YXRhLmxlbmd0aCk7CiAKICAgICBpZiAoY29va2llcy5pc0VtcHR5KCkpIHsKICAgICAgICAgY29t
cGxldGVJbnRlcm5hbChyZXNwb25zZSwgZGF0YSk7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBT
T0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZShOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJl
c3BvbnNlLCBOU0RhdGEgKmQKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb21wbGV0ZTogQ29va2ll
cyBhcmUgc2V0LiIpOworICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygi
Y29tcGxldGU6IENvb2tpZXMgYXJlIHNldC4iKTsKIAogICAgICAgICBjb21wbGV0ZUludGVybmFs
KHJlc3BvbnNlLCBkYXRhLmdldCgpKTsKICAgICB9KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lk
IFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlKE5TSFRUUFVSTFJlc3BvbnNlICpodHRw
UmVzcG9uc2UsIE5TRGF0YSAqZAogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnByZXNl
bnRWaWV3Q29udHJvbGxlcihTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciB2aWV3Q29udHJv
bGxlciwgVUlDYWxsYmFjayB1aUNhbGxiYWNrKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInByZXNlbnRWaWV3Q29udHJvbGxlcjoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9S
RUxFQVNFX0xPRygicHJlc2VudFZpZXdDb250cm9sbGVyOiIpOwogCiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OkFjdGl2ZSk7CiAgICAgLy8gT25seSBleHBlY3QgYXQgbW9zdCBvbmUgVUkg
c2Vzc2lvbiBmb3IgdGhlIHdob2xlIGF1dGhvcml6YXRpb24gc2Vzc2lvbi4KQEAgLTI3NSw3ICsy
NzUsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnByZXNlbnRWaWV3Q29udHJvbGxl
cihTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicHJlc2VudFZpZXdDb250cm9sbGVyOiBDYWxs
aW5nIGJlZ2luU2hlZXQgb24gJXAgZm9yIHNoZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1f
c2hlZXRXaW5kb3cuZ2V0KCkpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9H
KCJwcmVzZW50Vmlld0NvbnRyb2xsZXI6IENhbGxpbmcgYmVnaW5TaGVldCBvbiAlcCBmb3Igc2hl
ZXQgJXAuIiwgcHJlc2VudGluZ1dpbmRvdywgbV9zaGVldFdpbmRvdy5nZXQoKSk7CiAgICAgW3By
ZXNlbnRpbmdXaW5kb3cgYmVnaW5TaGVldDptX3NoZWV0V2luZG93LmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CiAjZWxpZiBQTEFURk9STShJT1MpCiAgICAgVUlWaWV3Q29udHJvbGxlciAq
cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV9wYWdlLT51aUNsaWVudCgpLnByZXNlbnRpbmdW
aWV3Q29udHJvbGxlcigpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6cHJlc2VudFZpZXdDb250cm9sbGVyKFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyCiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVy
KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6
Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29u
dHJvbGxlcjoiKTsKIAogICAgIEFTU0VSVChtX3ZpZXdDb250cm9sbGVyKTsKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0zMDMsMTMgKzMwMywxMyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246
OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiAgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPnBsYXRm
b3JtV2luZG93KCkpIHsKICAgICAgICAgYXV0byAqcHJlc2VudGluZ1dpbmRvdyA9IG1fcGFnZS0+
cGxhdGZvcm1XaW5kb3coKTsKICAgICAgICAgaWYgKHByZXNlbnRpbmdXaW5kb3cubWluaWF0dXJp
emVkKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0Nv
bnRyb2xsZXI6IFBhZ2UncyB3aW5kb3cgaXMgbWluaWF0dXJpemVkLiBXYWl0aW5nIHRvIGRpc21p
c3MgdW50aWwgYWN0aXZlLiIpOworICAgICAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVM
RUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogUGFnZSdzIHdpbmRvdyBpcyBtaW5pYXR1
cml6ZWQuIFdhaXRpbmcgdG8gZGlzbWlzcyB1bnRpbCBhY3RpdmUuIik7CiAgICAgICAgICAgICBp
ZiAobV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyKSB7Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBb
TWluaWF0dXJpemVkXSBBbHJlYWR5IGhhcyBhIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCku
IEhpZGRlbiBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJp
emVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsK
KyAgICAgICAgICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlz
c1ZpZXdDb250cm9sbGVyOiBbTWluaWF0dXJpemVkXSBBbHJlYWR5IGhhcyBhIGRlbWluaWF0dXJp
emVkIG9ic2VydmVyICglcCkuIEhpZGRlbiBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2VudGluZ1dp
bmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlk
ZU9ic2VydmVyLmdldCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIg
PSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFt
ZTpOU1dpbmRvd0RpZERlbWluaWF0dXJpemVOb3RpZmljYXRpb24gb2JqZWN0OnByZXNlbnRpbmdX
aW5kb3cgcXVldWU6bmlsIHVzaW5nQmxvY2s6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpLCB0aGlzXSAoTlNOb3RpZmljYXRpb24gKikgewotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogV2luZG93IGhhcyBkZW1pbmlh
dHVyaXplZC4gQ29tcGxldGluZyB0aGUgZGlzbWlzc2FsLiIpOworICAgICAgICAgICAgICAgIEFV
VEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFdp
bmRvdyBoYXMgZGVtaW5pYXR1cml6ZWQuIENvbXBsZXRpbmcgdGhlIGRpc21pc3NhbC4iKTsKICAg
ICAgICAgICAgICAgICBkaXNtaXNzVmlld0NvbnRyb2xsZXIoKTsKICAgICAgICAgICAgICAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fcHJl
c2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKV07CiAgICAgICAgICAg
ICAgICAgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyID0gbnVsbHB0
cjsKQEAgLTMxOSwxMyArMzE5LDEzIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlz
bWlzc1ZpZXdDb250cm9sbGVyKCkKICAgICB9CiAKICAgICBpZiAoTlNBcHAuaGlkZGVuKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogQXBw
bGljYXRpb24gaXMgaGlkZGVuLiBXYWl0aW5nIHRvIGRpc21pc3MgdW50aWwgYWN0aXZlLiIpOwor
ICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250
cm9sbGVyOiBBcHBsaWNhdGlvbiBpcyBoaWRkZW4uIFdhaXRpbmcgdG8gZGlzbWlzcyB1bnRpbCBh
Y3RpdmUuIik7CiAgICAgICAgIGlmIChtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxl
cjogW0hpZGRlbl0gQWxyZWFkeSBoYXMgYW4gVW5oaWRlIG9ic2VydmVyICglcCkuIERlbWluaWF0
dXJpemVkIG9ic2VydmVyIGlzICVwIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6
ZU9ic2VydmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOwor
ICAgICAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3
Q29udHJvbGxlcjogW0hpZGRlbl0gQWxyZWFkeSBoYXMgYW4gVW5oaWRlIG9ic2VydmVyICglcCku
IERlbWluaWF0dXJpemVkIG9ic2VydmVyIGlzICVwIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVt
aW5pYXR1cml6ZU9ic2VydmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIu
Z2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fYXBwbGlj
YXRpb25EaWRVbmhpZGVPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TQXBwbGljYXRpb25EaWRVbmhpZGVOb3RpZmljYXRp
b24gb2JqZWN0Ok5TQXBwIHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOltwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZlB0cih0aGlzKSwgdGhpc10gKE5TTm90aWZpY2F0aW9uICopIHsKLSAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogQXBwbGljYXRpb24g
aXMgbm8gbG9uZ2VyIGhpZGRlbi4gQ29tcGxldGluZyB0aGUgZGlzbWlzc2FsLiIpOworICAgICAg
ICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJv
bGxlcjogQXBwbGljYXRpb24gaXMgbm8gbG9uZ2VyIGhpZGRlbi4gQ29tcGxldGluZyB0aGUgZGlz
bWlzc2FsLiIpOwogICAgICAgICAgICAgZGlzbWlzc1ZpZXdDb250cm9sbGVyKCk7CiAgICAgICAg
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVy
Om1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKV07CiAgICAgICAgICAgICBtX2Fw
cGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAtMzM3LDEwICszMzcsMTAg
QEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQog
ICAgIG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlciA9IG51bGxwdHI7CiAKICAgICBhdXRv
ICpwcmVzZW50aW5nV2luZG93ID0gbV9zaGVldFdpbmRvdy5nZXQoKS5zaGVldFBhcmVudDsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IENhbGxpbmcg
ZW5kU2hlZXQgb24gJXAgZm9yIHNoZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1fc2hlZXRX
aW5kb3cuZ2V0KCkpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNt
aXNzVmlld0NvbnRyb2xsZXI6IENhbGxpbmcgZW5kU2hlZXQgb24gJXAgZm9yIHNoZWV0ICVwLiIs
IHByZXNlbnRpbmdXaW5kb3csIG1fc2hlZXRXaW5kb3cuZ2V0KCkpOwogICAgIFtwcmVzZW50aW5n
V2luZG93IGVuZFNoZWV0Om1fc2hlZXRXaW5kb3cuZ2V0KCldOwogICAgIG1fc2hlZXRXaW5kb3cg
PSBudWxscHRyOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJv
bGxlcjogRmluaXNoZWQgY2FsbCB3aXRoIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCkgYW5k
IEhpZGRlbiBvYnNlcnZlciAoJXApIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6
ZU9ic2VydmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOwor
ICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xs
ZXI6IEZpbmlzaGVkIGNhbGwgd2l0aCBkZW1pbmlhdHVyaXplZCBvYnNlcnZlciAoJXApIGFuZCBI
aWRkZW4gb2JzZXJ2ZXIgKCVwKSIsIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVP
YnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKICNl
bGlmIFBMQVRGT1JNKElPUykKICAgICBbW21fdmlld0NvbnRyb2xsZXIgcHJlc2VudGluZ1ZpZXdD
b250cm9sbGVyXSBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpu
aWxdOwogI2VuZGlmCkBAIC0zNTAsNiArMzUwLDYgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNz
aW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAot
I3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBBVVRIT1JJWkFUSU9OU0VTU0lP
Tl9SRUxFQVNFX0xPRwogCiAjZW5kaWYgLy8gSEFWRShBUFBfU1NPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDIyNmQyOTMzNDA1
ZWE1YjZmMGJjMzY5ZTUxZmQwNzg2MmUzN2FmNzYuLmZmNjI4M2Y2OWI3OTNiNjEwNmI2ZTQ5NDky
NTQ3ZWY1NjU0NGVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAKQEAgLTU1LDggKzU1LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3
ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiXSBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX25hdmlnYXRpb25JRCwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1Jf
SUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFn
ZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpLCBuYXZp
Z2F0aW9uSUQ9JSIgUFJJdTY0ICJdIFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywg
bV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fbmF2aWdhdGlvbklELCAjI19fVkFfQVJH
U19fKQorI2RlZmluZSBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2
NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2
NCAiXSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX25hdmlnYXRpb25JRCwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUFJP
VklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwg
d2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWksIG5hdmlnYXRpb25JRD0lIiBQUkl1NjQgIl0g
UHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRv
VUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMjX19WQV9BUkdTX18pCiAKIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2Vzcywgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94
eT4gc3VzcGVuZGVkUGFnZSwgdWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIGlzU2VydmVyUmVk
aXJlY3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBBUEk6Oldl
YnNpdGVQb2xpY2llcyogd2Vic2l0ZVBvbGljaWVzKQogICAgIDogbV9wYWdlKHBhZ2UpCkBAIC03
Niw3ICs3Niw3IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShX
ZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAjZW5kaWYKICNlbmRpZgogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQ
YWdlUHJveHk6IHN1c3BlbmRlZFBhZ2U9JXAiLCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKKyAgICBQ
Uk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJQcm92aXNp
b25hbFBhZ2VQcm94eTogc3VzcGVuZGVkUGFnZT0lcCIsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwog
CiAgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogICAgIG1fcHJv
Y2Vzcy0+YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoKnRoaXMpOwpAQCAtMTE4LDcgKzExOCw3IEBA
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHkoKQogCiB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5h
dGU6Iik7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vz
c1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZToiKTsKICAgICBtX3BhZ2UucHJvdmlzaW9u
YWxQcm9jZXNzRGlkVGVybWluYXRlKCk7CiB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQogICAgICAgICAKICAgICBBU1NFUlQobV9wcm9j
ZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpOwogCi0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRp
bmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiKTsKKyAgICBQUk9WSVNJT05BTFBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcg
YSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiKTsKICAgICBBU1NFUlQobV9tYWluRnJh
bWUpOwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCk7
CiAgICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxs
YXRpb24pOwpAQCAtMTY0LDE0ICsxNjQsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
aW5pdGlhbGl6ZVdlYlBhZ2UoUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnMKIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkRGF0YToiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkRGF0YToiKTsKIAogICAgIG1fcGFnZS5sb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlE
LCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxh
c3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAK
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJsb2FkUmVxdWVzdDoiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDoiKTsKIAogICAgIC8vIElmIHRoaXMg
aXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRo
ZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4g
dGhpcyBjYXNlLAogICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRl
bSdzIHByb2Nlc3NJZGVudGlmaWVyIGFzIHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRo
aXMgQmFja0ZvcndhcmQgaXRlbSB0byBoYXBwZW4gaW4gdGhlCkBAIC0xODQsNyArMTg0LDcgQEAg
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29U
b0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mIGl0ZW0sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRl
UG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJnb1RvQmFja0ZvcndhcmRJdGVtOiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVB
U0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06Iik7CiAKICAgICBh
dXRvIGl0ZW1TdGF0ZXMgPSBtX3BhZ2UuYmFja0ZvcndhcmRMaXN0KCkuZmlsdGVyZWRJdGVtU3Rh
dGVzKFt0aGlzLCB0YXJnZXRJdGVtID0gJml0ZW1dKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgaWYg
KGF1dG8qIGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSA9IGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5
KCkpIHsKQEAgLTIxNCw3ICsyMTQsNyBAQCBpbmxpbmUgYm9vbCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6dmFsaWRhdGVJbnB1dChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgTwogCiB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJkaWRDcmVhdGVNYWluRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0
KCkpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGlu
ZywgImRpZENyZWF0ZU1haW5GcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50
NjQoKSk7CiAgICAgQVNTRVJUKCFtX21haW5GcmFtZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdl
YkZyYW1lUHJveHk6OmNyZWF0ZShtX3BhZ2UsIGZyYW1lSUQpOwpAQCAtMjUyLDcgKzI1Miw3IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQs
IG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgUFJPVklTSU9OQUxQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAg
ICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lv
bmFsTG9hZFVSTCA9IHVybDsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBS
SXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxF
QVNFX0xPR19FUlJPUihQcm9jZXNzU3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogICAgIEFTU0VS
VCghbV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2Fk
VVJMID0geyB9OwogCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUkK
ICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0
KCkpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGlu
ZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9V
SW50NjQoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07CiAgICAgbV9wcm9jZXNz
LT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKQEAgLTQyMSwxNCArNDIxLDE0IEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZShj
b25zdCBXZWJDb3JlOjpDb250CiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcp
CiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNz
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVh
dGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9
JXUiLCBjb250ZXh0SUQpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7CiAgICAgbV9jb250ZXh0SURG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MgPSBjb250ZXh0SUQ7CiB9CiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVh
dGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGlu
Z0NvbnRleHRJRCBjb250ZXh0SUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVBy
b3BhZ2F0aW9uOiBjb250ZXh0SUQ9JXUiLCBjb250ZXh0SUQpOworICAgIFBST1ZJU0lPTkFMUEFH
RVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRleHRJbkdQ
VVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJ
RCk7CiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3Mg
PSBjb250ZXh0SUQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA5ODM1YTY0NTcw
NGE1Zjk2YzIzNGNiOTAzMzRmYjg0OTg1MThjMGFhLi4xNDk1ZDg5YzIyNDNjYjQ4YjA1M2JiZjU5
OTU1NGM5MWM5NDdlOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tbQpAQCAtNTA0LDcgKzUwNCw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6aGFzVmlzaWJsZUNvbnRlbnQoKSBjb25zdAogCiBib29sIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
OworICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKTsKIH0KIAogQ0FMYXllciAqUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eTo6bGF5ZXJXaXRoSURGb3JUZXN0aW5nKHVpbnQ2NF90IGxheWVySUQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNTJlMmI4ZTA5ZjliMGFlNGEz
NDA0NGYyMmQ2ODMyYzgwZWMzMzg0Li41ZWFjNjUzNDc1MGE3Zjk5ZGM4NmNmMjYwNjFhODE5M2Jh
MjlkNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMx
NSw4ICszMTUsOCBAQAogI2RlZmluZSBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCB1cmwpIE1F
U1NBR0VfQ0hFQ0tfQkFTRShjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRPclByZXZpb3VzV2Vi
UHJvY2Vzcyhwcm9jZXNzLCB1cmwpLCBwcm9jZXNzLT5jb25uZWN0aW9uKCkpCiAjZGVmaW5lIE1F
U1NBR0VfQ0hFQ0tfQ09NUExFVElPTihwcm9jZXNzLCBhc3NlcnRpb24sIGNvbXBsZXRpb24pIE1F
U1NBR0VfQ0hFQ0tfQ09NUExFVElPTl9CQVNFKGFzc2VydGlvbiwgcHJvY2Vzcy0+Y29ubmVjdGlv
bigpLCBjb21wbGV0aW9uKQogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5l
bCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBj
aGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1
NjQgIiwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3
ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laV0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywg
bV9pZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAi
JXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElE
PSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwg
bV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAj
I19fVkFfQVJHU19fKQorI2RlZmluZSBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoY2hh
bm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlUHJv
eHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWldIFdlYlBhZ2VQ
cm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18p
CiAKIC8vIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3aGVlbCBldmVudHMgd2UgY2FuIGhvbGQg
aW4gdGhlIHF1ZXVlIGJlZm9yZSB3ZSBzdGFydCBwdXNoaW5nIHRoZW0gcHJlZW1wdGl2ZWx5Lgog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHdoZWVsRXZlbnRRdWV1ZVNpemVUaHJlc2hvbGQgPSAxMDsK
QEAgLTUxMCw3ICs1MTAsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgICwgbV9saW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKG1fY29uZmlndXJhdGlvbi0+bGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpKQogI2VuZGlmCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6Iik7CisgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJjb25zdHJ1Y3RvcjoiKTsKIAogICAgIGlmICghbV9jb25maWd1
cmF0aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CkBAIC01NzIsNyArNTcyLDcgQEAgV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCBSZWYKIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiIpOworICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGVzdHJ1Y3RvcjoiKTsKIAogICAgIEFT
U0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9pZGVudGlmaWVyKSAhPSB0aGlzKTsKICNpZiBBU1NF
UlRfRU5BQkxFRApAQCAtODIzLDcgKzgyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQ
cm9jZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgUHJvCiAg
ICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
OwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczoi
KTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5jaFByb2Nlc3M6
Iik7CiAKICAgICAvLyBJbiBjYXNlIHdlIGFyZSBjdXJyZW50bHkgY29ubmVjdGVkIHRvIHRoZSBk
dW1teSBwcm9jZXNzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgaW5zcGVjdG9yIHByb3h5CiAg
ICAgLy8gZGlzY29ubmVjdHMgZnJvbSB0aGUgZHVtbXkgcHJvY2VzcyBmaXJzdC4KQEAgLTg2NSwx
MiArODY1LDEyIEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmICghaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNz
IHBpZCAlaSBiZWNhdXNlIGhhcyBub3QgY29tbWl0dGVkIGFueSBsb2FkIHlldCIsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3Vz
cGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgaGFzIG5vdCBj
b21taXR0ZWQgYW55IGxvYWQgeWV0IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpc1BhZ2VPcGVuZWRCeURP
TVNob3dpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTog
Tm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGl0
IGlzIHNob3dpbmcgdGhlIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQiLCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCkpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcg
Y3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGl0IGlzIHNob3dpbmcgdGhl
IGluaXRpYWwgZW1wdHkgZG9jdW1lbnQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NzksMjUgKzg3OSwyNSBAQCBi
b29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIC8vIElmIHRoZSBzb3VyY2UgYW5kIHRoZSBkZXN0
aW5hdGlvbiBiYWNrIC8gZm9yd2FyZCBsaXN0IGl0ZW1zIGFyZSB0aGUgc2FtZSwgdGhlbiB0aGlz
IGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3QuIEluIHRoaXMgY2FzZSwKICAgICAvLyB0aGVyZSBp
cyBubyBuZWVkIHRvIHN1c3BlbmQgdGhlIHByZXZpb3VzIHBhZ2UgYXMgdGhlcmUgd2lsbCBiZSBu
byB3YXkgdG8gZ2V0IGJhY2sgdG8gaXQuCiAgICAgaWYgKGZyb21JdGVtICYmIGZyb21JdGVtID09
IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNl
IHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50
IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJl
ZGlyZWN0IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIGlmIChmcm9tSXRlbSAmJiBmcm9tSXRlbS0+dXJsKCkgIT0g
cGFnZUxvYWRTdGF0ZSgpLnVybCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90
IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGZyb21J
dGVtJ3MgVVJMIGRvZXMgbm90IG1hdGNoIHRoZSBwYWdlIFVSTC4iLCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCkpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1Io
UHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3Bl
bmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGZyb21JdGVtJ3Mg
VVJMIGRvZXMgbm90IG1hdGNoIHRoZSBwYWdlIFVSTC4iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgYm9vbCBuZWVk
c1N1c3BlbmRlZFBhZ2VUb1ByZXZlbnRGbGFzaGluZyA9IHNob3VsZERlbGF5Q2xvc2luZ1VudGls
Rmlyc3RMYXllckZsdXNoID09IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNo
OjpZZXM7CiAgICAgaWYgKCFuZWVkc1N1c3BlbmRlZFBhZ2VUb1ByZXZlbnRGbGFzaGluZyAmJiAo
IWZyb21JdGVtIHx8ICFzaG91bGRVc2VCYWNrRm9yd2FyZENhY2hlKCkpKSB7CiAgICAgICAgIGlm
ICghZnJvbUl0ZW0pCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1
cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgdGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9y
IHByb2Nlc3MgcGlkICVpIHRoZXJlIGlzIG5vIGFzc29jaWF0ZWQgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVu
ZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBw
cm9jZXNzIHBpZCAlaSB0aGUgYmFjayAvIGZvcndhcmQgY2FjaGUgaXMgZGlzYWJsZWQiLCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6
IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgdGhlIGJhY2sg
LyBmb3J3YXJkIGNhY2hlIGlzIGRpc2FibGVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTog
U3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJy
ZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQ
cm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVs
YXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gpOwogCiAgICAgTE9HKFByb2Nlc3NTd2FwcGlu
ZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZv
ciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgaWRlbnRpZmll
cigpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dT
dHJpbmcoKSA6IDApOwpAQCAtOTI3LDcgKzkyNyw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91
bGRVc2VCYWNrRm9yd2FyZENhY2hlKCkgY29uc3QKIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Q
cm92aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwcm92
aXNpb25hbFBhZ2UpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9Qcm92aXNpb25hbFBhZ2U6IG5ld1dlYlBhZ2VJ
RD0lIiBQUkl1NjQsIHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQoKSk7Cisg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJzd2FwVG9Qcm92aXNpb25hbFBh
Z2U6IG5ld1dlYlBhZ2VJRD0lIiBQUkl1NjQsIHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCku
dG9VSW50NjQoKSk7CiAKICAgICBtX3Byb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3Mo
KTsKICAgICBtX3dlYlBhZ2VJRCA9IHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCk7CkBAIC05
NDEsOCArOTQxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShz
dGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHAKICNlbmRpZgogI2VuZGlmCiAK
KyAgICAvLyBGSVhNRTogRG8gd2UgcmVhbGx5IG5lZWQgdG8gZGlzYWJsZSB0aGlzIGxvZ2dpbmcg
aW4gZXBoZW1lcmFsIHNlc3Npb25zPwogICAgIGlmIChtX2xvZ2dlcikKLSAgICAgICAgbV9sb2dn
ZXItPnNldEVuYWJsZWQodGhpcywgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpOworICAgICAg
ICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCAhc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSk7
CiAKICAgICBtX2hhc1J1bm5pbmdQcm9jZXNzID0gdHJ1ZTsKIApAQCAtMTAzNSwxMCArMTAzNiwx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9h
ZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vz
c0ZvclJlbG9hZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxh
dW5jaFByb2Nlc3NGb3JSZWxvYWQ6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2Fk
OiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKQEAgLTEwNDcsNyArMTA0OCw3IEBAIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgp
CiAgICAgbGF1bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc0xhdW5jaFJlYXNv
bjo6Q3Jhc2gpOwogCiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNz
Rm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkIik7CisgICAgICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3Vy
cmVudCBpdGVtIHRvIHJlbG9hZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
QEAgLTExMDksNyArMTExMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgaWYg
KG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImNsb3NlOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAiY2xvc2U6Iik7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAtMTE4OCw3ICsx
MTg5LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzLCAidHJ5Q2xvc2U6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3MsICJ0cnlDbG9zZToiKTsKIAogICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkg
aWYgdGhlIHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAv
LyB0aGUgcHJvY2Vzcywgc28gd2UgY2hlY2sgYSBwZXItcHJvY2VzcyBzdGF0dXMgYml0LgpAQCAt
MTIxMyw3ICsxMjE0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnRyeUNsb3NlVGltZWRPdXQoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoUHJvY2VzcywgInRyeUNsb3NlVGltZWRPdXQ6IFRpbWVkIG91dCB3YWl0aW5n
IGZvciB0aGUgcHJvY2VzcyB0byByZXNwb25kIHRvIHRoZSBXZWJQYWdlOjpUcnlDbG9zZSBJUEMs
IGNsb3NpbmcgdGhlIHBhZ2Ugbm93Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3MsICJ0cnlDbG9zZVRpbWVkT3V0OiBUaW1lZCBvdXQgd2FpdGluZyBmb3IgdGhl
IHByb2Nlc3MgdG8gcmVzcG9uZCB0byB0aGUgV2ViUGFnZTo6VHJ5Q2xvc2UgSVBDLCBjbG9zaW5n
IHRoZSBwYWdlIG5vdyIpOwogICAgIGNsb3NlUGFnZSgpOwogfQogCkBAIC0xMzEwLDcgKzEzMTEs
NyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRSZXF1ZXN0OiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAi
bG9hZFJlcXVlc3Q6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0LnVybCgpIH0sIFByb2Nl
c3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKQEAgLTEzMzIsNyArMTMzMyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRp
b25TaGFyZWQ6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2Fk
UmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkOiIpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0xMzY4LDEwICsxMzY5LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6Iik7CisgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRmlsZToiKTsKIAogICAgIGlm
IChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEzODAsNyArMTM4MSw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3Ry
aW5nLCBjb25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7
CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsIik7CisgICAg
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMg
bm90IGxvY2FsIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTM5MCw3
ICsxMzkxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBlbHNlIHsKICAgICAgICAg
cmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwoVVJMKCksIHJlc291cmNlRGlyZWN0b3J5VVJMU3Ry
aW5nKTsKICAgICAgICAgaWYgKCFyZXNvdXJjZURpcmVjdG9yeVVSTC5pc0xvY2FsRmlsZSgpKSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTog
cmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbCIpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbCIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDI0
LDcgKzE0MjUsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YToiKTsKKyAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWREYXRhOiIpOwogCiAjaWYgRU5BQkxFKEFQUF9C
T1VORF9ET01BSU5TKQogICAgIGlmIChNSU1FVHlwZSA9PSAidGV4dC9odG1sIl9zICYmICFpc0Z1
bGxXZWJCcm93c2VyKCkpCkBAIC0xNDMyLDcgKzE0MzMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgYwogI2VuZGlmCiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBj
bG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNDUwLDcgKzE0
NTEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKICAgICBBU1NFUlQo
IW1faXNDbG9zZWQpOwogCkBAIC0xNDc4LDcgKzE0NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgc2ltdWxhdGVkUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHNpbXVsYXRlZFJlc3BvbnNlLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZFNpbXVsYXRlZFJlcXVlc3Q6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJsb2FkU2ltdWxhdGVkUmVxdWVzdDoiKTsKIAogI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBpZiAoc2ltdWxhdGVkUmVzcG9uc2UubWltZVR5cGUoKSA9PSAidGV4
dC9odG1sIl9zICYmICFpc0Z1bGxXZWJCcm93c2VyKCkpCkBAIC0xNDg2LDcgKzE0ODcsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdQogI2VuZGlmCiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVkUmVx
dWVzdDogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJsb2FkU2ltdWxhdGVkUmVxdWVzdDogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNTMyLDEzICsxNTMzLDEzIEBAIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRN
TChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkQWx0ZXJuYXRlSFRNTCIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAibG9hZEFsdGVybmF0ZUhUTUwiKTsKIAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBp
cyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwg
ZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1M
IGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5n
CiAgICAgLy8gaGFuZGxlZCBwcm9wZXJseS4KICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9h
ZGluZ0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBw
YWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhl
cikiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU3NSwxMCArMTU3NiwxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBodG1sRGF0YSwgY29uc3QgUwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hp
dmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURh
dGE6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkV2ViQXJj
aGl2ZURhdGE6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2Vk
Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFdlYkFy
Y2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjAyLDEwICsxNjAzLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURh
dGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVuUG9p
bnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazoiKTsKIAogICAg
IGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDoi
KTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJuYXZpZ2F0ZVRv
UERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6Iik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE2MjEsMTAgKzE2MjIsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiIpOworICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAic3RvcExvYWRpbmc6Iik7CiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlk
Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTE2MzgsNyArMTYzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzdG9wTG9hZGluZygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiIpOworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAicmVsb2FkOiIpOwogCiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTE3MTksMTEgKzE3MjAs
MTEgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
IGl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiIpOworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbToiKTsKICAgICBM
T0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0g
VVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChtX2lz
Q2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImdvVG9C
YWNrRm9yd2FyZEl0ZW06IHBhZ2UgaXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZSBpcyBjbG9zZWQi
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNzQ5LDEwICsxNzUwLDEw
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJk
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjoiKTsKIAogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkIik7Cisg
ICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9s
bFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yMDIxLDcgKzIwMjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlT
dGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZAogICAgICAgICBp
ZiAoaXNOb3dWaXNpYmxlKQogICAgICAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpOwogICAgICAgICBpZiAod2FzVmlzaWJsZSAhPSBpc05vd1Zpc2li
bGUpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFZpZXdTdGF0ZSwgInVwZGF0
ZUFjdGl2aXR5U3RhdGU6IHZpZXcgdmlzaWJpbGl0eSBzdGF0ZSBjaGFuZ2VkICVkIC0+ICVkIiwg
d2FzVmlzaWJsZSwgaXNOb3dWaXNpYmxlKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxF
QVNFX0xPRyhWaWV3U3RhdGUsICJ1cGRhdGVBY3Rpdml0eVN0YXRlOiB2aWV3IHZpc2liaWxpdHkg
c3RhdGUgY2hhbmdlZCAlZCAtPiAlZCIsIHdhc1Zpc2libGUsIGlzTm93VmlzaWJsZSk7CiAgICAg
fQogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2Ns
dWRlZCAmJiBwYWdlQ2xpZW50KCkuaXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQoKSkKICAgICAgICAg
bV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsK
QEAgLTIxODEsMTEgKzIxODIsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0
eVN0YXRlQ2hhbmdlKCkKICNlbmRpZgogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2Vzc2lvbklEKCkuaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJv
dHRsZVN0YXRlKCkKIHsKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgPSBtX3By
ZWZlcmVuY2VzLT5wYWdlVmlzaWJpbGl0eUJhc2VkUHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgp
OwpAQCAtMjIwNCwyMyArMjIwMCwyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0
bGVTdGF0ZSgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaXNWaWV3VmlzaWJs
ZSgpKSB7CiAgICAgICAgIGlmICghbV9pc1Zpc2libGVBY3Rpdml0eSB8fCAhbV9pc1Zpc2libGVB
Y3Rpdml0eS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRh
a2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgdmlzaWJsZSIp
OworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQg
YXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgdmlzaWJsZSIpOwogICAgICAgICAgICAgbV9p
c1Zpc2libGVBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2
aXR5KCJWaWV3IGlzIHZpc2libGUiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmIChtX2lzVmlzaWJsZUFjdGl2aXR5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVBy
b2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmll
dyBpcyBubyBsb25nZXIgdmlzaWJsZSIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMg
cmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBubyBs
b25nZXIgdmlzaWJsZSIpOwogICAgICAgICBtX2lzVmlzaWJsZUFjdGl2aXR5ID0gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBib29sIGlzQXVkaWJsZSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhB
Y3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUpOwogICAgIGlmIChpc0F1ZGlibGUpIHsKICAgICAgICAg
aWYgKCFtX2lzQXVkaWJsZUFjdGl2aXR5IHx8ICFtX2lzQXVkaWJsZUFjdGl2aXR5LT5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNp
b24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3Vu
ZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgcGxheWluZyBhdWRpbyIpOworICAgICAgICAgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0
bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1
c2Ugd2UgYXJlIHBsYXlpbmcgYXVkaW8iKTsKICAgICAgICAgICAgIG1faXNBdWRpYmxlQWN0aXZp
dHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyBw
bGF5aW5nIGF1ZGlvIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgICAgICBt
X2F1ZGlibGVBY3Rpdml0eVRpbWVyLnN0b3AoKTsKICAgICB9IGVsc2UgaWYgKG1faXNBdWRpYmxl
QWN0aXZpdHkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVu
c2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyB3aWxsIHJlbGVhc2UgYSBmb3Jl
Z3JvdW5kIGFzc2VydGlvbiBpbiAlZyBzZWNvbmRzIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBw
bGF5aW5nIGF1ZGlvIiwgYXVkaWJsZUFjdGl2aXR5Q2xlYXJEZWxheS5zZWNvbmRzKCkpOworICAg
ICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVU
aHJvdHRsZVN0YXRlOiBVSVByb2Nlc3Mgd2lsbCByZWxlYXNlIGEgZm9yZWdyb3VuZCBhc3NlcnRp
b24gaW4gJWcgc2Vjb25kcyBiZWNhdXNlIHdlIGFyZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIs
IGF1ZGlibGVBY3Rpdml0eUNsZWFyRGVsYXkuc2Vjb25kcygpKTsKICAgICAgICAgaWYgKCFtX2F1
ZGlibGVBY3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBtX2F1ZGlibGVBY3Rp
dml0eVRpbWVyLnN0YXJ0T25lU2hvdChhdWRpYmxlQWN0aXZpdHlDbGVhckRlbGF5KTsKICAgICB9
CkBAIC0yMjI4LDExICsyMjI0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRs
ZVN0YXRlKCkKICAgICBib29sIGlzQ2FwdHVyaW5nTWVkaWEgPSBtX2FjdGl2aXR5U3RhdGUuY29u
dGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSk7CiAgICAgaWYgKGlzQ2FwdHVy
aW5nTWVkaWEpIHsKICAgICAgICAgaWYgKCFtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgfHwgIW1faXND
YXB0dXJpbmdBY3Rpdml0eS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9j
ZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVy
ZSBpcyBhY3RpdmUiKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcg
YSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlIik7
CiAgICAgICAgICAgICBtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyBjYXB0dXJpbmcgbWVkaWEiX3MpLm1vdmVU
b1VuaXF1ZVB0cigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2lzQ2FwdHVyaW5nQWN0
aXZpdHkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lv
biwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3Jv
dW5kIGFzc2VydGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgbm8gbG9uZ2VyIGFjdGl2ZSIp
OworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1
cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBh
c3NlcnRpb24gYmVjYXVzZSBtZWRpYSBjYXB0dXJlIGlzIG5vIGxvbmdlciBhY3RpdmUiKTsKICAg
ICAgICAgbV9pc0NhcHR1cmluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKQEAg
LTIyNDEsNyArMjIzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRl
KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXVk
aWJsZUFjdGl2aXR5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNw
ZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZv
cmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5nIGF1ZGlv
Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBk
YXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNz
ZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5nIGF1ZGlvIik7CiAgICAgbV9p
c0F1ZGlibGVBY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAjZW5kaWYKQEAgLTI1MjQsNyArMjUyMCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVSZW5kZXJpbmdBZnRlckNvbW1pdHRpbmdM
b2FkKCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTWFraW5nVmlld0JsYW5rRHVlVG9MYWNrT2ZS
ZW5kZXJpbmdVcGRhdGUoKQogewogICAgIEFTU0VSVChtX2hhc1VwZGF0ZWRSZW5kZXJpbmdBZnRl
ckRpZENvbW1pdExvYWQpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInN0
b3BNYWtpbmdWaWV3QmxhbmtEdWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZToiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgInN0b3BNYWtpbmdWaWV3QmxhbmtEdWVUb0xh
Y2tPZlJlbmRlcmluZ1VwZGF0ZToiKTsKICAgICBwYWdlQ2xpZW50KCkubWFrZVZpZXdCbGFuayhm
YWxzZSk7CiB9CiAKQEAgLTI1NDAsNyArMjUzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYWtl
Vmlld0JsYW5rSWZVbnBhaW50ZWRTaW5jZUxhc3RMb2FkQ29tbWl0KCkKICAgICAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkTWFrZVZpZXdCbGFuayA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgaWYgKHNo
b3VsZE1ha2VWaWV3QmxhbmspIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2VzcywgIm1ha2VWaWV3QmxhbmtJZlVucGFpbnRlZFNpbmNlTGFzdExvYWRDb21taXQ6IE1h
a2luZyB0aGUgdmlldyBibGFuayBiZWNhdXNlIG9mIGEgSlMgcHJvbXB0IGJlZm9yZSB0aGUgZmly
c3QgcGFpbnQgZm9yIGl0cyBwYWdlIik7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2VzcywgIm1ha2VWaWV3QmxhbmtJZlVucGFpbnRlZFNpbmNlTGFzdExvYWRDb21t
aXQ6IE1ha2luZyB0aGUgdmlldyBibGFuayBiZWNhdXNlIG9mIGEgSlMgcHJvbXB0IGJlZm9yZSB0
aGUgZmlyc3QgcGFpbnQgZm9yIGl0cyBwYWdlIik7CiAgICAgICAgICAgICBwYWdlQ2xpZW50KCku
bWFrZVZpZXdCbGFuayh0cnVlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTMzNDcsNyArMzM0Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJy
aWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZl
ZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2
aWdhdGlvbkFjdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6V2Vic2l0
ZVBvbGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVy
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlY2VpdmVkTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1LCBwb2xp
Y3lBY3Rpb249JXUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbik7Cisg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbjogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0
aW9uPSV1IiwgZnJhbWUuZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24pOwogCiAgICAg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3Rv
cmUuY29weVJlZigpOwogICAgIGlmIChwb2xpY2llcykgewpAQCAtMzQwOSwxMCArMzQwNSwxMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBib29sIHNob3VsZFByb2Nlc3NTd2Fw
ID0gcHJvY2Vzc0Zvck5hdmlnYXRpb24ucHRyKCkgIT0gc291cmNlUHJvY2Vzcy5wdHIoKTsKICAg
ICAgICAgaWYgKHNob3VsZFByb2Nlc3NTd2FwKSB7CiAgICAgICAgICAgICBwb2xpY3lBY3Rpb24g
PSBQb2xpY3lBY3Rpb246OlN0b3BBbGxMb2FkczsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
biwgc3dhcHBpbmcgcHJvY2VzcyAlaSB3aXRoIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJl
YXNvbj0lIiBQVUJMSUNfTE9HX1NUUklORywgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvY2Vzc0Zv
ck5hdmlnYXRpb24tPnByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLCBzd2FwcGluZyBwcm9jZXNzICVpIHdpdGgg
cHJvY2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29uPSUiIFBVQkxJQ19MT0dfU1RSSU5HLCBw
cm9jZXNzSWRlbnRpZmllcigpLCBwcm9jZXNzRm9yTmF2aWdhdGlvbi0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2Fw
cGluZywgIihQcm9jZXNzU3dhcHBpbmcpIFN3aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3
IHByb2Nlc3MgKCVpKSBmb3IgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIiwgcHJvY2Vzc0lk
ZW50aWZpZXIoKSwgcHJvY2Vzc0Zvck5hdmlnYXRpb24tPnByb2Nlc3NJZGVudGlmaWVyKCksIG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoga2VlcCB1c2luZyBw
cm9jZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19TVFJJTkcsIHBy
b2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOiBrZWVwIHVzaW5nIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJl
YXNvbj0lIiBQVUJMSUNfTE9HX1NUUklORywgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uLnV0
ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gb3B0aW9uYWxIYW5kbGU7CiAgICAgICAgIGlmIChzaG91bGRQcm9jZXNzU3dhcCkgewpAQCAt
MzQ5MSw3ICszNDg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNp
b24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGNv
bnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRM
ZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6
SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1v
dXNlRXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQogewogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3By
b3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQ
SUQ9JWkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkp
OwogCiAgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJREluUHJldmlvdXNQ
cm9jZXNzID0gbV9tYWluRnJhbWUgPyBtYWtlT3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQo
KSkgOiBXVEY6Om51bGxvcHQ7CiAKQEAgLTM1MjksMTIgKzM1MjUsMTIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBu
ZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNp
ZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzOiBuZXdQcm9jZXNzUElEPSVpLCBoYXNTdXNwZW5kZWRQYWdlPSVp
IiwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlKTsKKyAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzczogbmV3UHJvY2Vzc1BJRD0laSwgaGFzU3VzcGVuZGVkUGFnZT0laSIsIG5ld1By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZSk7CiAgICAgTE9HKExv
YWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3
ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2lu
Z1N0cmluZygpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbmV3UHJvY2Vzcy0+aXNJblByb2Nlc3ND
YWNoZSgpKTsKIAogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2VzczogVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgcHJvdmlzaW9uYWwgbG9hZCwgY2Fu
Y2VsbGluZyBpdCAocHJvdmlzb25hbE5hdmlnYXRpb25JRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxs
dSkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubmF2aWdh
dGlvbklEKCkpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBw
aW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiBUaGVyZSBpcyBhbHJlYWR5IGEg
cGVuZGluZyBwcm92aXNpb25hbCBsb2FkLCBjYW5jZWxsaW5nIGl0IChwcm92aXNvbmFsTmF2aWdh
dGlvbklEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1KSIsIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgICAgIGlmIChtX3By
b3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCkgIT0gbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQo
KSkKICAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5jYW5jZWwoKTsKICAgICAgICAgbV9w
cm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwpAQCAtMzY2Nyw3ICszNjYzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
c3VzcGVuZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInN1c3Bl
bmQ6Iik7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNTdXNwZW5kZWQpCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKQEAgLTM2NzcsNyArMzY3
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN1bWU6Iik7CisgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJyZXN1bWU6Iik7CiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkgfHwgIW1faXNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zNzIzLDcgKzM3MTksNyBAQCBTZXNzaW9uU3RhdGUgV2Vi
UGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2Fy
ZExpc3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVG
cm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNz
aW9uU3RhdGU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJyZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZToiKTsKIAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVy
VHJlZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsK
QEAgLTQ1NDEsNyArNDUzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICAgICAgbmF2
aWdhdGlvbiA9IG5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAog
ICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlk
ICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQg
IiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRC50b1VJbnQ2NCgpLCBu
YXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBm
cmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZy
YW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0byB0cmFuc2Fj
dGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0
ZS5jbGVhclBlbmRpbmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uKTsKQEAgLTQ1NzgsNyArNDU3NCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgVVJMJiYgdXJsLCBTCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Ms
IGZyYW1lKTsKIAogICAgIGlmICghY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91
c1dlYlByb2Nlc3MobV9wcm9jZXNzLCB1cmwpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIFdlYlBhZ2VQcm94eTo6RGlkRXhwbGljaXRP
cGVuRm9yRnJhbWUoKSBJUEMgZnJvbSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGJlY2F1c2UgdGhl
IGZpbGUgVVJMIGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKKyAgICAgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJJZ25vcmluZyBXZWJQYWdlUHJveHk6OkRpZEV4
cGxpY2l0T3BlbkZvckZyYW1lKCkgSVBDIGZyb20gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBiZWNh
dXNlIHRoZSBmaWxlIFVSTCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQ2MDMsNyArNDU5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRp
bmcsICJXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1
NjQgIiwgdXJsICVzIiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUlu
dDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNDYzMiw3ICs0NjI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjwKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2ViQ29y
ZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhM
b2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEPSUiIFBS
SXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ2NDUsNyArNDY0MSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1l
SUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxF
QVNFX0xPRyhMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogZnJhbWVJ
RD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NjkzLDcgKzQ2ODksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBGcmFtZQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29u
dGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKIHsKICAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0
ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0
byBwcm92aXNpb25hbFVSTCAlcyIsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKLSAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGRvbWFpbj0lcywgY29kZT0lZCIsIGZy
YW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJy
b3JDb2RlKCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAi
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAiLCBkb21h
aW49JXMsIGNvZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ3NjQsNyArNDc2MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVBy
b3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBS
SXU2NCwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJh
Y2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2Fy
ZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFt
ZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9
JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDg4OCw3ICs0ODg0LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgRnJhbWVJbmZvRGF0YSYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQ
Ukl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1
NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTE2LDcgKzQ5MTIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHVpbnQ2NAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExv
YWRGb3JGcmFtZSAtIFdlYlBhZ2VQcm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQg
IiBkaWRGaW5pc2hMb2FkIiwgdGhpcywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhM
b2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VD
bGllbnQoKSk7CiAKQEAgLTQ5NjcsNyArNDk2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEm
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQg
IiwgZG9tYWluPSVzLCBjb2RlPSVkIiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJvci5kb21haW4o
KS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUi
IFBSSXU2NCAiLCBkb21haW49JXMsIGNvZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9y
LmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMTIsNyArNTAw
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZy
YW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01MTk4LDcgKzUx
OTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRl
cj4mJiBzZW5kZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9
JWxsdSIsIGZyYW1lLmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOworICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSIsIGZyYW1lLmZyYW1lSUQo
KS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMs
IGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBA
IC01MjE0LDcgKzUyMTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICBtX3Bh
Z2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbik7CiAKICAgICBp
ZiAoIWNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKHByb2Nl
c3MsIHJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2Ug
YmVjYXVzZSBpdCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7CisgICAgICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRo
aXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKICAg
ICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCks
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAs
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNTI4MCw3ICs1Mjc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRl
clVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4g
cmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOworICAg
ICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIklnbm9yaW5nIHJl
cXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFuZGxlZCBi
eSBjb250ZW50IGZpbHRlciIpOwogICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2
aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShz
ZW5kZXIpKTsKICAgICB9CiAjZW5kaWYKQEAgLTUyOTUsNyArNTI5MSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzCiAjZW5kaWYKIAogICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1l
LnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciks
IG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIGZyYW1lSW5mbywgdXNlckRhdGFPYmplY3Qg
PSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBw
b2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJu
aW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZERvbWFp
bikgbXV0YWJsZSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNhbGxlZDogZnJhbWVJRD0l
bGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1LCBzYWZlQnJvd3NpbmdXYXJu
aW5nPSVkLCBpc0FwcEJvdW5kRG9tYWluPSVkIiwgZnJhbWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgp
LCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQp
cG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3VuZERvbWFpbik7
CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjogbGlzdGVuZXIgY2FsbGVkOiBmcmFtZUlEPSVsbHUsIG5hdmln
YXRpb25JRD0lbGx1LCBwb2xpY3lBY3Rpb249JXUsIHNhZmVCcm93c2luZ1dhcm5pbmc9JWQsIGlz
QXBwQm91bmREb21haW49JWQiLCBmcmFtZS0+ZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRp
b24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rp
b24sICEhc2FmZUJyb3dzaW5nV2FybmluZywgISFpc0FwcEJvdW5kRG9tYWluKTsKIAogICAgICAg
ICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMsIGZyYW1lLCBz
ZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24gPSBX
VEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBw
b2xpY2llcyA9IG1ha2VSZWZQdHIocG9saWNpZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
bikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKQEAg
LTUzMTQsNyArNTMxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgICAgICBp
ZiAoIXNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGZy
YW1lLT5pc01haW5GcmFtZSgpLCBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBp
c0FwcEJvdW5kRG9tYWluKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBlcnJvckZv
clVucGVybWl0dGVkQXBwQm91bmREb21haW5OYXZpZ2F0aW9uKG5hdmlnYXRpb24tPmN1cnJlbnRS
ZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgRnJhbWVJbmZvRGF0YSB7
IGZyYW1lSW5mbyB9LCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgdXNlckRhdGFPYmplY3QpOwot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgIkln
bm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBpcyBh
dHRlbXB0aW5nIHRvIG5hdmlnYXRlIGF3YXkgZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIG9yIG5h
dmlnYXRlIGFmdGVyIHVzaW5nIHJlc3RyaWN0ZWQgQVBJcyIpOworICAgICAgICAgICAgICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiSWdub3JpbmcgcmVxdWVzdCB0
byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIGF0dGVtcHRpbmcgdG8gbmF2
aWdhdGUgYXdheSBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4gb3IgbmF2aWdhdGUgYWZ0ZXIgdXNp
bmcgcmVzdHJpY3RlZCBBUElzIik7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
UG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KQEAgLTU1OTAsNyArNTU4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUm
IHN0b3JlLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDoiKTsK
KyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhU2hhcmVkOiIpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTYxMCw3ICs1NjA2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmlu
ZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlE
LnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50
b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTU2MzcsNyArNTYzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJm
b3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNl
cnZlclJlZGlyZWN0OiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAi
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiIpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTc2Nyw3ICs1NzYzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNsb3NlUGFnZSgpCiAgICAgaWYgKGlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImNsb3NlUGFnZToiKTsK
KyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImNsb3NlUGFnZToiKTsKICAg
ICBwYWdlQ2xpZW50KCkuY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKICAgICBtX3VpQ2xpZW50LT5j
bG9zZSh0aGlzKTsKIH0KQEAgLTc0ODgsNyArNzQ4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpm
b2N1c2VkRnJhbWVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4mIGZyYW1l
SUQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkK
IHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJP
UihQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZToiKTsKIAogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzUwMCw3ICs3NDk2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZl
OiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAicHJvY2Vzc0RpZEJl
Y29tZVJlc3BvbnNpdmU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTc1NDEsNyArNzUzNyw3IEBAIFVSTCBXZWJQYWdlUHJveHk6OmN1cnJl
bnRSZXNvdXJjZURpcmVjdG9yeVVSTCgpIGNvbnN0CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRT
dGF0ZUFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFz
b24pCiB7CiAgICAgaWYgKHJlYXNvbiAhPSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmln
YXRpb25Td2FwKQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3Ms
ICJwcm9jZXNzRGlkVGVybWluYXRlOiAocGlkICVkKSwgcmVhc29uICVkIiwgcHJvY2Vzc0lkZW50
aWZpZXIoKSwgcmVhc29uKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9S
KFByb2Nlc3MsICJwcm9jZXNzRGlkVGVybWluYXRlOiAocGlkICVkKSwgcmVhc29uICVkIiwgcHJv
Y2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uKTsKIAogICAgIEFTU0VSVChtX2hhc1J1bm5pbmdQcm9j
ZXNzKTsKIApAQCAtNzU5NSw3ICs3NTkxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24gcmVhc29uKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZTogcmVhc29uPSVkIiwgcmVh
c29uKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImRpc3Bh
dGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZTogcmVhc29uPSVkIiwgcmVhc29uKTsKIAogICAgIGJvb2wg
aGFuZGxlZEJ5Q2xpZW50ID0gZmFsc2U7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQpAQCAtNzYx
MiwxMSArNzYwOCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0ZXJQcm9jZXNz
VGVybWluYXRpb24oKQogICAgIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIuc3RvcCgpOwog
CiAgICAgaWYgKCsrbV9yZWNlbnRDcmFzaENvdW50ID4gbWF4aW11bVdlYlByb2Nlc3NSZWxhdW5j
aEF0dGVtcHRzKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vz
cywgInRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNyYXNoZWQgYW5k
IHRoZSBjbGllbnQgZGlkIG5vdCBoYW5kbGUgaXQsIG5vdCByZWxvYWRpbmcgdGhlIHBhZ2UgYmVj
YXVzZSB3ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhdHRlbXB0cyIpOworICAgICAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgInRyeVJlbG9hZEFmdGVy
UHJvY2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNyYXNoZWQgYW5kIHRoZSBjbGllbnQgZGlkIG5v
dCBoYW5kbGUgaXQsIG5vdCByZWxvYWRpbmcgdGhlIHBhZ2UgYmVjYXVzZSB3ZSByZWFjaGVkIHRo
ZSBtYXhpbXVtIG51bWJlciBvZiBhdHRlbXB0cyIpOwogICAgICAgICBtX3JlY2VudENyYXNoQ291
bnQgPSAwOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2VzcywgInRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNy
YXNoZWQgYW5kIHRoZSBjbGllbnQgZGlkIG5vdCBoYW5kbGUgaXQsIHJlbG9hZGluZyB0aGUgcGFn
ZSIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAidHJ5UmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb246IHByb2Nlc3MgY3Jhc2hlZCBhbmQgdGhlIGNsaWVudCBkaWQg
bm90IGhhbmRsZSBpdCwgcmVsb2FkaW5nIHRoZSBwYWdlIik7CiAgICAgcmVsb2FkKFJlbG9hZE9w
dGlvbjo6RXhwaXJlZE9ubHkpOwogfQogCkBAIC04MjYzLDE2ICs4MjU5LDE2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2Uo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRf
dCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChTdG9yYWdlLCAicmVxdWVzdFN0b3JhZ2VTcGFjZSBmb3IgZnJh
bWUgJSIgUFJJdTY0ICIsIGN1cnJlbnQgcXVvdGEgJSIgUFJJdTY0ICIgY3VycmVudCB1c2FnZSAl
IiBQUkl1NjQgIiBleHBlY3RlZCB1c2FnZSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwg
Y3VycmVudFF1b3RhLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSk7CisgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNwYWNlIGZv
ciBmcmFtZSAlIiBQUkl1NjQgIiwgY3VycmVudCBxdW90YSAlIiBQUkl1NjQgIiBjdXJyZW50IHVz
YWdlICUiIFBSSXU2NCAiIGV4cGVjdGVkIHVzYWdlICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2
NCgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlKTsK
IAogICAgIFN0b3JhZ2VSZXF1ZXN0czo6c2luZ2xldG9uKCkucHJvY2Vzc09yQXBwZW5kKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VVUkwgPSBjdXJyZW50VVJMKCks
IGZyYW1lSUQsIG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1
cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhw
ZWN0ZWRVc2FnZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgdGhpcy0+bWFrZVN0b3JhZ2VTcGFjZVJlcXVlc3QoZnJh
bWVJRCwgb3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lLCBkaXNwbGF5TmFtZSwgY3VycmVu
dFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3Rl
ZFVzYWdlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZy
YW1lSUQsIHBhZ2VVUkwgPSBXVEZNb3ZlKHBhZ2VVUkwpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjdXJyZW50UXVvdGFdKGF1dG8gcXVvdGEpIG11dGFi
bGUgewogCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFN0b3JhZ2UsICJyZXF1
ZXN0U3RvcmFnZVNwYWNlIHJlc3BvbnNlIGZvciBmcmFtZSAlIiBQUkl1NjQgIiwgcXVvdGEgJSIg
UFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCksIHF1b3RhKTsKKyAgICAgICAgICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhTdG9yYWdlLCAicmVxdWVzdFN0b3JhZ2VTcGFjZSByZXNwb25zZSBm
b3IgZnJhbWUgJSIgUFJJdTY0ICIsIHF1b3RhICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgp
LCBxdW90YSk7CiAgICAgICAgICAgICBVTlVTRURfVkFSSUFCTEUoZnJhbWVJRCk7CiAKICAgICAg
ICAgICAgIGlmIChxdW90YSA8PSBjdXJyZW50UXVvdGEgJiYgdGhpcy0+Y3VycmVudFVSTCgpID09
IHBhZ2VVUkwpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFN0b3Jh
Z2UsICJzdG9yYWdlIHNwYWNlIGluY3JlYXNlIGRlbmllZCIpOworICAgICAgICAgICAgICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhTdG9yYWdlLCAic3RvcmFnZSBzcGFjZSBpbmNyZWFzZSBk
ZW5pZWQiKTsKICAgICAgICAgICAgICAgICBtX2lzUXVvdGFJbmNyZWFzZURlbmllZCA9ICB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocXVvdGEpOwpA
QCAtOTM2MSw3ICs5MzU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVJlcG9ydGVkTWVk
aWFDYXB0dXJlU3RhdGUoKQogICAgIGlmICghaGF2ZVJlcG9ydGVkQ2FwdHVyZSAmJiB3aWxsUmVw
b3J0Q2FwdHVyZSkKICAgICAgICAgbV91cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlVGlt
ZXIuc3RhcnRPbmVTaG90KG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkpOwogCi0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChXZWJSVEMsICJ1cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0
YXRlOiBmcm9tICVkIHRvICVkIiwgbV9yZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlLnRvUmF3KCks
IGFjdGl2ZUNhcHR1cmVTdGF0ZS50b1JhdygpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coV2ViUlRDLCAidXBkYXRlUmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZTogZnJvbSAlZCB0byAl
ZCIsIG1fcmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZS50b1JhdygpLCBhY3RpdmVDYXB0dXJlU3Rh
dGUudG9SYXcoKSk7CiAKICAgICBib29sIG1pY3JvcGhvbmVDYXB0dXJlQ2hhbmdlZCA9IChtX3Jl
cG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVNYXNr
KSAhPSAoYWN0aXZlQ2FwdHVyZVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9DYXB0dXJlTWFz
ayk7CiAgICAgYm9vbCBjYW1lcmFDYXB0dXJlQ2hhbmdlZCA9IChtX3JlcG9ydGVkTWVkaWFDYXB0
dXJlU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVNYXNrKSAhPSAoYWN0aXZlQ2Fw
dHVyZVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6VmlkZW9DYXB0dXJlTWFzayk7CkBAIC05NjAwLDEz
ICs5NTk2LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rp
c21pc3NlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRFeGNlZWRJbmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUoKQogewotICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkRXhjZWVkSW5h
Y3RpdmVNZW1vcnlMaW1pdFdoaWxlQWN0aXZlIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGlt
aXRXaGlsZUFjdGl2ZSIpOwogICAgIG1fdWlDbGllbnQtPmRpZEV4Y2VlZEJhY2tncm91bmRSZXNv
dXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQoKnRoaXMsIGtXS1Jlc291cmNlTGltaXRNZW1vcnkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hp
bGVJbkZvcmVncm91bmQoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUGVy
Zm9ybWFuY2VMb2dnaW5nLCAiZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZvcmVn
cm91bmQiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VM
b2dnaW5nLCAiZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZvcmVncm91bmQiKTsK
ICAgICBtX3VpQ2xpZW50LT5kaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5G
b3JlZ3JvdW5kKCp0aGlzLCBrV0tSZXNvdXJjZUxpbWl0Q1BVKTsKIH0KIApAQCAtMTA0MTQsNyAr
MTA0MTAsOCBAQCBMb2dnZXImIFdlYlBhZ2VQcm94eTo6bG9nZ2VyKCkKIHsKICAgICBpZiAoIW1f
bG9nZ2VyKSB7CiAgICAgICAgIG1fbG9nZ2VyID0gTG9nZ2VyOjpjcmVhdGUodGhpcyk7Ci0gICAg
ICAgIG1fbG9nZ2VyLT5zZXRFbmFibGVkKHRoaXMsIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
KTsKKyAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyByZWFsbHkgbmVlZCB0byBiZSBkaXNhYmxl
ZCBpbiBlcGhlbWVyYWwgc2Vzc2lvbnM/CisgICAgICAgIG1fbG9nZ2VyLT5zZXRFbmFibGVkKHRo
aXMsICFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gKm1f
bG9nZ2VyOwpAQCAtMTA2NzMsNyArMTA2NzAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJB
cHBCb3VuZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbAog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQK
KyN1bmRlZiBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0cKKyN1bmRlZiBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0dfRVJST1IKICN1bmRlZiBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04KICN1bmRlZiBN
RVNTQUdFX0NIRUNLX1VSTAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjc2YzdjMzAwYzQ0ODYwZmM4MjIzNmJjNjRhZjZmNTA0
YjgzNWFlNS4uYTFjMTNkOWYwMGE5OThmMjU4ZWZjYWRkZmQxYWY5ZDJmYjQ1M2RlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1ODgsNyArMTU4OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFdl
YkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpIGZpbmFs
OwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6UGxheWJh
Y2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBw
bGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENs
aWVudENvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBib29sIGFsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsg
fQorICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOyB9CiAgICAgYm9vbCB1c2Vp
VHVuZXNBVk91dHB1dENvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBQbGF0Zm9ybVZpZXcqIHBs
YXRmb3JtVmlldygpIGNvbnN0IGZpbmFsOwogCkBAIC0xNjIyLDggKzE2MjIsNiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc05ldmVyUmljaGx5RWRpdGFibGVGb3JUb3VjaEJhcigpIGNvbnN0IHsgcmV0
dXJuIG1faXNOZXZlclJpY2hseUVkaXRhYmxlRm9yVG91Y2hCYXI7IH0KICNlbmRpZgogCi0gICAg
Ym9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQogI2lmIEVOQUJMRShHQU1F
UEFEKQogICAgIHZvaWQgZ2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4m
LCBXZWJDb3JlOjpFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKTsKICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="451196"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429908</attachid>
            <date>2021-05-27 11:56:47 -0700</date>
            <delta_ts>2021-05-27 12:32:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226342-20210527115646.patch</filename>
            <type>text/plain</type>
            <size>98226</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliNDk4OGJlYjYyZmU4MjE2
NmIwMDU2ZDk5N2E1YjQ2Yjk0M2VkYWEuLjJjZjA1NWViZGU2NTVlOGMyMzY5MTcwOGRkYmZhNjA2
NGFjNGQ1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA1LTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIFdlYlBhZ2VQcm94eSdz
IHJlbGVhc2UgbG9nZ2luZyBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBXZWJQYWdlUHJveHkncyByZWxl
YXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zLiBPdXIgcmVsZWFzZSBsb2dnaW5nIGRv
ZXNuJ3QKKyAgICAgICAgY29udGFpbiBhbnl0aGluZyBzZW5zaXRpdmUgYW5kIG5vdCBoYXZpbmcg
dGhpcyBsb2dnaW5nIG1ha2VzIGl0IGhhcmQgdG8gZGVidWcgaXNzdWVzIGluCisgICAgICAgIGFw
cHMgdXNpbmcgZXBoZW1lcmFsIHNlc3Npb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhp
bnRzKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVT
dGFydEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgpOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6cHJlc2VudFZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnRyeUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVk
T3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxlQWN0aXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtE
dWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RTdG9yYWdlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZv
cmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvZ2dlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDIxLTA1LTI3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRk
IHZhbGlkYXRpb24gd2hlbiByZWFkaW5nIERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyOjp3
YWl0aW5nU3RhdHVzIGluIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDhjYzMzOTc2YzMzNDY1
MzM3ZDU2MDAwMjA1YzNmNTNlMTYyODYxNDkuLjU5YTNmNTEzZmEwYTU2MzA2NDkzMjVjOTkxMDJj
YzMwN2VjYWRkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCkBAIC03OCw3ICs3OCw3IEBAIC0gKHZvaWQpX2FjdGlvbjooaWQpc2VuZGVy
IFwKICAgICAgICAgW19jb250ZW50VmlldyBfYWN0aW9uICMjIEZvcldlYlZpZXc6c2VuZGVyXTsg
XAogfQogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoLi4uKSBSRUxFQVNFX0xPR19J
RihfcGFnZSAmJiBfcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFZpZXdTdGF0ZSwg
X19WQV9BUkdTX18pCisjZGVmaW5lIFdLV0VCVklFV19SRUxFQVNFX0xPRyguLi4pIFJFTEVBU0Vf
TE9HKFZpZXdTdGF0ZSwgX19WQV9BUkdTX18pCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlbGF5
QmVmb3JlTm9WaXNpYmxlQ29udGVudHNSZWN0c0xvZ2dpbmcgPSAxX3M7CiBzdGF0aWMgY29uc3Qg
U2Vjb25kcyBkZWxheUJlZm9yZU5vQ29tbWl0c0xvZ2dpbmcgPSA1X3M7CkBAIC02ODYsMTMgKzY4
NiwxMyBAQCAtICh2b2lkKV9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXQKIAogLSAodm9pZClfcHJv
Y2Vzc1dpbGxTd2FwCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZp
ZXcgX3Byb2Nlc3NXaWxsU3dhcF0iLCBzZWxmKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0co
IiVwIC1bV0tXZWJWaWV3IF9wcm9jZXNzV2lsbFN3YXBdIiwgc2VsZik7CiAgICAgW3NlbGYgX3By
b2Nlc3NXaWxsU3dhcE9yRGlkRXhpdF07CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX3Byb2Nlc3NEaWRF
eGl0XSIsIHNlbGYpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcg
X3Byb2Nlc3NEaWRFeGl0XSIsIHNlbGYpOwogCiAgICAgW3NlbGYgX3Byb2Nlc3NXaWxsU3dhcE9y
RGlkRXhpdF07CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdAog
CiAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3MKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAtW1dLV2ViVmlldyBfZGlkUmVsYXVuY2hQcm9jZXNzXSIsIHNlbGYpOworICAgIFdL
V0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcgX2RpZFJlbGF1bmNoUHJvY2Vzc10i
LCBzZWxmKTsKICAgICBfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGUgPSBOTzsKICAgICBf
dmlld1N0YWJpbGl0eVdoZW5WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVTY2hlZHVsZWQgPSB7IH07
CiAgICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKQEAgLTc4NiwxNCArNzg2LDE0IEBAIC0gKHZv
aWQpX2RpZENvbW1pdExheWVyVHJlZUR1cmluZ0FuaW1hdGVkUmVzaXplOihjb25zdCBXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyCiAtICh2b2lkKV90cmFja1RyYW5zYWN0aW9uQ29tbWl0Oihjb25z
dCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlv
bgogewogICAgIGlmIChfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFi
bGVTY3JvbGxWaWV3KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAorICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAogICAgICAgICBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpLCBf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSwgX25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1p
dExvYWRGb3JNYWluRnJhbWUsIF9maXJzdFBhaW50QWZ0ZXJDb21taXRMb2FkVHJhbnNhY3Rpb25J
RC50b1VJbnQ2NCgpLCBbX2NvbnRlbnRWaWV3IHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlXSwgW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSwgX2N1cnJlbnRs
eUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCk7CiAgICAgfQogCiAgICAgaWYg
KF90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0KSB7
CiAgICAgICAgIGF1dG8gdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPSBN
b25vdG9uaWNUaW1lOjpub3coKSAtICpfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVXaXRoUGVuZGluZ0NvbW1pdDsKICAgICAgICAgaWYgKHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdp
dGhQZW5kaW5nQ29tbWl0ID4gZGVsYXlCZWZvcmVOb0NvbW1pdHNMb2dnaW5nKQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJW
aWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZz
IGFmdGVyIHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklE
ICVsbHUiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZp
cnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9u
LnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxF
QVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXll
clRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29u
dGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklEICVsbHUiLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5k
aW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50
b1VJbnQ2NCgpKTsKICAgICAgICAgX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
V2l0aFBlbmRpbmdDb21taXQgPSBXVEY6Om51bGxvcHQ7CiAgICAgfQogfQpAQCAtODkzLDcgKzg5
Myw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlCiAgICAgfQogCiAgICAgaWYgKF9yZXNpemVB
bmltYXRpb25WaWV3KQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2Vi
VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSBkeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlIGlz
IE5vdFJlc2l6aW5nLCBidXQgc3RpbGwgaGF2ZSBhIGxpdmUgcmVzaXplQW5pbWF0aW9uVmlldyAo
dW5wYWlyZWQgYmVnaW4vZW5kQW5pbWF0ZWRSZXNpemU/KSIsIHNlbGYpOworICAgICAgICBXS1dF
QlZJRVdfUkVMRUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAt
IGR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgaXMgTm90UmVzaXppbmcsIGJ1dCBzdGlsbCBoYXZl
IGEgbGl2ZSByZXNpemVBbmltYXRpb25WaWV3ICh1bnBhaXJlZCBiZWdpbi9lbmRBbmltYXRlZFJl
c2l6ZT8pIiwgc2VsZik7CiAKICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld0ZvclRyYW5zYWN0
aW9uOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKIApAQCAtMTk1MSwxNCArMTk1MSwxNCBAQCAtICh2
b2lkKV9hZGRVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RQcmVDb21taXRIYW5kbGVyCiAgICAgW0NB
VHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFuZGxlcjpbcmV0YWluZWRTZWxmXSB7CiAgICAgICAgIFdL
V2ViVmlldyAqd2ViVmlldyA9IHJldGFpbmVkU2VsZi5nZXQoKTsKICAgICAgICAgaWYgKCFbd2Vi
VmlldyBfaXNWYWxpZF0pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHdlYlZpZXcuX3Bh
Z2UgJiYgd2ViVmlldy5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFZpZXdTdGF0
ZSwgIkluIENBVHJhbnNhY3Rpb24gcHJlQ29tbWl0SGFuZGxlciwgV0tXZWJWaWV3ICVwIGlzIGlu
dmFsaWQiLCB3ZWJWaWV3KTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiSW4g
Q0FUcmFuc2FjdGlvbiBwcmVDb21taXRIYW5kbGVyLCBXS1dlYlZpZXcgJXAgaXMgaW52YWxpZCIs
IHdlYlZpZXcpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgQHRy
eSB7CiAgICAgICAgICAgICBbd2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CiAg
ICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19JRih3ZWJWaWV3Ll9wYWdlICYmIHdlYlZpZXcuX3BhZ2UtPmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBWaWV3U3RhdGUsICJJbiBDQVRyYW5zYWN0aW9uIHByZUNvbW1pdEhh
bmRsZXIsIC1bV0tXZWJWaWV3ICVwIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXSB0aHJldyBh
biBleGNlcHRpb24iLCB3ZWJWaWV3KTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xP
RygiSW4gQ0FUcmFuc2FjdGlvbiBwcmVDb21taXRIYW5kbGVyLCAtW1dLV2ViVmlldyAlcCBfdXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0c10gdGhyZXcgYW4gZXhjZXB0aW9uIiwgd2ViVmlldyk7CiAg
ICAgICAgIH0KICAgICAgICAgd2ViVmlldy0+X2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRl
ID0gTk87CiAgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUHJlQ29tbWl0XTsKQEAg
LTE5NzEsNyArMTk3MSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlQWZ0ZXJTY3JvbGxJblZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sCiAgICAgaWYgKF9oYXNT
Y2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSkgewogICAgICAgICBhdXRvIHRpbWVOb3cgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgaWYgKCh0aW1lTm93IC0gX3RpbWVPZlJlcXVlc3RG
b3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpID4gZGVsYXlCZWZvcmVOb1Zpc2libGVDb250ZW50
c1JlY3RzTG9nZ2luZykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiLVtX
S1dlYlZpZXcgJXAgX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlQWZ0ZXJTY3JvbGxJ
blZpZXddOiBfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGUgaXMgdHJ1ZSBidXQgaGF2ZW4n
dCB1cGRhdGVkIHZpc2libGUgY29udGVudCByZWN0cyBmb3IgJS4yZnMgKGxhc3QgdXBkYXRlIHdh
cyAlLjJmcyBhZ28pIC0gdmFsaWQgJWQiLAorICAgICAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0Vf
TE9HKCItW1dLV2ViVmlldyAlcCBfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVBZnRl
clNjcm9sbEluVmlld106IF9oYXNTY2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSBpcyB0cnVlIGJ1
dCBoYXZlbid0IHVwZGF0ZWQgdmlzaWJsZSBjb250ZW50IHJlY3RzIGZvciAlLjJmcyAobGFzdCB1
cGRhdGUgd2FzICUuMmZzIGFnbykgLSB2YWxpZCAlZCIsCiAgICAgICAgICAgICAgICAgc2VsZiwg
KHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkudmFs
dWUoKSwgKHRpbWVOb3cgLSBfdGltZU9mTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkudmFs
dWUoKSwgW3NlbGYgX2lzVmFsaWRdKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0y
MDY2LDcgKzIwNjYsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAg
ICAgIFtfcGFzc3dvcmRWaWV3IHNldEZyYW1lOnNlbGYuYm91bmRzXTsKICAgICAgICAgW19jdXN0
b21Db250ZW50VmlldyB3ZWJfY29tcHV0ZWRDb250ZW50SW5zZXREaWRDaGFuZ2VdOwogICAgICAg
ICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uID0gWUVTOwot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHVzZXNTdGFuZGFyZENvbnRl
bnRWaWV3IGlzIE5PLCBiYWlsaW5nIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxs
dSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHVzZXNTdGFuZGFy
ZENvbnRlbnRWaWV3IGlzIE5PLCBiYWlsaW5nIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA3NCwxMyArMjA3NCwx
MyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgaWYgKF90aW1lT2ZG
aXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0KSB7CiAgICAgICAg
IGF1dG8gdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPSB0aW1lTm93IC0g
Kl90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0Owog
ICAgICAgICBpZiAodGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPiBkZWxh
eUJlZm9yZU5vQ29tbWl0c0xvZ2dpbmcpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHM6XSAtIGhhdmUgbm90IHJlY2VpdmVkIGEgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2li
bGUgY29udGVudCByZWN0IHVwZGF0ZTsgbGFzdFRyYW5zYWN0aW9uSUQgJWxsdSIsIHNlbGYsIF9w
YWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBl
bmRpbmdDb21taXQudmFsdWUoKSwgX2xhc3RUcmFuc2FjdGlvbklELnRvVUludDY0KCkpOworICAg
ICAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIGhhdmUgbm90IHJlY2VpdmVk
IGEgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZTsgbGFzdFRy
YW5zYWN0aW9uSUQgJWxsdSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
dGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQudmFsdWUoKSwgX2xhc3RUcmFu
c2FjdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KIAogICAgIGlmIChfaW52b2tpbmdVSVNjcm9s
bFZpZXdEZWxlZ2F0ZUNhbGxiYWNrKSB7CiAgICAgICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHNGb3JVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrID0gWUVTOwogICAgICAg
ICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uID0gWUVTOwot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIF9pbnZva2luZ1VJU2Nyb2xs
Vmlld0RlbGVnYXRlQ2FsbGJhY2sgaXMgWUVTLCBiYWlsaW5nIiwgc2VsZiwgX3BhZ2UtPmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAo
cGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6
XSAtIF9pbnZva2luZ1VJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2sgaXMgWUVTLCBiYWlsaW5n
Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMjA5MywxMyArMjA5MywxMyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzCiAgICAgICAgIHx8IF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5z
ZXRzRm9yS2V5Ym9hcmQpIHsKICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRS
ZWN0c0ZvckFueVJlYXNvbiA9IFlFUzsKICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0c0ZvclVuc3RhYmxlU2Nyb2xsVmlldyA9IFlFUzsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVW
aXNpYmxlQ29udGVudFJlY3RzOl0gLSBzY3JvbGwgdmlldyBzdGF0ZSBpcyBub24tc3RhYmxlLCBi
YWlsaW5nIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCwgX25lZWRzUmVzZXRWaWV3U3Rh
dGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUgJWQsIHNpemVDaGFuZ2VkU2luY2VMYXN0Vmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlICVkLCBbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICVk
LCBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0ZvcktleWJvYXJkICVkKSIsCisg
ICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tX
ZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0gLSBzY3JvbGwgdmlldyBzdGF0ZSBp
cyBub24tc3RhYmxlLCBiYWlsaW5nIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCwgX25l
ZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUgJWQsIHNpemVDaGFu
Z2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlICVkLCBbX3Njcm9sbFZpZXcgaXNa
b29tQm91bmNpbmddICVkLCBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0Zvcktl
eWJvYXJkICVkKSIsCiAgICAgICAgICAgICBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlLCBfbmVlZHNSZXNldFZpZXdTdGF0ZUFm
dGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSwgW19jb250ZW50VmlldyBzaXplQ2hhbmdlZFNpbmNl
TGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZV0sIFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2lu
Z10sIF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250
ZW50UmVjdHNGb3JBbnlSZWFzb24pCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVw
IChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
czpdIC0gcGVyZm9ybWluZyBmaXJzdCB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGUgYWZ0ZXIg
ZGVmZXJyaW5nIHVwZGF0ZXMiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAt
W1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0gcGVyZm9ybWluZyBmaXJz
dCB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGUgYWZ0ZXIgZGVmZXJyaW5nIHVwZGF0ZXMiLCBz
ZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgX2RpZERlZmVyVXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvclVJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2sgPSBO
TzsKICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFibGVTY3Jv
bGxWaWV3ID0gTk87CkBAIC0yMTUzLDcgKzIxNTMsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzCiAgICAgfQogCiAgICAgaWYgKCh0aW1lTm93IC0gX3RpbWVPZlJlcXVlc3RG
b3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpID4gZGVsYXlCZWZvcmVOb1Zpc2libGVDb250ZW50
c1JlY3RzTG9nZ2luZykKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dl
YlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSBmaW5hbGx5IHJhbiAlLjJmcyBhZnRl
ciBiZWluZyBzY2hlZHVsZWQiLCBzZWxmLCAodGltZU5vdyAtIF90aW1lT2ZSZXF1ZXN0Rm9yVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlKS52YWx1ZSgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVB
U0VfTE9HKCIlcCAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIGZpbmFs
bHkgcmFuICUuMmZzIGFmdGVyIGJlaW5nIHNjaGVkdWxlZCIsIHNlbGYsICh0aW1lTm93IC0gX3Rp
bWVPZlJlcXVlc3RGb3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLnZhbHVlKCkpOwogCiAgICAg
X2Fsd2F5c1NlbmROZXh0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gTk87CiAgICAgX3RpbWVP
Zkxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPSB0aW1lTm93OwpAQCAtMjE3OSw3ICsyMTc5
LDcgQEAgc3RhdGljIGludDMyX3QgYWN0aXZlT3JpZW50YXRpb24oV0tXZWJWaWV3ICp3ZWJWaWV3
KQogCiAtICh2b2lkKV9jYW5jZWxBbmltYXRlZFJlc2l6ZQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfY2FuY2VsQW5pbWF0
ZWRSZXNpemVdIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkIiwgc2VsZiwgX3BhZ2UtPmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CisgICAg
V0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcg
X2NhbmNlbEFuaW1hdGVkUmVzaXplXSBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCIsIHNl
bGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGUpOwogCiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IFdlYktpdDo6
RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6Tm90UmVzaXppbmcpCiAgICAgICAgIHJldHVybjsK
QEAgLTIyMTEsMTIgKzIyMTEsMTIgQEAgLSAodm9pZClfZGlkQ29tcGxldGVBbmltYXRlZFJlc2l6
ZQogCiAgICAgaWYgKCFfcmVzaXplQW5pbWF0aW9uVmlldykgewogICAgICAgICAvLyBQYXJhbm9p
YS4gSWYgX3Jlc2l6ZUFuaW1hdGlvblZpZXcgaXMgbnVsbCB3ZSdsbCBlbmQgdXAgc2V0dGluZyBh
IHplcm8gc2NhbGUgb24gdGhlIGNvbnRlbnQgdmlldy4KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemU6XSAtIF9y
ZXNpemVBbmltYXRpb25WaWV3IGlzIG5pbCIsIHNlbGYpOworICAgICAgICBXS1dFQlZJRVdfUkVM
RUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplOl0gLSBf
cmVzaXplQW5pbWF0aW9uVmlldyBpcyBuaWwiLCBzZWxmKTsKICAgICAgICAgW3NlbGYgX2NhbmNl
bEFuaW1hdGVkUmVzaXplXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29t
cGxldGVBbmltYXRlZFJlc2l6ZV0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1b
V0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplXSIsIHNlbGYsIF9wYWdlLT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBOU1VJbnRlZ2VyIGluZGV4T2ZSZXNpemVBbmlt
YXRpb25WaWV3ID0gW1tfc2Nyb2xsVmlldyBzdWJ2aWV3c10gaW5kZXhPZk9iamVjdDpfcmVzaXpl
QW5pbWF0aW9uVmlldy5nZXQoKV07CiAgICAgW19zY3JvbGxWaWV3IGluc2VydFN1YnZpZXc6X2Nv
bnRlbnRWaWV3LmdldCgpIGF0SW5kZXg6aW5kZXhPZlJlc2l6ZUFuaW1hdGlvblZpZXddOwpAQCAt
Mjg4Nyw3ICsyODg3LDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVz
Oih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJW
aWV3IF9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6XSIsIHNlbGYsIF9wYWdlLT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFn
ZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRl
czpdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlID0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2Rl
OjpSZXNpemluZ1dpdGhBbmltYXRpb247CiAKQEAgLTMwMjQsNyArMzAyNCw3IEBAIC0gKHZvaWQp
X2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxv
Y2sKIAogLSAodm9pZClfZW5kQW5pbWF0ZWRSZXNpemUKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2VuZEFuaW1hdGVkUmVz
aXplXSBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCIsIHNlbGYsIF9wYWdlLT5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUpOworICAgIFdLV0VC
VklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9lbmRB
bmltYXRlZFJlc2l6ZV0gX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgJWQiLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlKTsK
IAogICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiB1cC10by1kYXRlIGxheWVyIHRyZWUsIGlt
bWVkaWF0ZWx5IGNvbXBsZXRlCiAgICAgLy8gdGhlIHJlc2l6ZS4gT3RoZXJ3aXNlLCB3ZSB3aWxs
IGRlZmVyIGNvbXBsZXRpb24gdW50aWwgd2UgZG8uCkBAIC0zMDM1LDcgKzMwMzUsNyBAQCAtICh2
b2lkKV9lbmRBbmltYXRlZFJlc2l6ZQogCiAtICh2b2lkKV9yZXNpemVXaGlsZUhpZGluZ0NvbnRl
bnRXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3Jlc2l6
ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmll
cigpLnRvVUludDY0KCkpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94
eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9yZXNpemVXaGlsZUhpZGluZ0NvbnRlbnRXaXRoVXBkYXRl
czpdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIFtzZWxm
IF9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6dXBkYXRlQmxvY2tdOwogICAgIGlmIChf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSA9PSBXZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGU6OlJlc2l6aW5nV2l0aEFuaW1hdGlvbikgewpAQCAtMzMzOSw0ICszMzM5LDYgQEAgLSAo
aWQgPF9XS1dlYlZpZXdQcmludFByb3ZpZGVyPilfcHJpbnRQcm92aWRlcgogCiBAZW5kCiAKKyN1
bmRlZiBXS1dFQlZJRVdfUkVMRUFTRV9MT0cKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KaW5kZXggZjdkNDA2MzYxZmU2ODc4ZWY3MzViMzVhOTgzNzg4Y2Q0NWUwZDRjZi4uMDczYTdi
N2M0Y2UzNjM0NTRmMmM4ZDQ4NjY2OTA3NzFjYmQ0NGMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTM2OCwxMCArMTM2OCwx
MCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eShOZXR3b3Jr
QWN0aXZpdHlSZWxlYXNlUmVhc29uIHJlYXNvbgogCiAgICAgc3dpdGNoIChyZWFzb24pIHsKICAg
ICBjYXNlIE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb246OkxvYWRDb21wbGV0ZWQ6Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNp
bmcgYmFja2dyb3VuZCBwcm9jZXNzIGFzc2VydGlvbiBiZWNhdXNlIGEgcGFnZSBsb2FkIGNvbXBs
ZXRlZCIsIHRoaXMpOworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVw
IE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNpbmcgYmFja2dyb3VuZCBwcm9jZXNzIGFzc2VydGlv
biBiZWNhdXNlIGEgcGFnZSBsb2FkIGNvbXBsZXRlZCIsIHRoaXMpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb246OlNjcmVlbkxvY2tlZDoKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRlIGlzIHJlbGVh
c2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHNjcmVlbiB3YXMg
bG9ja2VkIiwgdGhpcyk7CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
JXAgTmF2aWdhdGlvblN0YXRlIGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0
aW9uIGJlY2F1c2UgdGhlIHNjcmVlbiB3YXMgbG9ja2VkIiwgdGhpcyk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBtX25ldHdvcmtBY3Rpdml0eSA9IG51bGxwdHI7CkBAIC0xMzg4LDE3ICsx
Mzg4LDE3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRDaGFuZ2VJc0xvYWRpbmcoKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChtX3JlbGVhc2VOZXR3b3JrQWN0aXZpdHlU
aW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRihtX3dlYlZpZXct
Pl9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIE5hdmlnYXRpb25TdGF0ZSBrZWVwcyBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBi
ZWNhdXNlIGEgbmV3IHBhZ2UgbG9hZCBzdGFydGVkIiwgdGhpcyk7CisgICAgICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBzIGl0
cyBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0
ZWQiLCB0aGlzKTsKICAgICAgICAgICAgIG1fcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRpbWVyLnN0
b3AoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIW1fbmV0d29ya0FjdGl2aXR5KSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRihtX3dlYlZpZXctPl9wYWdlLT5pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5hdmlnYXRpb25TdGF0ZSBpcyB0
YWtpbmcgYSBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdlIGxvYWQgc3Rh
cnRlZCIsIHRoaXMpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICIlcCAtIE5hdmlnYXRpb25TdGF0ZSBpcyB0YWtpbmcgYSBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0
aW9uIGJlY2F1c2UgYSBwYWdlIGxvYWQgc3RhcnRlZCIsIHRoaXMpOwogICAgICAgICAgICAgbV9u
ZXR3b3JrQWN0aXZpdHkgPSBtX3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJQYWdlIExvYWQiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChtX25ldHdvcmtBY3Rpdml0eSkgewogICAgICAgICAvLyBU
aGUgYXBwbGljYXRpb24gaXMgdmlzaWJsZSBzbyB3ZSBkZWxheSByZWxlYXNpbmcgdGhlIGJhY2tn
cm91bmQgYWN0aXZpdHkgZm9yIDMgc2Vjb25kcyB0byBnaXZlIGl0IGEgY2hhbmNlIHRvIHN0YXJ0
IGFub3RoZXIgbmF2aWdhdGlvbgogICAgICAgICAvLyBiZWZvcmUgc3VzcGVuZGluZyB0aGUgV2Vi
Q29udGVudCBwcm9jZXNzIDxyZGFyOi8vcHJvYmxlbS8yNzkxMDk2ND4uCi0gICAgICAgIFJFTEVB
U0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIHdpbGwgcmVsZWFzZSBpdHMg
cHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBzb29uIGJlY2F1c2UgdGhlIHBhZ2UgbG9hZCBjb21w
bGV0ZWQiLCB0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIE5hdmlnYXRpb25TdGF0ZSB3aWxsIHJlbGVhc2UgaXRzIHByb2Nlc3MgbmV0d29yayBhc3Nl
cnRpb24gc29vbiBiZWNhdXNlIHRoZSBwYWdlIGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAg
ICAgIG1fcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRpbWVyLnN0YXJ0T25lU2hvdCgzX3MpOwogICAg
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQpp
bmRleCBmZDhjNzA3ZDk5ZTg0OTE4ZWNhMGIwN2VmZTFjOGE0Y2QyOGM0Yzg2Li5jOTBjMjk5MDRh
NGE1NTE1ZWMwOWY3M2IyZmE0NjAzNDZkMjg0YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09B
dXRob3JpemF0aW9uU2Vzc2lvbi5tbQpAQCAtNDQsNyArNDQsNyBAQAogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlICYmIG1fcGFnZS0+aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIEFwcFNTTywgIiVwIC0gW0luaXRpYXRpbmdBY3Rpb249
JXNdIFNPQXV0aG9yaXphdGlvblNlc3Npb246OiIgZm10LCB0aGlzLCB0b1N0cmluZyhtX2FjdGlv
biksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0Vf
TE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhBcHBTU08sICIlcCAtIFtJbml0aWF0aW5nQWN0aW9u
PSVzXSBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjoiIGZtdCwgdGhpcywgdG9TdHJpbmcobV9hY3Rp
b24pLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6YmVjb21lQ29tcGxldGVkKCkKIAog
dm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCgpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic2hvdWxkU3RhcnQ6Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJ
T05fUkVMRUFTRV9MT0coInNob3VsZFN0YXJ0OiIpOwogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OklkbGUpOwogICAgIGlmICghbV9wYWdlKQpAQCAtMTI3LDEyICsxMjcsMTIgQEAgdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCgpCiAKIHZvaWQgU09BdXRob3Jp
emF0aW9uU2Vzc2lvbjo6c3RhcnQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0
YXJ0OiIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJzdGFydDoiKTsK
IAogICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSB8fCBtX3N0YXRlID09IFN0YXRl
OjpXYWl0aW5nKSAmJiBtX25hdmlnYXRpb25BY3Rpb24pOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6
QWN0aXZlOwogICAgIFttX3NvQXV0aG9yaXphdGlvbiBnZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMOm1fbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpIHJlc3BvbnNlQ29kZTowIGNv
bXBsZXRpb246bWFrZUJsb2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKFNPQXV0aG9yaXphdGlvbkhpbnRzICphdXRob3JpemF0aW9uSGludHMsIE5TRXJyb3IgKmVy
cm9yKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBSZWNlaXZlIFNP
QXV0aG9yaXphdGlvbkhpbnRzIChlcnJvcj0lbGQpIiwgZXJyb3IgPyBlcnJvci5jb2RlIDogMCk7
CisgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJzdGFydDogUmVjZWl2
ZSBTT0F1dGhvcml6YXRpb25IaW50cyAoZXJyb3I9JWxkKSIsIGVycm9yID8gZXJyb3IuY29kZSA6
IDApOwogCiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgZXJyb3IgfHwgIWF1dGhvcml6YXRpb25I
aW50cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFNPQXV0
aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KCkKIAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9u
Ojpjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHMoY29uc3QgU3RyaW5nJiBo
aW50cykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVN0YXJ0QWZ0ZXJH
ZXRBdXRob3JpemF0aW9uSGludHM6IChoaW50cz0lcykiLCBoaW50cy51dGY4KCkuZGF0YSgpKTsK
KyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiY29udGludWVTdGFydEFmdGVy
R2V0QXV0aG9yaXphdGlvbkhpbnRzOiAoaGludHM9JXMpIiwgaGludHMudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKICAgICBpZiAoIW1fcGFn
ZSkKQEAgLTE1OCwxMyArMTU4LDEzIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29u
dGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhpbnRzKGNvbnN0IFN0cmluCiB2b2lkIFNP
QXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeShjb25z
dCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5JiBwb2xpY3kpCiB7CiAgICAgaWYgKHBvbGljeSA9
PSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpJZ25vcmUpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9yZSIpOworICAgICAgICBBVVRIT1JJWkFUSU9O
U0VTU0lPTl9SRUxFQVNFX0xPRygiY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNl
aXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9yZSIpOwogCiAgICAgICAgIGZhbGxC
YWNrVG9XZWJQYXRoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09B
dXRob3JpemF0aW9uTG9hZFBvbGljeTo6QWxsb3ciKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lP
Tl9SRUxFQVNFX0xPRygiY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6OkFsbG93Iik7CiAKICAgICBpZiAoIW1fc29BdXRob3Jp
emF0aW9uIHx8ICFtX3BhZ2UgfHwgIW1fbmF2aWdhdGlvbkFjdGlvbikKICAgICAgICAgcmV0dXJu
OwpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGlu
dWVTdGFydEFmdGVyRGVjaWRlUG9saWN5KGNvbnN0IFNPQXV0aG9yaXphdGlvCiAKIHZvaWQgU09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgoKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImZhbGxCYWNrVG9XZWJQYXRoOiIpOworICAgIEFVVEhPUklaQVRJT05T
RVNTSU9OX1JFTEVBU0VfTE9HKCJmYWxsQmFja1RvV2ViUGF0aDoiKTsKIAogICAgIGlmIChtX3N0
YXRlICE9IFN0YXRlOjpBY3RpdmUpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMiw3ICsyMDIsNyBA
QCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmZhbGxCYWNrVG9XZWJQYXRoKCkKIAogdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjphYm9ydCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiYWJvcnQ6Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0co
ImFib3J0OiIpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUgfHwgbV9zdGF0ZSA9
PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMjYsNyArMjI2LDcgQEAg
dm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZShOU0hUVFBVUkxSZXNwb25zZSAq
aHR0cFJlc3BvbnNlLCBOU0RhdGEgKmQKICAgICAvLyBTZXQgY29va2llcy4KICAgICBhdXRvIGNv
b2tpZXMgPSB0b0Nvb2tpZVZlY3RvcihbTlNIVFRQQ29va2llIGNvb2tpZXNXaXRoUmVzcG9uc2VI
ZWFkZXJGaWVsZHM6aHR0cFJlc3BvbnNlLmFsbEhlYWRlckZpZWxkcyBmb3JVUkw6cmVzcG9uc2Uu
dXJsKCldKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbXBsZXRlOiAoaHR0cFN0
YXR1c0NvZGU9JWQsIGhhc0Nvb2tpZXM9JWQsIGhhc0RhdGE9JWQpIiwgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSwgIWNvb2tpZXMuaXNFbXB0eSgpLCAhIWRhdGEubGVuZ3RoKTsKKyAgICBBVVRI
T1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiY29tcGxldGU6IChodHRwU3RhdHVzQ29kZT0l
ZCwgaGFzQ29va2llcz0lZCwgaGFzRGF0YT0lZCkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
LCAhY29va2llcy5pc0VtcHR5KCksICEhZGF0YS5sZW5ndGgpOwogCiAgICAgaWYgKGNvb2tpZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRlSW50ZXJuYWwocmVzcG9uc2UsIGRhdGEpOwpA
QCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGUo
TlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSwgTlNEYXRhICpkCiAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY29tcGxldGU6IENvb2tpZXMgYXJlIHNldC4iKTsKKyAgICAgICAgQVVUSE9SSVpB
VElPTlNFU1NJT05fUkVMRUFTRV9MT0coImNvbXBsZXRlOiBDb29raWVzIGFyZSBzZXQuIik7CiAK
ICAgICAgICAgY29tcGxldGVJbnRlcm5hbChyZXNwb25zZSwgZGF0YS5nZXQoKSk7CiAgICAgfSk7
CkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0
ZShOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlLCBOU0RhdGEgKmQKIAogdm9pZCBTT0F1
dGhvcml6YXRpb25TZXNzaW9uOjpwcmVzZW50Vmlld0NvbnRyb2xsZXIoU09BdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgdmlld0NvbnRyb2xsZXIsIFVJQ2FsbGJhY2sgdWlDYWxsYmFjaykKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwcmVzZW50Vmlld0NvbnRyb2xsZXI6Iik7Cisg
ICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coInByZXNlbnRWaWV3Q29udHJvbGxl
cjoiKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwogICAgIC8vIE9u
bHkgZXhwZWN0IGF0IG1vc3Qgb25lIFVJIHNlc3Npb24gZm9yIHRoZSB3aG9sZSBhdXRob3JpemF0
aW9uIHNlc3Npb24uCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNz
aW9uOjpwcmVzZW50Vmlld0NvbnRyb2xsZXIoU09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInBy
ZXNlbnRWaWV3Q29udHJvbGxlcjogQ2FsbGluZyBiZWdpblNoZWV0IG9uICVwIGZvciBzaGVldCAl
cC4iLCBwcmVzZW50aW5nV2luZG93LCBtX3NoZWV0V2luZG93LmdldCgpKTsKKyAgICBBVVRIT1JJ
WkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygicHJlc2VudFZpZXdDb250cm9sbGVyOiBDYWxsaW5n
IGJlZ2luU2hlZXQgb24gJXAgZm9yIHNoZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1fc2hl
ZXRXaW5kb3cuZ2V0KCkpOwogICAgIFtwcmVzZW50aW5nV2luZG93IGJlZ2luU2hlZXQ6bV9zaGVl
dFdpbmRvdy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogI2VsaWYgUExBVEZPUk0oSU9T
KQogICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fcGFn
ZS0+dWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKQEAgLTI5Miw3ICsyOTIs
NyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnByZXNlbnRWaWV3Q29udHJvbGxlcihT
T0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JF
TEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6Iik7CiAKICAgICBBU1NFUlQobV92aWV3
Q29udHJvbGxlcik7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMzAzLDEzICszMDMsMTMgQEAgdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQogICAgIGlm
IChtX3BhZ2UgJiYgbV9wYWdlLT5wbGF0Zm9ybVdpbmRvdygpKSB7CiAgICAgICAgIGF1dG8gKnBy
ZXNlbnRpbmdXaW5kb3cgPSBtX3BhZ2UtPnBsYXRmb3JtV2luZG93KCk7CiAgICAgICAgIGlmIChw
cmVzZW50aW5nV2luZG93Lm1pbmlhdHVyaXplZCkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBQYWdlJ3Mgd2luZG93IGlzIG1pbmlh
dHVyaXplZC4gV2FpdGluZyB0byBkaXNtaXNzIHVudGlsIGFjdGl2ZS4iKTsKKyAgICAgICAgICAg
IEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6
IFBhZ2UncyB3aW5kb3cgaXMgbWluaWF0dXJpemVkLiBXYWl0aW5nIHRvIGRpc21pc3MgdW50aWwg
YWN0aXZlLiIpOwogICAgICAgICAgICAgaWYgKG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0
dXJpemVPYnNlcnZlcikgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpc21pc3NWaWV3Q29udHJvbGxlcjogW01pbmlhdHVyaXplZF0gQWxyZWFkeSBoYXMgYSBkZW1p
bmlhdHVyaXplZCBvYnNlcnZlciAoJXApLiBIaWRkZW4gb2JzZXJ2ZXIgaXMgJXAiLCBtX3ByZXNl
bnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25E
aWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgQVVUSE9SSVpBVElPTlNF
U1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogW01pbmlhdHVyaXplZF0g
QWxyZWFkeSBoYXMgYSBkZW1pbmlhdHVyaXplZCBvYnNlcnZlciAoJXApLiBIaWRkZW4gb2JzZXJ2
ZXIgaXMgJXAiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0
KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9wcmVzZW50aW5nV2luZG93
RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5kb3dEaWREZW1pbmlhdHVyaXplTm90aWZp
Y2F0aW9uIG9iamVjdDpwcmVzZW50aW5nV2luZG93IHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOltwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gKE5TTm90aWZpY2F0aW9uICopIHsK
LSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRy
b2xsZXI6IFdpbmRvdyBoYXMgZGVtaW5pYXR1cml6ZWQuIENvbXBsZXRpbmcgdGhlIGRpc21pc3Nh
bC4iKTsKKyAgICAgICAgICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygi
ZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBXaW5kb3cgaGFzIGRlbWluaWF0dXJpemVkLiBDb21wbGV0
aW5nIHRoZSBkaXNtaXNzYWwuIik7CiAgICAgICAgICAgICAgICAgZGlzbWlzc1ZpZXdDb250cm9s
bGVyKCk7CiAgICAgICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSByZW1vdmVPYnNlcnZlcjptX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2Jz
ZXJ2ZXIuZ2V0KCldOwogICAgICAgICAgICAgICAgIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWlu
aWF0dXJpemVPYnNlcnZlciA9IG51bGxwdHI7CkBAIC0zMTksMTMgKzMxOSwxMyBAQCB2b2lkIFNP
QXV0aG9yaXphdGlvblNlc3Npb246OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiAgICAgfQogCiAg
ICAgaWYgKE5TQXBwLmhpZGRlbikgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aXNtaXNzVmlld0NvbnRyb2xsZXI6IEFwcGxpY2F0aW9uIGlzIGhpZGRlbi4gV2FpdGluZyB0byBk
aXNtaXNzIHVudGlsIGFjdGl2ZS4iKTsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVM
RUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogQXBwbGljYXRpb24gaXMgaGlkZGVuLiBX
YWl0aW5nIHRvIGRpc21pc3MgdW50aWwgYWN0aXZlLiIpOwogICAgICAgICBpZiAobV9hcHBsaWNh
dGlvbkRpZFVuaGlkZU9ic2VydmVyKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFtIaWRkZW5dIEFscmVhZHkgaGFzIGFuIFVuaGlk
ZSBvYnNlcnZlciAoJXApLiBEZW1pbmlhdHVyaXplZCBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2Vu
dGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRp
ZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKKyAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9O
X1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFtIaWRkZW5dIEFscmVhZHkgaGFz
IGFuIFVuaGlkZSBvYnNlcnZlciAoJXApLiBEZW1pbmlhdHVyaXplZCBvYnNlcnZlciBpcyAlcCIs
IG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBs
aWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIgPSBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxp
Y2F0aW9uRGlkVW5oaWRlTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcCBxdWV1ZTpuaWwgdXNpbmdC
bG9jazpbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIChOU05vdGlmaWNh
dGlvbiAqKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmll
d0NvbnRyb2xsZXI6IEFwcGxpY2F0aW9uIGlzIG5vIGxvbmdlciBoaWRkZW4uIENvbXBsZXRpbmcg
dGhlIGRpc21pc3NhbC4iKTsKKyAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVB
U0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IEFwcGxpY2F0aW9uIGlzIG5vIGxvbmdlciBo
aWRkZW4uIENvbXBsZXRpbmcgdGhlIGRpc21pc3NhbC4iKTsKICAgICAgICAgICAgIGRpc21pc3NW
aWV3Q29udHJvbGxlcigpOwogICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIu
Z2V0KCldOwogICAgICAgICAgICAgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyID0gbnVs
bHB0cjsKQEAgLTMzNywxMCArMzM3LDEwIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkKICAgICBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2
ZXIgPSBudWxscHRyOwogCiAgICAgYXV0byAqcHJlc2VudGluZ1dpbmRvdyA9IG1fc2hlZXRXaW5k
b3cuZ2V0KCkuc2hlZXRQYXJlbnQ7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlz
c1ZpZXdDb250cm9sbGVyOiBDYWxsaW5nIGVuZFNoZWV0IG9uICVwIGZvciBzaGVldCAlcC4iLCBw
cmVzZW50aW5nV2luZG93LCBtX3NoZWV0V2luZG93LmdldCgpKTsKKyAgICBBVVRIT1JJWkFUSU9O
U0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBDYWxsaW5nIGVuZFNo
ZWV0IG9uICVwIGZvciBzaGVldCAlcC4iLCBwcmVzZW50aW5nV2luZG93LCBtX3NoZWV0V2luZG93
LmdldCgpKTsKICAgICBbcHJlc2VudGluZ1dpbmRvdyBlbmRTaGVldDptX3NoZWV0V2luZG93Lmdl
dCgpXTsKICAgICBtX3NoZWV0V2luZG93ID0gbnVsbHB0cjsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IEZpbmlzaGVkIGNhbGwgd2l0aCBkZW1pbmlh
dHVyaXplZCBvYnNlcnZlciAoJXApIGFuZCBIaWRkZW4gb2JzZXJ2ZXIgKCVwKSIsIG1fcHJlc2Vu
dGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRp
ZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNF
X0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBGaW5pc2hlZCBjYWxsIHdpdGggZGVtaW5pYXR1
cml6ZWQgb2JzZXJ2ZXIgKCVwKSBhbmQgSGlkZGVuIG9ic2VydmVyICglcCkiLCBtX3ByZXNlbnRp
bmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRV
bmhpZGVPYnNlcnZlci5nZXQoKSk7CiAjZWxpZiBQTEFURk9STShJT1MpCiAgICAgW1ttX3ZpZXdD
b250cm9sbGVyIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0gZGlzbWlzc1ZpZXdDb250cm9sbGVy
QW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKICNlbmRpZgpAQCAtMzUwLDYgKzM1MCw2IEBA
IHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisj
dW5kZWYgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0cKIAogI2VuZGlmIC8vIEhBVkUo
QVBQX1NTTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAppbmRleCAyMjZkMjkzMzQwNWVhNWI2ZjBiYzM2OWU1MWZkMDc4NjJlMzdhZjc2Li5m
ZjYyODNmNjliNzkzYjYxMDZiNmU0OTQ5MjU0N2VmNTY1NDRlZmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC01NSw4ICs1NSw4
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2Rl
ZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xP
R19JRihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtw
YWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWksIG5h
dmlnYXRpb25JRD0lIiBQUkl1NjQgIl0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlz
LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCks
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMjX19WQV9B
UkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9
JSIgUFJJdTY0ICIsIFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiXSBQcm92aXNpb25h
bFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
bV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X25hdmlnYXRpb25JRCwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUFJPVklTSU9OQUxQQUdFUFJP
WFlfUkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIl
cCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9
JWksIG5hdmlnYXRpb25JRD0lIiBQUkl1NjQgIl0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10
LCB0aGlzLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMj
X19WQV9BUkdTX18pCisjZGVmaW5lIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VS
Uk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBb
cGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpLCBu
YXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICJdIFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhp
cywgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fbmF2aWdhdGlvbklELCAjI19fVkFf
QVJHU19fKQogCiBQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2Vi
UGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6dW5p
cXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHN1c3BlbmRlZFBhZ2UsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgYm9vbCBpc1NlcnZlclJlZGlyZWN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHdlYnNpdGVQb2xpY2llcykK
ICAgICA6IG1fcGFnZShwYWdlKQpAQCAtNzYsNyArNzYsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vz
c1BybwogI2VuZGlmCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBzdXNwZW5kZWRQYWdlPSVwIiwgc3Vz
cGVuZGVkUGFnZS5nZXQoKSk7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHN1c3BlbmRlZFBhZ2U9JXAi
LCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQ
YWdlSUQsICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0
aGlzKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lv
bmFsUGFnZVByb3h5KCkKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRl
cm1pbmF0ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJwcm9jZXNzRGlkVGVybWluYXRlOiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZ
X1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6
Iik7CiAgICAgbV9wYWdlLnByb3Zpc2lvbmFsUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogfQogCkBA
IC0xMzUsNyArMTM1LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAg
ICAgICAgCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6
OlN0YXRlOjpSdW5uaW5nKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiY2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lIik7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBw
aW5nLCAiY2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
Iik7CiAgICAgQVNTRVJUKG1fbWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0Ojpj
YW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKQEAgLTE2NCwxNCArMTY0LDE0IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKFJlZlB0cjxBUEk6Oldl
YnNpdGVQb2xpY2llcz4mJiB3ZWJzCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRE
YXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6Iik7CisgICAg
UFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERh
dGE6Iik7CiAKICAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVu
Y29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpZZXMsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6Iik7CisgICAgUFJP
VklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVl
c3Q6Iik7CiAKICAgICAvLyBJZiB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3QgY29udGlu
dWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0
ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2FzZSwKICAgICAvLyB3ZSBuZWVkIHRvIG1h
a2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0ncyBwcm9jZXNzSWRlbnRpZmllciBhcyB3ZSB3YW50
IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlzIEJhY2tGb3J3YXJkIGl0ZW0gdG8gaGFwcGVuIGlu
IHRoZQpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAKIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBSZWZQdHI8QVBJOjpX
ZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbToiKTsKKyAgICBQ
Uk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFj
a0ZvcndhcmRJdGVtOiIpOwogCiAgICAgYXV0byBpdGVtU3RhdGVzID0gbV9wYWdlLmJhY2tGb3J3
YXJkTGlzdCgpLmZpbHRlcmVkSXRlbVN0YXRlcyhbdGhpcywgdGFyZ2V0SXRlbSA9ICZpdGVtXShh
dXRvJiBpdGVtKSB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrRm9yd2FyZENhY2hlRW50cnkgPSBp
dGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKSB7CkBAIC0yMTQsNyArMjE0LDcgQEAgaW5saW5l
IGJvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IE8KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRl
TWFpbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBmcmFtZUlEPSUi
IFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IGZyYW1lSUQ9
JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogICAgIEFTU0VSVCghbV9tYWluRnJhbWUp
OwogCiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUobV9wYWdlLCBmcmFt
ZUlEKTsKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZQogICAgIGlm
ICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUlu
dDY0KCkpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0
LCBmcmFtZUlELnRvVUludDY0KCkpOwogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsTG9hZFVSTC5p
c051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB1cmw7CiAKQEAgLTI3Miw3ICsy
NzIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSQogICAgIGlmICghdmFsaWRhdGVJbnB1dChm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAg
UFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N3YXBwaW5nLCAi
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJ
RC50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgp
KTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKIApAQCAtMjg4LDcgKzI4OCw3IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQs
IG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUi
IFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1l
SUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2Fk
VVJMID0geyB9OwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCkBA
IC00MjEsMTQgKzQyMSwxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpjb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkRm9yRnJhbWUoY29uc3QgV2ViQ29yZTo6Q29udAogI2lmIEhBVkUoVklT
SUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlk
Q3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhv
c3RpbmdDb250ZXh0SUQgY29udGV4dElEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbjogY29udGV4dElEPSV1IiwgY29udGV4dElEKTsKKyAgICBQUk9WSVNJT05B
TFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVDb250ZXh0
SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9JXUiLCBjb250
ZXh0SUQpOwogICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9j
ZXNzID0gY29udGV4dElEOwogfQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlQ29udGV4dElu
R1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjogY29udGV4dElEPSV1IiwgY29udGV4
dElEKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
OiBjb250ZXh0SUQ9JXUiLCBjb250ZXh0SUQpOwogICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzID0gY29udGV4dElEOwogfQogI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkubW0KaW5kZXggOTgzNWE2NDU3MDRhNWY5NmMyMzRjYjkwMzM0ZmI4NDk4NTE4YzBhYS4u
MTQ5NWQ4OWMyMjQzY2I0OGIwNTNiYmY1OTk1NTRjOTFjOTQ3ZThmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTUwNCw3ICs1MDQsNyBA
QCBib29sIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Omhhc1Zpc2libGVDb250ZW50
KCkgY29uc3QKIAogYm9vbCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkuc2Vz
c2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CiB9CiAKIENBTGF5ZXIgKlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmxheWVyV2l0aElERm9yVGVzdGluZyh1aW50NjRf
dCBsYXllcklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggYzUyZTJiOGUwOWY5YjBhZTRhMzQwNDRmMjJkNjgzMmM4MGVjMzM4NC4uNWVhYzY1MzQ3
NTBhN2Y5OWRjODZjZjI2MDYxYTgxOTNiYTI5ZDZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMTUsOCArMzE1LDggQEAKICNkZWZpbmUgTUVTU0FHRV9D
SEVDS19VUkwocHJvY2VzcywgdXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UoY2hlY2tVUkxSZWNlaXZl
ZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgdXJsKSwgcHJvY2Vzcy0+
Y29ubmVjdGlvbigpKQogI2RlZmluZSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04ocHJvY2Vzcywg
YXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT05fQkFTRShhc3Nl
cnRpb24sIHByb2Nlc3MtPmNvbm5lY3Rpb24oKSwgY29tcGxldGlvbikKIAotI2RlZmluZSBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBS
SXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laV0gV2ViUGFnZVByb3h5OjoiIGZt
dCwgdGhpcywgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCks
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtw
YWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWldIFdl
YlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9B
UkdTX18pCisjZGVmaW5lIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3
ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laV0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywg
bV9pZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJP
UihjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQ
Ukl1NjQgIiwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCAjI19fVkFfQVJHU19fKQogCiAvLyBSZXByZXNlbnRzIHRoZSBudW1iZXIgb2Yg
d2hlZWwgZXZlbnRzIHdlIGNhbiBob2xkIGluIHRoZSBxdWV1ZSBiZWZvcmUgd2Ugc3RhcnQgcHVz
aGluZyB0aGVtIHByZWVtcHRpdmVseS4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3aGVlbEV2ZW50
UXVldWVTaXplVGhyZXNob2xkID0gMTA7CkBAIC01MTAsNyArNTEwLDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBSZWYKICAgICAsIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyht
X2NvbmZpZ3VyYXRpb24tPmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMoKSkKICNl
bmRpZgogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVjdG9y
OiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY29uc3RydWN0b3I6
Iik7CiAKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkpCiAgICAg
ICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwpA
QCAtNTcyLDcgKzU3Miw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAKIFdlYlBhZ2VQcm94
eTo6fldlYlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGVzdHJ1Y3RvcjoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywg
ImRlc3RydWN0b3I6Iik7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdlKG1faWRlbnRp
ZmllcikgIT0gdGhpcyk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTgyMyw3ICs4MjMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4sIFBybwogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgQVNT
RVJUKCFoYXNSdW5uaW5nUHJvY2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxhdW5jaFByb2Nlc3M6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiIpOwogCiAgICAgLy8gSW4gY2FzZSB3ZSBhcmUgY3Vy
cmVudGx5IGNvbm5lY3RlZCB0byB0aGUgZHVtbXkgcHJvY2Vzcywgd2UgbmVlZCB0byBtYWtlIHN1
cmUgdGhlIGluc3BlY3RvciBwcm94eQogICAgIC8vIGRpc2Nvbm5lY3RzIGZyb20gdGhlIGR1bW15
IHByb2Nlc3MgZmlyc3QuCkBAIC04NjUsMTIgKzg2NSwxMiBAQCBib29sIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IE9wdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWhhc0NvbW1pdHRlZEFueVBy
b3Zpc2lvbmFsTG9hZHMoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5n
IGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgYmVjYXVzZSBoYXMgbm90IGNvbW1pdHRl
ZCBhbnkgbG9hZCB5ZXQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNz
IHBpZCAlaSBiZWNhdXNlIGhhcyBub3QgY29tbWl0dGVkIGFueSBsb2FkIHlldCIsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBpZiAoaXNQYWdlT3BlbmVkQnlET01TaG93aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3Ig
cHJvY2VzcyBwaWQgJWkgYmVjYXVzZSBpdCBpcyBzaG93aW5nIHRoZSBpbml0aWFsIGVtcHR5IGRv
Y3VtZW50IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlm
UG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkg
YmVjYXVzZSBpdCBpcyBzaG93aW5nIHRoZSBpbml0aWFsIGVtcHR5IGRvY3VtZW50IiwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtODc5LDI1ICs4NzksMjUgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICAvLyBJ
ZiB0aGUgc291cmNlIGFuZCB0aGUgZGVzdGluYXRpb24gYmFjayAvIGZvcndhcmQgbGlzdCBpdGVt
cyBhcmUgdGhlIHNhbWUsIHRoZW4gdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0LiBJbiB0
aGlzIGNhc2UsCiAgICAgLy8gdGhlcmUgaXMgbm8gbmVlZCB0byBzdXNwZW5kIHRoZSBwcmV2aW91
cyBwYWdlIGFzIHRoZXJlIHdpbGwgYmUgbm8gd2F5IHRvIGdldCBiYWNrIHRvIGl0LgogICAgIGlm
IChmcm9tSXRlbSAmJiBmcm9tSXRlbSA9PSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1
c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBm
b3IgcHJvY2VzcyBwaWQgJWkgYmVjYXVzZSB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3Qi
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNl
IHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoZnJvbUl0
ZW0gJiYgZnJvbUl0ZW0tPnVybCgpICE9IHBhZ2VMb2FkU3RhdGUoKS51cmwoKSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRD
dXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJv
Y2VzcyBwaWQgJWkgYmVjYXVzZSBmcm9tSXRlbSdzIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgcGFn
ZSBVUkwuIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBw
aWQgJWkgYmVjYXVzZSBmcm9tSXRlbSdzIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgcGFnZSBVUkwu
IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGJvb2wgbmVlZHNTdXNwZW5kZWRQYWdlVG9QcmV2ZW50Rmxhc2hpbmcg
PSBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCA9PSBTaG91bGREZWxheUNs
b3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6WWVzOwogICAgIGlmICghbmVlZHNTdXNwZW5kZWRQ
YWdlVG9QcmV2ZW50Rmxhc2hpbmcgJiYgKCFmcm9tSXRlbSB8fCAhc2hvdWxkVXNlQmFja0Zvcndh
cmRDYWNoZSgpKSkgewogICAgICAgICBpZiAoIWZyb21JdGVtKQotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIHRo
ZXJlIGlzIG5vIGFzc29jaWF0ZWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSIsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGVyZSBpcyBubyBhc3Nv
Y2lhdGVkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNw
ZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgdGhlIGJhY2sgLyBmb3J3YXJk
IGNhY2hlIGlzIGRpc2FibGVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9y
IHByb2Nlc3MgcGlkICVpIHRoZSBiYWNrIC8gZm9yd2FyZCBjYWNoZSBpcyBkaXNhYmxlZCIsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9j
ZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlm
UG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0g
bWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigp
LCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoKTsK
IAogICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3Jl
YXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBp
dGVtICVzIiBQUkl1NjQsIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5s
b2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0g
PyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKQEAgLTkyNyw3ICs5MjcsNyBA
QCBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkVXNlQmFja0ZvcndhcmRDYWNoZSgpIGNvbnN0CiB2
b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6dW5pcXVlX3B0cjxQ
cm92aXNpb25hbFBhZ2VQcm94eT4gcHJvdmlzaW9uYWxQYWdlKQogewogICAgIEFTU0VSVCghbV9p
c0Nsb3NlZCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvUHJv
dmlzaW9uYWxQYWdlOiBuZXdXZWJQYWdlSUQ9JSIgUFJJdTY0LCBwcm92aXNpb25hbFBhZ2UtPndl
YlBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAic3dhcFRvUHJvdmlzaW9uYWxQYWdlOiBuZXdXZWJQYWdlSUQ9JSIgUFJJdTY0LCBwcm92
aXNpb25hbFBhZ2UtPndlYlBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgbV9wcm9jZXNzID0g
cHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCk7CiAgICAgbV93ZWJQYWdlSUQgPSBwcm92aXNpb25h
bFBhZ2UtPndlYlBhZ2VJRCgpOwpAQCAtOTQxLDggKzk0MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVBy
b3h5PiBwCiAjZW5kaWYKICNlbmRpZgogCisgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBuZWVk
IHRvIGRpc2FibGUgdGhpcyBsb2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucz8KICAgICBpZiAo
bV9sb2dnZXIpCi0gICAgICAgIG1fbG9nZ2VyLT5zZXRFbmFibGVkKHRoaXMsIGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpKTsKKyAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgIXNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRy
dWU7CiAKQEAgLTEwMzUsMTAgKzEwMzYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFj
aFRvUnVubmluZ1Byb2Nlc3MoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6Iik7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiIpOwogCiAgICAg
aWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBw
YWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCkBA
IC0xMDQ3LDcgKzEwNDgsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVE
b21haW4sIFByb2Nlc3NMYXVuY2hSZWFzb246OkNyYXNoKTsKIAogICAgIGlmICghbV9iYWNrRm9y
d2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJl
bG9hZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5j
aFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQiKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTA5LDcgKzExMTAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2xvc2UoKQogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZToiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImNsb3NlOiIpOwogCiAgICAgbV9pc0Nsb3Nl
ZCA9IHRydWU7CiAKQEAgLTExODgsNyArMTE4OSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp0cnlD
bG9zZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInRyeUNsb3NlOiIpOwor
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAidHJ5Q2xvc2U6Iik7CiAKICAg
ICAvLyBDbG9zZSB3aXRob3V0IGRlbGF5IGlmIHRoZSBwcm9jZXNzIGFsbG93cyBpdC4gT3VyIGdv
YWwgaXMgdG8gdGVybWluYXRlCiAgICAgLy8gdGhlIHByb2Nlc3MsIHNvIHdlIGNoZWNrIGEgcGVy
LXByb2Nlc3Mgc3RhdHVzIGJpdC4KQEAgLTEyMTMsNyArMTIxNCw3IEBAIGJvb2wgV2ViUGFnZVBy
b3h5Ojp0cnlDbG9zZSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVkT3V0KCkK
IHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJ0cnlDbG9zZVRp
bWVkT3V0OiBUaW1lZCBvdXQgd2FpdGluZyBmb3IgdGhlIHByb2Nlc3MgdG8gcmVzcG9uZCB0byB0
aGUgV2ViUGFnZTo6VHJ5Q2xvc2UgSVBDLCBjbG9zaW5nIHRoZSBwYWdlIG5vdyIpOworICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAidHJ5Q2xvc2VUaW1lZE91dDog
VGltZWQgb3V0IHdhaXRpbmcgZm9yIHRoZSBwcm9jZXNzIHRvIHJlc3BvbmQgdG8gdGhlIFdlYlBh
Z2U6OlRyeUNsb3NlIElQQywgY2xvc2luZyB0aGUgcGFnZSBub3ciKTsKICAgICBjbG9zZVBhZ2Uo
KTsKIH0KIApAQCAtMTMxMCw3ICsxMzExLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAg
ICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdDoiKTsKKyAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRSZXF1ZXN0OiIpOwogCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
IHsgcmVxdWVzdC51cmwoKSB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7
CkBAIC0xMzMyLDcgKzEzMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogewogICAgIEFT
U0VSVCghbV9pc0Nsb3NlZCk7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkOiIpOworICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZDoiKTsK
IAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsK
IApAQCAtMTM2OCwxMCArMTM2OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RX
aXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywg
QVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxvYWRGaWxlOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5n
LCAibG9hZEZpbGU6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQiKTsKKyAg
ICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBp
cyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMzgwLDcg
KzEzODEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBV
UkwoVVJMKCksIGZpbGVVUkxTdHJpbmcpOwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBm
aWxlIGlzIG5vdCBsb2NhbCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbCIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTEzOTAsNyArMTM5MSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBj
b25zCiAgICAgZWxzZSB7CiAgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJMKFVSTCgp
LCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3VyY2VEaXJl
Y3RvcnlVUkwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3QgbG9jYWwiKTsKKyAg
ICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZEZpbGU6IHJl
c291cmNlIFVSTCBpcyBub3QgbG9jYWwiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTQyNCw3ICsxNDI1LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcs
IGNvbnMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZERhdGE6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRGF0
YToiKTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAoTUlNRVR5cGUg
PT0gInRleHQvaHRtbCJfcyAmJiAhaXNGdWxsV2ViQnJvd3NlcigpKQpAQCAtMTQzMiw3ICsxNDMz
LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICNlbmRpZgogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6
IHBhZ2UgaXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtMTQ1MCw3ICsxNDUxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbiIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2
aWdhdGlvbiIpOwogCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTQ3OCw3ICsxNDc5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHNpbXVsYXRlZFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBzaW11bGF0
ZWRSZXNwb25zZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiIpOworICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFNpbXVsYXRlZFJlcXVlc3Q6
Iik7CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKHNpbXVsYXRlZFJl
c3BvbnNlLm1pbWVUeXBlKCkgPT0gInRleHQvaHRtbCJfcyAmJiAhaXNGdWxsV2ViQnJvd3Nlcigp
KQpAQCAtMTQ4Niw3ICsxNDg3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXUKICNlbmRpZgog
CiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZFNpbXVsYXRlZFJlcXVlc3Q6IHBhZ2UgaXMgY2xvc2VkIik7CisgICAgICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFNpbXVsYXRlZFJlcXVlc3Q6
IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
MTUzMiwxMyArMTUzMywxMyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1s
RGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBV
UkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUwiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MIik7CiAKICAg
ICAvLyBXaGVuIHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgaGFuZGxpbmcgYSBm
YWlsaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRvCiAgICAgLy8gc3RhcnQg
YSBzZWNvbmQgYWx0ZXJuYXRpdmUgSFRNTCBsb2FkIGFzIHRoaXMgd2lsbCBwcmV2ZW50IHRoZSBw
YWdlIGxvYWQgc3RhdGUgZnJvbSBiZWluZwogICAgIC8vIGhhbmRsZWQgcHJvcGVybHkuCiAgICAg
aWYgKG1faXNDbG9zZWQgfHwgbV9pc0xvYWRpbmdBbHRlcm5hdGVIVE1MU3RyaW5nRm9yRmFpbGlu
Z1Byb3Zpc2lvbmFsTG9hZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKSIpOworICAg
ICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1M
OiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE1NzUsMTAgKzE1NzYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVI
VE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFMKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRh
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOwogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFy
Y2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTYwMiwxMCArMTYwMywxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQ
STo6T2JqZWN0KiB1cwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIEludFBvaW50IGRvY3VtZW50
UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiIpOworICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2s6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2Ug
aXMgY2xvc2VkOiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjIxLDEwICsxNjIy
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRD
bGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BM
b2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9wTG9h
ZGluZzoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInN0b3BMb2Fk
aW5nOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdl
IGlzIG5vdCB2YWxpZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjM4LDcgKzE2
MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2Fk
T3B0aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InJlbG9hZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInJlbG9h
ZDoiKTsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlOwogCkBAIC0xNzE5LDExICsxNzIwLDExIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAK
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5
cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3
YXJkSXRlbToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImdvVG9C
YWNrRm9yd2FyZEl0ZW06Iik7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgZ29U
b0JhY2tGb3J3YXJkSXRlbSB0byBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0udXJsKCkudXRmOCgp
LmRhdGEoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlIGlzIGNsb3NlZCIp
OworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImdvVG9CYWNrRm9y
d2FyZEl0ZW06IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtMTc0OSwxMCArMTc1MCwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246Iik7
CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb246Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9u
OiBwYWdlIGlzIG5vdCB2YWxpZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0co
TG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjAyMSw3ICsyMDIyLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZs
YWc+IGZsYWdzVG9VcGQKICAgICAgICAgaWYgKGlzTm93VmlzaWJsZSkKICAgICAgICAgICAgIG1f
YWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKICAgICAgICAgaWYg
KHdhc1Zpc2libGUgIT0gaXNOb3dWaXNpYmxlKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChWaWV3U3RhdGUsICJ1cGRhdGVBY3Rpdml0eVN0YXRlOiB2aWV3IHZpc2liaWxpdHkg
c3RhdGUgY2hhbmdlZCAlZCAtPiAlZCIsIHdhc1Zpc2libGUsIGlzTm93VmlzaWJsZSk7CisgICAg
ICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coVmlld1N0YXRlLCAidXBkYXRlQWN0aXZp
dHlTdGF0ZTogdmlldyB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZWQgJWQgLT4gJWQiLCB3YXNWaXNp
YmxlLCBpc05vd1Zpc2libGUpOwogICAgIH0KICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgJiYgcGFnZUNsaWVudCgpLmlzVmlld1Zpc2li
bGVPck9jY2x1ZGVkKCkpCiAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCk7CkBAIC0yMTgxLDExICsyMTgyLDYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAjZW5kaWYKIH0KIAotYm9v
bCBXZWJQYWdlUHJveHk6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwotfQotCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiB7CiAgICAgYm9vbCBwcm9jZXNz
U3VwcHJlc3Npb25FbmFibGVkID0gbV9wcmVmZXJlbmNlcy0+cGFnZVZpc2liaWxpdHlCYXNlZFBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKTsKQEAgLTIyMDQsMjMgKzIyMDAsMjMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKGlzVmlld1Zpc2libGUoKSkgewogICAgICAgICBpZiAoIW1faXNWaXNpYmxl
QWN0aXZpdHkgfHwgIW1faXNWaXNpYmxlQWN0aXZpdHktPmlzVmFsaWQoKSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90
dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNh
dXNlIHRoZSB2aWV3IGlzIHZpc2libGUiKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2Vz
cyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIHZp
c2libGUiKTsKICAgICAgICAgICAgIG1faXNWaXNpYmxlQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyB2aXNpYmxlIl9zKS5tb3ZlVG9V
bmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9pc1Zpc2libGVBY3Rpdml0
eSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAi
dXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQg
YXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgbm8gbG9uZ2VyIHZpc2libGUiKTsKKyAgICAg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhy
b3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9u
IGJlY2F1c2UgdGhlIHZpZXcgaXMgbm8gbG9uZ2VyIHZpc2libGUiKTsKICAgICAgICAgbV9pc1Zp
c2libGVBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgYm9vbCBpc0F1ZGlibGUgPSBt
X2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKTsKICAgICBp
ZiAoaXNBdWRpYmxlKSB7CiAgICAgICAgIGlmICghbV9pc0F1ZGlibGVBY3Rpdml0eSB8fCAhbV9p
c0F1ZGlibGVBY3Rpdml0eS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9j
ZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIHBsYXlp
bmcgYXVkaW8iKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBm
b3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHdlIGFyZSBwbGF5aW5nIGF1ZGlvIik7CiAgICAg
ICAgICAgICBtX2lzQXVkaWJsZUFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3Jl
Z3JvdW5kQWN0aXZpdHkoIlZpZXcgaXMgcGxheWluZyBhdWRpbyJfcykubW92ZVRvVW5pcXVlUHRy
KCk7CiAgICAgICAgIH0KICAgICAgICAgbV9hdWRpYmxlQWN0aXZpdHlUaW1lci5zdG9wKCk7CiAg
ICAgfSBlbHNlIGlmIChtX2lzQXVkaWJsZUFjdGl2aXR5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVBy
b2Nlc3Mgd2lsbCByZWxlYXNlIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gaW4gJWcgc2Vjb25kcyBi
ZWNhdXNlIHdlIGFyZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIsIGF1ZGlibGVBY3Rpdml0eUNs
ZWFyRGVsYXkuc2Vjb25kcygpKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIHdpbGwgcmVs
ZWFzZSBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGluICVnIHNlY29uZHMgYmVjYXVzZSB3ZSBhcmUg
bm8gbG9uZ2VyIHBsYXlpbmcgYXVkaW8iLCBhdWRpYmxlQWN0aXZpdHlDbGVhckRlbGF5LnNlY29u
ZHMoKSk7CiAgICAgICAgIGlmICghbV9hdWRpYmxlQWN0aXZpdHlUaW1lci5pc0FjdGl2ZSgpKQog
ICAgICAgICAgICAgbV9hdWRpYmxlQWN0aXZpdHlUaW1lci5zdGFydE9uZVNob3QoYXVkaWJsZUFj
dGl2aXR5Q2xlYXJEZWxheSk7CiAgICAgfQpAQCAtMjIyOCwxMSArMjIyNCwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgYm9vbCBpc0NhcHR1cmluZ01l
ZGlhID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5n
TWVkaWEpOwogICAgIGlmIChpc0NhcHR1cmluZ01lZGlhKSB7CiAgICAgICAgIGlmICghbV9pc0Nh
cHR1cmluZ0FjdGl2aXR5IHx8ICFtX2lzQ2FwdHVyaW5nQWN0aXZpdHktPmlzVmFsaWQoKSkgewot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVw
ZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2Vy
dGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlIik7CisgICAgICAgICAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0
YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBt
ZWRpYSBjYXB0dXJlIGlzIGFjdGl2ZSIpOwogICAgICAgICAgICAgbV9pc0NhcHR1cmluZ0FjdGl2
aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlZpZXcgaXMg
Y2FwdHVyaW5nIG1lZGlhIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAobV9pc0NhcHR1cmluZ0FjdGl2aXR5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBtZWRpYSBjYXB0
dXJlIGlzIG5vIGxvbmdlciBhY3RpdmUiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlz
IHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBp
cyBubyBsb25nZXIgYWN0aXZlIik7CiAgICAgICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG51
bGxwdHI7CiAgICAgfQogI2VuZGlmCkBAIC0yMjQxLDcgKzIyMzcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZv
aWQgV2ViUGFnZVByb3h5OjpjbGVhckF1ZGlibGVBY3Rpdml0eSgpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJ
UHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHdlIGFy
ZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyBy
ZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHdlIGFyZSBubyBsb25nZXIg
cGxheWluZyBhdWRpbyIpOwogICAgIG1faXNBdWRpYmxlQWN0aXZpdHkgPSBudWxscHRyOwogfQog
I2VuZGlmCkBAIC0yNTI0LDcgKzI1MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRl
UmVuZGVyaW5nQWZ0ZXJDb21taXR0aW5nTG9hZCgpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1h
a2luZ1ZpZXdCbGFua0R1ZVRvTGFja09mUmVuZGVyaW5nVXBkYXRlKCkKIHsKICAgICBBU1NFUlQo
bV9oYXNVcGRhdGVkUmVuZGVyaW5nQWZ0ZXJEaWRDb21taXRMb2FkKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3MsICJzdG9wTWFraW5nVmlld0JsYW5rRHVlVG9MYWNrT2ZSZW5k
ZXJpbmdVcGRhdGU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJz
dG9wTWFraW5nVmlld0JsYW5rRHVlVG9MYWNrT2ZSZW5kZXJpbmdVcGRhdGU6Iik7CiAgICAgcGFn
ZUNsaWVudCgpLm1ha2VWaWV3QmxhbmsoZmFsc2UpOwogfQogCkBAIC0yNTQwLDcgKzI1MzYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9h
ZENvbW1pdCgpCiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZE1ha2VWaWV3QmxhbmsgPSB0cnVl
OwogI2VuZGlmCiAgICAgICAgIGlmIChzaG91bGRNYWtlVmlld0JsYW5rKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJtYWtlVmlld0JsYW5rSWZVbnBhaW50
ZWRTaW5jZUxhc3RMb2FkQ29tbWl0OiBNYWtpbmcgdGhlIHZpZXcgYmxhbmsgYmVjYXVzZSBvZiBh
IEpTIHByb21wdCBiZWZvcmUgdGhlIGZpcnN0IHBhaW50IGZvciBpdHMgcGFnZSIpOworICAgICAg
ICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJtYWtlVmlld0JsYW5rSWZV
bnBhaW50ZWRTaW5jZUxhc3RMb2FkQ29tbWl0OiBNYWtpbmcgdGhlIHZpZXcgYmxhbmsgYmVjYXVz
ZSBvZiBhIEpTIHByb21wdCBiZWZvcmUgdGhlIGZpcnN0IHBhaW50IGZvciBpdHMgcGFnZSIpOwog
ICAgICAgICAgICAgcGFnZUNsaWVudCgpLm1ha2VWaWV3QmxhbmsodHJ1ZSk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0zMzQ3LDcgKzMzNDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWY8QVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYg
ZnJhbWUsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiBwb2xpY2llcywgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjogZnJhbWVJRD0lbGx1
LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1IiwgZnJhbWUuZnJhbWVJRCgpLnRv
VUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1
bnNpZ25lZClwb2xpY3lBY3Rpb24pOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAicmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246IGZyYW1lSUQ9JWxsdSwgbmF2
aWdhdGlvbklEPSVsbHUsIHBvbGljeUFjdGlvbj0ldSIsIGZyYW1lLmZyYW1lSUQoKS50b1VJbnQ2
NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWdu
ZWQpcG9saWN5QWN0aW9uKTsKIAogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0
YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmNvcHlSZWYoKTsKICAgICBpZiAocG9saWNpZXMp
IHsKQEAgLTM0MDksMTAgKzM0MDUsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAg
ICAgYm9vbCBzaG91bGRQcm9jZXNzU3dhcCA9IHByb2Nlc3NGb3JOYXZpZ2F0aW9uLnB0cigpICE9
IHNvdXJjZVByb2Nlc3MucHRyKCk7CiAgICAgICAgIGlmIChzaG91bGRQcm9jZXNzU3dhcCkgewog
ICAgICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9uOjpTdG9wQWxsTG9hZHM7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sIHN3YXBwaW5nIHByb2Nlc3MgJWkgd2l0aCBwcm9j
ZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19TVFJJTkcsIHByb2Nl
c3NJZGVudGlmaWVyKCksIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLT5wcm9jZXNzSWRlbnRpZmllcigp
LCByZWFzb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwg
c3dhcHBpbmcgcHJvY2VzcyAlaSB3aXRoIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNv
bj0lIiBQVUJMSUNfTE9HX1NUUklORywgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvY2Vzc0Zvck5h
dmlnYXRpb24tPnByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBTd2l0Y2hp
bmcgZnJvbSBwcm9jZXNzICVpIHRvIG5ldyBwcm9jZXNzICglaSkgZm9yIG5hdmlnYXRpb24gJSIg
UFJJdTY0ICIgJyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHByb2Nlc3NGb3JOYXZpZ2F0aW9u
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdh
dGlvbi0+bG9nZ2luZ1N0cmluZygpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246IGtlZXAgdXNpbmcgcHJvY2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29u
PSUiIFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3
YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoga2VlcCB1c2luZyBwcm9j
ZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19TVFJJTkcsIHByb2Nl
c3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG9wdGlvbmFsSGFuZGxlOwogICAgICAgICBpZiAo
c2hvdWxkUHJvY2Vzc1N3YXApIHsKQEAgLTM0OTEsNyArMzQ4Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbioKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJhbWVM
b2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNl
cnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xpY3ks
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFBh
Z2UpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbW1pdFByb3Zpc2lv
bmFsUGFnZTogbmV3UElEPSVpIiwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNz
SWRlbnRpZmllcigpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImNv
bW1pdFByb3Zpc2lvbmFsUGFnZTogbmV3UElEPSVpIiwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nl
c3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlv
bmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0zNTI5LDEy
ICszNTI1LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAKIHZvaWQgV2ViUGFnZVByb3h5
Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2Us
IFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8QVBJOjpXZWJzaXRl
UG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzczogbmV3UHJvY2Vzc1BJ
RD0laSwgaGFzU3VzcGVuZGVkUGFnZT0laSIsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksICEhc3VzcGVuZGVkUGFnZSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRp
bmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IG5ld1Byb2Nlc3NQSUQ9JWksIGhh
c1N1c3BlbmRlZFBhZ2U9JWkiLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1
c3BlbmRlZFBhZ2UpOwogICAgIExPRyhMb2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUi
IFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRp
b25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJpbmcoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
IW5ld1Byb2Nlc3MtPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CiAKICAgICBpZiAobV9wcm92aXNpb25h
bFBhZ2UpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IFRoZXJlIGlzIGFscmVhZHkgYSBwZW5k
aW5nIHByb3Zpc2lvbmFsIGxvYWQsIGNhbmNlbGxpbmcgaXQgKHByb3Zpc29uYWxOYXZpZ2F0aW9u
SUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUpIiwgbV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRp
b25JRCgpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpKTsKKyAgICAgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJv
Y2VzczogVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgcHJvdmlzaW9uYWwgbG9hZCwgY2FuY2Vs
bGluZyBpdCAocHJvdmlzb25hbE5hdmlnYXRpb25JRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSki
LCBtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubmF2aWdhdGlv
bklEKCkpOwogICAgICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25JRCgpICE9
IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCkpCiAgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFn
ZS0+Y2FuY2VsKCk7CiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKQEAgLTM2
NjcsNyArMzY2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6Iik7CisgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJzdXNwZW5kOiIpOwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSB8fCBtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOwogCkBAIC0zNjc3LDcgKzM2NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVu
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAicmVzdW1lOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAicmVz
dW1lOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2lzU3VzcGVuZGVk
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMzcyMyw3ICsz
NzE5LDcgQEAgU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVu
Y3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vz
c2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiIpOworICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6Iik7CiAKICAgICBt
X3Nlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVTaXplID0gMDsKICAgICBtX2hpdFJlbmRlclRy
ZWVTaXplVGhyZXNob2xkID0gZmFsc2U7CkBAIC00NTQxLDcgKzQ1MzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmCiAgICAgICAgIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZp
Z2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAl
IiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJs
ICVzIiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50
NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rp
b24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2Fj
dGlvbik7CkBAIC00NTc4LDcgKzQ1NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRXhwbGlj
aXRPcGVuRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFVSTCYmIHVybCwgUwogICAg
IE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAgICBpZiAoIWNoZWNrVVJMUmVj
ZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKG1fcHJvY2VzcywgdXJsKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyBX
ZWJQYWdlUHJveHk6OkRpZEV4cGxpY2l0T3BlbkZvckZyYW1lKCkgSVBDIGZyb20gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcyBiZWNhdXNlIHRoZSBmaWxlIFVSTCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94
Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiSWdu
b3JpbmcgV2ViUGFnZVByb3h5OjpEaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSgpIElQQyBmcm9tIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgYmVjYXVzZSB0aGUgZmlsZSBVUkwgaXMgb3V0c2lkZSB0aGUg
c2FuZGJveCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjAzLDcgKzQ1OTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2
NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1lSUQudG9VSW50NjQo
KSwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJ
RC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlE
PSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ2MzIsNyArNDYyOCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChSZWY8CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
dXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAg
ICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NjQ1
LDcgKzQ2NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjbwogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGll
bnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgp
KTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZENhbmNlbENsaWVu
dFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkp
OwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApA
QCAtNDY5Myw3ICs0Njg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5n
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGlu
ZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxV
UkwudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9j
ZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAi
LCBkb21haW49JXMsIGNvZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigp
LnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0dfRVJST1IoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQgIiwgZG9tYWluPSVzLCBjb2RlPSVkIiwgZnJhbWVJRC50b1VJbnQ2
NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00
NzY0LDcgKzQ3NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogewogICAgIExPRyhMb2Fk
aW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9y
RnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBu
YXZpZ2F0aW9uSUQpOwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVy
IGxvYWQgY29tbWl0LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJk
TGlzdC0+bG9nZ2luZ1N0cmluZygpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRv
VUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkQ29t
bWl0TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsK
IAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAg
LTQ4ODgsNyArNDg4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDkxNiw3
ICs0OTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjQKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAi
V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0
aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRp
b25JRCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9h
ZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTY3LDcgKzQ5NjMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExv
YWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewot
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9y
RnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGRvbWFpbj0lcywgY29kZT0lZCIsIGZyYW1lSUQu
dG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiZGlkRmFp
bExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQgIiwgZG9tYWluPSVzLCBjb2RlPSVkIiwg
ZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC01MDEyLDcgKzUwMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFp
bExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3Bh
cXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQu
dG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlE
LnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIApAQCAtNTE5OCw3ICs1MTk0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMK
ICAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
CiAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
LCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGZy
YW1lSUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQo
KSwgbmF2aWdhdGlvbklEKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywg
ImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGZyYW1lSUQ9JWxsdSwgbmF2aWdhdGlv
bklEPSVsbHUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKIAog
ICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBVUkwgJXMiLCBvcmlnaW5h
bFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIApAQCAtNTIxNCw3ICs1MjEwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXMKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVl
c3QodHJhbnNhY3Rpb24pOwogCiAgICAgaWYgKCFjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRP
clByZXZpb3VzV2ViUHJvY2Vzcyhwcm9jZXNzLCByZXF1ZXN0LnVybCgpKSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyByZXF1ZXN0IHRv
IGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgb3V0c2lkZSB0aGUgc2FuZGJv
eCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIkln
bm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBpcyBv
dXRzaWRlIHRoZSBzYW5kYm94Iik7CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lv
biB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCks
IFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUyODAsNyArNTI3Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZy
YW1lLmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihyZXF1ZXN0KSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyBy
ZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgd2FzIGhhbmRsZWQg
YnkgY29udGVudCBmaWx0ZXIiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3MsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNl
IGJlY2F1c2UgaXQgd2FzIGhhbmRsZWQgYnkgY29udGVudCBmaWx0ZXIiKTsKICAgICAgICAgcmV0
dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG1fbmF2aWdh
dGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfQogI2VuZGlmCkBAIC01Mjk1
LDcgKzUyOTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2VuZGlmCiAKICAgICBhdXRv
IGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwg
c2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCBm
cmFtZUluZm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
LCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dh
cm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzQXBwQm91bmREb21haW4pIG11dGFibGUgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBs
aXN0ZW5lciBjYWxsZWQ6IGZyYW1lSUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUsIHBvbGljeUFj
dGlvbj0ldSwgc2FmZUJyb3dzaW5nV2FybmluZz0lZCwgaXNBcHBCb3VuZERvbWFpbj0lZCIsIGZy
YW1lLT5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbiwgISFzYWZlQnJvd3NpbmdXYXJu
aW5nLCAhIWlzQXBwQm91bmREb21haW4pOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNh
bGxlZDogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1LCBz
YWZlQnJvd3NpbmdXYXJuaW5nPSVkLCBpc0FwcEJvdW5kRG9tYWluPSVkIiwgZnJhbWUtPmZyYW1l
SUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkg
OiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNB
cHBCb3VuZERvbWFpbik7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0
aW9uLCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0g
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpKSB7CkBAIC01MzE0LDcgKzUzMTAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2NlcwogICAgICAgICAgICAgaWYgKCFzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluQW5kQ2hlY2tJZlBlcm1pdHRlZChmcmFtZS0+aXNNYWluRnJhbWUoKSwgbmF2aWdhdGlvbi0+
Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgaXNBcHBCb3VuZERvbWFpbikpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIGVycm9yID0gZXJyb3JGb3JVbnBlcm1pdHRlZEFwcEJvdW5kRG9tYWluTmF2aWdh
dGlvbihuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgICAgICAg
ICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJy
b3IoKnRoaXMsIEZyYW1lSW5mb0RhdGEgeyBmcmFtZUluZm8gfSwgbmF2aWdhdGlvbi5nZXQoKSwg
ZXJyb3IsIHVzZXJEYXRhT2JqZWN0KTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKExvYWRpbmcsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWlu
IHJlc291cmNlIGJlY2F1c2UgaXQgaXMgYXR0ZW1wdGluZyB0byBuYXZpZ2F0ZSBhd2F5IGZyb20g
YW4gYXBwLWJvdW5kIGRvbWFpbiBvciBuYXZpZ2F0ZSBhZnRlciB1c2luZyByZXN0cmljdGVkIEFQ
SXMiKTsKKyAgICAgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoTG9h
ZGluZywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVz
ZSBpdCBpcyBhdHRlbXB0aW5nIHRvIG5hdmlnYXRlIGF3YXkgZnJvbSBhbiBhcHAtYm91bmQgZG9t
YWluIG9yIG5hdmlnYXRlIGFmdGVyIHVzaW5nIHJlc3RyaWN0ZWQgQVBJcyIpOwogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC01NTkwLDcgKzU1ODYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2
aWdhdGlvbkRhdGFTdG9yZSYgcwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25z
dCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGFTaGFyZWQ6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDoiKTsKIAogICAgIFBh
Z2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTU2MTAsNyAr
NTYwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvblVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiBm
cmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogZnJh
bWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJv
dGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01NjM3LDcgKzU2MzMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYg
c291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNl
cnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJp
bmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDoiKTsKKyAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDoiKTsKIAog
ICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTU3
NjcsNyArNTc2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UoKQogICAgIGlmIChp
c0Nsb3NlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3MsICJjbG9zZVBhZ2U6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3MsICJjbG9zZVBhZ2U6Iik7CiAgICAgcGFnZUNsaWVudCgpLmNsZWFyQWxsRWRpdENvbW1h
bmRzKCk7CiAgICAgbV91aUNsaWVudC0+Y2xvc2UodGhpcyk7CiB9CkBAIC03NDg4LDcgKzc0ODQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChjb25zdCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+JiBmcmFtZUlEKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vz
c0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZToiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTc1MDAsNyArNzQ5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNv
bWVSZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJw
cm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOiIpOwogCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC03NTQxLDcgKzc1MzcsNyBA
QCBVUkwgV2ViUGFnZVByb3h5OjpjdXJyZW50UmVzb3VyY2VEaXJlY3RvcnlVUkwoKSBjb25zdAog
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NUZXJtaW5hdGlvbihQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogewogICAgIGlmIChyZWFzb24gIT0gUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogKHBpZCAlZCks
IHJlYXNvbiAlZCIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbik7CisgICAgICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTog
KHBpZCAlZCksIHJlYXNvbiAlZCIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbik7CiAKICAg
ICBBU1NFUlQobV9oYXNSdW5uaW5nUHJvY2Vzcyk7CiAKQEAgLTc1OTUsNyArNzU5MSw3IEBAIHN0
YXRpYyBib29sIHNob3VsZFJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbiByZWFzb24pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaFByb2Nl
c3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJkaXNwYXRjaFByb2Nlc3NEaWRU
ZXJtaW5hdGU6IHJlYXNvbj0lZCIsIHJlYXNvbik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HX0VSUk9SKExvYWRpbmcsICJkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5hdGU6IHJlYXNvbj0l
ZCIsIHJlYXNvbik7CiAKICAgICBib29sIGhhbmRsZWRCeUNsaWVudCA9IGZhbHNlOwogICAgIGlm
IChtX2xvYWRlckNsaWVudCkKQEAgLTc2MTIsMTEgKzc2MDgsMTEgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKCkKICAgICBtX3Jlc2V0UmVjZW50
Q3Jhc2hDb3VudFRpbWVyLnN0b3AoKTsKIAogICAgIGlmICgrK21fcmVjZW50Q3Jhc2hDb3VudCA+
IG1heGltdW1XZWJQcm9jZXNzUmVsYXVuY2hBdHRlbXB0cykgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJ0cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5h
dGlvbjogcHJvY2VzcyBjcmFzaGVkIGFuZCB0aGUgY2xpZW50IGRpZCBub3QgaGFuZGxlIGl0LCBu
b3QgcmVsb2FkaW5nIHRoZSBwYWdlIGJlY2F1c2Ugd2UgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1i
ZXIgb2YgYXR0ZW1wdHMiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9S
KFByb2Nlc3MsICJ0cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbjogcHJvY2VzcyBjcmFz
aGVkIGFuZCB0aGUgY2xpZW50IGRpZCBub3QgaGFuZGxlIGl0LCBub3QgcmVsb2FkaW5nIHRoZSBw
YWdlIGJlY2F1c2Ugd2UgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYXR0ZW1wdHMiKTsK
ICAgICAgICAgbV9yZWNlbnRDcmFzaENvdW50ID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJ0cnlSZWxvYWRBZnRlclByb2Nl
c3NUZXJtaW5hdGlvbjogcHJvY2VzcyBjcmFzaGVkIGFuZCB0aGUgY2xpZW50IGRpZCBub3QgaGFu
ZGxlIGl0LCByZWxvYWRpbmcgdGhlIHBhZ2UiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2VzcywgInRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNy
YXNoZWQgYW5kIHRoZSBjbGllbnQgZGlkIG5vdCBoYW5kbGUgaXQsIHJlbG9hZGluZyB0aGUgcGFn
ZSIpOwogICAgIHJlbG9hZChSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5KTsKIH0KIApAQCAtODI2
MywxNiArODI1OSwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1
cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90
IGV4cGVjdGVkVXNhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoU3RvcmFnZSwgInJl
cXVlc3RTdG9yYWdlU3BhY2UgZm9yIGZyYW1lICUiIFBSSXU2NCAiLCBjdXJyZW50IHF1b3RhICUi
IFBSSXU2NCAiIGN1cnJlbnQgdXNhZ2UgJSIgUFJJdTY0ICIgZXhwZWN0ZWQgdXNhZ2UgJSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCksIGN1cnJlbnRRdW90YSwgY3VycmVudERhdGFiYXNlVXNh
Z2UsIGV4cGVjdGVkVXNhZ2UpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhTdG9yYWdl
LCAicmVxdWVzdFN0b3JhZ2VTcGFjZSBmb3IgZnJhbWUgJSIgUFJJdTY0ICIsIGN1cnJlbnQgcXVv
dGEgJSIgUFJJdTY0ICIgY3VycmVudCB1c2FnZSAlIiBQUkl1NjQgIiBleHBlY3RlZCB1c2FnZSAl
IiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50RGF0YWJh
c2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSk7CiAKICAgICBTdG9yYWdlUmVxdWVzdHM6OnNpbmdsZXRv
bigpLnByb2Nlc3NPckFwcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBwYWdlVVJMID0gY3VycmVudFVSTCgpLCBmcmFtZUlELCBvcmlnaW5JZGVudGlmaWVyLCBkYXRh
YmFzZU5hbWUsIGRpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwg
Y3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIHRoaXMtPm1h
a2VTdG9yYWdlU3BhY2VSZXF1ZXN0KGZyYW1lSUQsIG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNl
TmFtZSwgZGlzcGxheU5hbWUsIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBjdXJy
ZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBwYWdlVVJMID0gV1RGTW92ZShwYWdlVVJM
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY3VycmVu
dFF1b3RhXShhdXRvIHF1b3RhKSBtdXRhYmxlIHsKIAotICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChTdG9yYWdlLCAicmVxdWVzdFN0b3JhZ2VTcGFjZSByZXNwb25zZSBmb3IgZnJh
bWUgJSIgUFJJdTY0ICIsIHF1b3RhICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpLCBxdW90
YSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coU3RvcmFnZSwgInJlcXVl
c3RTdG9yYWdlU3BhY2UgcmVzcG9uc2UgZm9yIGZyYW1lICUiIFBSSXU2NCAiLCBxdW90YSAlIiBQ
Ukl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwgcXVvdGEpOwogICAgICAgICAgICAgVU5VU0VEX1ZB
UklBQkxFKGZyYW1lSUQpOwogCiAgICAgICAgICAgICBpZiAocXVvdGEgPD0gY3VycmVudFF1b3Rh
ICYmIHRoaXMtPmN1cnJlbnRVUkwoKSA9PSBwYWdlVVJMKSB7Ci0gICAgICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChTdG9yYWdlLCAic3RvcmFnZSBzcGFjZSBpbmNyZWFzZSBkZW5p
ZWQiKTsKKyAgICAgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coU3RvcmFnZSwg
InN0b3JhZ2Ugc3BhY2UgaW5jcmVhc2UgZGVuaWVkIik7CiAgICAgICAgICAgICAgICAgbV9pc1F1
b3RhSW5jcmVhc2VEZW5pZWQgPSAgdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHF1b3RhKTsKQEAgLTkzNjEsNyArOTM1Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlKCkKICAgICBpZiAoIWhhdmVS
ZXBvcnRlZENhcHR1cmUgJiYgd2lsbFJlcG9ydENhcHR1cmUpCiAgICAgICAgIG1fdXBkYXRlUmVw
b3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChtX21lZGlhQ2FwdHVyZVJl
cG9ydGluZ0RlbGF5KTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoV2ViUlRDLCAidXBk
YXRlUmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZTogZnJvbSAlZCB0byAlZCIsIG1fcmVwb3J0ZWRN
ZWRpYUNhcHR1cmVTdGF0ZS50b1JhdygpLCBhY3RpdmVDYXB0dXJlU3RhdGUudG9SYXcoKSk7Cisg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFdlYlJUQywgInVwZGF0ZVJlcG9ydGVkTWVkaWFD
YXB0dXJlU3RhdGU6IGZyb20gJWQgdG8gJWQiLCBtX3JlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUu
dG9SYXcoKSwgYWN0aXZlQ2FwdHVyZVN0YXRlLnRvUmF3KCkpOwogCiAgICAgYm9vbCBtaWNyb3Bo
b25lQ2FwdHVyZUNoYW5nZWQgPSAobV9yZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlICYgTWVkaWFQ
cm9kdWNlcjo6QXVkaW9DYXB0dXJlTWFzaykgIT0gKGFjdGl2ZUNhcHR1cmVTdGF0ZSAmIE1lZGlh
UHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZU1hc2spOwogICAgIGJvb2wgY2FtZXJhQ2FwdHVyZUNoYW5n
ZWQgPSAobV9yZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6VmlkZW9D
YXB0dXJlTWFzaykgIT0gKGFjdGl2ZUNhcHR1cmVTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OlZpZGVv
Q2FwdHVyZU1hc2spOwpAQCAtOTYwMCwxMyArOTU5NiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkSW5hY3RpdmVNZW1vcnlMaW1pdFdo
aWxlQWN0aXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFBlcmZvcm1h
bmNlTG9nZ2luZywgImRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSIpOwor
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJk
aWRFeGNlZWRJbmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUiKTsKICAgICBtX3VpQ2xpZW50
LT5kaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKCp0aGlz
LCBrV0tSZXNvdXJjZUxpbWl0TWVtb3J5KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEV4
Y2VlZEJhY2tncm91bmRDUFVMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKCkKIHsKLSAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEV4Y2VlZEJhY2tn
cm91bmRDUFVMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEV4Y2VlZEJhY2tncm91bmRDUFVM
aW1pdFdoaWxlSW5Gb3JlZ3JvdW5kIik7CiAgICAgbV91aUNsaWVudC0+ZGlkRXhjZWVkQmFja2dy
b3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCgqdGhpcywga1dLUmVzb3VyY2VMaW1p
dENQVSk7CiB9CiAKQEAgLTEwNDE0LDcgKzEwNDEwLDggQEAgTG9nZ2VyJiBXZWJQYWdlUHJveHk6
OmxvZ2dlcigpCiB7CiAgICAgaWYgKCFtX2xvZ2dlcikgewogICAgICAgICBtX2xvZ2dlciA9IExv
Z2dlcjo6Y3JlYXRlKHRoaXMpOwotICAgICAgICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCBp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSk7CisgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMg
cmVhbGx5IG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gZXBoZW1lcmFsIHNlc3Npb25zPworICAgICAg
ICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCAhc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuICptX2xvZ2dlcjsKQEAgLTEwNjczLDcgKzEwNjcwLDggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGwKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSN1bmRl
ZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
CisjdW5kZWYgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SCiAjdW5kZWYgTUVTU0FHRV9D
SEVDS19DT01QTEVUSU9OCiAjdW5kZWYgTUVTU0FHRV9DSEVDS19VUkwKICN1bmRlZiBNRVNTQUdF
X0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY3NmM3YzMw
MGM0NDg2MGZjODIyMzZiYzY0YWY2ZjUwNGI4MzVhZTUuLmExYzEzZDlmMDBhOTk4ZjI1OGVmY2Fk
ZGZkMWFmOWQyZmI0NTNkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIs
IGJvb2wpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
V2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcikgZmluYWw7Ci0g
ICAgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7IH0KKyAgICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKTsgfQogICAgIGJvb2wgdXNlaVR1bmVzQVZPdXRwdXRDb250ZXh0KCkgY29uc3QgZmlu
YWw7CiAgICAgUGxhdGZvcm1WaWV3KiBwbGF0Zm9ybVZpZXcoKSBjb25zdCBmaW5hbDsKIApAQCAt
MTYyMiw4ICsxNjIyLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNOZXZlclJpY2hseUVkaXRhYmxl
Rm9yVG91Y2hCYXIoKSBjb25zdCB7IHJldHVybiBtX2lzTmV2ZXJSaWNobHlFZGl0YWJsZUZvclRv
dWNoQmFyOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkg
Y29uc3Q7Ci0KICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICB2b2lkIGdhbWVwYWRBY3Rpdml0eShj
b25zdCBWZWN0b3I8R2FtZXBhZERhdGE+JiwgV2ViQ29yZTo6RXZlbnRNYWtlc0dhbWVwYWRzVmlz
aWJsZSk7CiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="451202"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429912</attachid>
            <date>2021-05-27 12:30:56 -0700</date>
            <delta_ts>2021-05-27 15:31:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226342-20210527123055.patch</filename>
            <type>text/plain</type>
            <size>102452</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliNDk4OGJlYjYyZmU4MjE2
NmIwMDU2ZDk5N2E1YjQ2Yjk0M2VkYWEuLjJjZjA1NWViZGU2NTVlOGMyMzY5MTcwOGRkYmZhNjA2
NGFjNGQ1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA1LTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIFdlYlBhZ2VQcm94eSdz
IHJlbGVhc2UgbG9nZ2luZyBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBXZWJQYWdlUHJveHkncyByZWxl
YXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zLiBPdXIgcmVsZWFzZSBsb2dnaW5nIGRv
ZXNuJ3QKKyAgICAgICAgY29udGFpbiBhbnl0aGluZyBzZW5zaXRpdmUgYW5kIG5vdCBoYXZpbmcg
dGhpcyBsb2dnaW5nIG1ha2VzIGl0IGhhcmQgdG8gZGVidWcgaXNzdWVzIGluCisgICAgICAgIGFw
cHMgdXNpbmcgZXBoZW1lcmFsIHNlc3Npb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhp
bnRzKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVT
dGFydEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgpOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6cHJlc2VudFZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnRyeUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVk
T3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxlQWN0aXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtE
dWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RTdG9yYWdlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZv
cmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvZ2dlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDIxLTA1LTI3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRk
IHZhbGlkYXRpb24gd2hlbiByZWFkaW5nIERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyOjp3
YWl0aW5nU3RhdHVzIGluIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDhjYzMzOTc2YzMzNDY1
MzM3ZDU2MDAwMjA1YzNmNTNlMTYyODYxNDkuLjU5YTNmNTEzZmEwYTU2MzA2NDkzMjVjOTkxMDJj
YzMwN2VjYWRkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCkBAIC03OCw3ICs3OCw3IEBAIC0gKHZvaWQpX2FjdGlvbjooaWQpc2VuZGVy
IFwKICAgICAgICAgW19jb250ZW50VmlldyBfYWN0aW9uICMjIEZvcldlYlZpZXc6c2VuZGVyXTsg
XAogfQogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoLi4uKSBSRUxFQVNFX0xPR19J
RihfcGFnZSAmJiBfcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFZpZXdTdGF0ZSwg
X19WQV9BUkdTX18pCisjZGVmaW5lIFdLV0VCVklFV19SRUxFQVNFX0xPRyguLi4pIFJFTEVBU0Vf
TE9HKFZpZXdTdGF0ZSwgX19WQV9BUkdTX18pCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlbGF5
QmVmb3JlTm9WaXNpYmxlQ29udGVudHNSZWN0c0xvZ2dpbmcgPSAxX3M7CiBzdGF0aWMgY29uc3Qg
U2Vjb25kcyBkZWxheUJlZm9yZU5vQ29tbWl0c0xvZ2dpbmcgPSA1X3M7CkBAIC02ODYsMTMgKzY4
NiwxMyBAQCAtICh2b2lkKV9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXQKIAogLSAodm9pZClfcHJv
Y2Vzc1dpbGxTd2FwCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZp
ZXcgX3Byb2Nlc3NXaWxsU3dhcF0iLCBzZWxmKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0co
IiVwIC1bV0tXZWJWaWV3IF9wcm9jZXNzV2lsbFN3YXBdIiwgc2VsZik7CiAgICAgW3NlbGYgX3By
b2Nlc3NXaWxsU3dhcE9yRGlkRXhpdF07CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX3Byb2Nlc3NEaWRF
eGl0XSIsIHNlbGYpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcg
X3Byb2Nlc3NEaWRFeGl0XSIsIHNlbGYpOwogCiAgICAgW3NlbGYgX3Byb2Nlc3NXaWxsU3dhcE9y
RGlkRXhpdF07CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdAog
CiAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3MKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAtW1dLV2ViVmlldyBfZGlkUmVsYXVuY2hQcm9jZXNzXSIsIHNlbGYpOworICAgIFdL
V0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcgX2RpZFJlbGF1bmNoUHJvY2Vzc10i
LCBzZWxmKTsKICAgICBfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGUgPSBOTzsKICAgICBf
dmlld1N0YWJpbGl0eVdoZW5WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVTY2hlZHVsZWQgPSB7IH07
CiAgICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKQEAgLTc4NiwxNCArNzg2LDE0IEBAIC0gKHZv
aWQpX2RpZENvbW1pdExheWVyVHJlZUR1cmluZ0FuaW1hdGVkUmVzaXplOihjb25zdCBXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyCiAtICh2b2lkKV90cmFja1RyYW5zYWN0aW9uQ29tbWl0Oihjb25z
dCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlv
bgogewogICAgIGlmIChfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFi
bGVTY3JvbGxWaWV3KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAorICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAogICAgICAgICBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpLCBf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSwgX25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1p
dExvYWRGb3JNYWluRnJhbWUsIF9maXJzdFBhaW50QWZ0ZXJDb21taXRMb2FkVHJhbnNhY3Rpb25J
RC50b1VJbnQ2NCgpLCBbX2NvbnRlbnRWaWV3IHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlXSwgW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSwgX2N1cnJlbnRs
eUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCk7CiAgICAgfQogCiAgICAgaWYg
KF90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0KSB7
CiAgICAgICAgIGF1dG8gdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPSBN
b25vdG9uaWNUaW1lOjpub3coKSAtICpfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVXaXRoUGVuZGluZ0NvbW1pdDsKICAgICAgICAgaWYgKHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdp
dGhQZW5kaW5nQ29tbWl0ID4gZGVsYXlCZWZvcmVOb0NvbW1pdHNMb2dnaW5nKQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJW
aWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZz
IGFmdGVyIHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklE
ICVsbHUiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZp
cnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9u
LnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxF
QVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXll
clRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29u
dGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklEICVsbHUiLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5k
aW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50
b1VJbnQ2NCgpKTsKICAgICAgICAgX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
V2l0aFBlbmRpbmdDb21taXQgPSBXVEY6Om51bGxvcHQ7CiAgICAgfQogfQpAQCAtODkzLDcgKzg5
Myw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlCiAgICAgfQogCiAgICAgaWYgKF9yZXNpemVB
bmltYXRpb25WaWV3KQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2Vi
VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSBkeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlIGlz
IE5vdFJlc2l6aW5nLCBidXQgc3RpbGwgaGF2ZSBhIGxpdmUgcmVzaXplQW5pbWF0aW9uVmlldyAo
dW5wYWlyZWQgYmVnaW4vZW5kQW5pbWF0ZWRSZXNpemU/KSIsIHNlbGYpOworICAgICAgICBXS1dF
QlZJRVdfUkVMRUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAt
IGR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgaXMgTm90UmVzaXppbmcsIGJ1dCBzdGlsbCBoYXZl
IGEgbGl2ZSByZXNpemVBbmltYXRpb25WaWV3ICh1bnBhaXJlZCBiZWdpbi9lbmRBbmltYXRlZFJl
c2l6ZT8pIiwgc2VsZik7CiAKICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld0ZvclRyYW5zYWN0
aW9uOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKIApAQCAtMTk1MSwxNCArMTk1MSwxNCBAQCAtICh2
b2lkKV9hZGRVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RQcmVDb21taXRIYW5kbGVyCiAgICAgW0NB
VHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFuZGxlcjpbcmV0YWluZWRTZWxmXSB7CiAgICAgICAgIFdL
V2ViVmlldyAqd2ViVmlldyA9IHJldGFpbmVkU2VsZi5nZXQoKTsKICAgICAgICAgaWYgKCFbd2Vi
VmlldyBfaXNWYWxpZF0pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHdlYlZpZXcuX3Bh
Z2UgJiYgd2ViVmlldy5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFZpZXdTdGF0
ZSwgIkluIENBVHJhbnNhY3Rpb24gcHJlQ29tbWl0SGFuZGxlciwgV0tXZWJWaWV3ICVwIGlzIGlu
dmFsaWQiLCB3ZWJWaWV3KTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiSW4g
Q0FUcmFuc2FjdGlvbiBwcmVDb21taXRIYW5kbGVyLCBXS1dlYlZpZXcgJXAgaXMgaW52YWxpZCIs
IHdlYlZpZXcpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgQHRy
eSB7CiAgICAgICAgICAgICBbd2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CiAg
ICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19JRih3ZWJWaWV3Ll9wYWdlICYmIHdlYlZpZXcuX3BhZ2UtPmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBWaWV3U3RhdGUsICJJbiBDQVRyYW5zYWN0aW9uIHByZUNvbW1pdEhh
bmRsZXIsIC1bV0tXZWJWaWV3ICVwIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXSB0aHJldyBh
biBleGNlcHRpb24iLCB3ZWJWaWV3KTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xP
RygiSW4gQ0FUcmFuc2FjdGlvbiBwcmVDb21taXRIYW5kbGVyLCAtW1dLV2ViVmlldyAlcCBfdXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0c10gdGhyZXcgYW4gZXhjZXB0aW9uIiwgd2ViVmlldyk7CiAg
ICAgICAgIH0KICAgICAgICAgd2ViVmlldy0+X2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRl
ID0gTk87CiAgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUHJlQ29tbWl0XTsKQEAg
LTE5NzEsNyArMTk3MSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlQWZ0ZXJTY3JvbGxJblZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sCiAgICAgaWYgKF9oYXNT
Y2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSkgewogICAgICAgICBhdXRvIHRpbWVOb3cgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgaWYgKCh0aW1lTm93IC0gX3RpbWVPZlJlcXVlc3RG
b3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpID4gZGVsYXlCZWZvcmVOb1Zpc2libGVDb250ZW50
c1JlY3RzTG9nZ2luZykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiLVtX
S1dlYlZpZXcgJXAgX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlQWZ0ZXJTY3JvbGxJ
blZpZXddOiBfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGUgaXMgdHJ1ZSBidXQgaGF2ZW4n
dCB1cGRhdGVkIHZpc2libGUgY29udGVudCByZWN0cyBmb3IgJS4yZnMgKGxhc3QgdXBkYXRlIHdh
cyAlLjJmcyBhZ28pIC0gdmFsaWQgJWQiLAorICAgICAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0Vf
TE9HKCItW1dLV2ViVmlldyAlcCBfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVBZnRl
clNjcm9sbEluVmlld106IF9oYXNTY2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSBpcyB0cnVlIGJ1
dCBoYXZlbid0IHVwZGF0ZWQgdmlzaWJsZSBjb250ZW50IHJlY3RzIGZvciAlLjJmcyAobGFzdCB1
cGRhdGUgd2FzICUuMmZzIGFnbykgLSB2YWxpZCAlZCIsCiAgICAgICAgICAgICAgICAgc2VsZiwg
KHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkudmFs
dWUoKSwgKHRpbWVOb3cgLSBfdGltZU9mTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkudmFs
dWUoKSwgW3NlbGYgX2lzVmFsaWRdKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0y
MDY2LDcgKzIwNjYsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAg
ICAgIFtfcGFzc3dvcmRWaWV3IHNldEZyYW1lOnNlbGYuYm91bmRzXTsKICAgICAgICAgW19jdXN0
b21Db250ZW50VmlldyB3ZWJfY29tcHV0ZWRDb250ZW50SW5zZXREaWRDaGFuZ2VdOwogICAgICAg
ICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uID0gWUVTOwot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHVzZXNTdGFuZGFyZENvbnRl
bnRWaWV3IGlzIE5PLCBiYWlsaW5nIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxs
dSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHVzZXNTdGFuZGFy
ZENvbnRlbnRWaWV3IGlzIE5PLCBiYWlsaW5nIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA3NCwxMyArMjA3NCwx
MyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgaWYgKF90aW1lT2ZG
aXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0KSB7CiAgICAgICAg
IGF1dG8gdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPSB0aW1lTm93IC0g
Kl90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0Owog
ICAgICAgICBpZiAodGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPiBkZWxh
eUJlZm9yZU5vQ29tbWl0c0xvZ2dpbmcpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHM6XSAtIGhhdmUgbm90IHJlY2VpdmVkIGEgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2li
bGUgY29udGVudCByZWN0IHVwZGF0ZTsgbGFzdFRyYW5zYWN0aW9uSUQgJWxsdSIsIHNlbGYsIF9w
YWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBl
bmRpbmdDb21taXQudmFsdWUoKSwgX2xhc3RUcmFuc2FjdGlvbklELnRvVUludDY0KCkpOworICAg
ICAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIGhhdmUgbm90IHJlY2VpdmVk
IGEgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZTsgbGFzdFRy
YW5zYWN0aW9uSUQgJWxsdSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
dGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQudmFsdWUoKSwgX2xhc3RUcmFu
c2FjdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KIAogICAgIGlmIChfaW52b2tpbmdVSVNjcm9s
bFZpZXdEZWxlZ2F0ZUNhbGxiYWNrKSB7CiAgICAgICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHNGb3JVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrID0gWUVTOwogICAgICAg
ICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uID0gWUVTOwot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIF9pbnZva2luZ1VJU2Nyb2xs
Vmlld0RlbGVnYXRlQ2FsbGJhY2sgaXMgWUVTLCBiYWlsaW5nIiwgc2VsZiwgX3BhZ2UtPmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAo
cGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6
XSAtIF9pbnZva2luZ1VJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2sgaXMgWUVTLCBiYWlsaW5n
Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMjA5MywxMyArMjA5MywxMyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzCiAgICAgICAgIHx8IF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5z
ZXRzRm9yS2V5Ym9hcmQpIHsKICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRS
ZWN0c0ZvckFueVJlYXNvbiA9IFlFUzsKICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0c0ZvclVuc3RhYmxlU2Nyb2xsVmlldyA9IFlFUzsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVW
aXNpYmxlQ29udGVudFJlY3RzOl0gLSBzY3JvbGwgdmlldyBzdGF0ZSBpcyBub24tc3RhYmxlLCBi
YWlsaW5nIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCwgX25lZWRzUmVzZXRWaWV3U3Rh
dGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUgJWQsIHNpemVDaGFuZ2VkU2luY2VMYXN0Vmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlICVkLCBbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICVk
LCBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0ZvcktleWJvYXJkICVkKSIsCisg
ICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tX
ZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0gLSBzY3JvbGwgdmlldyBzdGF0ZSBp
cyBub24tc3RhYmxlLCBiYWlsaW5nIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCwgX25l
ZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUgJWQsIHNpemVDaGFu
Z2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlICVkLCBbX3Njcm9sbFZpZXcgaXNa
b29tQm91bmNpbmddICVkLCBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0Zvcktl
eWJvYXJkICVkKSIsCiAgICAgICAgICAgICBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlLCBfbmVlZHNSZXNldFZpZXdTdGF0ZUFm
dGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSwgW19jb250ZW50VmlldyBzaXplQ2hhbmdlZFNpbmNl
TGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZV0sIFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2lu
Z10sIF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250
ZW50UmVjdHNGb3JBbnlSZWFzb24pCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVw
IChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
czpdIC0gcGVyZm9ybWluZyBmaXJzdCB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGUgYWZ0ZXIg
ZGVmZXJyaW5nIHVwZGF0ZXMiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAt
W1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0gcGVyZm9ybWluZyBmaXJz
dCB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGUgYWZ0ZXIgZGVmZXJyaW5nIHVwZGF0ZXMiLCBz
ZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgX2RpZERlZmVyVXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvclVJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2sgPSBO
TzsKICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFibGVTY3Jv
bGxWaWV3ID0gTk87CkBAIC0yMTUzLDcgKzIxNTMsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzCiAgICAgfQogCiAgICAgaWYgKCh0aW1lTm93IC0gX3RpbWVPZlJlcXVlc3RG
b3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpID4gZGVsYXlCZWZvcmVOb1Zpc2libGVDb250ZW50
c1JlY3RzTG9nZ2luZykKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dl
YlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSBmaW5hbGx5IHJhbiAlLjJmcyBhZnRl
ciBiZWluZyBzY2hlZHVsZWQiLCBzZWxmLCAodGltZU5vdyAtIF90aW1lT2ZSZXF1ZXN0Rm9yVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlKS52YWx1ZSgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVB
U0VfTE9HKCIlcCAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIGZpbmFs
bHkgcmFuICUuMmZzIGFmdGVyIGJlaW5nIHNjaGVkdWxlZCIsIHNlbGYsICh0aW1lTm93IC0gX3Rp
bWVPZlJlcXVlc3RGb3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLnZhbHVlKCkpOwogCiAgICAg
X2Fsd2F5c1NlbmROZXh0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gTk87CiAgICAgX3RpbWVP
Zkxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPSB0aW1lTm93OwpAQCAtMjE3OSw3ICsyMTc5
LDcgQEAgc3RhdGljIGludDMyX3QgYWN0aXZlT3JpZW50YXRpb24oV0tXZWJWaWV3ICp3ZWJWaWV3
KQogCiAtICh2b2lkKV9jYW5jZWxBbmltYXRlZFJlc2l6ZQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfY2FuY2VsQW5pbWF0
ZWRSZXNpemVdIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkIiwgc2VsZiwgX3BhZ2UtPmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CisgICAg
V0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcg
X2NhbmNlbEFuaW1hdGVkUmVzaXplXSBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCIsIHNl
bGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGUpOwogCiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IFdlYktpdDo6
RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6Tm90UmVzaXppbmcpCiAgICAgICAgIHJldHVybjsK
QEAgLTIyMTEsMTIgKzIyMTEsMTIgQEAgLSAodm9pZClfZGlkQ29tcGxldGVBbmltYXRlZFJlc2l6
ZQogCiAgICAgaWYgKCFfcmVzaXplQW5pbWF0aW9uVmlldykgewogICAgICAgICAvLyBQYXJhbm9p
YS4gSWYgX3Jlc2l6ZUFuaW1hdGlvblZpZXcgaXMgbnVsbCB3ZSdsbCBlbmQgdXAgc2V0dGluZyBh
IHplcm8gc2NhbGUgb24gdGhlIGNvbnRlbnQgdmlldy4KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemU6XSAtIF9y
ZXNpemVBbmltYXRpb25WaWV3IGlzIG5pbCIsIHNlbGYpOworICAgICAgICBXS1dFQlZJRVdfUkVM
RUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplOl0gLSBf
cmVzaXplQW5pbWF0aW9uVmlldyBpcyBuaWwiLCBzZWxmKTsKICAgICAgICAgW3NlbGYgX2NhbmNl
bEFuaW1hdGVkUmVzaXplXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29t
cGxldGVBbmltYXRlZFJlc2l6ZV0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1b
V0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplXSIsIHNlbGYsIF9wYWdlLT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBOU1VJbnRlZ2VyIGluZGV4T2ZSZXNpemVBbmlt
YXRpb25WaWV3ID0gW1tfc2Nyb2xsVmlldyBzdWJ2aWV3c10gaW5kZXhPZk9iamVjdDpfcmVzaXpl
QW5pbWF0aW9uVmlldy5nZXQoKV07CiAgICAgW19zY3JvbGxWaWV3IGluc2VydFN1YnZpZXc6X2Nv
bnRlbnRWaWV3LmdldCgpIGF0SW5kZXg6aW5kZXhPZlJlc2l6ZUFuaW1hdGlvblZpZXddOwpAQCAt
Mjg4Nyw3ICsyODg3LDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVz
Oih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJW
aWV3IF9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6XSIsIHNlbGYsIF9wYWdlLT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFn
ZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRl
czpdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlID0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2Rl
OjpSZXNpemluZ1dpdGhBbmltYXRpb247CiAKQEAgLTMwMjQsNyArMzAyNCw3IEBAIC0gKHZvaWQp
X2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxv
Y2sKIAogLSAodm9pZClfZW5kQW5pbWF0ZWRSZXNpemUKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2VuZEFuaW1hdGVkUmVz
aXplXSBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCIsIHNlbGYsIF9wYWdlLT5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUpOworICAgIFdLV0VC
VklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9lbmRB
bmltYXRlZFJlc2l6ZV0gX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgJWQiLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlKTsK
IAogICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiB1cC10by1kYXRlIGxheWVyIHRyZWUsIGlt
bWVkaWF0ZWx5IGNvbXBsZXRlCiAgICAgLy8gdGhlIHJlc2l6ZS4gT3RoZXJ3aXNlLCB3ZSB3aWxs
IGRlZmVyIGNvbXBsZXRpb24gdW50aWwgd2UgZG8uCkBAIC0zMDM1LDcgKzMwMzUsNyBAQCAtICh2
b2lkKV9lbmRBbmltYXRlZFJlc2l6ZQogCiAtICh2b2lkKV9yZXNpemVXaGlsZUhpZGluZ0NvbnRl
bnRXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3Jlc2l6
ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmll
cigpLnRvVUludDY0KCkpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94
eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9yZXNpemVXaGlsZUhpZGluZ0NvbnRlbnRXaXRoVXBkYXRl
czpdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIFtzZWxm
IF9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6dXBkYXRlQmxvY2tdOwogICAgIGlmIChf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSA9PSBXZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGU6OlJlc2l6aW5nV2l0aEFuaW1hdGlvbikgewpAQCAtMzMzOSw0ICszMzM5LDYgQEAgLSAo
aWQgPF9XS1dlYlZpZXdQcmludFByb3ZpZGVyPilfcHJpbnRQcm92aWRlcgogCiBAZW5kCiAKKyN1
bmRlZiBXS1dFQlZJRVdfUkVMRUFTRV9MT0cKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KaW5kZXggZjdkNDA2MzYxZmU2ODc4ZWY3MzViMzVhOTgzNzg4Y2Q0NWUwZDRjZi4uMDczYTdi
N2M0Y2UzNjM0NTRmMmM4ZDQ4NjY2OTA3NzFjYmQ0NGMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTM2OCwxMCArMTM2OCwx
MCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eShOZXR3b3Jr
QWN0aXZpdHlSZWxlYXNlUmVhc29uIHJlYXNvbgogCiAgICAgc3dpdGNoIChyZWFzb24pIHsKICAg
ICBjYXNlIE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb246OkxvYWRDb21wbGV0ZWQ6Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNp
bmcgYmFja2dyb3VuZCBwcm9jZXNzIGFzc2VydGlvbiBiZWNhdXNlIGEgcGFnZSBsb2FkIGNvbXBs
ZXRlZCIsIHRoaXMpOworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVw
IE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNpbmcgYmFja2dyb3VuZCBwcm9jZXNzIGFzc2VydGlv
biBiZWNhdXNlIGEgcGFnZSBsb2FkIGNvbXBsZXRlZCIsIHRoaXMpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb246OlNjcmVlbkxvY2tlZDoKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRlIGlzIHJlbGVh
c2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHNjcmVlbiB3YXMg
bG9ja2VkIiwgdGhpcyk7CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
JXAgTmF2aWdhdGlvblN0YXRlIGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0
aW9uIGJlY2F1c2UgdGhlIHNjcmVlbiB3YXMgbG9ja2VkIiwgdGhpcyk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBtX25ldHdvcmtBY3Rpdml0eSA9IG51bGxwdHI7CkBAIC0xMzg4LDE3ICsx
Mzg4LDE3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRDaGFuZ2VJc0xvYWRpbmcoKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChtX3JlbGVhc2VOZXR3b3JrQWN0aXZpdHlU
aW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRihtX3dlYlZpZXct
Pl9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIE5hdmlnYXRpb25TdGF0ZSBrZWVwcyBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBi
ZWNhdXNlIGEgbmV3IHBhZ2UgbG9hZCBzdGFydGVkIiwgdGhpcyk7CisgICAgICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBzIGl0
cyBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0
ZWQiLCB0aGlzKTsKICAgICAgICAgICAgIG1fcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRpbWVyLnN0
b3AoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIW1fbmV0d29ya0FjdGl2aXR5KSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRihtX3dlYlZpZXctPl9wYWdlLT5pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5hdmlnYXRpb25TdGF0ZSBpcyB0
YWtpbmcgYSBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdlIGxvYWQgc3Rh
cnRlZCIsIHRoaXMpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICIlcCAtIE5hdmlnYXRpb25TdGF0ZSBpcyB0YWtpbmcgYSBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0
aW9uIGJlY2F1c2UgYSBwYWdlIGxvYWQgc3RhcnRlZCIsIHRoaXMpOwogICAgICAgICAgICAgbV9u
ZXR3b3JrQWN0aXZpdHkgPSBtX3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJQYWdlIExvYWQiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChtX25ldHdvcmtBY3Rpdml0eSkgewogICAgICAgICAvLyBU
aGUgYXBwbGljYXRpb24gaXMgdmlzaWJsZSBzbyB3ZSBkZWxheSByZWxlYXNpbmcgdGhlIGJhY2tn
cm91bmQgYWN0aXZpdHkgZm9yIDMgc2Vjb25kcyB0byBnaXZlIGl0IGEgY2hhbmNlIHRvIHN0YXJ0
IGFub3RoZXIgbmF2aWdhdGlvbgogICAgICAgICAvLyBiZWZvcmUgc3VzcGVuZGluZyB0aGUgV2Vi
Q29udGVudCBwcm9jZXNzIDxyZGFyOi8vcHJvYmxlbS8yNzkxMDk2ND4uCi0gICAgICAgIFJFTEVB
U0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIHdpbGwgcmVsZWFzZSBpdHMg
cHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBzb29uIGJlY2F1c2UgdGhlIHBhZ2UgbG9hZCBjb21w
bGV0ZWQiLCB0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIE5hdmlnYXRpb25TdGF0ZSB3aWxsIHJlbGVhc2UgaXRzIHByb2Nlc3MgbmV0d29yayBhc3Nl
cnRpb24gc29vbiBiZWNhdXNlIHRoZSBwYWdlIGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAg
ICAgIG1fcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRpbWVyLnN0YXJ0T25lU2hvdCgzX3MpOwogICAg
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQpp
bmRleCBmZDhjNzA3ZDk5ZTg0OTE4ZWNhMGIwN2VmZTFjOGE0Y2QyOGM0Yzg2Li5jOTBjMjk5MDRh
NGE1NTE1ZWMwOWY3M2IyZmE0NjAzNDZkMjg0YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09B
dXRob3JpemF0aW9uU2Vzc2lvbi5tbQpAQCAtNDQsNyArNDQsNyBAQAogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlICYmIG1fcGFnZS0+aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIEFwcFNTTywgIiVwIC0gW0luaXRpYXRpbmdBY3Rpb249
JXNdIFNPQXV0aG9yaXphdGlvblNlc3Npb246OiIgZm10LCB0aGlzLCB0b1N0cmluZyhtX2FjdGlv
biksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0Vf
TE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhBcHBTU08sICIlcCAtIFtJbml0aWF0aW5nQWN0aW9u
PSVzXSBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjoiIGZtdCwgdGhpcywgdG9TdHJpbmcobV9hY3Rp
b24pLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6YmVjb21lQ29tcGxldGVkKCkKIAog
dm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCgpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic2hvdWxkU3RhcnQ6Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJ
T05fUkVMRUFTRV9MT0coInNob3VsZFN0YXJ0OiIpOwogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OklkbGUpOwogICAgIGlmICghbV9wYWdlKQpAQCAtMTI3LDEyICsxMjcsMTIgQEAgdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCgpCiAKIHZvaWQgU09BdXRob3Jp
emF0aW9uU2Vzc2lvbjo6c3RhcnQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0
YXJ0OiIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJzdGFydDoiKTsK
IAogICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSB8fCBtX3N0YXRlID09IFN0YXRl
OjpXYWl0aW5nKSAmJiBtX25hdmlnYXRpb25BY3Rpb24pOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6
QWN0aXZlOwogICAgIFttX3NvQXV0aG9yaXphdGlvbiBnZXRBdXRob3JpemF0aW9uSGludHNXaXRo
VVJMOm1fbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpIHJlc3BvbnNlQ29kZTowIGNv
bXBsZXRpb246bWFrZUJsb2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKFNPQXV0aG9yaXphdGlvbkhpbnRzICphdXRob3JpemF0aW9uSGludHMsIE5TRXJyb3IgKmVy
cm9yKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBSZWNlaXZlIFNP
QXV0aG9yaXphdGlvbkhpbnRzIChlcnJvcj0lbGQpIiwgZXJyb3IgPyBlcnJvci5jb2RlIDogMCk7
CisgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJzdGFydDogUmVjZWl2
ZSBTT0F1dGhvcml6YXRpb25IaW50cyAoZXJyb3I9JWxkKSIsIGVycm9yID8gZXJyb3IuY29kZSA6
IDApOwogCiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgZXJyb3IgfHwgIWF1dGhvcml6YXRpb25I
aW50cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFNPQXV0
aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KCkKIAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9u
Ojpjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHMoY29uc3QgU3RyaW5nJiBo
aW50cykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVN0YXJ0QWZ0ZXJH
ZXRBdXRob3JpemF0aW9uSGludHM6IChoaW50cz0lcykiLCBoaW50cy51dGY4KCkuZGF0YSgpKTsK
KyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiY29udGludWVTdGFydEFmdGVy
R2V0QXV0aG9yaXphdGlvbkhpbnRzOiAoaGludHM9JXMpIiwgaGludHMudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKICAgICBpZiAoIW1fcGFn
ZSkKQEAgLTE1OCwxMyArMTU4LDEzIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29u
dGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhpbnRzKGNvbnN0IFN0cmluCiB2b2lkIFNP
QXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeShjb25z
dCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5JiBwb2xpY3kpCiB7CiAgICAgaWYgKHBvbGljeSA9
PSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpJZ25vcmUpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9yZSIpOworICAgICAgICBBVVRIT1JJWkFUSU9O
U0VTU0lPTl9SRUxFQVNFX0xPRygiY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNl
aXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9yZSIpOwogCiAgICAgICAgIGZhbGxC
YWNrVG9XZWJQYXRoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09B
dXRob3JpemF0aW9uTG9hZFBvbGljeTo6QWxsb3ciKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lP
Tl9SRUxFQVNFX0xPRygiY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6OkFsbG93Iik7CiAKICAgICBpZiAoIW1fc29BdXRob3Jp
emF0aW9uIHx8ICFtX3BhZ2UgfHwgIW1fbmF2aWdhdGlvbkFjdGlvbikKICAgICAgICAgcmV0dXJu
OwpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGlu
dWVTdGFydEFmdGVyRGVjaWRlUG9saWN5KGNvbnN0IFNPQXV0aG9yaXphdGlvCiAKIHZvaWQgU09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgoKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImZhbGxCYWNrVG9XZWJQYXRoOiIpOworICAgIEFVVEhPUklaQVRJT05T
RVNTSU9OX1JFTEVBU0VfTE9HKCJmYWxsQmFja1RvV2ViUGF0aDoiKTsKIAogICAgIGlmIChtX3N0
YXRlICE9IFN0YXRlOjpBY3RpdmUpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMiw3ICsyMDIsNyBA
QCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmZhbGxCYWNrVG9XZWJQYXRoKCkKIAogdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjphYm9ydCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiYWJvcnQ6Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0co
ImFib3J0OiIpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUgfHwgbV9zdGF0ZSA9
PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMjYsNyArMjI2LDcgQEAg
dm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZShOU0hUVFBVUkxSZXNwb25zZSAq
aHR0cFJlc3BvbnNlLCBOU0RhdGEgKmQKICAgICAvLyBTZXQgY29va2llcy4KICAgICBhdXRvIGNv
b2tpZXMgPSB0b0Nvb2tpZVZlY3RvcihbTlNIVFRQQ29va2llIGNvb2tpZXNXaXRoUmVzcG9uc2VI
ZWFkZXJGaWVsZHM6aHR0cFJlc3BvbnNlLmFsbEhlYWRlckZpZWxkcyBmb3JVUkw6cmVzcG9uc2Uu
dXJsKCldKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbXBsZXRlOiAoaHR0cFN0
YXR1c0NvZGU9JWQsIGhhc0Nvb2tpZXM9JWQsIGhhc0RhdGE9JWQpIiwgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSwgIWNvb2tpZXMuaXNFbXB0eSgpLCAhIWRhdGEubGVuZ3RoKTsKKyAgICBBVVRI
T1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiY29tcGxldGU6IChodHRwU3RhdHVzQ29kZT0l
ZCwgaGFzQ29va2llcz0lZCwgaGFzRGF0YT0lZCkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
LCAhY29va2llcy5pc0VtcHR5KCksICEhZGF0YS5sZW5ndGgpOwogCiAgICAgaWYgKGNvb2tpZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRlSW50ZXJuYWwocmVzcG9uc2UsIGRhdGEpOwpA
QCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGUo
TlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSwgTlNEYXRhICpkCiAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY29tcGxldGU6IENvb2tpZXMgYXJlIHNldC4iKTsKKyAgICAgICAgQVVUSE9SSVpB
VElPTlNFU1NJT05fUkVMRUFTRV9MT0coImNvbXBsZXRlOiBDb29raWVzIGFyZSBzZXQuIik7CiAK
ICAgICAgICAgY29tcGxldGVJbnRlcm5hbChyZXNwb25zZSwgZGF0YS5nZXQoKSk7CiAgICAgfSk7
CkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0
ZShOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlLCBOU0RhdGEgKmQKIAogdm9pZCBTT0F1
dGhvcml6YXRpb25TZXNzaW9uOjpwcmVzZW50Vmlld0NvbnRyb2xsZXIoU09BdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgdmlld0NvbnRyb2xsZXIsIFVJQ2FsbGJhY2sgdWlDYWxsYmFjaykKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwcmVzZW50Vmlld0NvbnRyb2xsZXI6Iik7Cisg
ICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coInByZXNlbnRWaWV3Q29udHJvbGxl
cjoiKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwogICAgIC8vIE9u
bHkgZXhwZWN0IGF0IG1vc3Qgb25lIFVJIHNlc3Npb24gZm9yIHRoZSB3aG9sZSBhdXRob3JpemF0
aW9uIHNlc3Npb24uCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNz
aW9uOjpwcmVzZW50Vmlld0NvbnRyb2xsZXIoU09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInBy
ZXNlbnRWaWV3Q29udHJvbGxlcjogQ2FsbGluZyBiZWdpblNoZWV0IG9uICVwIGZvciBzaGVldCAl
cC4iLCBwcmVzZW50aW5nV2luZG93LCBtX3NoZWV0V2luZG93LmdldCgpKTsKKyAgICBBVVRIT1JJ
WkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygicHJlc2VudFZpZXdDb250cm9sbGVyOiBDYWxsaW5n
IGJlZ2luU2hlZXQgb24gJXAgZm9yIHNoZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1fc2hl
ZXRXaW5kb3cuZ2V0KCkpOwogICAgIFtwcmVzZW50aW5nV2luZG93IGJlZ2luU2hlZXQ6bV9zaGVl
dFdpbmRvdy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogI2VsaWYgUExBVEZPUk0oSU9T
KQogICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fcGFn
ZS0+dWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKQEAgLTI5Miw3ICsyOTIs
NyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnByZXNlbnRWaWV3Q29udHJvbGxlcihT
T0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JF
TEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6Iik7CiAKICAgICBBU1NFUlQobV92aWV3
Q29udHJvbGxlcik7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMzAzLDEzICszMDMsMTMgQEAgdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQogICAgIGlm
IChtX3BhZ2UgJiYgbV9wYWdlLT5wbGF0Zm9ybVdpbmRvdygpKSB7CiAgICAgICAgIGF1dG8gKnBy
ZXNlbnRpbmdXaW5kb3cgPSBtX3BhZ2UtPnBsYXRmb3JtV2luZG93KCk7CiAgICAgICAgIGlmIChw
cmVzZW50aW5nV2luZG93Lm1pbmlhdHVyaXplZCkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBQYWdlJ3Mgd2luZG93IGlzIG1pbmlh
dHVyaXplZC4gV2FpdGluZyB0byBkaXNtaXNzIHVudGlsIGFjdGl2ZS4iKTsKKyAgICAgICAgICAg
IEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6
IFBhZ2UncyB3aW5kb3cgaXMgbWluaWF0dXJpemVkLiBXYWl0aW5nIHRvIGRpc21pc3MgdW50aWwg
YWN0aXZlLiIpOwogICAgICAgICAgICAgaWYgKG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0
dXJpemVPYnNlcnZlcikgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpc21pc3NWaWV3Q29udHJvbGxlcjogW01pbmlhdHVyaXplZF0gQWxyZWFkeSBoYXMgYSBkZW1p
bmlhdHVyaXplZCBvYnNlcnZlciAoJXApLiBIaWRkZW4gb2JzZXJ2ZXIgaXMgJXAiLCBtX3ByZXNl
bnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25E
aWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgQVVUSE9SSVpBVElPTlNF
U1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogW01pbmlhdHVyaXplZF0g
QWxyZWFkeSBoYXMgYSBkZW1pbmlhdHVyaXplZCBvYnNlcnZlciAoJXApLiBIaWRkZW4gb2JzZXJ2
ZXIgaXMgJXAiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0
KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9wcmVzZW50aW5nV2luZG93
RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5kb3dEaWREZW1pbmlhdHVyaXplTm90aWZp
Y2F0aW9uIG9iamVjdDpwcmVzZW50aW5nV2luZG93IHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOltwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gKE5TTm90aWZpY2F0aW9uICopIHsK
LSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRy
b2xsZXI6IFdpbmRvdyBoYXMgZGVtaW5pYXR1cml6ZWQuIENvbXBsZXRpbmcgdGhlIGRpc21pc3Nh
bC4iKTsKKyAgICAgICAgICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygi
ZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBXaW5kb3cgaGFzIGRlbWluaWF0dXJpemVkLiBDb21wbGV0
aW5nIHRoZSBkaXNtaXNzYWwuIik7CiAgICAgICAgICAgICAgICAgZGlzbWlzc1ZpZXdDb250cm9s
bGVyKCk7CiAgICAgICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSByZW1vdmVPYnNlcnZlcjptX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2Jz
ZXJ2ZXIuZ2V0KCldOwogICAgICAgICAgICAgICAgIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWlu
aWF0dXJpemVPYnNlcnZlciA9IG51bGxwdHI7CkBAIC0zMTksMTMgKzMxOSwxMyBAQCB2b2lkIFNP
QXV0aG9yaXphdGlvblNlc3Npb246OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiAgICAgfQogCiAg
ICAgaWYgKE5TQXBwLmhpZGRlbikgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aXNtaXNzVmlld0NvbnRyb2xsZXI6IEFwcGxpY2F0aW9uIGlzIGhpZGRlbi4gV2FpdGluZyB0byBk
aXNtaXNzIHVudGlsIGFjdGl2ZS4iKTsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVM
RUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogQXBwbGljYXRpb24gaXMgaGlkZGVuLiBX
YWl0aW5nIHRvIGRpc21pc3MgdW50aWwgYWN0aXZlLiIpOwogICAgICAgICBpZiAobV9hcHBsaWNh
dGlvbkRpZFVuaGlkZU9ic2VydmVyKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFtIaWRkZW5dIEFscmVhZHkgaGFzIGFuIFVuaGlk
ZSBvYnNlcnZlciAoJXApLiBEZW1pbmlhdHVyaXplZCBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2Vu
dGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRp
ZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKKyAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9O
X1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFtIaWRkZW5dIEFscmVhZHkgaGFz
IGFuIFVuaGlkZSBvYnNlcnZlciAoJXApLiBEZW1pbmlhdHVyaXplZCBvYnNlcnZlciBpcyAlcCIs
IG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBs
aWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIgPSBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxp
Y2F0aW9uRGlkVW5oaWRlTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcCBxdWV1ZTpuaWwgdXNpbmdC
bG9jazpbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIChOU05vdGlmaWNh
dGlvbiAqKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmll
d0NvbnRyb2xsZXI6IEFwcGxpY2F0aW9uIGlzIG5vIGxvbmdlciBoaWRkZW4uIENvbXBsZXRpbmcg
dGhlIGRpc21pc3NhbC4iKTsKKyAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVB
U0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IEFwcGxpY2F0aW9uIGlzIG5vIGxvbmdlciBo
aWRkZW4uIENvbXBsZXRpbmcgdGhlIGRpc21pc3NhbC4iKTsKICAgICAgICAgICAgIGRpc21pc3NW
aWV3Q29udHJvbGxlcigpOwogICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIu
Z2V0KCldOwogICAgICAgICAgICAgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyID0gbnVs
bHB0cjsKQEAgLTMzNywxMCArMzM3LDEwIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkKICAgICBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2
ZXIgPSBudWxscHRyOwogCiAgICAgYXV0byAqcHJlc2VudGluZ1dpbmRvdyA9IG1fc2hlZXRXaW5k
b3cuZ2V0KCkuc2hlZXRQYXJlbnQ7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlz
c1ZpZXdDb250cm9sbGVyOiBDYWxsaW5nIGVuZFNoZWV0IG9uICVwIGZvciBzaGVldCAlcC4iLCBw
cmVzZW50aW5nV2luZG93LCBtX3NoZWV0V2luZG93LmdldCgpKTsKKyAgICBBVVRIT1JJWkFUSU9O
U0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBDYWxsaW5nIGVuZFNo
ZWV0IG9uICVwIGZvciBzaGVldCAlcC4iLCBwcmVzZW50aW5nV2luZG93LCBtX3NoZWV0V2luZG93
LmdldCgpKTsKICAgICBbcHJlc2VudGluZ1dpbmRvdyBlbmRTaGVldDptX3NoZWV0V2luZG93Lmdl
dCgpXTsKICAgICBtX3NoZWV0V2luZG93ID0gbnVsbHB0cjsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IEZpbmlzaGVkIGNhbGwgd2l0aCBkZW1pbmlh
dHVyaXplZCBvYnNlcnZlciAoJXApIGFuZCBIaWRkZW4gb2JzZXJ2ZXIgKCVwKSIsIG1fcHJlc2Vu
dGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRp
ZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNF
X0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBGaW5pc2hlZCBjYWxsIHdpdGggZGVtaW5pYXR1
cml6ZWQgb2JzZXJ2ZXIgKCVwKSBhbmQgSGlkZGVuIG9ic2VydmVyICglcCkiLCBtX3ByZXNlbnRp
bmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRV
bmhpZGVPYnNlcnZlci5nZXQoKSk7CiAjZWxpZiBQTEFURk9STShJT1MpCiAgICAgW1ttX3ZpZXdD
b250cm9sbGVyIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0gZGlzbWlzc1ZpZXdDb250cm9sbGVy
QW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKICNlbmRpZgpAQCAtMzUwLDYgKzM1MCw2IEBA
IHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisj
dW5kZWYgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0cKIAogI2VuZGlmIC8vIEhBVkUo
QVBQX1NTTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAppbmRleCAyMjZkMjkzMzQwNWVhNWI2ZjBiYzM2OWU1MWZkMDc4NjJlMzdhZjc2Li5m
ZjYyODNmNjliNzkzYjYxMDZiNmU0OTQ5MjU0N2VmNTY1NDRlZmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC01NSw4ICs1NSw4
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2Rl
ZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xP
R19JRihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtw
YWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWksIG5h
dmlnYXRpb25JRD0lIiBQUkl1NjQgIl0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlz
LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCks
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMjX19WQV9B
UkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9
JSIgUFJJdTY0ICIsIFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiXSBQcm92aXNpb25h
bFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
bV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X25hdmlnYXRpb25JRCwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUFJPVklTSU9OQUxQQUdFUFJP
WFlfUkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIl
cCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9
JWksIG5hdmlnYXRpb25JRD0lIiBQUkl1NjQgIl0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10
LCB0aGlzLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMj
X19WQV9BUkdTX18pCisjZGVmaW5lIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VS
Uk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBb
cGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpLCBu
YXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICJdIFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhp
cywgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fbmF2aWdhdGlvbklELCAjI19fVkFf
QVJHU19fKQogCiBQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2Vi
UGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6dW5p
cXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHN1c3BlbmRlZFBhZ2UsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgYm9vbCBpc1NlcnZlclJlZGlyZWN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHdlYnNpdGVQb2xpY2llcykK
ICAgICA6IG1fcGFnZShwYWdlKQpAQCAtNzYsNyArNzYsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vz
c1BybwogI2VuZGlmCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBzdXNwZW5kZWRQYWdlPSVwIiwgc3Vz
cGVuZGVkUGFnZS5nZXQoKSk7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHN1c3BlbmRlZFBhZ2U9JXAi
LCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQ
YWdlSUQsICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0
aGlzKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lv
bmFsUGFnZVByb3h5KCkKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRl
cm1pbmF0ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJwcm9jZXNzRGlkVGVybWluYXRlOiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZ
X1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6
Iik7CiAgICAgbV9wYWdlLnByb3Zpc2lvbmFsUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogfQogCkBA
IC0xMzUsNyArMTM1LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAg
ICAgICAgCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6
OlN0YXRlOjpSdW5uaW5nKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiY2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lIik7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBw
aW5nLCAiY2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
Iik7CiAgICAgQVNTRVJUKG1fbWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0Ojpj
YW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKQEAgLTE2NCwxNCArMTY0LDE0IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKFJlZlB0cjxBUEk6Oldl
YnNpdGVQb2xpY2llcz4mJiB3ZWJzCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRE
YXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6Iik7CisgICAg
UFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERh
dGE6Iik7CiAKICAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVu
Y29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpZZXMsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6Iik7CisgICAgUFJP
VklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVl
c3Q6Iik7CiAKICAgICAvLyBJZiB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3QgY29udGlu
dWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0
ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2FzZSwKICAgICAvLyB3ZSBuZWVkIHRvIG1h
a2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0ncyBwcm9jZXNzSWRlbnRpZmllciBhcyB3ZSB3YW50
IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlzIEJhY2tGb3J3YXJkIGl0ZW0gdG8gaGFwcGVuIGlu
IHRoZQpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAKIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBSZWZQdHI8QVBJOjpX
ZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbToiKTsKKyAgICBQ
Uk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFj
a0ZvcndhcmRJdGVtOiIpOwogCiAgICAgYXV0byBpdGVtU3RhdGVzID0gbV9wYWdlLmJhY2tGb3J3
YXJkTGlzdCgpLmZpbHRlcmVkSXRlbVN0YXRlcyhbdGhpcywgdGFyZ2V0SXRlbSA9ICZpdGVtXShh
dXRvJiBpdGVtKSB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrRm9yd2FyZENhY2hlRW50cnkgPSBp
dGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpKSB7CkBAIC0yMTQsNyArMjE0LDcgQEAgaW5saW5l
IGJvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IE8KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRl
TWFpbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBmcmFtZUlEPSUi
IFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IGZyYW1lSUQ9
JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogICAgIEFTU0VSVCghbV9tYWluRnJhbWUp
OwogCiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUobV9wYWdlLCBmcmFt
ZUlEKTsKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZQogICAgIGlm
ICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUlu
dDY0KCkpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0
LCBmcmFtZUlELnRvVUludDY0KCkpOwogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsTG9hZFVSTC5p
c051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB1cmw7CiAKQEAgLTI3Miw3ICsy
NzIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSQogICAgIGlmICghdmFsaWRhdGVJbnB1dChm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAg
UFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N3YXBwaW5nLCAi
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJ
RC50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgp
KTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKIApAQCAtMjg4LDcgKzI4OCw3IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQs
IG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUi
IFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1l
SUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2Fk
VVJMID0geyB9OwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCkBA
IC00MjEsMTQgKzQyMSwxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpjb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkRm9yRnJhbWUoY29uc3QgV2ViQ29yZTo6Q29udAogI2lmIEhBVkUoVklT
SUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlk
Q3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhv
c3RpbmdDb250ZXh0SUQgY29udGV4dElEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbjogY29udGV4dElEPSV1IiwgY29udGV4dElEKTsKKyAgICBQUk9WSVNJT05B
TFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVDb250ZXh0
SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9JXUiLCBjb250
ZXh0SUQpOwogICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9j
ZXNzID0gY29udGV4dElEOwogfQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlQ29udGV4dElu
R1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjogY29udGV4dElEPSV1IiwgY29udGV4
dElEKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
OiBjb250ZXh0SUQ9JXUiLCBjb250ZXh0SUQpOwogICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzID0gY29udGV4dElEOwogfQogI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkubW0KaW5kZXggOTgzNWE2NDU3MDRhNWY5NmMyMzRjYjkwMzM0ZmI4NDk4NTE4YzBhYS4u
MTQ5NWQ4OWMyMjQzY2I0OGIwNTNiYmY1OTk1NTRjOTFjOTQ3ZThmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTUwNCw3ICs1MDQsNyBA
QCBib29sIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Omhhc1Zpc2libGVDb250ZW50
KCkgY29uc3QKIAogYm9vbCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkuc2Vz
c2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CiB9CiAKIENBTGF5ZXIgKlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmxheWVyV2l0aElERm9yVGVzdGluZyh1aW50NjRf
dCBsYXllcklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggYzUyZTJiOGUwOWY5YjBhZTRhMzQwNDRmMjJkNjgzMmM4MGVjMzM4NC4uNWVhYzY1MzQ3
NTBhN2Y5OWRjODZjZjI2MDYxYTgxOTNiYTI5ZDZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMTUsOCArMzE1LDggQEAKICNkZWZpbmUgTUVTU0FHRV9D
SEVDS19VUkwocHJvY2VzcywgdXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UoY2hlY2tVUkxSZWNlaXZl
ZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgdXJsKSwgcHJvY2Vzcy0+
Y29ubmVjdGlvbigpKQogI2RlZmluZSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04ocHJvY2Vzcywg
YXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT05fQkFTRShhc3Nl
cnRpb24sIHByb2Nlc3MtPmNvbm5lY3Rpb24oKSwgY29tcGxldGlvbikKIAotI2RlZmluZSBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBS
SXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laV0gV2ViUGFnZVByb3h5OjoiIGZt
dCwgdGhpcywgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCks
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtw
YWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWldIFdl
YlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9B
UkdTX18pCisjZGVmaW5lIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3
ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laV0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywg
bV9pZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJP
UihjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQ
Ukl1NjQgIiwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCAjI19fVkFfQVJHU19fKQogCiAvLyBSZXByZXNlbnRzIHRoZSBudW1iZXIgb2Yg
d2hlZWwgZXZlbnRzIHdlIGNhbiBob2xkIGluIHRoZSBxdWV1ZSBiZWZvcmUgd2Ugc3RhcnQgcHVz
aGluZyB0aGVtIHByZWVtcHRpdmVseS4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3aGVlbEV2ZW50
UXVldWVTaXplVGhyZXNob2xkID0gMTA7CkBAIC01MTAsNyArNTEwLDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBSZWYKICAgICAsIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyht
X2NvbmZpZ3VyYXRpb24tPmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMoKSkKICNl
bmRpZgogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVjdG9y
OiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY29uc3RydWN0b3I6
Iik7CiAKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkpCiAgICAg
ICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwpA
QCAtNTcyLDcgKzU3Miw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAKIFdlYlBhZ2VQcm94
eTo6fldlYlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGVzdHJ1Y3RvcjoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywg
ImRlc3RydWN0b3I6Iik7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdlKG1faWRlbnRp
ZmllcikgIT0gdGhpcyk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTgyMyw3ICs4MjMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4sIFBybwogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgQVNT
RVJUKCFoYXNSdW5uaW5nUHJvY2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxhdW5jaFByb2Nlc3M6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiIpOwogCiAgICAgLy8gSW4gY2FzZSB3ZSBhcmUgY3Vy
cmVudGx5IGNvbm5lY3RlZCB0byB0aGUgZHVtbXkgcHJvY2Vzcywgd2UgbmVlZCB0byBtYWtlIHN1
cmUgdGhlIGluc3BlY3RvciBwcm94eQogICAgIC8vIGRpc2Nvbm5lY3RzIGZyb20gdGhlIGR1bW15
IHByb2Nlc3MgZmlyc3QuCkBAIC04NjUsMTIgKzg2NSwxMiBAQCBib29sIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IE9wdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWhhc0NvbW1pdHRlZEFueVBy
b3Zpc2lvbmFsTG9hZHMoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5n
IGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgYmVjYXVzZSBoYXMgbm90IGNvbW1pdHRl
ZCBhbnkgbG9hZCB5ZXQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNz
IHBpZCAlaSBiZWNhdXNlIGhhcyBub3QgY29tbWl0dGVkIGFueSBsb2FkIHlldCIsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBpZiAoaXNQYWdlT3BlbmVkQnlET01TaG93aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3Ig
cHJvY2VzcyBwaWQgJWkgYmVjYXVzZSBpdCBpcyBzaG93aW5nIHRoZSBpbml0aWFsIGVtcHR5IGRv
Y3VtZW50IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlm
UG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkg
YmVjYXVzZSBpdCBpcyBzaG93aW5nIHRoZSBpbml0aWFsIGVtcHR5IGRvY3VtZW50IiwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtODc5LDI1ICs4NzksMjUgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICAvLyBJ
ZiB0aGUgc291cmNlIGFuZCB0aGUgZGVzdGluYXRpb24gYmFjayAvIGZvcndhcmQgbGlzdCBpdGVt
cyBhcmUgdGhlIHNhbWUsIHRoZW4gdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0LiBJbiB0
aGlzIGNhc2UsCiAgICAgLy8gdGhlcmUgaXMgbm8gbmVlZCB0byBzdXNwZW5kIHRoZSBwcmV2aW91
cyBwYWdlIGFzIHRoZXJlIHdpbGwgYmUgbm8gd2F5IHRvIGdldCBiYWNrIHRvIGl0LgogICAgIGlm
IChmcm9tSXRlbSAmJiBmcm9tSXRlbSA9PSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1
c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBm
b3IgcHJvY2VzcyBwaWQgJWkgYmVjYXVzZSB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3Qi
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNl
IHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoZnJvbUl0
ZW0gJiYgZnJvbUl0ZW0tPnVybCgpICE9IHBhZ2VMb2FkU3RhdGUoKS51cmwoKSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRD
dXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJv
Y2VzcyBwaWQgJWkgYmVjYXVzZSBmcm9tSXRlbSdzIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgcGFn
ZSBVUkwuIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBw
aWQgJWkgYmVjYXVzZSBmcm9tSXRlbSdzIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgcGFnZSBVUkwu
IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGJvb2wgbmVlZHNTdXNwZW5kZWRQYWdlVG9QcmV2ZW50Rmxhc2hpbmcg
PSBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCA9PSBTaG91bGREZWxheUNs
b3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6WWVzOwogICAgIGlmICghbmVlZHNTdXNwZW5kZWRQ
YWdlVG9QcmV2ZW50Rmxhc2hpbmcgJiYgKCFmcm9tSXRlbSB8fCAhc2hvdWxkVXNlQmFja0Zvcndh
cmRDYWNoZSgpKSkgewogICAgICAgICBpZiAoIWZyb21JdGVtKQotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIHRo
ZXJlIGlzIG5vIGFzc29jaWF0ZWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSIsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGVyZSBpcyBubyBhc3Nv
Y2lhdGVkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNw
ZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgdGhlIGJhY2sgLyBmb3J3YXJk
IGNhY2hlIGlzIGRpc2FibGVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9y
IHByb2Nlc3MgcGlkICVpIHRoZSBiYWNrIC8gZm9yd2FyZCBjYWNoZSBpcyBkaXNhYmxlZCIsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9j
ZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlm
UG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0g
bWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigp
LCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoKTsK
IAogICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3Jl
YXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBp
dGVtICVzIiBQUkl1NjQsIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5s
b2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0g
PyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKQEAgLTkyNyw3ICs5MjcsNyBA
QCBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkVXNlQmFja0ZvcndhcmRDYWNoZSgpIGNvbnN0CiB2
b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6dW5pcXVlX3B0cjxQ
cm92aXNpb25hbFBhZ2VQcm94eT4gcHJvdmlzaW9uYWxQYWdlKQogewogICAgIEFTU0VSVCghbV9p
c0Nsb3NlZCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvUHJv
dmlzaW9uYWxQYWdlOiBuZXdXZWJQYWdlSUQ9JSIgUFJJdTY0LCBwcm92aXNpb25hbFBhZ2UtPndl
YlBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAic3dhcFRvUHJvdmlzaW9uYWxQYWdlOiBuZXdXZWJQYWdlSUQ9JSIgUFJJdTY0LCBwcm92
aXNpb25hbFBhZ2UtPndlYlBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgbV9wcm9jZXNzID0g
cHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCk7CiAgICAgbV93ZWJQYWdlSUQgPSBwcm92aXNpb25h
bFBhZ2UtPndlYlBhZ2VJRCgpOwpAQCAtOTQxLDggKzk0MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVBy
b3h5PiBwCiAjZW5kaWYKICNlbmRpZgogCisgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBuZWVk
IHRvIGRpc2FibGUgdGhpcyBsb2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucz8KICAgICBpZiAo
bV9sb2dnZXIpCi0gICAgICAgIG1fbG9nZ2VyLT5zZXRFbmFibGVkKHRoaXMsIGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpKTsKKyAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgIXNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRy
dWU7CiAKQEAgLTEwMzUsMTAgKzEwMzYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFj
aFRvUnVubmluZ1Byb2Nlc3MoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6Iik7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiIpOwogCiAgICAg
aWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBw
YWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCkBA
IC0xMDQ3LDcgKzEwNDgsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVE
b21haW4sIFByb2Nlc3NMYXVuY2hSZWFzb246OkNyYXNoKTsKIAogICAgIGlmICghbV9iYWNrRm9y
d2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJl
bG9hZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5j
aFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQiKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTA5LDcgKzExMTAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2xvc2UoKQogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZToiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImNsb3NlOiIpOwogCiAgICAgbV9pc0Nsb3Nl
ZCA9IHRydWU7CiAKQEAgLTExODgsNyArMTE4OSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp0cnlD
bG9zZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInRyeUNsb3NlOiIpOwor
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAidHJ5Q2xvc2U6Iik7CiAKICAg
ICAvLyBDbG9zZSB3aXRob3V0IGRlbGF5IGlmIHRoZSBwcm9jZXNzIGFsbG93cyBpdC4gT3VyIGdv
YWwgaXMgdG8gdGVybWluYXRlCiAgICAgLy8gdGhlIHByb2Nlc3MsIHNvIHdlIGNoZWNrIGEgcGVy
LXByb2Nlc3Mgc3RhdHVzIGJpdC4KQEAgLTEyMTMsNyArMTIxNCw3IEBAIGJvb2wgV2ViUGFnZVBy
b3h5Ojp0cnlDbG9zZSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVkT3V0KCkK
IHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJ0cnlDbG9zZVRp
bWVkT3V0OiBUaW1lZCBvdXQgd2FpdGluZyBmb3IgdGhlIHByb2Nlc3MgdG8gcmVzcG9uZCB0byB0
aGUgV2ViUGFnZTo6VHJ5Q2xvc2UgSVBDLCBjbG9zaW5nIHRoZSBwYWdlIG5vdyIpOworICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAidHJ5Q2xvc2VUaW1lZE91dDog
VGltZWQgb3V0IHdhaXRpbmcgZm9yIHRoZSBwcm9jZXNzIHRvIHJlc3BvbmQgdG8gdGhlIFdlYlBh
Z2U6OlRyeUNsb3NlIElQQywgY2xvc2luZyB0aGUgcGFnZSBub3ciKTsKICAgICBjbG9zZVBhZ2Uo
KTsKIH0KIApAQCAtMTMxMCw3ICsxMzExLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAg
ICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdDoiKTsKKyAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRSZXF1ZXN0OiIpOwogCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
IHsgcmVxdWVzdC51cmwoKSB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7
CkBAIC0xMzMyLDcgKzEzMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogewogICAgIEFT
U0VSVCghbV9pc0Nsb3NlZCk7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkOiIpOworICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZDoiKTsK
IAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsK
IApAQCAtMTM2OCwxMCArMTM2OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RX
aXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywg
QVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxvYWRGaWxlOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5n
LCAibG9hZEZpbGU6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQiKTsKKyAg
ICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBp
cyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMzgwLDcg
KzEzODEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBV
UkwoVVJMKCksIGZpbGVVUkxTdHJpbmcpOwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBm
aWxlIGlzIG5vdCBsb2NhbCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbCIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTEzOTAsNyArMTM5MSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBj
b25zCiAgICAgZWxzZSB7CiAgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJMKFVSTCgp
LCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3VyY2VEaXJl
Y3RvcnlVUkwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3QgbG9jYWwiKTsKKyAg
ICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZEZpbGU6IHJl
c291cmNlIFVSTCBpcyBub3QgbG9jYWwiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTQyNCw3ICsxNDI1LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcs
IGNvbnMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZERhdGE6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRGF0
YToiKTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAoTUlNRVR5cGUg
PT0gInRleHQvaHRtbCJfcyAmJiAhaXNGdWxsV2ViQnJvd3NlcigpKQpAQCAtMTQzMiw3ICsxNDMz
LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICNlbmRpZgogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6
IHBhZ2UgaXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtMTQ1MCw3ICsxNDUxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbiIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2
aWdhdGlvbiIpOwogCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTQ3OCw3ICsxNDc5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHNpbXVsYXRlZFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBzaW11bGF0
ZWRSZXNwb25zZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiIpOworICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFNpbXVsYXRlZFJlcXVlc3Q6
Iik7CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKHNpbXVsYXRlZFJl
c3BvbnNlLm1pbWVUeXBlKCkgPT0gInRleHQvaHRtbCJfcyAmJiAhaXNGdWxsV2ViQnJvd3Nlcigp
KQpAQCAtMTQ4Niw3ICsxNDg3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXUKICNlbmRpZgog
CiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZFNpbXVsYXRlZFJlcXVlc3Q6IHBhZ2UgaXMgY2xvc2VkIik7CisgICAgICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFNpbXVsYXRlZFJlcXVlc3Q6
IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
MTUzMiwxMyArMTUzMywxMyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1s
RGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBV
UkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUwiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MIik7CiAKICAg
ICAvLyBXaGVuIHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgaGFuZGxpbmcgYSBm
YWlsaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRvCiAgICAgLy8gc3RhcnQg
YSBzZWNvbmQgYWx0ZXJuYXRpdmUgSFRNTCBsb2FkIGFzIHRoaXMgd2lsbCBwcmV2ZW50IHRoZSBw
YWdlIGxvYWQgc3RhdGUgZnJvbSBiZWluZwogICAgIC8vIGhhbmRsZWQgcHJvcGVybHkuCiAgICAg
aWYgKG1faXNDbG9zZWQgfHwgbV9pc0xvYWRpbmdBbHRlcm5hdGVIVE1MU3RyaW5nRm9yRmFpbGlu
Z1Byb3Zpc2lvbmFsTG9hZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKSIpOworICAg
ICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1M
OiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE1NzUsMTAgKzE1NzYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVI
VE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFMKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRh
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOwogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFy
Y2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTYwMiwxMCArMTYwMywxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQ
STo6T2JqZWN0KiB1cwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIEludFBvaW50IGRvY3VtZW50
UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiIpOworICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2s6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2Ug
aXMgY2xvc2VkOiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjIxLDEwICsxNjIy
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRD
bGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BM
b2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9wTG9h
ZGluZzoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInN0b3BMb2Fk
aW5nOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdl
IGlzIG5vdCB2YWxpZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjM4LDcgKzE2
MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2Fk
T3B0aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InJlbG9hZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInJlbG9h
ZDoiKTsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlOwogCkBAIC0xNzE5LDExICsxNzIwLDExIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAK
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5
cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3
YXJkSXRlbToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImdvVG9C
YWNrRm9yd2FyZEl0ZW06Iik7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgZ29U
b0JhY2tGb3J3YXJkSXRlbSB0byBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0udXJsKCkudXRmOCgp
LmRhdGEoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlIGlzIGNsb3NlZCIp
OworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImdvVG9CYWNrRm9y
d2FyZEl0ZW06IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtMTc0OSwxMCArMTc1MCwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246Iik7
CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb246Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9u
OiBwYWdlIGlzIG5vdCB2YWxpZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0co
TG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjAyMSw3ICsyMDIyLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZs
YWc+IGZsYWdzVG9VcGQKICAgICAgICAgaWYgKGlzTm93VmlzaWJsZSkKICAgICAgICAgICAgIG1f
YWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKICAgICAgICAgaWYg
KHdhc1Zpc2libGUgIT0gaXNOb3dWaXNpYmxlKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChWaWV3U3RhdGUsICJ1cGRhdGVBY3Rpdml0eVN0YXRlOiB2aWV3IHZpc2liaWxpdHkg
c3RhdGUgY2hhbmdlZCAlZCAtPiAlZCIsIHdhc1Zpc2libGUsIGlzTm93VmlzaWJsZSk7CisgICAg
ICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coVmlld1N0YXRlLCAidXBkYXRlQWN0aXZp
dHlTdGF0ZTogdmlldyB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZWQgJWQgLT4gJWQiLCB3YXNWaXNp
YmxlLCBpc05vd1Zpc2libGUpOwogICAgIH0KICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgJiYgcGFnZUNsaWVudCgpLmlzVmlld1Zpc2li
bGVPck9jY2x1ZGVkKCkpCiAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCk7CkBAIC0yMTgxLDExICsyMTgyLDYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAjZW5kaWYKIH0KIAotYm9v
bCBXZWJQYWdlUHJveHk6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwotfQotCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiB7CiAgICAgYm9vbCBwcm9jZXNz
U3VwcHJlc3Npb25FbmFibGVkID0gbV9wcmVmZXJlbmNlcy0+cGFnZVZpc2liaWxpdHlCYXNlZFBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKTsKQEAgLTIyMDQsMjMgKzIyMDAsMjMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKGlzVmlld1Zpc2libGUoKSkgewogICAgICAgICBpZiAoIW1faXNWaXNpYmxl
QWN0aXZpdHkgfHwgIW1faXNWaXNpYmxlQWN0aXZpdHktPmlzVmFsaWQoKSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90
dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNh
dXNlIHRoZSB2aWV3IGlzIHZpc2libGUiKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2Vz
cyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIHZp
c2libGUiKTsKICAgICAgICAgICAgIG1faXNWaXNpYmxlQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyB2aXNpYmxlIl9zKS5tb3ZlVG9V
bmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9pc1Zpc2libGVBY3Rpdml0
eSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAi
dXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQg
YXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgbm8gbG9uZ2VyIHZpc2libGUiKTsKKyAgICAg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhy
b3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9u
IGJlY2F1c2UgdGhlIHZpZXcgaXMgbm8gbG9uZ2VyIHZpc2libGUiKTsKICAgICAgICAgbV9pc1Zp
c2libGVBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgYm9vbCBpc0F1ZGlibGUgPSBt
X2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKTsKICAgICBp
ZiAoaXNBdWRpYmxlKSB7CiAgICAgICAgIGlmICghbV9pc0F1ZGlibGVBY3Rpdml0eSB8fCAhbV9p
c0F1ZGlibGVBY3Rpdml0eS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9j
ZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIHBsYXlp
bmcgYXVkaW8iKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBm
b3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHdlIGFyZSBwbGF5aW5nIGF1ZGlvIik7CiAgICAg
ICAgICAgICBtX2lzQXVkaWJsZUFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3Jl
Z3JvdW5kQWN0aXZpdHkoIlZpZXcgaXMgcGxheWluZyBhdWRpbyJfcykubW92ZVRvVW5pcXVlUHRy
KCk7CiAgICAgICAgIH0KICAgICAgICAgbV9hdWRpYmxlQWN0aXZpdHlUaW1lci5zdG9wKCk7CiAg
ICAgfSBlbHNlIGlmIChtX2lzQXVkaWJsZUFjdGl2aXR5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVBy
b2Nlc3Mgd2lsbCByZWxlYXNlIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gaW4gJWcgc2Vjb25kcyBi
ZWNhdXNlIHdlIGFyZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIsIGF1ZGlibGVBY3Rpdml0eUNs
ZWFyRGVsYXkuc2Vjb25kcygpKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIHdpbGwgcmVs
ZWFzZSBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGluICVnIHNlY29uZHMgYmVjYXVzZSB3ZSBhcmUg
bm8gbG9uZ2VyIHBsYXlpbmcgYXVkaW8iLCBhdWRpYmxlQWN0aXZpdHlDbGVhckRlbGF5LnNlY29u
ZHMoKSk7CiAgICAgICAgIGlmICghbV9hdWRpYmxlQWN0aXZpdHlUaW1lci5pc0FjdGl2ZSgpKQog
ICAgICAgICAgICAgbV9hdWRpYmxlQWN0aXZpdHlUaW1lci5zdGFydE9uZVNob3QoYXVkaWJsZUFj
dGl2aXR5Q2xlYXJEZWxheSk7CiAgICAgfQpAQCAtMjIyOCwxMSArMjIyNCwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgYm9vbCBpc0NhcHR1cmluZ01l
ZGlhID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5n
TWVkaWEpOwogICAgIGlmIChpc0NhcHR1cmluZ01lZGlhKSB7CiAgICAgICAgIGlmICghbV9pc0Nh
cHR1cmluZ0FjdGl2aXR5IHx8ICFtX2lzQ2FwdHVyaW5nQWN0aXZpdHktPmlzVmFsaWQoKSkgewot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVw
ZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2Vy
dGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlIik7CisgICAgICAgICAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0
YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBt
ZWRpYSBjYXB0dXJlIGlzIGFjdGl2ZSIpOwogICAgICAgICAgICAgbV9pc0NhcHR1cmluZ0FjdGl2
aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlZpZXcgaXMg
Y2FwdHVyaW5nIG1lZGlhIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAobV9pc0NhcHR1cmluZ0FjdGl2aXR5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBtZWRpYSBjYXB0
dXJlIGlzIG5vIGxvbmdlciBhY3RpdmUiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlz
IHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBp
cyBubyBsb25nZXIgYWN0aXZlIik7CiAgICAgICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG51
bGxwdHI7CiAgICAgfQogI2VuZGlmCkBAIC0yMjQxLDcgKzIyMzcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZv
aWQgV2ViUGFnZVByb3h5OjpjbGVhckF1ZGlibGVBY3Rpdml0eSgpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJ
UHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHdlIGFy
ZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyBy
ZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHdlIGFyZSBubyBsb25nZXIg
cGxheWluZyBhdWRpbyIpOwogICAgIG1faXNBdWRpYmxlQWN0aXZpdHkgPSBudWxscHRyOwogfQog
I2VuZGlmCkBAIC0yNTI0LDcgKzI1MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRl
UmVuZGVyaW5nQWZ0ZXJDb21taXR0aW5nTG9hZCgpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1h
a2luZ1ZpZXdCbGFua0R1ZVRvTGFja09mUmVuZGVyaW5nVXBkYXRlKCkKIHsKICAgICBBU1NFUlQo
bV9oYXNVcGRhdGVkUmVuZGVyaW5nQWZ0ZXJEaWRDb21taXRMb2FkKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3MsICJzdG9wTWFraW5nVmlld0JsYW5rRHVlVG9MYWNrT2ZSZW5k
ZXJpbmdVcGRhdGU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJz
dG9wTWFraW5nVmlld0JsYW5rRHVlVG9MYWNrT2ZSZW5kZXJpbmdVcGRhdGU6Iik7CiAgICAgcGFn
ZUNsaWVudCgpLm1ha2VWaWV3QmxhbmsoZmFsc2UpOwogfQogCkBAIC0yNTQwLDcgKzI1MzYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9h
ZENvbW1pdCgpCiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZE1ha2VWaWV3QmxhbmsgPSB0cnVl
OwogI2VuZGlmCiAgICAgICAgIGlmIChzaG91bGRNYWtlVmlld0JsYW5rKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJtYWtlVmlld0JsYW5rSWZVbnBhaW50
ZWRTaW5jZUxhc3RMb2FkQ29tbWl0OiBNYWtpbmcgdGhlIHZpZXcgYmxhbmsgYmVjYXVzZSBvZiBh
IEpTIHByb21wdCBiZWZvcmUgdGhlIGZpcnN0IHBhaW50IGZvciBpdHMgcGFnZSIpOworICAgICAg
ICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJtYWtlVmlld0JsYW5rSWZV
bnBhaW50ZWRTaW5jZUxhc3RMb2FkQ29tbWl0OiBNYWtpbmcgdGhlIHZpZXcgYmxhbmsgYmVjYXVz
ZSBvZiBhIEpTIHByb21wdCBiZWZvcmUgdGhlIGZpcnN0IHBhaW50IGZvciBpdHMgcGFnZSIpOwog
ICAgICAgICAgICAgcGFnZUNsaWVudCgpLm1ha2VWaWV3QmxhbmsodHJ1ZSk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0zMzQ3LDcgKzMzNDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWY8QVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYg
ZnJhbWUsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiBwb2xpY2llcywgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjogZnJhbWVJRD0lbGx1
LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1IiwgZnJhbWUuZnJhbWVJRCgpLnRv
VUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1
bnNpZ25lZClwb2xpY3lBY3Rpb24pOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAicmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246IGZyYW1lSUQ9JWxsdSwgbmF2
aWdhdGlvbklEPSVsbHUsIHBvbGljeUFjdGlvbj0ldSIsIGZyYW1lLmZyYW1lSUQoKS50b1VJbnQ2
NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWdu
ZWQpcG9saWN5QWN0aW9uKTsKIAogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0
YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmNvcHlSZWYoKTsKICAgICBpZiAocG9saWNpZXMp
IHsKQEAgLTM0MDksMTAgKzM0MDUsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAg
ICAgYm9vbCBzaG91bGRQcm9jZXNzU3dhcCA9IHByb2Nlc3NGb3JOYXZpZ2F0aW9uLnB0cigpICE9
IHNvdXJjZVByb2Nlc3MucHRyKCk7CiAgICAgICAgIGlmIChzaG91bGRQcm9jZXNzU3dhcCkgewog
ICAgICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9uOjpTdG9wQWxsTG9hZHM7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sIHN3YXBwaW5nIHByb2Nlc3MgJWkgd2l0aCBwcm9j
ZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19TVFJJTkcsIHByb2Nl
c3NJZGVudGlmaWVyKCksIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLT5wcm9jZXNzSWRlbnRpZmllcigp
LCByZWFzb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwg
c3dhcHBpbmcgcHJvY2VzcyAlaSB3aXRoIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNv
bj0lIiBQVUJMSUNfTE9HX1NUUklORywgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvY2Vzc0Zvck5h
dmlnYXRpb24tPnByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBTd2l0Y2hp
bmcgZnJvbSBwcm9jZXNzICVpIHRvIG5ldyBwcm9jZXNzICglaSkgZm9yIG5hdmlnYXRpb24gJSIg
UFJJdTY0ICIgJyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHByb2Nlc3NGb3JOYXZpZ2F0aW9u
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdh
dGlvbi0+bG9nZ2luZ1N0cmluZygpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246IGtlZXAgdXNpbmcgcHJvY2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29u
PSUiIFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3
YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoga2VlcCB1c2luZyBwcm9j
ZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19TVFJJTkcsIHByb2Nl
c3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG9wdGlvbmFsSGFuZGxlOwogICAgICAgICBpZiAo
c2hvdWxkUHJvY2Vzc1N3YXApIHsKQEAgLTM0OTEsNyArMzQ4Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbioKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJhbWVM
b2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNl
cnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xpY3ks
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFBh
Z2UpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbW1pdFByb3Zpc2lv
bmFsUGFnZTogbmV3UElEPSVpIiwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNz
SWRlbnRpZmllcigpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImNv
bW1pdFByb3Zpc2lvbmFsUGFnZTogbmV3UElEPSVpIiwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nl
c3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlv
bmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0zNTI5LDEy
ICszNTI1LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAKIHZvaWQgV2ViUGFnZVByb3h5
Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2Us
IFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8QVBJOjpXZWJzaXRl
UG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzczogbmV3UHJvY2Vzc1BJ
RD0laSwgaGFzU3VzcGVuZGVkUGFnZT0laSIsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksICEhc3VzcGVuZGVkUGFnZSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRp
bmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IG5ld1Byb2Nlc3NQSUQ9JWksIGhh
c1N1c3BlbmRlZFBhZ2U9JWkiLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1
c3BlbmRlZFBhZ2UpOwogICAgIExPRyhMb2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUi
IFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRp
b25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJpbmcoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
IW5ld1Byb2Nlc3MtPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CiAKICAgICBpZiAobV9wcm92aXNpb25h
bFBhZ2UpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IFRoZXJlIGlzIGFscmVhZHkgYSBwZW5k
aW5nIHByb3Zpc2lvbmFsIGxvYWQsIGNhbmNlbGxpbmcgaXQgKHByb3Zpc29uYWxOYXZpZ2F0aW9u
SUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUpIiwgbV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRp
b25JRCgpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpKTsKKyAgICAgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJv
Y2VzczogVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgcHJvdmlzaW9uYWwgbG9hZCwgY2FuY2Vs
bGluZyBpdCAocHJvdmlzb25hbE5hdmlnYXRpb25JRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSki
LCBtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubmF2aWdhdGlv
bklEKCkpOwogICAgICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25JRCgpICE9
IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCkpCiAgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFn
ZS0+Y2FuY2VsKCk7CiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKQEAgLTM2
NjcsNyArMzY2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6Iik7CisgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJzdXNwZW5kOiIpOwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSB8fCBtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOwogCkBAIC0zNjc3LDcgKzM2NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVu
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAicmVzdW1lOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAicmVz
dW1lOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2lzU3VzcGVuZGVk
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMzcyMyw3ICsz
NzE5LDcgQEAgU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVu
Y3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vz
c2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiIpOworICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6Iik7CiAKICAgICBt
X3Nlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVTaXplID0gMDsKICAgICBtX2hpdFJlbmRlclRy
ZWVTaXplVGhyZXNob2xkID0gZmFsc2U7CkBAIC00NTQxLDcgKzQ1MzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmCiAgICAgICAgIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZp
Z2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAl
IiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJs
ICVzIiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50
NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rp
b24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2Fj
dGlvbik7CkBAIC00NTc4LDcgKzQ1NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRXhwbGlj
aXRPcGVuRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFVSTCYmIHVybCwgUwogICAg
IE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAgICBpZiAoIWNoZWNrVVJMUmVj
ZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKG1fcHJvY2VzcywgdXJsKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyBX
ZWJQYWdlUHJveHk6OkRpZEV4cGxpY2l0T3BlbkZvckZyYW1lKCkgSVBDIGZyb20gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcyBiZWNhdXNlIHRoZSBmaWxlIFVSTCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94
Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiSWdu
b3JpbmcgV2ViUGFnZVByb3h5OjpEaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSgpIElQQyBmcm9tIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgYmVjYXVzZSB0aGUgZmlsZSBVUkwgaXMgb3V0c2lkZSB0aGUg
c2FuZGJveCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjAzLDcgKzQ1OTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2
NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1lSUQudG9VSW50NjQo
KSwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJ
RC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlE
PSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ2MzIsNyArNDYyOCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChSZWY8CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
dXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAg
ICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NjQ1
LDcgKzQ2NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjbwogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGll
bnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgp
KTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZENhbmNlbENsaWVu
dFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkp
OwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApA
QCAtNDY5Myw3ICs0Njg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5n
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGlu
ZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxV
UkwudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9j
ZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAi
LCBkb21haW49JXMsIGNvZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigp
LnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0dfRVJST1IoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQgIiwgZG9tYWluPSVzLCBjb2RlPSVkIiwgZnJhbWVJRC50b1VJbnQ2
NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00
NzY0LDcgKzQ3NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogewogICAgIExPRyhMb2Fk
aW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9y
RnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBu
YXZpZ2F0aW9uSUQpOwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVy
IGxvYWQgY29tbWl0LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJk
TGlzdC0+bG9nZ2luZ1N0cmluZygpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRv
VUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkQ29t
bWl0TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsK
IAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAg
LTQ4ODgsNyArNDg4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDkxNiw3
ICs0OTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjQKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAi
V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0
aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRp
b25JRCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9h
ZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTY3LDcgKzQ5NjMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExv
YWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewot
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9y
RnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGRvbWFpbj0lcywgY29kZT0lZCIsIGZyYW1lSUQu
dG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiZGlkRmFp
bExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQgIiwgZG9tYWluPSVzLCBjb2RlPSVkIiwg
ZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC01MDEyLDcgKzUwMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFp
bExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3Bh
cXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQu
dG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlE
LnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIApAQCAtNTE5OCw3ICs1MTk0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMK
ICAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
CiAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
LCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGZy
YW1lSUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQo
KSwgbmF2aWdhdGlvbklEKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywg
ImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGZyYW1lSUQ9JWxsdSwgbmF2aWdhdGlv
bklEPSVsbHUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKIAog
ICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBVUkwgJXMiLCBvcmlnaW5h
bFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIApAQCAtNTIxNCw3ICs1MjEwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXMKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVl
c3QodHJhbnNhY3Rpb24pOwogCiAgICAgaWYgKCFjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRP
clByZXZpb3VzV2ViUHJvY2Vzcyhwcm9jZXNzLCByZXF1ZXN0LnVybCgpKSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyByZXF1ZXN0IHRv
IGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgb3V0c2lkZSB0aGUgc2FuZGJv
eCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIkln
bm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBpcyBv
dXRzaWRlIHRoZSBzYW5kYm94Iik7CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lv
biB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCks
IFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUyODAsNyArNTI3Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZy
YW1lLmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihyZXF1ZXN0KSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyBy
ZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgd2FzIGhhbmRsZWQg
YnkgY29udGVudCBmaWx0ZXIiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3MsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNl
IGJlY2F1c2UgaXQgd2FzIGhhbmRsZWQgYnkgY29udGVudCBmaWx0ZXIiKTsKICAgICAgICAgcmV0
dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG1fbmF2aWdh
dGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfQogI2VuZGlmCkBAIC01Mjk1
LDcgKzUyOTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2VuZGlmCiAKICAgICBhdXRv
IGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwg
c2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCBm
cmFtZUluZm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
LCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dh
cm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzQXBwQm91bmREb21haW4pIG11dGFibGUgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBs
aXN0ZW5lciBjYWxsZWQ6IGZyYW1lSUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUsIHBvbGljeUFj
dGlvbj0ldSwgc2FmZUJyb3dzaW5nV2FybmluZz0lZCwgaXNBcHBCb3VuZERvbWFpbj0lZCIsIGZy
YW1lLT5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbiwgISFzYWZlQnJvd3NpbmdXYXJu
aW5nLCAhIWlzQXBwQm91bmREb21haW4pOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNh
bGxlZDogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1LCBz
YWZlQnJvd3NpbmdXYXJuaW5nPSVkLCBpc0FwcEJvdW5kRG9tYWluPSVkIiwgZnJhbWUtPmZyYW1l
SUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkg
OiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNB
cHBCb3VuZERvbWFpbik7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0
aW9uLCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0g
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpKSB7CkBAIC01MzE0LDcgKzUzMTAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2NlcwogICAgICAgICAgICAgaWYgKCFzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluQW5kQ2hlY2tJZlBlcm1pdHRlZChmcmFtZS0+aXNNYWluRnJhbWUoKSwgbmF2aWdhdGlvbi0+
Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgaXNBcHBCb3VuZERvbWFpbikpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIGVycm9yID0gZXJyb3JGb3JVbnBlcm1pdHRlZEFwcEJvdW5kRG9tYWluTmF2aWdh
dGlvbihuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgICAgICAg
ICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJy
b3IoKnRoaXMsIEZyYW1lSW5mb0RhdGEgeyBmcmFtZUluZm8gfSwgbmF2aWdhdGlvbi5nZXQoKSwg
ZXJyb3IsIHVzZXJEYXRhT2JqZWN0KTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKExvYWRpbmcsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWlu
IHJlc291cmNlIGJlY2F1c2UgaXQgaXMgYXR0ZW1wdGluZyB0byBuYXZpZ2F0ZSBhd2F5IGZyb20g
YW4gYXBwLWJvdW5kIGRvbWFpbiBvciBuYXZpZ2F0ZSBhZnRlciB1c2luZyByZXN0cmljdGVkIEFQ
SXMiKTsKKyAgICAgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoTG9h
ZGluZywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVz
ZSBpdCBpcyBhdHRlbXB0aW5nIHRvIG5hdmlnYXRlIGF3YXkgZnJvbSBhbiBhcHAtYm91bmQgZG9t
YWluIG9yIG5hdmlnYXRlIGFmdGVyIHVzaW5nIHJlc3RyaWN0ZWQgQVBJcyIpOwogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC01NTkwLDcgKzU1ODYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2
aWdhdGlvbkRhdGFTdG9yZSYgcwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25z
dCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGFTaGFyZWQ6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDoiKTsKIAogICAgIFBh
Z2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTU2MTAsNyAr
NTYwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvblVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiBm
cmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogZnJh
bWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJv
dGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01NjM3LDcgKzU2MzMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYg
c291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNl
cnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJp
bmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDoiKTsKKyAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDoiKTsKIAog
ICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTU3
NjcsNyArNTc2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UoKQogICAgIGlmIChp
c0Nsb3NlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3MsICJjbG9zZVBhZ2U6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3MsICJjbG9zZVBhZ2U6Iik7CiAgICAgcGFnZUNsaWVudCgpLmNsZWFyQWxsRWRpdENvbW1h
bmRzKCk7CiAgICAgbV91aUNsaWVudC0+Y2xvc2UodGhpcyk7CiB9CkBAIC03NDg4LDcgKzc0ODQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChjb25zdCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+JiBmcmFtZUlEKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vz
c0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZToiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTc1MDAsNyArNzQ5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNv
bWVSZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJw
cm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOiIpOwogCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC03NTQxLDcgKzc1MzcsNyBA
QCBVUkwgV2ViUGFnZVByb3h5OjpjdXJyZW50UmVzb3VyY2VEaXJlY3RvcnlVUkwoKSBjb25zdAog
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NUZXJtaW5hdGlvbihQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogewogICAgIGlmIChyZWFzb24gIT0gUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogKHBpZCAlZCks
IHJlYXNvbiAlZCIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbik7CisgICAgICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTog
KHBpZCAlZCksIHJlYXNvbiAlZCIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbik7CiAKICAg
ICBBU1NFUlQobV9oYXNSdW5uaW5nUHJvY2Vzcyk7CiAKQEAgLTc1OTUsNyArNzU5MSw3IEBAIHN0
YXRpYyBib29sIHNob3VsZFJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbiByZWFzb24pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaFByb2Nl
c3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJkaXNwYXRjaFByb2Nlc3NEaWRU
ZXJtaW5hdGU6IHJlYXNvbj0lZCIsIHJlYXNvbik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HX0VSUk9SKExvYWRpbmcsICJkaXNwYXRjaFByb2Nlc3NEaWRUZXJtaW5hdGU6IHJlYXNvbj0l
ZCIsIHJlYXNvbik7CiAKICAgICBib29sIGhhbmRsZWRCeUNsaWVudCA9IGZhbHNlOwogICAgIGlm
IChtX2xvYWRlckNsaWVudCkKQEAgLTc2MTIsMTEgKzc2MDgsMTEgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uKCkKICAgICBtX3Jlc2V0UmVjZW50
Q3Jhc2hDb3VudFRpbWVyLnN0b3AoKTsKIAogICAgIGlmICgrK21fcmVjZW50Q3Jhc2hDb3VudCA+
IG1heGltdW1XZWJQcm9jZXNzUmVsYXVuY2hBdHRlbXB0cykgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJ0cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5h
dGlvbjogcHJvY2VzcyBjcmFzaGVkIGFuZCB0aGUgY2xpZW50IGRpZCBub3QgaGFuZGxlIGl0LCBu
b3QgcmVsb2FkaW5nIHRoZSBwYWdlIGJlY2F1c2Ugd2UgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1i
ZXIgb2YgYXR0ZW1wdHMiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9S
KFByb2Nlc3MsICJ0cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbjogcHJvY2VzcyBjcmFz
aGVkIGFuZCB0aGUgY2xpZW50IGRpZCBub3QgaGFuZGxlIGl0LCBub3QgcmVsb2FkaW5nIHRoZSBw
YWdlIGJlY2F1c2Ugd2UgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYXR0ZW1wdHMiKTsK
ICAgICAgICAgbV9yZWNlbnRDcmFzaENvdW50ID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJ0cnlSZWxvYWRBZnRlclByb2Nl
c3NUZXJtaW5hdGlvbjogcHJvY2VzcyBjcmFzaGVkIGFuZCB0aGUgY2xpZW50IGRpZCBub3QgaGFu
ZGxlIGl0LCByZWxvYWRpbmcgdGhlIHBhZ2UiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2VzcywgInRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNy
YXNoZWQgYW5kIHRoZSBjbGllbnQgZGlkIG5vdCBoYW5kbGUgaXQsIHJlbG9hZGluZyB0aGUgcGFn
ZSIpOwogICAgIHJlbG9hZChSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5KTsKIH0KIApAQCAtODI2
MywxNiArODI1OSwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1
cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90
IGV4cGVjdGVkVXNhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoU3RvcmFnZSwgInJl
cXVlc3RTdG9yYWdlU3BhY2UgZm9yIGZyYW1lICUiIFBSSXU2NCAiLCBjdXJyZW50IHF1b3RhICUi
IFBSSXU2NCAiIGN1cnJlbnQgdXNhZ2UgJSIgUFJJdTY0ICIgZXhwZWN0ZWQgdXNhZ2UgJSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCksIGN1cnJlbnRRdW90YSwgY3VycmVudERhdGFiYXNlVXNh
Z2UsIGV4cGVjdGVkVXNhZ2UpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhTdG9yYWdl
LCAicmVxdWVzdFN0b3JhZ2VTcGFjZSBmb3IgZnJhbWUgJSIgUFJJdTY0ICIsIGN1cnJlbnQgcXVv
dGEgJSIgUFJJdTY0ICIgY3VycmVudCB1c2FnZSAlIiBQUkl1NjQgIiBleHBlY3RlZCB1c2FnZSAl
IiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50RGF0YWJh
c2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSk7CiAKICAgICBTdG9yYWdlUmVxdWVzdHM6OnNpbmdsZXRv
bigpLnByb2Nlc3NPckFwcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBwYWdlVVJMID0gY3VycmVudFVSTCgpLCBmcmFtZUlELCBvcmlnaW5JZGVudGlmaWVyLCBkYXRh
YmFzZU5hbWUsIGRpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwg
Y3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIHRoaXMtPm1h
a2VTdG9yYWdlU3BhY2VSZXF1ZXN0KGZyYW1lSUQsIG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNl
TmFtZSwgZGlzcGxheU5hbWUsIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBjdXJy
ZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBwYWdlVVJMID0gV1RGTW92ZShwYWdlVVJM
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY3VycmVu
dFF1b3RhXShhdXRvIHF1b3RhKSBtdXRhYmxlIHsKIAotICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChTdG9yYWdlLCAicmVxdWVzdFN0b3JhZ2VTcGFjZSByZXNwb25zZSBmb3IgZnJh
bWUgJSIgUFJJdTY0ICIsIHF1b3RhICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpLCBxdW90
YSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coU3RvcmFnZSwgInJlcXVl
c3RTdG9yYWdlU3BhY2UgcmVzcG9uc2UgZm9yIGZyYW1lICUiIFBSSXU2NCAiLCBxdW90YSAlIiBQ
Ukl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwgcXVvdGEpOwogICAgICAgICAgICAgVU5VU0VEX1ZB
UklBQkxFKGZyYW1lSUQpOwogCiAgICAgICAgICAgICBpZiAocXVvdGEgPD0gY3VycmVudFF1b3Rh
ICYmIHRoaXMtPmN1cnJlbnRVUkwoKSA9PSBwYWdlVVJMKSB7Ci0gICAgICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChTdG9yYWdlLCAic3RvcmFnZSBzcGFjZSBpbmNyZWFzZSBkZW5p
ZWQiKTsKKyAgICAgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coU3RvcmFnZSwg
InN0b3JhZ2Ugc3BhY2UgaW5jcmVhc2UgZGVuaWVkIik7CiAgICAgICAgICAgICAgICAgbV9pc1F1
b3RhSW5jcmVhc2VEZW5pZWQgPSAgdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHF1b3RhKTsKQEAgLTkzNjEsNyArOTM1Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlKCkKICAgICBpZiAoIWhhdmVS
ZXBvcnRlZENhcHR1cmUgJiYgd2lsbFJlcG9ydENhcHR1cmUpCiAgICAgICAgIG1fdXBkYXRlUmVw
b3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChtX21lZGlhQ2FwdHVyZVJl
cG9ydGluZ0RlbGF5KTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoV2ViUlRDLCAidXBk
YXRlUmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZTogZnJvbSAlZCB0byAlZCIsIG1fcmVwb3J0ZWRN
ZWRpYUNhcHR1cmVTdGF0ZS50b1JhdygpLCBhY3RpdmVDYXB0dXJlU3RhdGUudG9SYXcoKSk7Cisg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFdlYlJUQywgInVwZGF0ZVJlcG9ydGVkTWVkaWFD
YXB0dXJlU3RhdGU6IGZyb20gJWQgdG8gJWQiLCBtX3JlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUu
dG9SYXcoKSwgYWN0aXZlQ2FwdHVyZVN0YXRlLnRvUmF3KCkpOwogCiAgICAgYm9vbCBtaWNyb3Bo
b25lQ2FwdHVyZUNoYW5nZWQgPSAobV9yZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlICYgTWVkaWFQ
cm9kdWNlcjo6QXVkaW9DYXB0dXJlTWFzaykgIT0gKGFjdGl2ZUNhcHR1cmVTdGF0ZSAmIE1lZGlh
UHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZU1hc2spOwogICAgIGJvb2wgY2FtZXJhQ2FwdHVyZUNoYW5n
ZWQgPSAobV9yZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6VmlkZW9D
YXB0dXJlTWFzaykgIT0gKGFjdGl2ZUNhcHR1cmVTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OlZpZGVv
Q2FwdHVyZU1hc2spOwpAQCAtOTYwMCwxMyArOTU5NiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkSW5hY3RpdmVNZW1vcnlMaW1pdFdo
aWxlQWN0aXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFBlcmZvcm1h
bmNlTG9nZ2luZywgImRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSIpOwor
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJk
aWRFeGNlZWRJbmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUiKTsKICAgICBtX3VpQ2xpZW50
LT5kaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKCp0aGlz
LCBrV0tSZXNvdXJjZUxpbWl0TWVtb3J5KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEV4
Y2VlZEJhY2tncm91bmRDUFVMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKCkKIHsKLSAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEV4Y2VlZEJhY2tn
cm91bmRDUFVMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEV4Y2VlZEJhY2tncm91bmRDUFVM
aW1pdFdoaWxlSW5Gb3JlZ3JvdW5kIik7CiAgICAgbV91aUNsaWVudC0+ZGlkRXhjZWVkQmFja2dy
b3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCgqdGhpcywga1dLUmVzb3VyY2VMaW1p
dENQVSk7CiB9CiAKQEAgLTEwNDE0LDcgKzEwNDEwLDggQEAgTG9nZ2VyJiBXZWJQYWdlUHJveHk6
OmxvZ2dlcigpCiB7CiAgICAgaWYgKCFtX2xvZ2dlcikgewogICAgICAgICBtX2xvZ2dlciA9IExv
Z2dlcjo6Y3JlYXRlKHRoaXMpOwotICAgICAgICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCBp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSk7CisgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMg
cmVhbGx5IG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gZXBoZW1lcmFsIHNlc3Npb25zPworICAgICAg
ICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCAhc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuICptX2xvZ2dlcjsKQEAgLTEwNjczLDcgKzEwNjcwLDggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGwKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSN1bmRl
ZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
CisjdW5kZWYgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SCiAjdW5kZWYgTUVTU0FHRV9D
SEVDS19DT01QTEVUSU9OCiAjdW5kZWYgTUVTU0FHRV9DSEVDS19VUkwKICN1bmRlZiBNRVNTQUdF
X0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY3NmM3YzMw
MGM0NDg2MGZjODIyMzZiYzY0YWY2ZjUwNGI4MzVhZTUuLmExYzEzZDlmMDBhOTk4ZjI1OGVmY2Fk
ZGZkMWFmOWQyZmI0NTNkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIs
IGJvb2wpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQo
V2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcikgZmluYWw7Ci0g
ICAgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7IH0KKyAgICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKTsgfQogICAgIGJvb2wgdXNlaVR1bmVzQVZPdXRwdXRDb250ZXh0KCkgY29uc3QgZmlu
YWw7CiAgICAgUGxhdGZvcm1WaWV3KiBwbGF0Zm9ybVZpZXcoKSBjb25zdCBmaW5hbDsKIApAQCAt
MTYyMiw4ICsxNjIyLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNOZXZlclJpY2hseUVkaXRhYmxl
Rm9yVG91Y2hCYXIoKSBjb25zdCB7IHJldHVybiBtX2lzTmV2ZXJSaWNobHlFZGl0YWJsZUZvclRv
dWNoQmFyOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkg
Y29uc3Q7Ci0KICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICB2b2lkIGdhbWVwYWRBY3Rpdml0eShj
b25zdCBWZWN0b3I8R2FtZXBhZERhdGE+JiwgV2ViQ29yZTo6RXZlbnRNYWtlc0dhbWVwYWRzVmlz
aWJsZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCmluZGV4IDMyYjBmMjhhNTZmNmU3NWVlYmY1OGU3NTU5NTYzNmNkYzYxODE5YWMu
LmFlYzhhNGEyOWMxMGY2MzljZDQyMTQwNDlmMzA2Y2IyZDM2OTBjNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtODEsNyArODEsNyBA
QAogCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0Uo
YXNzZXJ0aW9uLCBwcm9jZXNzKCkuY29ubmVjdGlvbigpKQogCi0jZGVmaW5lIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JWxsdSwgd2ViUGFn
ZUlEPSVsbHUsIFBJRD0laV0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVy
LnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZVBy
b3h5SUQ9JWxsdSwgd2ViUGFnZUlEPSVsbHUsIFBJRD0laV0gV2ViUGFnZVByb3h5OjoiIGZtdCwg
dGhpcywgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU4OSw3ICs1ODksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQogCiAgICAg
Ym9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtVSUFwcCBpc1N1c3BlbmRlZFVuZGVyTG9ja107
CiAgICAgCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChWaWV3U3RhdGUsICJhcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZDogaXNTdXNwZW5kZWRVbmRlckxvY2s/ICVkIiwgaXNTdXNwZW5k
ZWRVbmRlckxvY2spOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhWaWV3U3RhdGUsICJh
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDogaXNTdXNwZW5kZWRVbmRlckxvY2s/ICVkIiwg
aXNTdXNwZW5kZWRVbmRlckxvY2spOwogCiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgLy8g
V2Ugbm9ybWFsbHkgZGVsYXkgcHJvY2VzcyBzdXNwZW5zaW9uIHdoZW4gdGhlIGFwcCBpcyBiYWNr
Z3JvdW5kZWQgdW50aWwgdGhlIGN1cnJlbnQgcGFnZSBsb2FkIGNvbXBsZXRlcy4gSG93ZXZlciwK
QEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kKCkKICAgICBtX2xhc3RPYnNlcnZlZFN0YXRlV2FzQmFja2dyb3VuZCA9IGZh
bHNlOwogCiAgICAgYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtVSUFwcCBpc1N1c3BlbmRl
ZFVuZGVyTG9ja107Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChWaWV3U3RhdGUsICJhcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6IGlzU3VzcGVuZGVkVW5kZXJMb2NrPyAlZCIsIGlz
U3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coVmlld1N0
YXRlLCAiYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOiBpc1N1c3BlbmRlZFVuZGVyTG9j
az8gJWQiLCBpc1N1c3BlbmRlZFVuZGVyTG9jayk7CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChpc1N1c3BlbmRl
ZFVuZGVyTG9jayksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkhhcmR3YXJlS2V5Ym9hcmRBdmFpbGFiaWxpdHlDaGFuZ2VkKGlzSW5IYXJkd2Fy
ZUtleWJvYXJkTW9kZSgpKSwgbV93ZWJQYWdlSUQpOwpAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQogdm9pZCBXZWJQYWdl
UHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kRm9yTWVkaWEoKQogewogICAgIGJv
b2wgaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbVUlBcHAgaXNTdXNwZW5kZWRVbmRlckxvY2tdOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoVmlld1N0YXRlLCAiYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kRm9yTWVkaWE6IGlzU3VzcGVuZGVkVW5kZXJMb2NrPyAlZCIsIGlzU3VzcGVu
ZGVkVW5kZXJMb2NrKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coVmlld1N0YXRlLCAi
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kRm9yTWVkaWE6IGlzU3VzcGVuZGVkVW5kZXJM
b2NrPyAlZCIsIGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKIAogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRGb3JNZWRpYShp
c1N1c3BlbmRlZFVuZGVyTG9jayksIG1fd2ViUGFnZUlEKTsKIH0KQEAgLTY0MSw3ICs2NDEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRGb3JNZWRp
YSgpCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kRm9y
TWVkaWEoKQogewogICAgIGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbVUlBcHAgaXNTdXNw
ZW5kZWRVbmRlckxvY2tdOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoVmlld1N0YXRlLCAi
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRGb3JNZWRpYTogaXNTdXNwZW5kZWRVbmRlckxv
Y2s/ICVkIiwgaXNTdXNwZW5kZWRVbmRlckxvY2spOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhWaWV3U3RhdGUsICJhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZEZvck1lZGlhOiBp
c1N1c3BlbmRlZFVuZGVyTG9jaz8gJWQiLCBpc1N1c3BlbmRlZFVuZGVyTG9jayk7CiAKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZEZvck1lZGlhKGlzU3VzcGVuZGVkVW5kZXJMb2NrKSwgbV93ZWJQYWdlSUQpOwogfQpA
QCAtMTQ2Niw3ICsxNDY2LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZEZvcmNlRm9yZWdy
b3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGJvb2wgY2FuVGFrZUZvcmVncm91bmRBc3NlcnRpb25zID0gcGFnZUNsaWVu
dCgpLmNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucygpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2VzcywgIldlYlBhZ2VQcm94eTo6c2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3Jp
dHlGb3JDbGllbnROYXZpZ2F0aW9uKCkgcmV0dXJucyAlZCBiYXNlZCBvbiBQYWdlQ2xpZW50Ojpj
YW5UYWtlRm9yZWdyb3VuZEFzc2VydGlvbnMoKSIsIGNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9u
cyk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJXZWJQYWdlUHJveHk6
OnNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpIHJldHVy
bnMgJWQgYmFzZWQgb24gUGFnZUNsaWVudDo6Y2FuVGFrZUZvcmVncm91bmRBc3NlcnRpb25zKCki
LCBjYW5UYWtlRm9yZWdyb3VuZEFzc2VydGlvbnMpOwogICAgIHJldHVybiBjYW5UYWtlRm9yZWdy
b3VuZEFzc2VydGlvbnM7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIENvbG9yIFdlYlBhZ2VQ
cm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0cKICN1bmRlZiBNRVNTQUdFX0NIRUNLCiAKICNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429940</attachid>
            <date>2021-05-27 15:31:53 -0700</date>
            <delta_ts>2021-05-27 22:49:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226342-20210527153152.patch</filename>
            <type>text/plain</type>
            <size>104002</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliNDk4OGJlYjYyZmU4MjE2
NmIwMDU2ZDk5N2E1YjQ2Yjk0M2VkYWEuLjJjZjA1NWViZGU2NTVlOGMyMzY5MTcwOGRkYmZhNjA2
NGFjNGQ1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA1LTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIFdlYlBhZ2VQcm94eSdz
IHJlbGVhc2UgbG9nZ2luZyBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBXZWJQYWdlUHJveHkncyByZWxl
YXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zLiBPdXIgcmVsZWFzZSBsb2dnaW5nIGRv
ZXNuJ3QKKyAgICAgICAgY29udGFpbiBhbnl0aGluZyBzZW5zaXRpdmUgYW5kIG5vdCBoYXZpbmcg
dGhpcyBsb2dnaW5nIG1ha2VzIGl0IGhhcmQgdG8gZGVidWcgaXNzdWVzIGluCisgICAgICAgIGFw
cHMgdXNpbmcgZXBoZW1lcmFsIHNlc3Npb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhp
bnRzKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVT
dGFydEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgpOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6cHJlc2VudFZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnRyeUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVk
T3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxlQWN0aXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtE
dWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RTdG9yYWdlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZv
cmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvZ2dlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDIxLTA1LTI3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRk
IHZhbGlkYXRpb24gd2hlbiByZWFkaW5nIERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyOjp3
YWl0aW5nU3RhdHVzIGluIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDhjYzMzOTc2YzMzNDY1
MzM3ZDU2MDAwMjA1YzNmNTNlMTYyODYxNDkuLjU5YTNmNTEzZmEwYTU2MzA2NDkzMjVjOTkxMDJj
YzMwN2VjYWRkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCkBAIC03OCw3ICs3OCw3IEBAIC0gKHZvaWQpX2FjdGlvbjooaWQpc2VuZGVy
IFwKICAgICAgICAgW19jb250ZW50VmlldyBfYWN0aW9uICMjIEZvcldlYlZpZXc6c2VuZGVyXTsg
XAogfQogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoLi4uKSBSRUxFQVNFX0xPR19J
RihfcGFnZSAmJiBfcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFZpZXdTdGF0ZSwg
X19WQV9BUkdTX18pCisjZGVmaW5lIFdLV0VCVklFV19SRUxFQVNFX0xPRyguLi4pIFJFTEVBU0Vf
TE9HKFZpZXdTdGF0ZSwgX19WQV9BUkdTX18pCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlbGF5
QmVmb3JlTm9WaXNpYmxlQ29udGVudHNSZWN0c0xvZ2dpbmcgPSAxX3M7CiBzdGF0aWMgY29uc3Qg
U2Vjb25kcyBkZWxheUJlZm9yZU5vQ29tbWl0c0xvZ2dpbmcgPSA1X3M7CkBAIC02ODYsMTMgKzY4
NiwxMyBAQCAtICh2b2lkKV9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXQKIAogLSAodm9pZClfcHJv
Y2Vzc1dpbGxTd2FwCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZp
ZXcgX3Byb2Nlc3NXaWxsU3dhcF0iLCBzZWxmKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0co
IiVwIC1bV0tXZWJWaWV3IF9wcm9jZXNzV2lsbFN3YXBdIiwgc2VsZik7CiAgICAgW3NlbGYgX3By
b2Nlc3NXaWxsU3dhcE9yRGlkRXhpdF07CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX3Byb2Nlc3NEaWRF
eGl0XSIsIHNlbGYpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcg
X3Byb2Nlc3NEaWRFeGl0XSIsIHNlbGYpOwogCiAgICAgW3NlbGYgX3Byb2Nlc3NXaWxsU3dhcE9y
RGlkRXhpdF07CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdAog
CiAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3MKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAtW1dLV2ViVmlldyBfZGlkUmVsYXVuY2hQcm9jZXNzXSIsIHNlbGYpOworICAgIFdL
V0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcgX2RpZFJlbGF1bmNoUHJvY2Vzc10i
LCBzZWxmKTsKICAgICBfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGUgPSBOTzsKICAgICBf
dmlld1N0YWJpbGl0eVdoZW5WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVTY2hlZHVsZWQgPSB7IH07
CiAgICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKQEAgLTc4NiwxNCArNzg2LDE0IEBAIC0gKHZv
aWQpX2RpZENvbW1pdExheWVyVHJlZUR1cmluZ0FuaW1hdGVkUmVzaXplOihjb25zdCBXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyCiAtICh2b2lkKV90cmFja1RyYW5zYWN0aW9uQ29tbWl0Oihjb25z
dCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlv
bgogewogICAgIGlmIChfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFi
bGVTY3JvbGxWaWV3KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAorICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSByZWNlaXZl
ZCBhIGNvbW1pdCAoJWxsdSkgd2hpbGUgZGVmZXJyaW5nIHZpc2libGUgY29udGVudCByZWN0IHVw
ZGF0ZXMgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0
ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCAod2FudHMgY29tbWl0ICVsbHUpLCBzaXpl
Q2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3
IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCAlZCkiLAogICAgICAgICBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpLCBf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSwgX25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1p
dExvYWRGb3JNYWluRnJhbWUsIF9maXJzdFBhaW50QWZ0ZXJDb21taXRMb2FkVHJhbnNhY3Rpb25J
RC50b1VJbnQ2NCgpLCBbX2NvbnRlbnRWaWV3IHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlXSwgW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSwgX2N1cnJlbnRs
eUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCk7CiAgICAgfQogCiAgICAgaWYg
KF90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0KSB7
CiAgICAgICAgIGF1dG8gdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPSBN
b25vdG9uaWNUaW1lOjpub3coKSAtICpfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVXaXRoUGVuZGluZ0NvbW1pdDsKICAgICAgICAgaWYgKHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdp
dGhQZW5kaW5nQ29tbWl0ID4gZGVsYXlCZWZvcmVOb0NvbW1pdHNMb2dnaW5nKQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJW
aWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZz
IGFmdGVyIHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklE
ICVsbHUiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZp
cnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9u
LnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxF
QVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXll
clRyZWU6XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29u
dGVudCByZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklEICVsbHUiLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5k
aW5nQ29tbWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50
b1VJbnQ2NCgpKTsKICAgICAgICAgX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
V2l0aFBlbmRpbmdDb21taXQgPSBXVEY6Om51bGxvcHQ7CiAgICAgfQogfQpAQCAtODkzLDcgKzg5
Myw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlCiAgICAgfQogCiAgICAgaWYgKF9yZXNpemVB
bmltYXRpb25WaWV3KQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2Vi
VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSBkeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlIGlz
IE5vdFJlc2l6aW5nLCBidXQgc3RpbGwgaGF2ZSBhIGxpdmUgcmVzaXplQW5pbWF0aW9uVmlldyAo
dW5wYWlyZWQgYmVnaW4vZW5kQW5pbWF0ZWRSZXNpemU/KSIsIHNlbGYpOworICAgICAgICBXS1dF
QlZJRVdfUkVMRUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAt
IGR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgaXMgTm90UmVzaXppbmcsIGJ1dCBzdGlsbCBoYXZl
IGEgbGl2ZSByZXNpemVBbmltYXRpb25WaWV3ICh1bnBhaXJlZCBiZWdpbi9lbmRBbmltYXRlZFJl
c2l6ZT8pIiwgc2VsZik7CiAKICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld0ZvclRyYW5zYWN0
aW9uOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKIApAQCAtMTk1MSwxNCArMTk1MSwxNCBAQCAtICh2
b2lkKV9hZGRVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RQcmVDb21taXRIYW5kbGVyCiAgICAgW0NB
VHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFuZGxlcjpbcmV0YWluZWRTZWxmXSB7CiAgICAgICAgIFdL
V2ViVmlldyAqd2ViVmlldyA9IHJldGFpbmVkU2VsZi5nZXQoKTsKICAgICAgICAgaWYgKCFbd2Vi
VmlldyBfaXNWYWxpZF0pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHdlYlZpZXcuX3Bh
Z2UgJiYgd2ViVmlldy5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFZpZXdTdGF0
ZSwgIkluIENBVHJhbnNhY3Rpb24gcHJlQ29tbWl0SGFuZGxlciwgV0tXZWJWaWV3ICVwIGlzIGlu
dmFsaWQiLCB3ZWJWaWV3KTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiSW4g
Q0FUcmFuc2FjdGlvbiBwcmVDb21taXRIYW5kbGVyLCBXS1dlYlZpZXcgJXAgaXMgaW52YWxpZCIs
IHdlYlZpZXcpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgQHRy
eSB7CiAgICAgICAgICAgICBbd2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CiAg
ICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19JRih3ZWJWaWV3Ll9wYWdlICYmIHdlYlZpZXcuX3BhZ2UtPmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBWaWV3U3RhdGUsICJJbiBDQVRyYW5zYWN0aW9uIHByZUNvbW1pdEhh
bmRsZXIsIC1bV0tXZWJWaWV3ICVwIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXSB0aHJldyBh
biBleGNlcHRpb24iLCB3ZWJWaWV3KTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xP
RygiSW4gQ0FUcmFuc2FjdGlvbiBwcmVDb21taXRIYW5kbGVyLCAtW1dLV2ViVmlldyAlcCBfdXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0c10gdGhyZXcgYW4gZXhjZXB0aW9uIiwgd2ViVmlldyk7CiAg
ICAgICAgIH0KICAgICAgICAgd2ViVmlldy0+X2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRl
ID0gTk87CiAgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUHJlQ29tbWl0XTsKQEAg
LTE5NzEsNyArMTk3MSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlQWZ0ZXJTY3JvbGxJblZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sCiAgICAgaWYgKF9oYXNT
Y2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSkgewogICAgICAgICBhdXRvIHRpbWVOb3cgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgaWYgKCh0aW1lTm93IC0gX3RpbWVPZlJlcXVlc3RG
b3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpID4gZGVsYXlCZWZvcmVOb1Zpc2libGVDb250ZW50
c1JlY3RzTG9nZ2luZykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiLVtX
S1dlYlZpZXcgJXAgX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlQWZ0ZXJTY3JvbGxJ
blZpZXddOiBfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGUgaXMgdHJ1ZSBidXQgaGF2ZW4n
dCB1cGRhdGVkIHZpc2libGUgY29udGVudCByZWN0cyBmb3IgJS4yZnMgKGxhc3QgdXBkYXRlIHdh
cyAlLjJmcyBhZ28pIC0gdmFsaWQgJWQiLAorICAgICAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0Vf
TE9HKCItW1dLV2ViVmlldyAlcCBfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVBZnRl
clNjcm9sbEluVmlld106IF9oYXNTY2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSBpcyB0cnVlIGJ1
dCBoYXZlbid0IHVwZGF0ZWQgdmlzaWJsZSBjb250ZW50IHJlY3RzIGZvciAlLjJmcyAobGFzdCB1
cGRhdGUgd2FzICUuMmZzIGFnbykgLSB2YWxpZCAlZCIsCiAgICAgICAgICAgICAgICAgc2VsZiwg
KHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkudmFs
dWUoKSwgKHRpbWVOb3cgLSBfdGltZU9mTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkudmFs
dWUoKSwgW3NlbGYgX2lzVmFsaWRdKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0y
MDY2LDcgKzIwNjYsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAg
ICAgIFtfcGFzc3dvcmRWaWV3IHNldEZyYW1lOnNlbGYuYm91bmRzXTsKICAgICAgICAgW19jdXN0
b21Db250ZW50VmlldyB3ZWJfY29tcHV0ZWRDb250ZW50SW5zZXREaWRDaGFuZ2VdOwogICAgICAg
ICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uID0gWUVTOwot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHVzZXNTdGFuZGFyZENvbnRl
bnRWaWV3IGlzIE5PLCBiYWlsaW5nIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxs
dSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHVzZXNTdGFuZGFy
ZENvbnRlbnRWaWV3IGlzIE5PLCBiYWlsaW5nIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA3NCwxMyArMjA3NCwx
MyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgaWYgKF90aW1lT2ZG
aXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0KSB7CiAgICAgICAg
IGF1dG8gdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPSB0aW1lTm93IC0g
Kl90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0Owog
ICAgICAgICBpZiAodGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPiBkZWxh
eUJlZm9yZU5vQ29tbWl0c0xvZ2dpbmcpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHM6XSAtIGhhdmUgbm90IHJlY2VpdmVkIGEgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2li
bGUgY29udGVudCByZWN0IHVwZGF0ZTsgbGFzdFRyYW5zYWN0aW9uSUQgJWxsdSIsIHNlbGYsIF9w
YWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBl
bmRpbmdDb21taXQudmFsdWUoKSwgX2xhc3RUcmFuc2FjdGlvbklELnRvVUludDY0KCkpOworICAg
ICAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIGhhdmUgbm90IHJlY2VpdmVk
IGEgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZTsgbGFzdFRy
YW5zYWN0aW9uSUQgJWxsdSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
dGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQudmFsdWUoKSwgX2xhc3RUcmFu
c2FjdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KIAogICAgIGlmIChfaW52b2tpbmdVSVNjcm9s
bFZpZXdEZWxlZ2F0ZUNhbGxiYWNrKSB7CiAgICAgICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHNGb3JVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrID0gWUVTOwogICAgICAg
ICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uID0gWUVTOwot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIF9pbnZva2luZ1VJU2Nyb2xs
Vmlld0RlbGVnYXRlQ2FsbGJhY2sgaXMgWUVTLCBiYWlsaW5nIiwgc2VsZiwgX3BhZ2UtPmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAo
cGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6
XSAtIF9pbnZva2luZ1VJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2sgaXMgWUVTLCBiYWlsaW5n
Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMjA5MywxMyArMjA5MywxMyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzCiAgICAgICAgIHx8IF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5z
ZXRzRm9yS2V5Ym9hcmQpIHsKICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRS
ZWN0c0ZvckFueVJlYXNvbiA9IFlFUzsKICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0c0ZvclVuc3RhYmxlU2Nyb2xsVmlldyA9IFlFUzsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVW
aXNpYmxlQ29udGVudFJlY3RzOl0gLSBzY3JvbGwgdmlldyBzdGF0ZSBpcyBub24tc3RhYmxlLCBi
YWlsaW5nIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCwgX25lZWRzUmVzZXRWaWV3U3Rh
dGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUgJWQsIHNpemVDaGFuZ2VkU2luY2VMYXN0Vmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlICVkLCBbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICVk
LCBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0ZvcktleWJvYXJkICVkKSIsCisg
ICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tX
ZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0gLSBzY3JvbGwgdmlldyBzdGF0ZSBp
cyBub24tc3RhYmxlLCBiYWlsaW5nIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCwgX25l
ZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUgJWQsIHNpemVDaGFu
Z2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlICVkLCBbX3Njcm9sbFZpZXcgaXNa
b29tQm91bmNpbmddICVkLCBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0Zvcktl
eWJvYXJkICVkKSIsCiAgICAgICAgICAgICBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlLCBfbmVlZHNSZXNldFZpZXdTdGF0ZUFm
dGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSwgW19jb250ZW50VmlldyBzaXplQ2hhbmdlZFNpbmNl
TGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZV0sIFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2lu
Z10sIF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250
ZW50UmVjdHNGb3JBbnlSZWFzb24pCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVw
IChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
czpdIC0gcGVyZm9ybWluZyBmaXJzdCB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGUgYWZ0ZXIg
ZGVmZXJyaW5nIHVwZGF0ZXMiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAt
W1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0gcGVyZm9ybWluZyBmaXJz
dCB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGUgYWZ0ZXIgZGVmZXJyaW5nIHVwZGF0ZXMiLCBz
ZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAgX2RpZERlZmVyVXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvclVJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2sgPSBO
TzsKICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFibGVTY3Jv
bGxWaWV3ID0gTk87CkBAIC0yMTUzLDcgKzIxNTMsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzCiAgICAgfQogCiAgICAgaWYgKCh0aW1lTm93IC0gX3RpbWVPZlJlcXVlc3RG
b3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpID4gZGVsYXlCZWZvcmVOb1Zpc2libGVDb250ZW50
c1JlY3RzTG9nZ2luZykKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dl
YlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSBmaW5hbGx5IHJhbiAlLjJmcyBhZnRl
ciBiZWluZyBzY2hlZHVsZWQiLCBzZWxmLCAodGltZU5vdyAtIF90aW1lT2ZSZXF1ZXN0Rm9yVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlKS52YWx1ZSgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVB
U0VfTE9HKCIlcCAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIGZpbmFs
bHkgcmFuICUuMmZzIGFmdGVyIGJlaW5nIHNjaGVkdWxlZCIsIHNlbGYsICh0aW1lTm93IC0gX3Rp
bWVPZlJlcXVlc3RGb3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLnZhbHVlKCkpOwogCiAgICAg
X2Fsd2F5c1NlbmROZXh0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gTk87CiAgICAgX3RpbWVP
Zkxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPSB0aW1lTm93OwpAQCAtMjE3OSw3ICsyMTc5
LDcgQEAgc3RhdGljIGludDMyX3QgYWN0aXZlT3JpZW50YXRpb24oV0tXZWJWaWV3ICp3ZWJWaWV3
KQogCiAtICh2b2lkKV9jYW5jZWxBbmltYXRlZFJlc2l6ZQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfY2FuY2VsQW5pbWF0
ZWRSZXNpemVdIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkIiwgc2VsZiwgX3BhZ2UtPmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CisgICAg
V0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcg
X2NhbmNlbEFuaW1hdGVkUmVzaXplXSBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCIsIHNl
bGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGUpOwogCiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IFdlYktpdDo6
RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6Tm90UmVzaXppbmcpCiAgICAgICAgIHJldHVybjsK
QEAgLTIyMTEsMTIgKzIyMTEsMTIgQEAgLSAodm9pZClfZGlkQ29tcGxldGVBbmltYXRlZFJlc2l6
ZQogCiAgICAgaWYgKCFfcmVzaXplQW5pbWF0aW9uVmlldykgewogICAgICAgICAvLyBQYXJhbm9p
YS4gSWYgX3Jlc2l6ZUFuaW1hdGlvblZpZXcgaXMgbnVsbCB3ZSdsbCBlbmQgdXAgc2V0dGluZyBh
IHplcm8gc2NhbGUgb24gdGhlIGNvbnRlbnQgdmlldy4KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemU6XSAtIF9y
ZXNpemVBbmltYXRpb25WaWV3IGlzIG5pbCIsIHNlbGYpOworICAgICAgICBXS1dFQlZJRVdfUkVM
RUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplOl0gLSBf
cmVzaXplQW5pbWF0aW9uVmlldyBpcyBuaWwiLCBzZWxmKTsKICAgICAgICAgW3NlbGYgX2NhbmNl
bEFuaW1hdGVkUmVzaXplXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29t
cGxldGVBbmltYXRlZFJlc2l6ZV0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1b
V0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplXSIsIHNlbGYsIF9wYWdlLT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICBOU1VJbnRlZ2VyIGluZGV4T2ZSZXNpemVBbmlt
YXRpb25WaWV3ID0gW1tfc2Nyb2xsVmlldyBzdWJ2aWV3c10gaW5kZXhPZk9iamVjdDpfcmVzaXpl
QW5pbWF0aW9uVmlldy5nZXQoKV07CiAgICAgW19zY3JvbGxWaWV3IGluc2VydFN1YnZpZXc6X2Nv
bnRlbnRWaWV3LmdldCgpIGF0SW5kZXg6aW5kZXhPZlJlc2l6ZUFuaW1hdGlvblZpZXddOwpAQCAt
Mjg4Nyw3ICsyODg3LDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVz
Oih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJW
aWV3IF9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6XSIsIHNlbGYsIF9wYWdlLT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFn
ZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRl
czpdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlID0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2Rl
OjpSZXNpemluZ1dpdGhBbmltYXRpb247CiAKQEAgLTMwMjQsNyArMzAyNCw3IEBAIC0gKHZvaWQp
X2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxv
Y2sKIAogLSAodm9pZClfZW5kQW5pbWF0ZWRSZXNpemUKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2VuZEFuaW1hdGVkUmVz
aXplXSBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAlZCIsIHNlbGYsIF9wYWdlLT5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUpOworICAgIFdLV0VC
VklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9lbmRB
bmltYXRlZFJlc2l6ZV0gX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgJWQiLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlKTsK
IAogICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiB1cC10by1kYXRlIGxheWVyIHRyZWUsIGlt
bWVkaWF0ZWx5IGNvbXBsZXRlCiAgICAgLy8gdGhlIHJlc2l6ZS4gT3RoZXJ3aXNlLCB3ZSB3aWxs
IGRlZmVyIGNvbXBsZXRpb24gdW50aWwgd2UgZG8uCkBAIC0zMDM1LDcgKzMwMzUsNyBAQCAtICh2
b2lkKV9lbmRBbmltYXRlZFJlc2l6ZQogCiAtICh2b2lkKV9yZXNpemVXaGlsZUhpZGluZ0NvbnRl
bnRXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3Jlc2l6
ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmll
cigpLnRvVUludDY0KCkpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94
eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9yZXNpemVXaGlsZUhpZGluZ0NvbnRlbnRXaXRoVXBkYXRl
czpdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIFtzZWxm
IF9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6dXBkYXRlQmxvY2tdOwogICAgIGlmIChf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSA9PSBXZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGU6OlJlc2l6aW5nV2l0aEFuaW1hdGlvbikgewpAQCAtMzMzOSw0ICszMzM5LDYgQEAgLSAo
aWQgPF9XS1dlYlZpZXdQcmludFByb3ZpZGVyPilfcHJpbnRQcm92aWRlcgogCiBAZW5kCiAKKyN1
bmRlZiBXS1dFQlZJRVdfUkVMRUFTRV9MT0cKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3du
bG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25s
b2FkQ2xpZW50Lm1tCmluZGV4IDYwNzU2MmFlZTg4ZTc2NjlmOGQ5MTg2ZmRkODI0YjYzNTk1NWM2
YjYuLjU0NmVjZDA1ZGJjZmI5NWZlNGRmNzRkMWIzYTE1NDM0ZjcyYTE2MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1t
CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6dGFrZUFjdGl2
aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5h
dGluZ1BhZ2UoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRih3ZWJQYWdlLT5pc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFVJUHJvY2VzcyBpcyB0
YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGl0IGlzIGRvd25sb2FkaW5nIGEg
c3lzdGVtIHByZXZpZXciLCB0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBi
ZWNhdXNlIGl0IGlzIGRvd25sb2FkaW5nIGEgc3lzdGVtIHByZXZpZXciLCB0aGlzKTsKICAgICAg
ICAgQVNTRVJUKCFtX2FjdGl2aXR5KTsKICAgICAgICAgbV9hY3Rpdml0eSA9IHdlYlBhZ2UtPnBy
b2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlN5c3RlbSBwcmV2aWV3IGRv
d25sb2FkIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICB9CkBAIC0yOTUsNyArMjk1LDcgQEAg
dm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6cmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2Fy
eShEb3dubG9hZFByb3h5JiBkb3dubG8KIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChtX2FjdGl2aXR5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGKGRvd25sb2FkUHJveHku
b3JpZ2luYXRpbmdQYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIGEgc3lzdGVtIHByZXZpZXcgZG93bmxvYWQgY29tcGxldGVkIiwgdGhpcyk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgVUlQcm9jZXNzIGlzIHJl
bGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSBzeXN0ZW0gcHJldmlldyBk
b3dubG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKICAgICAgICAgbV9hY3Rpdml0eSA9IG51bGxwdHI7
CiAgICAgfQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQppbmRleCBmN2Q0MDYzNjFmZTY4NzhlZjczNWIzNWE5ODM3ODhjZDQ1ZTBk
NGNmLi4wNzNhN2I3YzRjZTM2MzQ1NGYyYzhkNDg2NjY5MDc3MWNiZDQ0YzFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMzY4
LDEwICsxMzY4LDEwIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpyZWxlYXNlTmV0d29ya0FjdGl2
aXR5KE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb24gcmVhc29uCiAKICAgICBzd2l0Y2ggKHJl
YXNvbikgewogICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBs
ZXRlZDoKLSAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRl
IGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdl
IGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRlIGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nl
c3MgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdlIGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5UmVsZWFzZVJlYXNvbjo6U2NyZWVu
TG9ja2VkOgotICAgICAgICBSRUxFQVNFX0xPR19JRihtX3dlYlZpZXctPl9wYWdlLT5pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBOYXZpZ2F0aW9uU3Rh
dGUgaXMgcmVsZWFzaW5nIGJhY2tncm91bmQgcHJvY2VzcyBhc3NlcnRpb24gYmVjYXVzZSB0aGUg
c2NyZWVuIHdhcyBsb2NrZWQiLCB0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICIlcCBOYXZpZ2F0aW9uU3RhdGUgaXMgcmVsZWFzaW5nIGJhY2tncm91bmQgcHJv
Y2VzcyBhc3NlcnRpb24gYmVjYXVzZSB0aGUgc2NyZWVuIHdhcyBsb2NrZWQiLCB0aGlzKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbnVsbHB0cjsKQEAg
LTEzODgsMTcgKzEzODgsMTcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OmRpZENoYW5nZUlzTG9h
ZGluZygpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKG1fcmVsZWFzZU5ldHdv
cmtBY3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
KG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBzIGl0cyBwcm9jZXNzIG5ldHdvcmsg
YXNzZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0ZWQiLCB0aGlzKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOYXZpZ2F0aW9uU3Rh
dGUga2VlcHMgaXRzIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIG5ldyBwYWdl
IGxvYWQgc3RhcnRlZCIsIHRoaXMpOwogICAgICAgICAgICAgbV9yZWxlYXNlTmV0d29ya0FjdGl2
aXR5VGltZXIuc3RvcCgpOwogICAgICAgICB9CiAgICAgICAgIGlmICghbV9uZXR3b3JrQWN0aXZp
dHkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlv
blN0YXRlIGlzIHRha2luZyBhIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIHBh
Z2UgbG9hZCBzdGFydGVkIiwgdGhpcyk7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGlzIHRha2luZyBhIHByb2Nlc3MgbmV0
d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBzdGFydGVkIiwgdGhpcyk7CiAgICAg
ICAgICAgICBtX25ldHdvcmtBY3Rpdml0eSA9IG1fd2ViVmlldy0+X3BhZ2UtPnByb2Nlc3MoKS50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlBhZ2UgTG9hZCJfcykubW92ZVRvVW5pcXVl
UHRyKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fbmV0d29ya0FjdGl2aXR5KSB7CiAg
ICAgICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBpcyB2aXNpYmxlIHNvIHdlIGRlbGF5IHJlbGVhc2lu
ZyB0aGUgYmFja2dyb3VuZCBhY3Rpdml0eSBmb3IgMyBzZWNvbmRzIHRvIGdpdmUgaXQgYSBjaGFu
Y2UgdG8gc3RhcnQgYW5vdGhlciBuYXZpZ2F0aW9uCiAgICAgICAgIC8vIGJlZm9yZSBzdXNwZW5k
aW5nIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgPHJkYXI6Ly9wcm9ibGVtLzI3OTEwOTY0Pi4KLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOYXZpZ2F0aW9uU3RhdGUgd2lsbCBy
ZWxlYXNlIGl0cyBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0aW9uIHNvb24gYmVjYXVzZSB0aGUgcGFn
ZSBsb2FkIGNvbXBsZXRlZCIsIHRoaXMpOworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIHdpbGwgcmVsZWFzZSBpdHMgcHJvY2VzcyBu
ZXR3b3JrIGFzc2VydGlvbiBzb29uIGJlY2F1c2UgdGhlIHBhZ2UgbG9hZCBjb21wbGV0ZWQiLCB0
aGlzKTsKICAgICAgICAgbV9yZWxlYXNlTmV0d29ya0FjdGl2aXR5VGltZXIuc3RhcnRPbmVTaG90
KDNfcyk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25T
ZXNzaW9uLm1tCmluZGV4IGZkOGM3MDdkOTllODQ5MThlY2EwYjA3ZWZlMWM4YTRjZDI4YzRjODYu
LmM5MGMyOTkwNGE0YTU1MTVlYzA5ZjczYjJmYTQ2MDM0NmQyODRjMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRp
b25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC00NCw3ICs0NCw3IEBACiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAotI2RlZmluZSBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UgJiYg
bV9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQXBwU1NPLCAiJXAgLSBbSW5pdGlh
dGluZ0FjdGlvbj0lc10gU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6IiBmbXQsIHRoaXMsIHRvU3Ry
aW5nKG1fYWN0aW9uKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQVVUSE9SSVpBVElPTlNFU1NJ
T05fUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKEFwcFNTTywgIiVwIC0gW0luaXRp
YXRpbmdBY3Rpb249JXNdIFNPQXV0aG9yaXphdGlvblNlc3Npb246OiIgZm10LCB0aGlzLCB0b1N0
cmluZyhtX2FjdGlvbiksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC0xMTcsNyArMTE3LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpiZWNvbWVDb21w
bGV0ZWQoKQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnNob3VsZFN0YXJ0KCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzaG91bGRTdGFydDoiKTsKKyAgICBBVVRIT1JJ
WkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygic2hvdWxkU3RhcnQ6Iik7CiAKICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSk7CiAgICAgaWYgKCFtX3BhZ2UpCkBAIC0xMjcsMTIgKzEy
NywxMiBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnNob3VsZFN0YXJ0KCkKIAogdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzdGFydCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic3RhcnQ6Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0co
InN0YXJ0OiIpOwogCiAgICAgQVNTRVJUKChtX3N0YXRlID09IFN0YXRlOjpJZGxlIHx8IG1fc3Rh
dGUgPT0gU3RhdGU6OldhaXRpbmcpICYmIG1fbmF2aWdhdGlvbkFjdGlvbik7CiAgICAgbV9zdGF0
ZSA9IFN0YXRlOjpBY3RpdmU7CiAgICAgW21fc29BdXRob3JpemF0aW9uIGdldEF1dGhvcml6YXRp
b25IaW50c1dpdGhVUkw6bV9uYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkudXJsKCkgcmVzcG9u
c2VDb2RlOjAgY29tcGxldGlvbjptYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSAoU09BdXRob3JpemF0aW9uSGludHMgKmF1dGhvcml6YXRpb25IaW50cywg
TlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IFJlY2VpdmUgU09BdXRob3JpemF0aW9uSGludHMgKGVycm9yPSVsZCkiLCBlcnJvciA/IGVycm9y
LmNvZGUgOiAwKTsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coInN0
YXJ0OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkhpbnRzIChlcnJvcj0lbGQpIiwgZXJyb3IgPyBl
cnJvci5jb2RlIDogMCk7CiAKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBlcnJvciB8fCAhYXV0
aG9yaXphdGlvbkhpbnRzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQyLDcgKzE0Miw3IEBA
IHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6c3RhcnQoKQogCiB2b2lkIFNPQXV0aG9yaXph
dGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50cyhjb25z
dCBTdHJpbmcmIGhpbnRzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVl
U3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50czogKGhpbnRzPSVzKSIsIGhpbnRzLnV0Zjgo
KS5kYXRhKCkpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb250aW51
ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHM6IChoaW50cz0lcykiLCBoaW50cy51dGY4
KCkuZGF0YSgpKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwogICAg
IGlmICghbV9wYWdlKQpAQCAtMTU4LDEzICsxNTgsMTMgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGludHMoY29uc3QgU3Ry
aW4KIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyRGVjaWRl
UG9saWN5KGNvbnN0IFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kmIHBvbGljeSkKIHsKICAgICBp
ZiAocG9saWN5ID09IFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6Oklnbm9yZSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6
IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6SWdub3JlIik7CisgICAgICAgIEFV
VEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQ
b2xpY3k6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6SWdub3JlIik7CiAKICAg
ICAgICAgZmFsbEJhY2tUb1dlYlBhdGgoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeTog
UmVjZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpBbGxvdyIpOworICAgIEFVVEhPUkla
QVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6
IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6QWxsb3ciKTsKIAogICAgIGlmICgh
bV9zb0F1dGhvcml6YXRpb24gfHwgIW1fcGFnZSB8fCAhbV9uYXZpZ2F0aW9uQWN0aW9uKQogICAg
ICAgICByZXR1cm47CkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNz
aW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3koY29uc3QgU09BdXRob3JpemF0aW8K
IAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpmYWxsQmFja1RvV2ViUGF0aCgpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZmFsbEJhY2tUb1dlYlBhdGg6Iik7CisgICAgQVVU
SE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImZhbGxCYWNrVG9XZWJQYXRoOiIpOwogCiAg
ICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkFjdGl2ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjAy
LDcgKzIwMiw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBh
dGgoKQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmFib3J0KCkKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJhYm9ydDoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9S
RUxFQVNFX0xPRygiYWJvcnQ6Iik7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSB8
fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIyNiw3
ICsyMjYsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlKE5TSFRUUFVS
TFJlc3BvbnNlICpodHRwUmVzcG9uc2UsIE5TRGF0YSAqZAogICAgIC8vIFNldCBjb29raWVzLgog
ICAgIGF1dG8gY29va2llcyA9IHRvQ29va2llVmVjdG9yKFtOU0hUVFBDb29raWUgY29va2llc1dp
dGhSZXNwb25zZUhlYWRlckZpZWxkczpodHRwUmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzIGZvclVS
TDpyZXNwb25zZS51cmwoKV0pOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29tcGxl
dGU6IChodHRwU3RhdHVzQ29kZT0lZCwgaGFzQ29va2llcz0lZCwgaGFzRGF0YT0lZCkiLCByZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpLCAhY29va2llcy5pc0VtcHR5KCksICEhZGF0YS5sZW5ndGgp
OworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb21wbGV0ZTogKGh0dHBT
dGF0dXNDb2RlPSVkLCBoYXNDb29raWVzPSVkLCBoYXNEYXRhPSVkKSIsIHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCksICFjb29raWVzLmlzRW1wdHkoKSwgISFkYXRhLmxlbmd0aCk7CiAKICAgICBp
ZiAoY29va2llcy5pc0VtcHR5KCkpIHsKICAgICAgICAgY29tcGxldGVJbnRlcm5hbChyZXNwb25z
ZSwgZGF0YSk7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9u
Ojpjb21wbGV0ZShOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlLCBOU0RhdGEgKmQKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJjb21wbGV0ZTogQ29va2llcyBhcmUgc2V0LiIpOworICAgICAg
ICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiY29tcGxldGU6IENvb2tpZXMgYXJl
IHNldC4iKTsKIAogICAgICAgICBjb21wbGV0ZUludGVybmFsKHJlc3BvbnNlLCBkYXRhLmdldCgp
KTsKICAgICB9KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OmNvbXBsZXRlKE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UsIE5TRGF0YSAqZAog
CiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnByZXNlbnRWaWV3Q29udHJvbGxlcihTT0F1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciB2aWV3Q29udHJvbGxlciwgVUlDYWxsYmFjayB1aUNh
bGxiYWNrKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInByZXNlbnRWaWV3Q29udHJv
bGxlcjoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygicHJlc2VudFZp
ZXdDb250cm9sbGVyOiIpOwogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7
CiAgICAgLy8gT25seSBleHBlY3QgYXQgbW9zdCBvbmUgVUkgc2Vzc2lvbiBmb3IgdGhlIHdob2xl
IGF1dGhvcml6YXRpb24gc2Vzc2lvbi4KQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFNPQXV0aG9y
aXphdGlvblNlc3Npb246OnByZXNlbnRWaWV3Q29udHJvbGxlcihTT0F1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicHJlc2VudFZpZXdDb250cm9sbGVyOiBDYWxsaW5nIGJlZ2luU2hlZXQgb24gJXAg
Zm9yIHNoZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1fc2hlZXRXaW5kb3cuZ2V0KCkpOwor
ICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJwcmVzZW50Vmlld0NvbnRyb2xs
ZXI6IENhbGxpbmcgYmVnaW5TaGVldCBvbiAlcCBmb3Igc2hlZXQgJXAuIiwgcHJlc2VudGluZ1dp
bmRvdywgbV9zaGVldFdpbmRvdy5nZXQoKSk7CiAgICAgW3ByZXNlbnRpbmdXaW5kb3cgYmVnaW5T
aGVldDptX3NoZWV0V2luZG93LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiAjZWxpZiBQ
TEFURk9STShJT1MpCiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyID0gbV9wYWdlLT51aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwpAQCAt
MjkyLDcgKzI5Miw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6cHJlc2VudFZpZXdD
b250cm9sbGVyKFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiAKIHZvaWQgU09BdXRob3Jp
emF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6Iik7CisgICAgQVVUSE9SSVpBVElP
TlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjoiKTsKIAogICAgIEFT
U0VSVChtX3ZpZXdDb250cm9sbGVyKTsKICNpZiBQTEFURk9STShNQUMpCkBAIC0zMDMsMTMgKzMw
MywxMyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmRpc21pc3NWaWV3Q29udHJvbGxl
cigpCiAgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPnBsYXRmb3JtV2luZG93KCkpIHsKICAgICAg
ICAgYXV0byAqcHJlc2VudGluZ1dpbmRvdyA9IG1fcGFnZS0+cGxhdGZvcm1XaW5kb3coKTsKICAg
ICAgICAgaWYgKHByZXNlbnRpbmdXaW5kb3cubWluaWF0dXJpemVkKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFBhZ2UncyB3aW5k
b3cgaXMgbWluaWF0dXJpemVkLiBXYWl0aW5nIHRvIGRpc21pc3MgdW50aWwgYWN0aXZlLiIpOwor
ICAgICAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3
Q29udHJvbGxlcjogUGFnZSdzIHdpbmRvdyBpcyBtaW5pYXR1cml6ZWQuIFdhaXRpbmcgdG8gZGlz
bWlzcyB1bnRpbCBhY3RpdmUuIik7CiAgICAgICAgICAgICBpZiAobV9wcmVzZW50aW5nV2luZG93
RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBbTWluaWF0dXJpemVkXSBBbHJlYWR5
IGhhcyBhIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCkuIEhpZGRlbiBvYnNlcnZlciBpcyAl
cCIsIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9h
cHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICBBVVRI
T1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBbTWlu
aWF0dXJpemVkXSBBbHJlYWR5IGhhcyBhIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCkuIEhp
ZGRlbiBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVP
YnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3ByZXNl
bnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU1dpbmRvd0RpZERlbWluaWF0
dXJpemVOb3RpZmljYXRpb24gb2JqZWN0OnByZXNlbnRpbmdXaW5kb3cgcXVldWU6bmlsIHVzaW5n
QmxvY2s6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoTlNOb3RpZmlj
YXRpb24gKikgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21p
c3NWaWV3Q29udHJvbGxlcjogV2luZG93IGhhcyBkZW1pbmlhdHVyaXplZC4gQ29tcGxldGluZyB0
aGUgZGlzbWlzc2FsLiIpOworICAgICAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JF
TEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFdpbmRvdyBoYXMgZGVtaW5pYXR1cml6
ZWQuIENvbXBsZXRpbmcgdGhlIGRpc21pc3NhbC4iKTsKICAgICAgICAgICAgICAgICBkaXNtaXNz
Vmlld0NvbnRyb2xsZXIoKTsKICAgICAgICAgICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWlu
aWF0dXJpemVPYnNlcnZlci5nZXQoKV07CiAgICAgICAgICAgICAgICAgbV9wcmVzZW50aW5nV2lu
ZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyID0gbnVsbHB0cjsKQEAgLTMxOSwxMyArMzE5LDEz
IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkK
ICAgICB9CiAKICAgICBpZiAoTlNBcHAuaGlkZGVuKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogQXBwbGljYXRpb24gaXMgaGlkZGVuLiBX
YWl0aW5nIHRvIGRpc21pc3MgdW50aWwgYWN0aXZlLiIpOworICAgICAgICBBVVRIT1JJWkFUSU9O
U0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBBcHBsaWNhdGlvbiBp
cyBoaWRkZW4uIFdhaXRpbmcgdG8gZGlzbWlzcyB1bnRpbCBhY3RpdmUuIik7CiAgICAgICAgIGlm
IChtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIpIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogW0hpZGRlbl0gQWxyZWFkeSBo
YXMgYW4gVW5oaWRlIG9ic2VydmVyICglcCkuIERlbWluaWF0dXJpemVkIG9ic2VydmVyIGlzICVw
IiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyLmdldCgpLCBtX2Fw
cGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOworICAgICAgICAgICAgQVVUSE9SSVpB
VElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogW0hpZGRlbl0g
QWxyZWFkeSBoYXMgYW4gVW5oaWRlIG9ic2VydmVyICglcCkuIERlbWluaWF0dXJpemVkIG9ic2Vy
dmVyIGlzICVwIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyLmdl
dCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZl
ciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JO
YW1lOk5TQXBwbGljYXRpb25EaWRVbmhpZGVOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwIHF1ZXVl
Om5pbCB1c2luZ0Jsb2NrOltwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10g
KE5TTm90aWZpY2F0aW9uICopIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpc21pc3NWaWV3Q29udHJvbGxlcjogQXBwbGljYXRpb24gaXMgbm8gbG9uZ2VyIGhpZGRlbi4g
Q29tcGxldGluZyB0aGUgZGlzbWlzc2FsLiIpOworICAgICAgICAgICAgQVVUSE9SSVpBVElPTlNF
U1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogQXBwbGljYXRpb24gaXMg
bm8gbG9uZ2VyIGhpZGRlbi4gQ29tcGxldGluZyB0aGUgZGlzbWlzc2FsLiIpOwogICAgICAgICAg
ICAgZGlzbWlzc1ZpZXdDb250cm9sbGVyKCk7CiAgICAgICAgICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fYXBwbGljYXRpb25EaWRVbmhp
ZGVPYnNlcnZlci5nZXQoKV07CiAgICAgICAgICAgICBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2Jz
ZXJ2ZXIgPSBudWxscHRyOwpAQCAtMzM3LDEwICszMzcsMTAgQEAgdm9pZCBTT0F1dGhvcml6YXRp
b25TZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQogICAgIG1fc2hlZXRXaW5kb3dXaWxs
Q2xvc2VPYnNlcnZlciA9IG51bGxwdHI7CiAKICAgICBhdXRvICpwcmVzZW50aW5nV2luZG93ID0g
bV9zaGVldFdpbmRvdy5nZXQoKS5zaGVldFBhcmVudDsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IENhbGxpbmcgZW5kU2hlZXQgb24gJXAgZm9yIHNo
ZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1fc2hlZXRXaW5kb3cuZ2V0KCkpOworICAgIEFV
VEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IENh
bGxpbmcgZW5kU2hlZXQgb24gJXAgZm9yIHNoZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1f
c2hlZXRXaW5kb3cuZ2V0KCkpOwogICAgIFtwcmVzZW50aW5nV2luZG93IGVuZFNoZWV0Om1fc2hl
ZXRXaW5kb3cuZ2V0KCldOwogICAgIG1fc2hlZXRXaW5kb3cgPSBudWxscHRyOwotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogRmluaXNoZWQgY2FsbCB3
aXRoIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCkgYW5kIEhpZGRlbiBvYnNlcnZlciAoJXAp
IiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyLmdldCgpLCBtX2Fw
cGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOworICAgIEFVVEhPUklaQVRJT05TRVNT
SU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IEZpbmlzaGVkIGNhbGwgd2l0
aCBkZW1pbmlhdHVyaXplZCBvYnNlcnZlciAoJXApIGFuZCBIaWRkZW4gb2JzZXJ2ZXIgKCVwKSIs
IG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBs
aWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpKTsKICNlbGlmIFBMQVRGT1JNKElPUykKICAg
ICBbW21fdmlld0NvbnRyb2xsZXIgcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXSBkaXNtaXNzVmll
d0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOwogI2VuZGlmCkBAIC0zNTAs
NiArMzUwLDYgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRy
b2xsZXIoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQKKyN1bmRlZiBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRwogCiAjZW5k
aWYgLy8gSEFWRShBUFBfU1NPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDIyNmQyOTMzNDA1ZWE1YjZmMGJjMzY5ZTUxZmQwNzg2
MmUzN2FmNzYuLmZmNjI4M2Y2OWI3OTNiNjEwNmI2ZTQ5NDkyNTQ3ZWY1NjU0NGVmZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAg
LTU1LDggKzU1LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4p
IFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5l
bCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIs
IFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiXSBQcm92aXNpb25hbFBhZ2VQcm94eTo6
IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX25hdmlnYXRpb25J
RCwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChj
aGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYobV9wYWdlLmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIs
IHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpLCBuYXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICJd
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9wYWdlLmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fbmF2aWdhdGlvbklELCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBQUk9WSVNJ
T05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0co
Y2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJ
dTY0ICIsIFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiXSBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX25hdmln
YXRpb25JRCwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVM
RUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKGNoYW5u
ZWwsICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAi
LCBQSUQ9JWksIG5hdmlnYXRpb25JRD0lIiBQUkl1NjQgIl0gUHJvdmlzaW9uYWxQYWdlUHJveHk6
OiIgZm10LCB0aGlzLCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9uYXZpZ2F0aW9u
SUQsICMjX19WQV9BUkdTX18pCiAKIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBh
Z2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gc3VzcGVuZGVkUGFnZSwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBib29sIGlzU2VydmVyUmVkaXJlY3QsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBBUEk6OldlYnNpdGVQb2xpY2llcyogd2Vic2l0
ZVBvbGljaWVzKQogICAgIDogbV9wYWdlKHBhZ2UpCkBAIC03Niw3ICs3Niw3IEBAIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJl
ZjxXZWJQcm9jZXNzUHJvCiAjZW5kaWYKICNlbmRpZgogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHN1c3BlbmRlZFBh
Z2U9JXAiLCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25hbFBhZ2VQcm94eTogc3VzcGVu
ZGVkUGFnZT0lcCIsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCiAgICAgbV9wcm9jZXNzLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogICAgIG1fcHJvY2Vzcy0+YWRkUHJvdmlzaW9uYWxQ
YWdlUHJveHkoKnRoaXMpOwpAQCAtMTE4LDcgKzExOCw3IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5
Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHkoKQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpw
cm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6Iik7CisgICAgUFJPVklTSU9O
QUxQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0Rp
ZFRlcm1pbmF0ZToiKTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWluYXRl
KCk7CiB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpj
YW5jZWwoKQogICAgICAgICAKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlBy
b2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQ
cm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUiKTsKICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwogICAgIGF1dG8gZXJyb3Ig
PSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCk7CiAgICAgZXJyb3Iuc2V0VHlwZShX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwpAQCAtMTY0LDE0ICsx
NjQsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoUmVm
UHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnMKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkRGF0
YToiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJsb2FkRGF0YToiKTsKIAogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBN
SU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQ6OlllcywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RG
TW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCku
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDoi
KTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcs
ICJsb2FkUmVxdWVzdDoiKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRp
cmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdp
bGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdl
IG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVy
IGFzIHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0
byBoYXBwZW4gaW4gdGhlCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpS
ZXMKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFJl
ZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVt
OiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGlu
ZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06Iik7CiAKICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX3Bh
Z2UuYmFja0ZvcndhcmRMaXN0KCkuZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVt
ID0gJml0ZW1dKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeSA9IGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCkpIHsKQEAgLTIxNCw3ICsyMTQs
NyBAQCBpbmxpbmUgYm9vbCBQcm92aXNpb25hbFBhZ2VQcm94eTo6dmFsaWRhdGVJbnB1dChGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgTwogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkaWRDcmVhdGVNYWluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6
IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFBST1ZJU0lPTkFM
UEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZU1haW5GcmFt
ZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKCFt
X21haW5GcmFtZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSht
X3BhZ2UsIGZyYW1lSUQpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZy
YW1lSUQudG9VSW50NjQoKSk7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJ
RD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9u
YWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHVybDsKIApA
QCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJCiAgICAgaWYgKCF2YWxp
ZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2
NCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNz
U3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRV
UkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yODgs
NyArMjg4LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUkKICAgICBpZiAoIXZhbGlkYXRlSW5w
dXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6
IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFBST1ZJU0lPTkFM
UEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRpZENvbW1pdExvYWRGb3JG
cmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAgICAgbV9wcm92
aXNpb25hbExvYWRVUkwgPSB7IH07CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBh
Z2VJRCk7CiAKQEAgLTQyMSwxNCArNDIxLDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZShjb25zdCBXZWJDb3JlOjpDb250CiAj
aWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNz
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9JXUiLCBjb250ZXh0SUQpOworICAg
IFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb246IGNvbnRleHRJ
RD0ldSIsIGNvbnRleHRJRCk7CiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRp
b25JbldlYlByb2Nlc3MgPSBjb250ZXh0SUQ7CiB9CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNz
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVh
dGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9
JXUiLCBjb250ZXh0SUQpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7CiAgICAgbV9jb250ZXh0SURG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MgPSBjb250ZXh0SUQ7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA5ODM1YTY0NTcwNGE1Zjk2YzIzNGNiOTAzMzRmYjg0
OTg1MThjMGFhLi4xNDk1ZDg5YzIyNDNjYjQ4YjA1M2JiZjU5OTU1NGM5MWM5NDdlOGYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtNTA0
LDcgKzUwNCw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aGFzVmlz
aWJsZUNvbnRlbnQoKSBjb25zdAogCiBib29sIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2Vi
UGFnZVByb3h5LmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworICAgIHJldHVybiBtX3dlYlBh
Z2VQcm94eS5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKIH0KIAogQ0FM
YXllciAqUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bGF5ZXJXaXRoSURGb3JUZXN0
aW5nKHVpbnQ2NF90IGxheWVySUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCBjNTJlMmI4ZTA5ZjliMGFlNGEzNDA0NGYyMmQ2ODMyYzgwZWMzMzg0
Li41ZWFjNjUzNDc1MGE3Zjk5ZGM4NmNmMjYwNjFhODE5M2JhMjlkNmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxNSw4ICszMTUsOCBAQAogI2RlZmlu
ZSBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCB1cmwpIE1FU1NBR0VfQ0hFQ0tfQkFTRShjaGVj
a1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRPclByZXZpb3VzV2ViUHJvY2Vzcyhwcm9jZXNzLCB1cmwp
LCBwcm9jZXNzLT5jb25uZWN0aW9uKCkpCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElP
Tihwcm9jZXNzLCBhc3NlcnRpb24sIGNvbXBsZXRpb24pIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElP
Tl9CQVNFKGFzc2VydGlvbiwgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLCBjb21wbGV0aW9uKQogCi0j
ZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZVBy
b3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpXSBXZWJQYWdl
UHJveHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19f
KQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5l
bCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIs
IFBJRD0laV0gV2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvVUludDY0
KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKGNoYW5u
ZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIg
UFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIg
Zm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmlu
ZSBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2Vi
UGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWldIFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1f
aWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAKIC8vIFJlcHJlc2VudHMgdGhl
IG51bWJlciBvZiB3aGVlbCBldmVudHMgd2UgY2FuIGhvbGQgaW4gdGhlIHF1ZXVlIGJlZm9yZSB3
ZSBzdGFydCBwdXNoaW5nIHRoZW0gcHJlZW1wdGl2ZWx5Lgogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHdoZWVsRXZlbnRRdWV1ZVNpemVUaHJlc2hvbGQgPSAxMDsKQEAgLTUxMCw3ICs1MTAsNyBAQCBX
ZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgICwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKG1fY29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9t
YWlucygpKQogI2VuZGlmCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Y29uc3RydWN0b3I6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJj
b25zdHJ1Y3RvcjoiKTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kcmF3c0JhY2tncm91
bmQoKSkKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnRCbGFjayk7CkBAIC01NzIsNyArNTcyLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAog
V2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhMb2FkaW5nLCAiZGVzdHJ1Y3RvcjoiKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPndlYlBh
Z2UobV9pZGVudGlmaWVyKSAhPSB0aGlzKTsKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtODIzLDcg
KzgyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgUHJvCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2Vk
KTsKICAgICBBU1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNzKCkpOwogCi0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2VzczoiKTsKKyAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5jaFByb2Nlc3M6Iik7CiAKICAgICAvLyBJbiBjYXNl
IHdlIGFyZSBjdXJyZW50bHkgY29ubmVjdGVkIHRvIHRoZSBkdW1teSBwcm9jZXNzLCB3ZSBuZWVk
IHRvIG1ha2Ugc3VyZSB0aGUgaW5zcGVjdG9yIHByb3h5CiAgICAgLy8gZGlzY29ubmVjdHMgZnJv
bSB0aGUgZHVtbXkgcHJvY2VzcyBmaXJzdC4KQEAgLTg2NSwxMiArODY1LDEyIEBAIGJvb2wgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgT3B0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghaGFzQ29t
bWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90
IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGhhcyBu
b3QgY29tbWl0dGVkIGFueSBsb2FkIHlldCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJz
dXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2Ug
Zm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgaGFzIG5vdCBjb21taXR0ZWQgYW55IGxvYWQgeWV0
IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGlmIChpc1BhZ2VPcGVuZWRCeURPTVNob3dpbmdJbml0aWFsRW1wdHlE
b2N1bWVudCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVu
dCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGl0IGlzIHNob3dpbmcgdGhlIGluaXRp
YWwgZW1wdHkgZG9jdW1lbnQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAg
ICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1
cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9j
ZXNzIHBpZCAlaSBiZWNhdXNlIGl0IGlzIHNob3dpbmcgdGhlIGluaXRpYWwgZW1wdHkgZG9jdW1l
bnQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC04NzksMjUgKzg3OSwyNSBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9w
dAogICAgIC8vIElmIHRoZSBzb3VyY2UgYW5kIHRoZSBkZXN0aW5hdGlvbiBiYWNrIC8gZm9yd2Fy
ZCBsaXN0IGl0ZW1zIGFyZSB0aGUgc2FtZSwgdGhlbiB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVk
aXJlY3QuIEluIHRoaXMgY2FzZSwKICAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIHN1c3BlbmQg
dGhlIHByZXZpb3VzIHBhZ2UgYXMgdGhlcmUgd2lsbCBiZSBubyB3YXkgdG8gZ2V0IGJhY2sgdG8g
aXQuCiAgICAgaWYgKGZyb21JdGVtICYmIGZyb21JdGVtID09IG1fYmFja0ZvcndhcmRMaXN0LT5j
dXJyZW50SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3Vy
cmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIHRoaXMgaXMgYSBjbGllbnQtc2lk
ZSByZWRpcmVjdCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBh
Z2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlk
ICVpIGJlY2F1c2UgdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IiwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAg
IGlmIChmcm9tSXRlbSAmJiBmcm9tSXRlbS0+dXJsKCkgIT0gcGFnZUxvYWRTdGF0ZSgpLnVybCgp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBw
YWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGZyb21JdGVtJ3MgVVJMIGRvZXMgbm90IG1h
dGNoIHRoZSBwYWdlIFVSTC4iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAg
ICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N3YXBwaW5nLCAic3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZv
ciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGZyb21JdGVtJ3MgVVJMIGRvZXMgbm90IG1hdGNoIHRo
ZSBwYWdlIFVSTC4iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc1N1c3BlbmRlZFBhZ2VUb1ByZXZl
bnRGbGFzaGluZyA9IHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoID09IFNo
b3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoOjpZZXM7CiAgICAgaWYgKCFuZWVk
c1N1c3BlbmRlZFBhZ2VUb1ByZXZlbnRGbGFzaGluZyAmJiAoIWZyb21JdGVtIHx8ICFzaG91bGRV
c2VCYWNrRm9yd2FyZENhY2hlKCkpKSB7CiAgICAgICAgIGlmICghZnJvbUl0ZW0pCi0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJy
ZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2Vz
cyBwaWQgJWkgdGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIiwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIHRoZXJl
IGlzIG5vIGFzc29jaWF0ZWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSIsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGUgYmFj
ayAvIGZvcndhcmQgY2FjaGUgaXMgZGlzYWJsZWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCkpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJl
bnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgdGhlIGJhY2sgLyBmb3J3YXJkIGNhY2hlIGlzIGRp
c2FibGVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBh
Z2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsK
KyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1
cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3Mg
cGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBhdXRvIHN1c3Bl
bmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vz
cy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExh
eWVyRmx1c2gpOwogCiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQ
Ukl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFj
ay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgaWRlbnRpZmllcigpLnRvVUludDY0KCksIHN1c3Bl
bmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOwpAQCAtOTI3
LDcgKzkyNyw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRVc2VCYWNrRm9yd2FyZENhY2hl
KCkgY29uc3QKIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uoc3RkOjp1
bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwcm92aXNpb25hbFBhZ2UpCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJzd2FwVG9Qcm92aXNpb25hbFBhZ2U6IG5ld1dlYlBhZ2VJRD0lIiBQUkl1NjQsIHByb3Zpc2lv
bmFsUGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJzd2FwVG9Qcm92aXNpb25hbFBhZ2U6IG5ld1dlYlBhZ2VJRD0lIiBQ
Ukl1NjQsIHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBt
X3Byb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKTsKICAgICBtX3dlYlBhZ2VJRCA9
IHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCk7CkBAIC05NDEsOCArOTQxLDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlz
aW9uYWxQYWdlUHJveHk+IHAKICNlbmRpZgogI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogRG8gd2Ug
cmVhbGx5IG5lZWQgdG8gZGlzYWJsZSB0aGlzIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25z
PwogICAgIGlmIChtX2xvZ2dlcikKLSAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywg
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpOworICAgICAgICBtX2xvZ2dlci0+c2V0RW5hYmxl
ZCh0aGlzLCAhc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSk7CiAKICAgICBtX2hhc1J1bm5pbmdQ
cm9jZXNzID0gdHJ1ZTsKIApAQCAtMTAzNSwxMCArMTAzNiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDoiKTsKKyAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6
Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZCIpOwor
ICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5jaFByb2Nlc3NG
b3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICAKQEAgLTEwNDcsNyArMTA0OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgbGF1bmNoUHJvY2Vzcyhy
ZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6Q3Jhc2gpOwogCiAgICAgaWYg
KCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50
IGl0ZW0gdG8gcmVsb2FkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJlbG9hZCIp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTExMDksNyArMTExMCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY2xvc2U6Iik7CiAKICAg
ICBtX2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAtMTE4OCw3ICsxMTg5LDcgQEAgYm9vbCBXZWJQYWdl
UHJveHk6OnRyeUNsb3NlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAidHJ5
Q2xvc2U6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJ0cnlDbG9z
ZToiKTsKIAogICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dz
IGl0LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2Ug
Y2hlY2sgYSBwZXItcHJvY2VzcyBzdGF0dXMgYml0LgpAQCAtMTIxMyw3ICsxMjE0LDcgQEAgYm9v
bCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeUNsb3Nl
VGltZWRPdXQoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzcywg
InRyeUNsb3NlVGltZWRPdXQ6IFRpbWVkIG91dCB3YWl0aW5nIGZvciB0aGUgcHJvY2VzcyB0byBy
ZXNwb25kIHRvIHRoZSBXZWJQYWdlOjpUcnlDbG9zZSBJUEMsIGNsb3NpbmcgdGhlIHBhZ2Ugbm93
Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJ0cnlDbG9z
ZVRpbWVkT3V0OiBUaW1lZCBvdXQgd2FpdGluZyBmb3IgdGhlIHByb2Nlc3MgdG8gcmVzcG9uZCB0
byB0aGUgV2ViUGFnZTo6VHJ5Q2xvc2UgSVBDLCBjbG9zaW5nIHRoZSBwYWdlIG5vdyIpOwogICAg
IGNsb3NlUGFnZSgpOwogfQogCkBAIC0xMzEwLDcgKzEzMTEsNyBAQCBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFNobwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiIpOworICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFJlcXVlc3Q6Iik7CiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0
cmFibGVEb21haW4geyByZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRp
YWxQcm9jZXNzKTsKQEAgLTEzMzIsNyArMTMzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
CiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQ6Iik7CisgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkOiIpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFu
c2FjdGlvbigpOwogCkBAIC0xMzY4LDEwICsxMzY5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5
VVJMU3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKExvYWRpbmcsICJsb2FkRmlsZToiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNs
b3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRG
aWxlOiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
QEAgLTEzODAsNyArMTM4MSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94
eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKICAgICBVUkwg
ZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlz
TG9jYWxGaWxlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxF
QVNFX0xPRyhMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTM5MCw3ICsxMzkxLDcgQEAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVV
UkxTdHJpbmcsIGNvbnMKICAgICBlbHNlIHsKICAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwg
PSBVUkwoVVJMKCksIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nKTsKICAgICAgICAgaWYgKCFy
ZXNvdXJjZURpcmVjdG9yeVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJMIGlzIG5vdCBs
b2NhbCIpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJs
b2FkRmlsZTogcmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbCIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDI0LDcgKzE0MjUsNyBAQCBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVVSTFN0cmluZywgY29ucwogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRGF0YToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGlu
ZywgImxvYWREYXRhOiIpOwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlm
IChNSU1FVHlwZSA9PSAidGV4dC9odG1sIl9zICYmICFpc0Z1bGxXZWJCcm93c2VyKCkpCkBAIC0x
NDMyLDcgKzE0MzMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6Omxv
YWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogI2VuZGlmCiAKICAgICBp
ZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNDUwLDcgKzE0NTEsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhO
YXZpZ2F0aW9uIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0x
NDc4LDcgKzE0NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAKIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgc2ltdWxhdGVkUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHNpbXVsYXRlZFJlc3BvbnNlLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFNpbXVsYXRlZFJlcXVl
c3Q6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkU2ltdWxh
dGVkUmVxdWVzdDoiKTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAo
c2ltdWxhdGVkUmVzcG9uc2UubWltZVR5cGUoKSA9PSAidGV4dC9odG1sIl9zICYmICFpc0Z1bGxX
ZWJCcm93c2VyKCkpCkBAIC0xNDg2LDcgKzE0ODcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dQogI2VuZGlmCiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVkUmVxdWVzdDogcGFnZSBpcyBjbG9zZWQi
KTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkU2ltdWxh
dGVkUmVxdWVzdDogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC0xNTMyLDEzICsxNTMzLDEzIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1CiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTCIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhU
TUwiKTsKIAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBo
YW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAg
ICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHBy
ZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAgICAgLy8gaGFuZGxlZCBwcm9w
ZXJseS4KICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJp
bmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3Ro
ZXIpIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZEFs
dGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhlcikiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTU3NSwxMCArMTU3NiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3Qg
UwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2Vi
QXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6Iik7CisgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6Iik7CiAKICAgICBp
ZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNs
b3NlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjAyLDEwICsxNjAzLDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNo
aXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRv
UERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgSW50UG9p
bnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xp
Y2s6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJuYXZpZ2F0ZVRv
UERGTGlua1dpdGhTaW11bGF0ZWRDbGljazoiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5r
V2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDoiKTsKKyAgICAgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRD
bGljazogcGFnZSBpcyBjbG9zZWQ6Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2
MjEsMTAgKzE2MjIsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0
aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c3RvcExvYWRpbmcoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgInN0b3BMb2FkaW5nOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5n
LCAic3RvcExvYWRpbmc6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtX
aXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkIik7CisgICAgICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVk
Q2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTE2MzgsNyArMTYzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiAKIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxXZWJD
b3JlOjpSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAicmVsb2FkOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAicmVsb2FkOiIpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAKQEAgLTE3MTksMTEgKzE3MjAsMTEgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFj
a0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUg
ZnJhbWVMb2FkVHlwZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJn
b1RvQmFja0ZvcndhcmRJdGVtOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2Fk
aW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbToiKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQ
cm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51
cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBhZ2Ug
aXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAi
Z29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCkBAIC0xNzQ5LDEwICsxNzUwLDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQ
b3NpdGlvbjoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbjoiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Ny
b2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5v
dCB2YWxpZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDIxLDcgKzIwMjIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZAogICAgICAgICBpZiAoaXNOb3dWaXNpYmxlKQogICAg
ICAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwog
ICAgICAgICBpZiAod2FzVmlzaWJsZSAhPSBpc05vd1Zpc2libGUpCi0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFZpZXdTdGF0ZSwgInVwZGF0ZUFjdGl2aXR5U3RhdGU6IHZpZXcg
dmlzaWJpbGl0eSBzdGF0ZSBjaGFuZ2VkICVkIC0+ICVkIiwgd2FzVmlzaWJsZSwgaXNOb3dWaXNp
YmxlKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhWaWV3U3RhdGUsICJ1
cGRhdGVBY3Rpdml0eVN0YXRlOiB2aWV3IHZpc2liaWxpdHkgc3RhdGUgY2hhbmdlZCAlZCAtPiAl
ZCIsIHdhc1Zpc2libGUsIGlzTm93VmlzaWJsZSk7CiAgICAgfQogICAgIGlmIChmbGFnc1RvVXBk
YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCAmJiBwYWdlQ2xpZW50KCku
aXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQoKSkKICAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKQEAgLTIxODEsMTEgKzIxODIsNiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKICNlbmRp
ZgogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7
Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKIHsKICAgICBi
b29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgPSBtX3ByZWZlcmVuY2VzLT5wYWdlVmlzaWJp
bGl0eUJhc2VkUHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpOwpAQCAtMjIwNCwyMyArMjIwMCwy
MyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoaXNWaWV3VmlzaWJsZSgpKSB7CiAgICAgICAgIGlmICgh
bV9pc1Zpc2libGVBY3Rpdml0eSB8fCAhbV9pc1Zpc2libGVBY3Rpdml0eS0+aXNWYWxpZCgpKSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAi
dXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNz
ZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgdmlzaWJsZSIpOworICAgICAgICAgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0
ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhl
IHZpZXcgaXMgdmlzaWJsZSIpOwogICAgICAgICAgICAgbV9pc1Zpc2libGVBY3Rpdml0eSA9IG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIHZpc2libGUi
X3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2lzVmlz
aWJsZUFjdGl2aXR5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1
c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEg
Zm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25nZXIgdmlzaWJs
ZSIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3Vu
ZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25nZXIgdmlzaWJsZSIpOwogICAg
ICAgICBtX2lzVmlzaWJsZUFjdGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBib29sIGlz
QXVkaWJsZSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc0F1ZGli
bGUpOwogICAgIGlmIChpc0F1ZGlibGUpIHsKICAgICAgICAgaWYgKCFtX2lzQXVkaWJsZUFjdGl2
aXR5IHx8ICFtX2lzQXVkaWJsZUFjdGl2aXR5LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0
YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3
ZSBhcmUgcGxheWluZyBhdWRpbyIpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlz
IHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIHBsYXlpbmcgYXVk
aW8iKTsKICAgICAgICAgICAgIG1faXNBdWRpYmxlQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyBwbGF5aW5nIGF1ZGlvIl9zKS5tb3Zl
VG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgICAgICBtX2F1ZGlibGVBY3Rpdml0eVRpbWVy
LnN0b3AoKTsKICAgICB9IGVsc2UgaWYgKG1faXNBdWRpYmxlQWN0aXZpdHkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxl
U3RhdGU6IFVJUHJvY2VzcyB3aWxsIHJlbGVhc2UgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBpbiAl
ZyBzZWNvbmRzIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5nIGF1ZGlvIiwgYXVkaWJs
ZUFjdGl2aXR5Q2xlYXJEZWxheS5zZWNvbmRzKCkpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nl
c3Mgd2lsbCByZWxlYXNlIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gaW4gJWcgc2Vjb25kcyBiZWNh
dXNlIHdlIGFyZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIsIGF1ZGlibGVBY3Rpdml0eUNsZWFy
RGVsYXkuc2Vjb25kcygpKTsKICAgICAgICAgaWYgKCFtX2F1ZGlibGVBY3Rpdml0eVRpbWVyLmlz
QWN0aXZlKCkpCiAgICAgICAgICAgICBtX2F1ZGlibGVBY3Rpdml0eVRpbWVyLnN0YXJ0T25lU2hv
dChhdWRpYmxlQWN0aXZpdHlDbGVhckRlbGF5KTsKICAgICB9CkBAIC0yMjI4LDExICsyMjI0LDEx
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICBib29sIGlz
Q2FwdHVyaW5nTWVkaWEgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6
SXNDYXB0dXJpbmdNZWRpYSk7CiAgICAgaWYgKGlzQ2FwdHVyaW5nTWVkaWEpIHsKICAgICAgICAg
aWYgKCFtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgfHwgIW1faXNDYXB0dXJpbmdBY3Rpdml0eS0+aXNW
YWxpZCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNw
ZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBhY3RpdmUiKTsKKyAgICAg
ICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0
ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlIik7CiAgICAgICAgICAgICBtX2lzQ2Fw
dHVyaW5nQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0
eSgiVmlldyBpcyBjYXB0dXJpbmcgbWVkaWEiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChtX2lzQ2FwdHVyaW5nQWN0aXZpdHkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3Rh
dGU6IFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNl
IG1lZGlhIGNhcHR1cmUgaXMgbm8gbG9uZ2VyIGFjdGl2ZSIpOworICAgICAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBV
SVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBtZWRp
YSBjYXB0dXJlIGlzIG5vIGxvbmdlciBhY3RpdmUiKTsKICAgICAgICAgbV9pc0NhcHR1cmluZ0Fj
dGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKQEAgLTIyNDEsNyArMjIzNyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXVkaWJsZUFjdGl2aXR5KCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0
bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5nIGF1ZGlvIik7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQ
cm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJl
IG5vIGxvbmdlciBwbGF5aW5nIGF1ZGlvIik7CiAgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG51
bGxwdHI7CiB9CiAjZW5kaWYKQEAgLTI1MjQsNyArMjUyMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRVcGRhdGVSZW5kZXJpbmdBZnRlckNvbW1pdHRpbmdMb2FkKCkKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wTWFraW5nVmlld0JsYW5rRHVlVG9MYWNrT2ZSZW5kZXJpbmdVcGRhdGUoKQogewog
ICAgIEFTU0VSVChtX2hhc1VwZGF0ZWRSZW5kZXJpbmdBZnRlckRpZENvbW1pdExvYWQpOwotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInN0b3BNYWtpbmdWaWV3QmxhbmtEdWVU
b0xhY2tPZlJlbmRlcmluZ1VwZGF0ZToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2VzcywgInN0b3BNYWtpbmdWaWV3QmxhbmtEdWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZToi
KTsKICAgICBwYWdlQ2xpZW50KCkubWFrZVZpZXdCbGFuayhmYWxzZSk7CiB9CiAKQEAgLTI1NDAs
NyArMjUzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYWtlVmlld0JsYW5rSWZVbnBhaW50ZWRT
aW5jZUxhc3RMb2FkQ29tbWl0KCkKICAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkTWFrZVZpZXdC
bGFuayA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgaWYgKHNob3VsZE1ha2VWaWV3QmxhbmspIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgIm1ha2VWaWV3Qmxh
bmtJZlVucGFpbnRlZFNpbmNlTGFzdExvYWRDb21taXQ6IE1ha2luZyB0aGUgdmlldyBibGFuayBi
ZWNhdXNlIG9mIGEgSlMgcHJvbXB0IGJlZm9yZSB0aGUgZmlyc3QgcGFpbnQgZm9yIGl0cyBwYWdl
Iik7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgIm1ha2VW
aWV3QmxhbmtJZlVucGFpbnRlZFNpbmNlTGFzdExvYWRDb21taXQ6IE1ha2luZyB0aGUgdmlldyBi
bGFuayBiZWNhdXNlIG9mIGEgSlMgcHJvbXB0IGJlZm9yZSB0aGUgZmlyc3QgcGFpbnQgZm9yIGl0
cyBwYWdlIik7CiAgICAgICAgICAgICBwYWdlQ2xpZW50KCkubWFrZVZpZXdCbGFuayh0cnVlKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTMzNDcsNyArMzM0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgUHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJG
cmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHBvbGljaWVz
LCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgInJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOiBm
cmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1LCBwb2xpY3lBY3Rpb249JXUiLCBmcmFtZS5m
cmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjogZnJhbWVJ
RD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1IiwgZnJhbWUuZnJhbWVJ
RCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6
IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24pOwogCiAgICAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+
IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuY29weVJlZigpOwogICAgIGlm
IChwb2xpY2llcykgewpAQCAtMzQwOSwxMCArMzQwNSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgQQogICAgICAgICBib29sIHNob3VsZFByb2Nlc3NTd2FwID0gcHJvY2Vzc0Zvck5hdmlnYXRp
b24ucHRyKCkgIT0gc291cmNlUHJvY2Vzcy5wdHIoKTsKICAgICAgICAgaWYgKHNob3VsZFByb2Nl
c3NTd2FwKSB7CiAgICAgICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lBY3Rpb246OlN0b3BB
bGxMb2FkczsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwgc3dhcHBpbmcgcHJvY2VzcyAl
aSB3aXRoIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNvbj0lIiBQVUJMSUNfTE9HX1NU
UklORywgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvY2Vzc0Zvck5hdmlnYXRpb24tPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uLCBzd2FwcGluZyBwcm9jZXNzICVpIHdpdGggcHJvY2VzcyAlaSBmb3IgbmF2aWdh
dGlvbiwgcmVhc29uPSUiIFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCBw
cm9jZXNzRm9yTmF2aWdhdGlvbi0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBp
bmcpIFN3aXRjaGluZyBmcm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3MgKCVpKSBmb3IgbmF2
aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvY2Vzc0Zv
ck5hdmlnYXRpb24tPnByb2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkpOwogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoga2VlcCB1c2luZyBwcm9jZXNzICVpIGZvciBuYXZpZ2F0
aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19TVFJJTkcsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJl
YXNvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBrZWVw
IHVzaW5nIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNvbj0lIiBQVUJMSUNfTE9HX1NU
UklORywgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAg
ICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gb3B0aW9uYWxIYW5kbGU7CiAg
ICAgICAgIGlmIChzaG91bGRQcm9jZXNzU3dhcCkgewpAQCAtMzQ5MSw3ICszNDg3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlv
biwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFs
UGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJD
b3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbW91c2VF
dmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIEFTU0VSVChtX3By
b3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29t
bWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vz
cygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhM
b2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3Byb3Zpc2lvbmFs
UGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCiAgICAgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUg
PyBtYWtlT3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7CiAK
QEAgLTM1MjksMTIgKzM1MjUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lv
bmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3Vz
cGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiBu
ZXdQcm9jZXNzUElEPSVpLCBoYXNTdXNwZW5kZWRQYWdlPSVpIiwgbmV3UHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzczogbmV3UHJvY2Vz
c1BJRD0laSwgaGFzU3VzcGVuZGVkUGFnZT0laSIsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksICEhc3VzcGVuZGVkUGFnZSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5h
dmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRp
b24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKICAgICBSRUxF
QVNFX0FTU0VSVCghbmV3UHJvY2Vzcy0+aXNJblByb2Nlc3NDYWNoZSgpKTsKIAogICAgIGlmICht
X3Byb3Zpc2lvbmFsUGFnZSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzczogVGhlcmUgaXMgYWxy
ZWFkeSBhIHBlbmRpbmcgcHJvdmlzaW9uYWwgbG9hZCwgY2FuY2VsbGluZyBpdCAocHJvdmlzb25h
bE5hdmlnYXRpb25JRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSkiLCBtX3Byb3Zpc2lvbmFsUGFn
ZS0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCkpOworICAgICAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiY29udGludWVOYXZpZ2F0
aW9uSW5OZXdQcm9jZXNzOiBUaGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyBwcm92aXNpb25hbCBs
b2FkLCBjYW5jZWxsaW5nIGl0IChwcm92aXNvbmFsTmF2aWdhdGlvbklEPSVsbHUsIG5hdmlnYXRp
b25JRD0lbGx1KSIsIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlv
bi5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdh
dGlvbklEKCkgIT0gbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSkKICAgICAgICAgICAgIG1fcHJv
dmlzaW9uYWxQYWdlLT5jYW5jZWwoKTsKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxs
cHRyOwpAQCAtMzY2Nyw3ICszNjYzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5k
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3VzcGVuZDoiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInN1c3BlbmQ6Iik7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpIHx8IG1faXNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7CiAKQEAgLTM2NzcsNyArMzY3Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJyZXN1bWU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJyZXN1bWU6Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIW1f
aXNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBA
IC0zNzIzLDcgKzM3MTksNyBAQCBTZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3Rh
dGUoV1RGOjpGdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Np
b25TdGF0ZSBzZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6Iik7CisgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZToi
KTsKIAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1f
aGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsKQEAgLTQ1NDEsNyArNDUzNyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICAgICAgbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25T
dGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAogICAgIExPRyhMb2FkaW5nLCAiV2Vi
UGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBS
SXU2NCAiLCB1cmwgJXMiLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgZnJhbWVJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJh
bWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywg
ImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFt
ZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0
ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElSZXF1
ZXN0KHRyYW5zYWN0aW9uKTsKQEAgLTQ1NzgsNyArNDU3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgVVJMJiYg
dXJsLCBTCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKIAogICAgIGlmICgh
Y2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MobV9wcm9jZXNz
LCB1cmwpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzcywg
Iklnbm9yaW5nIFdlYlBhZ2VQcm94eTo6RGlkRXhwbGljaXRPcGVuRm9yRnJhbWUoKSBJUEMgZnJv
bSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGJlY2F1c2UgdGhlIGZpbGUgVVJMIGlzIG91dHNpZGUg
dGhlIHNhbmRib3giKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBy
b2Nlc3MsICJJZ25vcmluZyBXZWJQYWdlUHJveHk6OkRpZEV4cGxpY2l0T3BlbkZvckZyYW1lKCkg
SVBDIGZyb20gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBiZWNhdXNlIHRoZSBmaWxlIFVSTCBpcyBv
dXRzaWRlIHRoZSBzYW5kYm94Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2MDMs
NyArNDU5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50CiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1l
SUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgZnJhbWVJ
RC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhM
b2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDYzMiw3ICs0NjI4
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjwKIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlz
dCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0
KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAid2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2
NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7
CiAKQEAgLTQ2NDUsNyArNDY0MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlE
LnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQu
dG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00NjkzLDcgKzQ2ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkws
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250
aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGlu
ZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlk
ICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIs
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBw
cm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9
JSIgUFJJdTY0ICIsIGRvbWFpbj0lcywgY29kZT0lZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAiLCBkb21haW49JXMsIGNvZGU9JWQiLCBmcmFt
ZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9y
Q29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKQEAgLTQ3NjQsNyArNDc2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiB7CiAg
ICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENv
bW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9y
d2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1f
YmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQs
IGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRp
bmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRv
VUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKIApAQCAtNDg4OCw3ICs0ODg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1p
dExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50
NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQo
KSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00OTE2LDcgKzQ5MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9H
KExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSAtIFdlYlBhZ2VQ
cm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiBkaWRGaW5pc2hMb2FkIiwgdGhp
cywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRGaW5pc2hMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0
KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkRmluaXNoTG9h
ZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ5Njcs
NyArNDk2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
RmFpbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQgIiwgZG9tYWluPSVzLCBjb2RlPSVk
IiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJv
ci5lcnJvckNvZGUoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRp
bmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAiLCBkb21haW49JXMs
IGNvZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMTIsNyArNTAwOCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUlu
Zm9EYXRhJiYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1
aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2
NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1
NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01MTk4LDcgKzUxOTQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2NlcwogICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSIsIGZyYW1lLmZyYW1lSUQo
KS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogZnJhbWVJRD0lbGx1
LCBuYXZpZ2F0aW9uSUQ9JWxsdSIsIGZyYW1lLmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0
aW9uSUQpOwogCiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAl
cyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC01MjE0LDcgKzUyMTAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5k
aW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbik7CiAKICAgICBpZiAoIWNoZWNrVVJMUmVjZWl2ZWRG
cm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKHByb2Nlc3MsIHJlcXVlc3QudXJsKCkpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5n
IHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBpcyBvdXRzaWRl
IHRoZSBzYW5kYm94Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQ
cm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNh
dXNlIGl0IGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKICAgICAgICAgc2VuZGVyLT5zZW5kKFBv
bGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTI4MCw3ICs1Mjc2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
ICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJl
cXVlc3QpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzcywg
Iklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCB3
YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1h
aW4gcmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOwog
ICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9y
ZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwg
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9CiAjZW5k
aWYKQEAgLTUyOTUsNyArNTI5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAjZW5kaWYK
IAogICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQ
cm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VS
ZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIG5hdmlnYXRp
b25BY3Rpb24sIGZyYW1lSW5mbywgdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKV0gKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2Fm
ZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246IGxpc3RlbmVyIGNhbGxlZDogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxs
dSwgcG9saWN5QWN0aW9uPSV1LCBzYWZlQnJvd3NpbmdXYXJuaW5nPSVkLCBpc0FwcEJvdW5kRG9t
YWluPSVkIiwgZnJhbWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uLCAhIXNhZmVC
cm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3VuZERvbWFpbik7CisgICAgICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjog
bGlzdGVuZXIgY2FsbGVkOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1LCBwb2xpY3lB
Y3Rpb249JXUsIHNhZmVCcm93c2luZ1dhcm5pbmc9JWQsIGlzQXBwQm91bmREb21haW49JWQiLCBm
cmFtZS0+ZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24sICEhc2FmZUJyb3dzaW5nV2Fy
bmluZywgISFpc0FwcEJvdW5kRG9tYWluKTsKIAogICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMsIGZyYW1lLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRl
ciksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b24pLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xpY2llcyA9IG1ha2VSZWZQdHIo
cG9saWNpZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKQEAgLTUzMTQsNyArNTMxMCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgICAgICBpZiAoIXNldElzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGZyYW1lLT5pc01haW5GcmFtZSgpLCBu
YXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBpc0FwcEJvdW5kRG9tYWluKSkgewog
ICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBlcnJvckZvclVucGVybWl0dGVkQXBwQm91bmRE
b21haW5OYXZpZ2F0aW9uKG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCkpOwogICAg
ICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdh
dGlvbldpdGhFcnJvcigqdGhpcywgRnJhbWVJbmZvRGF0YSB7IGZyYW1lSW5mbyB9LCBuYXZpZ2F0
aW9uLmdldCgpLCBlcnJvciwgdXNlckRhdGFPYmplY3QpOwotICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9h
ZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBpcyBhdHRlbXB0aW5nIHRvIG5hdmlnYXRl
IGF3YXkgZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIG9yIG5hdmlnYXRlIGFmdGVyIHVzaW5nIHJl
c3RyaWN0ZWQgQVBJcyIpOworICAgICAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
R19FUlJPUihMb2FkaW5nLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNv
dXJjZSBiZWNhdXNlIGl0IGlzIGF0dGVtcHRpbmcgdG8gbmF2aWdhdGUgYXdheSBmcm9tIGFuIGFw
cC1ib3VuZCBkb21haW4gb3IgbmF2aWdhdGUgYWZ0ZXIgdXNpbmcgcmVzdHJpY3RlZCBBUElzIik7
CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTU1OTAsNyArNTU4
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShj
b25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0coTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkOiIp
OwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApA
QCAtNTYxMCw3ICs1NjA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RTaGFyZWQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
U2hhcmVkOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBh
Z2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTU2MzcsNyAr
NTYzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtU2VydmVyUmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvblVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiIpOworICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0OiIpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNTc2Nyw3ICs1NzYzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZSgp
CiAgICAgaWYgKGlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2VzcywgImNsb3NlUGFnZToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0coUHJvY2VzcywgImNsb3NlUGFnZToiKTsKICAgICBwYWdlQ2xpZW50KCkuY2xlYXJB
bGxFZGl0Q29tbWFuZHMoKTsKICAgICBtX3VpQ2xpZW50LT5jbG9zZSh0aGlzKTsKIH0KQEAgLTc0
ODgsNyArNzQ4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c2VkRnJhbWVDaGFuZ2VkKGNv
bnN0IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4mIGZyYW1lSUQpCiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAicHJvY2Vzc0Rp
ZEJlY29tZVVucmVzcG9uc2l2ZToiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNzUwMCw3ICs3NDk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJv
Y2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOiIpOworICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6Iik7CiAK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc1NDEs
NyArNzUzNyw3IEBAIFVSTCBXZWJQYWdlUHJveHk6OmN1cnJlbnRSZXNvdXJjZURpcmVjdG9yeVVS
TCgpIGNvbnN0CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc1Rlcm1p
bmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7CiAgICAgaWYgKHJlYXNv
biAhPSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKQotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkVGVybWluYXRl
OiAocGlkICVkKSwgcmVhc29uICVkIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uKTsKKyAg
ICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJwcm9jZXNzRGlk
VGVybWluYXRlOiAocGlkICVkKSwgcmVhc29uICVkIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVh
c29uKTsKIAogICAgIEFTU0VSVChtX2hhc1J1bm5pbmdQcm9jZXNzKTsKIApAQCAtNzU5NSw3ICs3
NTkxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24o
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
c3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29u
KQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgImRpc3BhdGNo
UHJvY2Vzc0RpZFRlcm1pbmF0ZTogcmVhc29uPSVkIiwgcmVhc29uKTsKKyAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0
ZTogcmVhc29uPSVkIiwgcmVhc29uKTsKIAogICAgIGJvb2wgaGFuZGxlZEJ5Q2xpZW50ID0gZmFs
c2U7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQpAQCAtNzYxMiwxMSArNzYwOCwxMSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oKQogICAgIG1f
cmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIuc3RvcCgpOwogCiAgICAgaWYgKCsrbV9yZWNlbnRD
cmFzaENvdW50ID4gbWF4aW11bVdlYlByb2Nlc3NSZWxhdW5jaEF0dGVtcHRzKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgInRyeVJlbG9hZEFmdGVyUHJv
Y2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNyYXNoZWQgYW5kIHRoZSBjbGllbnQgZGlkIG5vdCBo
YW5kbGUgaXQsIG5vdCByZWxvYWRpbmcgdGhlIHBhZ2UgYmVjYXVzZSB3ZSByZWFjaGVkIHRoZSBt
YXhpbXVtIG51bWJlciBvZiBhdHRlbXB0cyIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0dfRVJST1IoUHJvY2VzcywgInRyeVJlbG9hZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uOiBw
cm9jZXNzIGNyYXNoZWQgYW5kIHRoZSBjbGllbnQgZGlkIG5vdCBoYW5kbGUgaXQsIG5vdCByZWxv
YWRpbmcgdGhlIHBhZ2UgYmVjYXVzZSB3ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBh
dHRlbXB0cyIpOwogICAgICAgICBtX3JlY2VudENyYXNoQ291bnQgPSAwOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInRyeVJlbG9h
ZEFmdGVyUHJvY2Vzc1Rlcm1pbmF0aW9uOiBwcm9jZXNzIGNyYXNoZWQgYW5kIHRoZSBjbGllbnQg
ZGlkIG5vdCBoYW5kbGUgaXQsIHJlbG9hZGluZyB0aGUgcGFnZSIpOworICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAidHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb246
IHByb2Nlc3MgY3Jhc2hlZCBhbmQgdGhlIGNsaWVudCBkaWQgbm90IGhhbmRsZSBpdCwgcmVsb2Fk
aW5nIHRoZSBwYWdlIik7CiAgICAgcmVsb2FkKFJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwog
fQogCkBAIC04MjYzLDE2ICs4MjU5LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERh
dGFiYXNlUXVvdGEoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwg
dWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2Fn
ZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChT
dG9yYWdlLCAicmVxdWVzdFN0b3JhZ2VTcGFjZSBmb3IgZnJhbWUgJSIgUFJJdTY0ICIsIGN1cnJl
bnQgcXVvdGEgJSIgUFJJdTY0ICIgY3VycmVudCB1c2FnZSAlIiBQUkl1NjQgIiBleHBlY3RlZCB1
c2FnZSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50
RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNwYWNlIGZvciBmcmFtZSAlIiBQUkl1NjQgIiwg
Y3VycmVudCBxdW90YSAlIiBQUkl1NjQgIiBjdXJyZW50IHVzYWdlICUiIFBSSXU2NCAiIGV4cGVj
dGVkIHVzYWdlICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpLCBjdXJyZW50UXVvdGEsIGN1
cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlKTsKIAogICAgIFN0b3JhZ2VSZXF1ZXN0
czo6c2luZ2xldG9uKCkucHJvY2Vzc09yQXBwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHBhZ2VVUkwgPSBjdXJyZW50VVJMKCksIGZyYW1lSUQsIG9yaWdpbklkZW50
aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1cnJlbnRRdW90YSwgY3VycmVudE9y
aWdpblVzYWdlLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgdGhpcy0+bWFrZVN0b3JhZ2VTcGFjZVJlcXVlc3QoZnJhbWVJRCwgb3JpZ2luSWRlbnRpZmll
ciwgZGF0YWJhc2VOYW1lLCBkaXNwbGF5TmFtZSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIHBhZ2VVUkwgPSBXVEZN
b3ZlKHBhZ2VVUkwpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBjdXJyZW50UXVvdGFdKGF1dG8gcXVvdGEpIG11dGFibGUgewogCi0gICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNwYWNlIHJlc3Bv
bnNlIGZvciBmcmFtZSAlIiBQUkl1NjQgIiwgcXVvdGEgJSIgUFJJdTY0LCBmcmFtZUlELnRvVUlu
dDY0KCksIHF1b3RhKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhTdG9y
YWdlLCAicmVxdWVzdFN0b3JhZ2VTcGFjZSByZXNwb25zZSBmb3IgZnJhbWUgJSIgUFJJdTY0ICIs
IHF1b3RhICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpLCBxdW90YSk7CiAgICAgICAgICAg
ICBVTlVTRURfVkFSSUFCTEUoZnJhbWVJRCk7CiAKICAgICAgICAgICAgIGlmIChxdW90YSA8PSBj
dXJyZW50UXVvdGEgJiYgdGhpcy0+Y3VycmVudFVSTCgpID09IHBhZ2VVUkwpIHsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFN0b3JhZ2UsICJzdG9yYWdlIHNwYWNlIGlu
Y3JlYXNlIGRlbmllZCIpOworICAgICAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhTdG9yYWdlLCAic3RvcmFnZSBzcGFjZSBpbmNyZWFzZSBkZW5pZWQiKTsKICAgICAgICAgICAg
ICAgICBtX2lzUXVvdGFJbmNyZWFzZURlbmllZCA9ICB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocXVvdGEpOwpAQCAtOTM2MSw3ICs5MzU3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUoKQogICAg
IGlmICghaGF2ZVJlcG9ydGVkQ2FwdHVyZSAmJiB3aWxsUmVwb3J0Q2FwdHVyZSkKICAgICAgICAg
bV91cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlVGltZXIuc3RhcnRPbmVTaG90KG1fbWVk
aWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChX
ZWJSVEMsICJ1cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlOiBmcm9tICVkIHRvICVkIiwg
bV9yZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlLnRvUmF3KCksIGFjdGl2ZUNhcHR1cmVTdGF0ZS50
b1JhdygpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coV2ViUlRDLCAidXBkYXRlUmVw
b3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZTogZnJvbSAlZCB0byAlZCIsIG1fcmVwb3J0ZWRNZWRpYUNh
cHR1cmVTdGF0ZS50b1JhdygpLCBhY3RpdmVDYXB0dXJlU3RhdGUudG9SYXcoKSk7CiAKICAgICBi
b29sIG1pY3JvcGhvbmVDYXB0dXJlQ2hhbmdlZCA9IChtX3JlcG9ydGVkTWVkaWFDYXB0dXJlU3Rh
dGUgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVNYXNrKSAhPSAoYWN0aXZlQ2FwdHVyZVN0
YXRlICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9DYXB0dXJlTWFzayk7CiAgICAgYm9vbCBjYW1lcmFD
YXB0dXJlQ2hhbmdlZCA9IChtX3JlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUgJiBNZWRpYVByb2R1
Y2VyOjpWaWRlb0NhcHR1cmVNYXNrKSAhPSAoYWN0aXZlQ2FwdHVyZVN0YXRlICYgTWVkaWFQcm9k
dWNlcjo6VmlkZW9DYXB0dXJlTWFzayk7CkBAIC05NjAwLDEzICs5NTk2LDEzIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFeGNlZWRJbmFjdGl2ZU1l
bW9yeUxpbWl0V2hpbGVBY3RpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkRXhjZWVkSW5hY3RpdmVNZW1vcnlMaW1pdFdoaWxl
QWN0aXZlIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNl
TG9nZ2luZywgImRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSIpOwogICAg
IG1fdWlDbGllbnQtPmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVn
cm91bmQoKnRoaXMsIGtXS1Jlc291cmNlTGltaXRNZW1vcnkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZvcmVncm91bmQoKQogewot
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlk
RXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZvcmVncm91bmQiKTsKKyAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkRXhjZWVkQmFj
a2dyb3VuZENQVUxpbWl0V2hpbGVJbkZvcmVncm91bmQiKTsKICAgICBtX3VpQ2xpZW50LT5kaWRF
eGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKCp0aGlzLCBrV0tS
ZXNvdXJjZUxpbWl0Q1BVKTsKIH0KIApAQCAtMTA0MTQsNyArMTA0MTAsOCBAQCBMb2dnZXImIFdl
YlBhZ2VQcm94eTo6bG9nZ2VyKCkKIHsKICAgICBpZiAoIW1fbG9nZ2VyKSB7CiAgICAgICAgIG1f
bG9nZ2VyID0gTG9nZ2VyOjpjcmVhdGUodGhpcyk7Ci0gICAgICAgIG1fbG9nZ2VyLT5zZXRFbmFi
bGVkKHRoaXMsIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpKTsKKyAgICAgICAgLy8gRklYTUU6
IERvZXMgdGhpcyByZWFsbHkgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBlcGhlbWVyYWwgc2Vzc2lv
bnM/CisgICAgICAgIG1fbG9nZ2VyLT5zZXRFbmFibGVkKHRoaXMsICFzZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gKm1fbG9nZ2VyOwpAQCAtMTA2NzMsNyAr
MTA2NzAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbAogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0cKKyN1bmRlZiBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IKICN1bmRl
ZiBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04KICN1bmRlZiBNRVNTQUdFX0NIRUNLX1VSTAogI3Vu
ZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggNjc2YzdjMzAwYzQ0ODYwZmM4MjIzNmJjNjRhZjZmNTA0YjgzNWFlNS4uYTFjMTNkOWYwMGE5
OThmMjU4ZWZjYWRkZmQxYWY5ZDJmYjQ1M2RlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTE1ODgsNyArMTU4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgc2V0U2hvdWxk
UGxheVRvUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldh
c0Rpc21pc3NlZChXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
KSBmaW5hbDsKLSAgICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsgfQorICAgIGJvb2wgYWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNlc3Npb25JRCgpLmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpOyB9CiAgICAgYm9vbCB1c2VpVHVuZXNBVk91dHB1dENvbnRleHQo
KSBjb25zdCBmaW5hbDsKICAgICBQbGF0Zm9ybVZpZXcqIHBsYXRmb3JtVmlldygpIGNvbnN0IGZp
bmFsOwogCkBAIC0xNjIyLDggKzE2MjIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc05ldmVyUmlj
aGx5RWRpdGFibGVGb3JUb3VjaEJhcigpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXZlclJpY2hseUVk
aXRhYmxlRm9yVG91Y2hCYXI7IH0KICNlbmRpZgogCi0gICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSBjb25zdDsKLQogI2lmIEVOQUJMRShHQU1FUEFEKQogICAgIHZvaWQgZ2FtZXBh
ZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mLCBXZWJDb3JlOjpFdmVudE1ha2Vz
R2FtZXBhZHNWaXNpYmxlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMzJiMGYyOGE1NmY2ZTc1ZWViZjU4ZTc1NTk1NjM2
Y2RjNjE4MTlhYy4uYWVjOGE0YTI5YzEwZjYzOWNkNDIxNDA0OWYzMDZjYjJkMzY5MGM3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC04
MSw3ICs4MSw3IEBACiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0Vf
Q0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0aW9uKCkpCiAKLSNkZWZpbmUg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJRD0l
bGx1LCB3ZWJQYWdlSUQ9JWxsdSwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBt
X2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIl
cCAtIFtwYWdlUHJveHlJRD0lbGx1LCB3ZWJQYWdlSUQ9JWxsdSwgUElEPSVpXSBXZWJQYWdlUHJv
eHk6OiIgZm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTg5LDcg
KzU4OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZCgpCiAKICAgICBib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1VJQXBwIGlzU3VzcGVuZGVk
VW5kZXJMb2NrXTsKICAgICAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFZpZXdTdGF0ZSwg
ImFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOiBpc1N1c3BlbmRlZFVuZGVyTG9jaz8gJWQi
LCBpc1N1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFZp
ZXdTdGF0ZSwgImFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOiBpc1N1c3BlbmRlZFVuZGVy
TG9jaz8gJWQiLCBpc1N1c3BlbmRlZFVuZGVyTG9jayk7CiAKICNpZiAhUExBVEZPUk0oV0FUQ0hP
UykKICAgICAvLyBXZSBub3JtYWxseSBkZWxheSBwcm9jZXNzIHN1c3BlbnNpb24gd2hlbiB0aGUg
YXBwIGlzIGJhY2tncm91bmRlZCB1bnRpbCB0aGUgY3VycmVudCBwYWdlIGxvYWQgY29tcGxldGVz
LiBIb3dldmVyLApAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQoKQogICAgIG1fbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNr
Z3JvdW5kID0gZmFsc2U7CiAKICAgICBib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1VJQXBw
IGlzU3VzcGVuZGVkVW5kZXJMb2NrXTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFZpZXdT
dGF0ZSwgImFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDogaXNTdXNwZW5kZWRVbmRlckxv
Y2s/ICVkIiwgaXNTdXNwZW5kZWRVbmRlckxvY2spOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhWaWV3U3RhdGUsICJhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6IGlzU3VzcGVu
ZGVkVW5kZXJMb2NrPyAlZCIsIGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKIAogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
KGlzU3VzcGVuZGVkVW5kZXJMb2NrKSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6SGFyZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWQo
aXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlKCkpLCBtX3dlYlBhZ2VJRCk7CkBAIC02MzMsNyArNjMz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiB2
b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRGb3JNZWRpYSgp
CiB7CiAgICAgYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtVSUFwcCBpc1N1c3BlbmRlZFVu
ZGVyTG9ja107Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChWaWV3U3RhdGUsICJhcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmRGb3JNZWRpYTogaXNTdXNwZW5kZWRVbmRlckxvY2s/ICVk
IiwgaXNTdXNwZW5kZWRVbmRlckxvY2spOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhW
aWV3U3RhdGUsICJhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRGb3JNZWRpYTogaXNTdXNw
ZW5kZWRVbmRlckxvY2s/ICVkIiwgaXNTdXNwZW5kZWRVbmRlckxvY2spOwogCiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZEZvck1lZGlhKGlzU3VzcGVuZGVkVW5kZXJMb2NrKSwgbV93ZWJQYWdlSUQpOwogfQpAQCAtNjQx
LDcgKzY0MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZEZvck1lZGlhKCkKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmRGb3JNZWRpYSgpCiB7CiAgICAgYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtV
SUFwcCBpc1N1c3BlbmRlZFVuZGVyTG9ja107Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChW
aWV3U3RhdGUsICJhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZEZvck1lZGlhOiBpc1N1c3Bl
bmRlZFVuZGVyTG9jaz8gJWQiLCBpc1N1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKFZpZXdTdGF0ZSwgImFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
Rm9yTWVkaWE6IGlzU3VzcGVuZGVkVW5kZXJMb2NrPyAlZCIsIGlzU3VzcGVuZGVkVW5kZXJMb2Nr
KTsKIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kRm9yTWVkaWEoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBtX3dlYlBh
Z2VJRCk7CiB9CkBAIC0xNDY2LDcgKzE0NjYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxk
Rm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBjYW5UYWtlRm9yZWdyb3VuZEFzc2VydGlvbnMg
PSBwYWdlQ2xpZW50KCkuY2FuVGFrZUZvcmVncm91bmRBc3NlcnRpb25zKCk7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiV2ViUGFnZVByb3h5OjpzaG91bGRGb3JjZUZvcmVn
cm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSByZXR1cm5zICVkIGJhc2VkIG9uIFBh
Z2VDbGllbnQ6OmNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucygpIiwgY2FuVGFrZUZvcmVncm91
bmRBc3NlcnRpb25zKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgIldl
YlBhZ2VQcm94eTo6c2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0
aW9uKCkgcmV0dXJucyAlZCBiYXNlZCBvbiBQYWdlQ2xpZW50OjpjYW5UYWtlRm9yZWdyb3VuZEFz
c2VydGlvbnMoKSIsIGNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucyk7CiAgICAgcmV0dXJuIGNh
blRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9uczsKIH0KIApAQCAtMTU3OCw3ICsxNTc4LDcgQEAgQ29s
b3IgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RAorI3VuZGVmIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRwogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429989</attachid>
            <date>2021-05-27 22:49:46 -0700</date>
            <delta_ts>2021-06-01 10:26:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226342-20210527224945.patch</filename>
            <type>text/plain</type>
            <size>103968</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1NmQzOGFjOWEwNGYxNGU0
Nzc3OGZhNzg3ZWRkMTcwMzg2NjFjOGQuLjI3ZmJjODY2Yzg3MmRjMzM3NDExMWNiZjJlNTUyY2E3
YWM5M2I3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA1LTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIFdlYlBhZ2VQcm94eSdz
IHJlbGVhc2UgbG9nZ2luZyBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBXZWJQYWdlUHJveHkncyByZWxl
YXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zLiBPdXIgcmVsZWFzZSBsb2dnaW5nIGRv
ZXNuJ3QKKyAgICAgICAgY29udGFpbiBhbnl0aGluZyBzZW5zaXRpdmUgYW5kIG5vdCBoYXZpbmcg
dGhpcyBsb2dnaW5nIG1ha2VzIGl0IGhhcmQgdG8gZGVidWcgaXNzdWVzIGluCisgICAgICAgIGFw
cHMgdXNpbmcgZXBoZW1lcmFsIHNlc3Npb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhp
bnRzKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVT
dGFydEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgpOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6
YXRpb25TZXNzaW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNl
c3Npb246OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6cHJlc2VudFZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnRyeUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVk
T3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxlQWN0aXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtE
dWVUb0xhY2tPZlJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RTdG9yYWdlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZv
cmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvZ2dlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDIxLTA1LTI3ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRk
IGRlYnVnIGxvZ2dpbmcgYXJvdW5kIHNvbWUgc2hhcmVkIGRpc3BsYXkgbGlzdCBjb2RlcGF0aHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5k
ZXggYzcyM2E3M2I4YTZlMDdhNGMxOTMxNzdkZWVhMzkxMDhhNDVhMTk0My4uOTUwMzk1OTcyYTU4
OTRjZGFhMmIzMDk0MmFhMmY0YmIzOTI0ZGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTc4LDcgKzc4LDcgQEAgLSAodm9pZClf
YWN0aW9uOihpZClzZW5kZXIgXAogICAgICAgICBbX2NvbnRlbnRWaWV3IF9hY3Rpb24gIyMgRm9y
V2ViVmlldzpzZW5kZXJdOyBcCiB9CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgu
Li4pIFJFTEVBU0VfTE9HX0lGKF9wYWdlICYmIF9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgVmlld1N0YXRlLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0tXRUJWSUVXX1JFTEVBU0Vf
TE9HKC4uLikgUkVMRUFTRV9MT0coVmlld1N0YXRlLCBfX1ZBX0FSR1NfXykKIAogc3RhdGljIGNv
bnN0IFNlY29uZHMgZGVsYXlCZWZvcmVOb1Zpc2libGVDb250ZW50c1JlY3RzTG9nZ2luZyA9IDFf
czsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlbGF5QmVmb3JlTm9Db21taXRzTG9nZ2luZyA9IDVf
czsKQEAgLTY4NiwxMyArNjg2LDEzIEBAIC0gKHZvaWQpX3Byb2Nlc3NXaWxsU3dhcE9yRGlkRXhp
dAogCiAtICh2b2lkKV9wcm9jZXNzV2lsbFN3YXAKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAtW1dLV2ViVmlldyBfcHJvY2Vzc1dpbGxTd2FwXSIsIHNlbGYpOworICAgIFdLV0VC
VklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcgX3Byb2Nlc3NXaWxsU3dhcF0iLCBzZWxm
KTsKICAgICBbc2VsZiBfcHJvY2Vzc1dpbGxTd2FwT3JEaWRFeGl0XTsKIH0KIAogLSAodm9pZClf
cHJvY2Vzc0RpZEV4aXQKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2Vi
VmlldyBfcHJvY2Vzc0RpZEV4aXRdIiwgc2VsZik7CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9H
KCIlcCAtW1dLV2ViVmlldyBfcHJvY2Vzc0RpZEV4aXRdIiwgc2VsZik7CiAKICAgICBbc2VsZiBf
cHJvY2Vzc1dpbGxTd2FwT3JEaWRFeGl0XTsKIApAQCAtNzA0LDcgKzcwNCw3IEBAIC0gKHZvaWQp
X3Byb2Nlc3NEaWRFeGl0CiAKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJvY2VzcwogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIC1bV0tXZWJWaWV3IF9kaWRSZWxhdW5jaFByb2Nlc3Nd
Iiwgc2VsZik7CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAtW1dLV2ViVmlldyBfZGlk
UmVsYXVuY2hQcm9jZXNzXSIsIHNlbGYpOwogICAgIF9oYXNTY2hlZHVsZWRWaXNpYmxlUmVjdFVw
ZGF0ZSA9IE5POwogICAgIF92aWV3U3RhYmlsaXR5V2hlblZpc2libGVDb250ZW50UmVjdFVwZGF0
ZVNjaGVkdWxlZCA9IHsgfTsKICAgICBpZiAoX2dlc3R1cmVDb250cm9sbGVyKQpAQCAtNzg2LDE0
ICs3ODYsMTQgQEAgLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJUcmVlRHVyaW5nQW5pbWF0ZWRSZXNp
emU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHIKIC0gKHZvaWQpX3RyYWNrVHJhbnNh
Y3Rpb25Db21taXQ6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxh
eWVyVHJlZVRyYW5zYWN0aW9uCiB7CiAgICAgaWYgKF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250
ZW50UmVjdHNGb3JVbnN0YWJsZVNjcm9sbFZpZXcpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXll
clRyZWU6XSAtIHJlY2VpdmVkIGEgY29tbWl0ICglbGx1KSB3aGlsZSBkZWZlcnJpbmcgdmlzaWJs
ZSBjb250ZW50IHJlY3QgdXBkYXRlcyAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgJWQsIF9u
ZWVkc1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRMb2FkRm9yTWFpbkZyYW1lICVkICh3YW50cyBj
b21taXQgJWxsdSksIHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
ICVkLCBbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICVkLCBfY3VycmVudGx5QWRqdXN0aW5n
U2Nyb2xsVmlld0luc2V0c0ZvcktleWJvYXJkICVkKSIsCisgICAgICAgIFdLV0VCVklFV19SRUxF
QVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXll
clRyZWU6XSAtIHJlY2VpdmVkIGEgY29tbWl0ICglbGx1KSB3aGlsZSBkZWZlcnJpbmcgdmlzaWJs
ZSBjb250ZW50IHJlY3QgdXBkYXRlcyAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgJWQsIF9u
ZWVkc1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRMb2FkRm9yTWFpbkZyYW1lICVkICh3YW50cyBj
b21taXQgJWxsdSksIHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
ICVkLCBbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICVkLCBfY3VycmVudGx5QWRqdXN0aW5n
U2Nyb2xsVmlld0luc2V0c0ZvcktleWJvYXJkICVkKSIsCiAgICAgICAgIHNlbGYsIF9wYWdlLT5p
ZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbGF5ZXJUcmVlVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25J
RCgpLnRvVUludDY0KCksIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlLCBfbmVlZHNSZXNldFZp
ZXdTdGF0ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSwgX2ZpcnN0UGFpbnRBZnRlckNvbW1p
dExvYWRUcmFuc2FjdGlvbklELnRvVUludDY0KCksIFtfY29udGVudFZpZXcgc2l6ZUNoYW5nZWRT
aW5jZUxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVdLCBbX3Njcm9sbFZpZXcgaXNab29tQm91
bmNpbmddLCBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0ZvcktleWJvYXJkKTsK
ICAgICB9CiAKICAgICBpZiAoX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlV2l0
aFBlbmRpbmdDb21taXQpIHsKICAgICAgICAgYXV0byB0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRo
UGVuZGluZ0NvbW1pdCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gKl90aW1lT2ZGaXJzdFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0OwogICAgICAgICBpZiAodGltZVNp
bmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPiBkZWxheUJlZm9yZU5vQ29tbWl0c0xv
Z2dpbmcpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5
SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpdIC0gZmluYWxseSByZWNl
aXZlZCBjb21taXQgJS4yZnMgYWZ0ZXIgdmlzaWJsZSBjb250ZW50IHJlY3QgdXBkYXRlIHJlcXVl
c3Q7IHRyYW5zYWN0aW9uSUQgJWxsdSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50
NjQoKSwgdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQudmFsdWUoKSwgbGF5
ZXJUcmVlVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpLnRvVUludDY0KCkpOworICAgICAgICAg
ICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZp
ZXcgX2RpZENvbW1pdExheWVyVHJlZTpdIC0gZmluYWxseSByZWNlaXZlZCBjb21taXQgJS4yZnMg
YWZ0ZXIgdmlzaWJsZSBjb250ZW50IHJlY3QgdXBkYXRlIHJlcXVlc3Q7IHRyYW5zYWN0aW9uSUQg
JWxsdSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgdGltZVNpbmNlRmly
c3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQudmFsdWUoKSwgbGF5ZXJUcmVlVHJhbnNhY3Rpb24u
dHJhbnNhY3Rpb25JRCgpLnRvVUludDY0KCkpOwogICAgICAgICBfdGltZU9mRmlyc3RWaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdCA9IHN0ZDo6bnVsbG9wdDsKICAgICB9
CiB9CkBAIC04OTMsNyArODkzLDcgQEAgLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJUcmVlOihjb25z
dCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWUKICAgICB9CiAK
ICAgICBpZiAoX3Jlc2l6ZUFuaW1hdGlvblZpZXcpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoIiVwIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAtIGR5bmFtaWNWaWV3
cG9ydFVwZGF0ZU1vZGUgaXMgTm90UmVzaXppbmcsIGJ1dCBzdGlsbCBoYXZlIGEgbGl2ZSByZXNp
emVBbmltYXRpb25WaWV3ICh1bnBhaXJlZCBiZWdpbi9lbmRBbmltYXRlZFJlc2l6ZT8pIiwgc2Vs
Zik7CisgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcgX2RpZENv
bW1pdExheWVyVHJlZTpdIC0gZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSBpcyBOb3RSZXNpemlu
ZywgYnV0IHN0aWxsIGhhdmUgYSBsaXZlIHJlc2l6ZUFuaW1hdGlvblZpZXcgKHVucGFpcmVkIGJl
Z2luL2VuZEFuaW1hdGVkUmVzaXplPykiLCBzZWxmKTsKIAogICAgIFtzZWxmIF91cGRhdGVTY3Jv
bGxWaWV3Rm9yVHJhbnNhY3Rpb246bGF5ZXJUcmVlVHJhbnNhY3Rpb25dOwogCkBAIC0xOTUxLDE0
ICsxOTUxLDE0IEBAIC0gKHZvaWQpX2FkZFVwZGF0ZVZpc2libGVDb250ZW50UmVjdFByZUNvbW1p
dEhhbmRsZXIKICAgICBbQ0FUcmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVyOltyZXRhaW5lZFNl
bGZdIHsKICAgICAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gcmV0YWluZWRTZWxmLmdldCgpOwog
ICAgICAgICBpZiAoIVt3ZWJWaWV3IF9pc1ZhbGlkXSkgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUYod2ViVmlldy5fcGFnZSAmJiB3ZWJWaWV3Ll9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgVmlld1N0YXRlLCAiSW4gQ0FUcmFuc2FjdGlvbiBwcmVDb21taXRIYW5kbGVyLCBX
S1dlYlZpZXcgJXAgaXMgaW52YWxpZCIsIHdlYlZpZXcpOworICAgICAgICAgICAgV0tXRUJWSUVX
X1JFTEVBU0VfTE9HKCJJbiBDQVRyYW5zYWN0aW9uIHByZUNvbW1pdEhhbmRsZXIsIFdLV2ViVmll
dyAlcCBpcyBpbnZhbGlkIiwgd2ViVmlldyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIFt3ZWJWaWV3IF91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzXTsKICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24p
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHdlYlZpZXcuX3BhZ2UgJiYgd2ViVmlldy5f
cGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFZpZXdTdGF0ZSwgIkluIENBVHJhbnNh
Y3Rpb24gcHJlQ29tbWl0SGFuZGxlciwgLVtXS1dlYlZpZXcgJXAgX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHNdIHRocmV3IGFuIGV4Y2VwdGlvbiIsIHdlYlZpZXcpOworICAgICAgICAgICAgV0tX
RUJWSUVXX1JFTEVBU0VfTE9HKCJJbiBDQVRyYW5zYWN0aW9uIHByZUNvbW1pdEhhbmRsZXIsIC1b
V0tXZWJWaWV3ICVwIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXSB0aHJldyBhbiBleGNlcHRp
b24iLCB3ZWJWaWV3KTsKICAgICAgICAgfQogICAgICAgICB3ZWJWaWV3LT5faGFzU2NoZWR1bGVk
VmlzaWJsZVJlY3RVcGRhdGUgPSBOTzsKICAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhh
c2VQcmVDb21taXRdOwpAQCAtMTk3MSw3ICsxOTcxLDcgQEAgLSAodm9pZClfc2NoZWR1bGVWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVBZnRlclNjcm9sbEluVmlldzooVUlTY3JvbGxWaWV3ICopc2Ny
b2wKICAgICBpZiAoX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRlKSB7CiAgICAgICAgIGF1
dG8gdGltZU5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgICAgICBpZiAoKHRpbWVOb3cg
LSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkgPiBkZWxheUJlZm9y
ZU5vVmlzaWJsZUNvbnRlbnRzUmVjdHNMb2dnaW5nKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCItW1dLV2ViVmlldyAlcCBfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RV
cGRhdGVBZnRlclNjcm9sbEluVmlld106IF9oYXNTY2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSBp
cyB0cnVlIGJ1dCBoYXZlbid0IHVwZGF0ZWQgdmlzaWJsZSBjb250ZW50IHJlY3RzIGZvciAlLjJm
cyAobGFzdCB1cGRhdGUgd2FzICUuMmZzIGFnbykgLSB2YWxpZCAlZCIsCisgICAgICAgICAgICBX
S1dFQlZJRVdfUkVMRUFTRV9MT0coIi1bV0tXZWJWaWV3ICVwIF9zY2hlZHVsZVZpc2libGVDb250
ZW50UmVjdFVwZGF0ZUFmdGVyU2Nyb2xsSW5WaWV3XTogX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0
VXBkYXRlIGlzIHRydWUgYnV0IGhhdmVuJ3QgdXBkYXRlZCB2aXNpYmxlIGNvbnRlbnQgcmVjdHMg
Zm9yICUuMmZzIChsYXN0IHVwZGF0ZSB3YXMgJS4yZnMgYWdvKSAtIHZhbGlkICVkIiwKICAgICAg
ICAgICAgICAgICBzZWxmLCAodGltZU5vdyAtIF90aW1lT2ZSZXF1ZXN0Rm9yVmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlKS52YWx1ZSgpLCAodGltZU5vdyAtIF90aW1lT2ZMYXN0VmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlKS52YWx1ZSgpLCBbc2VsZiBfaXNWYWxpZF0pOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKQEAgLTIwNjYsNyArMjA2Niw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVD
b250ZW50UmVjdHMKICAgICAgICAgW19wYXNzd29yZFZpZXcgc2V0RnJhbWU6c2VsZi5ib3VuZHNd
OwogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9jb21wdXRlZENvbnRlbnRJbnNldERp
ZENoYW5nZV07CiAgICAgICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNGb3JB
bnlSZWFzb24gPSBZRVM7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0g
dXNlc1N0YW5kYXJkQ29udGVudFZpZXcgaXMgTk8sIGJhaWxpbmciLCBzZWxmLCBfcGFnZS0+aWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVw
IChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
czpdIC0gdXNlc1N0YW5kYXJkQ29udGVudFZpZXcgaXMgTk8sIGJhaWxpbmciLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yMDc0LDEzICsyMDc0LDEzIEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMK
ICAgICBpZiAoX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlV2l0aFBlbmRpbmdD
b21taXQpIHsKICAgICAgICAgYXV0byB0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRoUGVuZGluZ0Nv
bW1pdCA9IHRpbWVOb3cgLSAqX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlV2l0
aFBlbmRpbmdDb21taXQ7CiAgICAgICAgIGlmICh0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRoUGVu
ZGluZ0NvbW1pdCA+IGRlbGF5QmVmb3JlTm9Db21taXRzTG9nZ2luZykKLSAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBf
dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0gaGF2ZSBub3QgcmVjZWl2ZWQgYSBjb21taXQg
JS4yZnMgYWZ0ZXIgdmlzaWJsZSBjb250ZW50IHJlY3QgdXBkYXRlOyBsYXN0VHJhbnNhY3Rpb25J
RCAlbGx1Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCB0aW1lU2luY2VG
aXJzdFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdC52YWx1ZSgpLCBfbGFzdFRyYW5zYWN0aW9uSUQu
dG9VSW50NjQoKSk7CisgICAgICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0g
aGF2ZSBub3QgcmVjZWl2ZWQgYSBjb21taXQgJS4yZnMgYWZ0ZXIgdmlzaWJsZSBjb250ZW50IHJl
Y3QgdXBkYXRlOyBsYXN0VHJhbnNhY3Rpb25JRCAlbGx1Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCB0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdC52
YWx1ZSgpLCBfbGFzdFRyYW5zYWN0aW9uSUQudG9VSW50NjQoKSk7CiAgICAgfQogCiAgICAgaWYg
KF9pbnZva2luZ1VJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2spIHsKICAgICAgICAgX2RpZERl
ZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvclVJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJh
Y2sgPSBZRVM7CiAgICAgICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNGb3JB
bnlSZWFzb24gPSBZRVM7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdl
UHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0g
X2ludm9raW5nVUlTY3JvbGxWaWV3RGVsZWdhdGVDYWxsYmFjayBpcyBZRVMsIGJhaWxpbmciLCBz
ZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBXS1dFQlZJRVdf
UkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0czpdIC0gX2ludm9raW5nVUlTY3JvbGxWaWV3RGVsZWdhdGVDYWxsYmFj
ayBpcyBZRVMsIGJhaWxpbmciLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDkzLDEzICsyMDkzLDEzIEBAIC0gKHZv
aWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICAgICAgfHwgX2N1cnJlbnRseUFkanVz
dGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCkgewogICAgICAgICBfZGlkRGVmZXJVcGRh
dGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uID0gWUVTOwogICAgICAgICBfZGlkRGVm
ZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFibGVTY3JvbGxWaWV3ID0gWUVTOwot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtX
S1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHNjcm9sbCB2aWV3IHN0YXRl
IGlzIG5vbi1zdGFibGUsIGJhaWxpbmcgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkLCBf
bmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSAlZCwgc2l6ZUNo
YW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgJWQsIFtfc2Nyb2xsVmlldyBp
c1pvb21Cb3VuY2luZ10gJWQsIF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9y
S2V5Ym9hcmQgJWQpIiwKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVBy
b3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHNj
cm9sbCB2aWV3IHN0YXRlIGlzIG5vbi1zdGFibGUsIGJhaWxpbmcgKF9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlICVkLCBfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5G
cmFtZSAlZCwgc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgJWQs
IFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10gJWQsIF9jdXJyZW50bHlBZGp1c3RpbmdTY3Jv
bGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQgJWQpIiwKICAgICAgICAgICAgIHNlbGYsIF9wYWdlLT5p
ZGVudGlmaWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUsIF9uZWVk
c1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRMb2FkRm9yTWFpbkZyYW1lLCBbX2NvbnRlbnRWaWV3
IHNpemVDaGFuZ2VkU2luY2VMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlXSwgW19zY3JvbGxW
aWV3IGlzWm9vbUJvdW5jaW5nXSwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNG
b3JLZXlib2FyZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoX2RpZERlZmVy
VXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvckFueVJlYXNvbikKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVW
aXNpYmxlQ29udGVudFJlY3RzOl0gLSBwZXJmb3JtaW5nIGZpcnN0IHZpc2libGUgY29udGVudCBy
ZWN0IHVwZGF0ZSBhZnRlciBkZWZlcnJpbmcgdXBkYXRlcyIsIHNlbGYsIF9wYWdlLT5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBh
Z2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0g
LSBwZXJmb3JtaW5nIGZpcnN0IHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZSBhZnRlciBkZWZl
cnJpbmcgdXBkYXRlcyIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAK
ICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVUlTY3JvbGxWaWV3RGVs
ZWdhdGVDYWxsYmFjayA9IE5POwogICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250ZW50UmVj
dHNGb3JVbnN0YWJsZVNjcm9sbFZpZXcgPSBOTzsKQEAgLTIxNTMsNyArMjE1Myw3IEBAIC0gKHZv
aWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICB9CiAKICAgICBpZiAoKHRpbWVOb3cg
LSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkgPiBkZWxheUJlZm9y
ZU5vVmlzaWJsZUNvbnRlbnRzUmVjdHNMb2dnaW5nKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCIlcCAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIGZpbmFs
bHkgcmFuICUuMmZzIGFmdGVyIGJlaW5nIHNjaGVkdWxlZCIsIHNlbGYsICh0aW1lTm93IC0gX3Rp
bWVPZlJlcXVlc3RGb3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLnZhbHVlKCkpOworICAgICAg
ICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RzOl0gZmluYWxseSByYW4gJS4yZnMgYWZ0ZXIgYmVpbmcgc2NoZWR1bGVkIiwgc2Vs
ZiwgKHRpbWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZSku
dmFsdWUoKSk7CiAKICAgICBfYWx3YXlzU2VuZE5leHRWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUg
PSBOTzsKICAgICBfdGltZU9mTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSA9IHRpbWVOb3c7
CkBAIC0yMTc5LDcgKzIxNzksNyBAQCBzdGF0aWMgaW50MzJfdCBhY3RpdmVPcmllbnRhdGlvbihX
S1dlYlZpZXcgKndlYlZpZXcpCiAKIC0gKHZvaWQpX2NhbmNlbEFuaW1hdGVkUmVzaXplCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJW
aWV3IF9jYW5jZWxBbmltYXRlZFJlc2l6ZV0gX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgJWQi
LCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIF9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0l
bGx1KSAtW1dLV2ViVmlldyBfY2FuY2VsQW5pbWF0ZWRSZXNpemVdIF9keW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlICVkIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBfZHlu
YW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CiAKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjIxMSwxMiArMjIxMSwxMiBAQCAtICh2b2lkKV9kaWRDb21w
bGV0ZUFuaW1hdGVkUmVzaXplCiAKICAgICBpZiAoIV9yZXNpemVBbmltYXRpb25WaWV3KSB7CiAg
ICAgICAgIC8vIFBhcmFub2lhLiBJZiBfcmVzaXplQW5pbWF0aW9uVmlldyBpcyBudWxsIHdlJ2xs
IGVuZCB1cCBzZXR0aW5nIGEgemVybyBzY2FsZSBvbiB0aGUgY29udGVudCB2aWV3LgotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2ViVmlldyBfZGlkQ29tcGxldGVBbmlt
YXRlZFJlc2l6ZTpdIC0gX3Jlc2l6ZUFuaW1hdGlvblZpZXcgaXMgbmlsIiwgc2VsZik7CisgICAg
ICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcgX2RpZENvbXBsZXRlQW5p
bWF0ZWRSZXNpemU6XSAtIF9yZXNpemVBbmltYXRpb25WaWV3IGlzIG5pbCIsIHNlbGYpOwogICAg
ICAgICBbc2VsZiBfY2FuY2VsQW5pbWF0ZWRSZXNpemVdOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1b
V0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplXSIsIHNlbGYsIF9wYWdlLT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFn
ZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemVdIiwg
c2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIE5TVUludGVnZXIg
aW5kZXhPZlJlc2l6ZUFuaW1hdGlvblZpZXcgPSBbW19zY3JvbGxWaWV3IHN1YnZpZXdzXSBpbmRl
eE9mT2JqZWN0Ol9yZXNpemVBbmltYXRpb25WaWV3LmdldCgpXTsKICAgICBbX3Njcm9sbFZpZXcg
aW5zZXJ0U3VidmlldzpfY29udGVudFZpZXcuZ2V0KCkgYXRJbmRleDppbmRleE9mUmVzaXplQW5p
bWF0aW9uVmlld107CkBAIC0yODg3LDcgKzI4ODcsNyBAQCAtICh2b2lkKV9iZWdpbkFuaW1hdGVk
UmVzaXplV2l0aFVwZGF0ZXM6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5
SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczpdIiwg
c2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBXS1dFQlZJRVdfUkVM
RUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfYmVnaW5BbmltYXRl
ZFJlc2l6ZVdpdGhVcGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0
KCkpOwogCiAgICAgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPSBXZWJLaXQ6OkR5bmFtaWNW
aWV3cG9ydFVwZGF0ZU1vZGU6OlJlc2l6aW5nV2l0aEFuaW1hdGlvbjsKIApAQCAtMzAyNCw3ICsz
MDI0LDcgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOih2b2lkIChe
KSh2b2lkKSl1cGRhdGVCbG9jawogCiAtICh2b2lkKV9lbmRBbmltYXRlZFJlc2l6ZQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmll
dyBfZW5kQW5pbWF0ZWRSZXNpemVdIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICVkIiwgc2Vs
ZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBfZHluYW1pY1ZpZXdwb3J0VXBkYXRl
TW9kZSk7CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkg
LVtXS1dlYlZpZXcgX2VuZEFuaW1hdGVkUmVzaXplXSBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9k
ZSAlZCIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3
cG9ydFVwZGF0ZU1vZGUpOwogCiAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGFuIHVwLXRvLWRh
dGUgbGF5ZXIgdHJlZSwgaW1tZWRpYXRlbHkgY29tcGxldGUKICAgICAvLyB0aGUgcmVzaXplLiBP
dGhlcndpc2UsIHdlIHdpbGwgZGVmZXIgY29tcGxldGlvbiB1bnRpbCB3ZSBkby4KQEAgLTMwMzUs
NyArMzAzNSw3IEBAIC0gKHZvaWQpX2VuZEFuaW1hdGVkUmVzaXplCiAKIC0gKHZvaWQpX3Jlc2l6
ZVdoaWxlSGlkaW5nQ29udGVudFdpdGhVcGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9j
awogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAt
W1dLV2ViVmlldyBfcmVzaXplV2hpbGVIaWRpbmdDb250ZW50V2l0aFVwZGF0ZXM6XSIsIHNlbGYs
IF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgV0tXRUJWSUVXX1JFTEVBU0Vf
TE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3Jlc2l6ZVdoaWxlSGlkaW5n
Q29udGVudFdpdGhVcGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0
KCkpOwogCiAgICAgW3NlbGYgX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczp1cGRhdGVC
bG9ja107CiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IFdlYktpdDo6RHlu
YW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6UmVzaXppbmdXaXRoQW5pbWF0aW9uKSB7CkBAIC0zMzM5
LDQgKzMzMzksNiBAQCAtIChpZCA8X1dLV2ViVmlld1ByaW50UHJvdmlkZXI+KV9wcmludFByb3Zp
ZGVyCiAKIEBlbmQKIAorI3VuZGVmIFdLV0VCVklFV19SRUxFQVNFX0xPRworCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KaW5kZXggNjA3NTYyYWVlODhlNzY2OWY4ZDkx
ODZmZGQ4MjRiNjM1OTU1YzZiNi4uNTQ2ZWNkMDVkYmNmYjk1ZmU0ZGY3NGQxYjNhMTU0MzRmNzJh
MTYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93
bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5
RG93bmxvYWRDbGllbnQubW0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50Ojp0YWtlQWN0aXZpdHlUb2tlbihEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQog
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBkb3du
bG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGKHdl
YlBhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVw
IC0gVUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgaXQg
aXMgZG93bmxvYWRpbmcgYSBzeXN0ZW0gcHJldmlldyIsIHRoaXMpOworICAgICAgICBSRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gVUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgaXQgaXMgZG93bmxvYWRpbmcgYSBzeXN0ZW0gcHJldmll
dyIsIHRoaXMpOwogICAgICAgICBBU1NFUlQoIW1fYWN0aXZpdHkpOwogICAgICAgICBtX2FjdGl2
aXR5ID0gd2ViUGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
U3lzdGVtIHByZXZpZXcgZG93bmxvYWQiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgIH0KQEAg
LTI5NSw3ICsyOTUsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpyZWxlYXNlQWN0aXZp
dHlUb2tlbklmTmVjZXNzYXJ5KERvd25sb2FkUHJveHkmIGRvd25sbwogewogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKG1fYWN0aXZpdHkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUYoZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGJh
Y2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSBzeXN0ZW0gcHJldmlldyBkb3dubG9hZCBjb21w
bGV0ZWQiLCB0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBh
IHN5c3RlbSBwcmV2aWV3IGRvd25sb2FkIGNvbXBsZXRlZCIsIHRoaXMpOwogICAgICAgICBtX2Fj
dGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGY3ZDQwNjM2MWZlNjg3OGVmNzM1
YjM1YTk4Mzc4OGNkNDVlMGQ0Y2YuLjA3M2E3YjdjNGNlMzYzNDU0ZjJjOGQ0ODY2NjkwNzcxY2Jk
NDRjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KQEAgLTEzNjgsMTAgKzEzNjgsMTAgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OnJl
bGVhc2VOZXR3b3JrQWN0aXZpdHkoTmV0d29ya0FjdGl2aXR5UmVsZWFzZVJlYXNvbiByZWFzb24K
IAogICAgIHN3aXRjaCAocmVhc29uKSB7CiAgICAgY2FzZSBOZXR3b3JrQWN0aXZpdHlSZWxlYXNl
UmVhc29uOjpMb2FkQ29tcGxldGVkOgotICAgICAgICBSRUxFQVNFX0xPR19JRihtX3dlYlZpZXct
Pl9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCBOYXZpZ2F0aW9uU3RhdGUgaXMgcmVsZWFzaW5nIGJhY2tncm91bmQgcHJvY2VzcyBhc3NlcnRp
b24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKKyAgICAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBOYXZpZ2F0aW9uU3RhdGUgaXMgcmVsZWFzaW5n
IGJhY2tncm91bmQgcHJvY2VzcyBhc3NlcnRpb24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBjb21wbGV0
ZWQiLCB0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZXR3b3JrQWN0aXZpdHlSZWxl
YXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmll
dy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNpbmcgYmFja2dyb3VuZCBwcm9jZXNzIGFzc2Vy
dGlvbiBiZWNhdXNlIHRoZSBzY3JlZW4gd2FzIGxvY2tlZCIsIHRoaXMpOworICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNp
bmcgYmFja2dyb3VuZCBwcm9jZXNzIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBzY3JlZW4gd2FzIGxv
Y2tlZCIsIHRoaXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgbV9uZXR3b3JrQWN0aXZp
dHkgPSBudWxscHRyOwpAQCAtMTM4OCwxNyArMTM4OCwxNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6ZGlkQ2hhbmdlSXNMb2FkaW5nKCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBp
ZiAobV9yZWxlYXNlTmV0d29ya0FjdGl2aXR5VGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOYXZpZ2F0aW9uU3RhdGUga2VlcHMgaXRz
IHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIG5ldyBwYWdlIGxvYWQgc3RhcnRl
ZCIsIHRoaXMpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIE5hdmlnYXRpb25TdGF0ZSBrZWVwcyBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBi
ZWNhdXNlIGEgbmV3IHBhZ2UgbG9hZCBzdGFydGVkIiwgdGhpcyk7CiAgICAgICAgICAgICBtX3Jl
bGVhc2VOZXR3b3JrQWN0aXZpdHlUaW1lci5zdG9wKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCFtX25ldHdvcmtBY3Rpdml0eSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJW
aWV3LT5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgLSBOYXZpZ2F0aW9uU3RhdGUgaXMgdGFraW5nIGEgcHJvY2VzcyBuZXR3b3JrIGFzc2Vy
dGlvbiBiZWNhdXNlIGEgcGFnZSBsb2FkIHN0YXJ0ZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOYXZpZ2F0aW9uU3RhdGUgaXMgdGFr
aW5nIGEgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBiZWNhdXNlIGEgcGFnZSBsb2FkIHN0YXJ0
ZWQiLCB0aGlzKTsKICAgICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJWaWV3LT5f
cGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBMb2Fk
Il9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9uZXR3
b3JrQWN0aXZpdHkpIHsKICAgICAgICAgLy8gVGhlIGFwcGxpY2F0aW9uIGlzIHZpc2libGUgc28g
d2UgZGVsYXkgcmVsZWFzaW5nIHRoZSBiYWNrZ3JvdW5kIGFjdGl2aXR5IGZvciAzIHNlY29uZHMg
dG8gZ2l2ZSBpdCBhIGNoYW5jZSB0byBzdGFydCBhbm90aGVyIG5hdmlnYXRpb24KICAgICAgICAg
Ly8gYmVmb3JlIHN1c3BlbmRpbmcgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyA8cmRhcjovL3Byb2Js
ZW0vMjc5MTA5NjQ+LgotICAgICAgICBSRUxFQVNFX0xPR19JRihtX3dlYlZpZXctPl9wYWdlLT5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5hdmln
YXRpb25TdGF0ZSB3aWxsIHJlbGVhc2UgaXRzIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gc29v
biBiZWNhdXNlIHRoZSBwYWdlIGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CisgICAgICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOYXZpZ2F0aW9uU3RhdGUgd2lsbCByZWxl
YXNlIGl0cyBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0aW9uIHNvb24gYmVjYXVzZSB0aGUgcGFnZSBs
b2FkIGNvbXBsZXRlZCIsIHRoaXMpOwogICAgICAgICBtX3JlbGVhc2VOZXR3b3JrQWN0aXZpdHlU
aW1lci5zdGFydE9uZVNob3QoM19zKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25T
ZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9u
L1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggZmQ4YzcwN2Q5OWU4NDkxOGVjYTBiMDdl
ZmUxYzhhNGNkMjhjNGM4Ni4uYzkwYzI5OTA0YTRhNTUxNWVjMDlmNzNiMmZhNDYwMzQ2ZDI4NGMw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTQ0
LDcgKzQ0LDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rv
ci5oPgogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0lGKG1fcGFnZSAmJiBtX3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBBcHBT
U08sICIlcCAtIFtJbml0aWF0aW5nQWN0aW9uPSVzXSBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjoi
IGZtdCwgdGhpcywgdG9TdHJpbmcobV9hY3Rpb24pLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBB
VVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coQXBw
U1NPLCAiJXAgLSBbSW5pdGlhdGluZ0FjdGlvbj0lc10gU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
IiBmbXQsIHRoaXMsIHRvU3RyaW5nKG1fYWN0aW9uKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNl
c3Npb246OmJlY29tZUNvbXBsZXRlZCgpCiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
c2hvdWxkU3RhcnQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNob3VsZFN0YXJ0
OiIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJzaG91bGRTdGFydDoi
KTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpJZGxlKTsKICAgICBpZiAoIW1fcGFn
ZSkKQEAgLTEyNywxMiArMTI3LDEyIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6c2hv
dWxkU3RhcnQoKQogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VT
U0lPTl9SRUxFQVNFX0xPRygic3RhcnQ6Iik7CiAKICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gU3Rh
dGU6OklkbGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6V2FpdGluZykgJiYgbV9uYXZpZ2F0aW9uQWN0
aW9uKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkFjdGl2ZTsKICAgICBbbV9zb0F1dGhvcml6YXRp
b24gZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDptX25hdmlnYXRpb25BY3Rpb24tPnJlcXVl
c3QoKS51cmwoKSByZXNwb25zZUNvZGU6MCBjb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChTT0F1dGhvcml6YXRpb25IaW50cyAqYXV0
aG9yaXphdGlvbkhpbnRzLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzdGFydDogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25IaW50cyAoZXJyb3I9JWxk
KSIsIGVycm9yID8gZXJyb3IuY29kZSA6IDApOworICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lP
Tl9SRUxFQVNFX0xPRygic3RhcnQ6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uSGludHMgKGVycm9y
PSVsZCkiLCBlcnJvciA/IGVycm9yLmNvZGUgOiAwKTsKIAogICAgICAgICBpZiAoIXdlYWtUaGlz
IHx8IGVycm9yIHx8ICFhdXRob3JpemF0aW9uSGludHMpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNDIsNyArMTQyLDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzdGFydCgpCiAK
IHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9y
aXphdGlvbkhpbnRzKGNvbnN0IFN0cmluZyYgaGludHMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhpbnRzOiAoaGludHM9
JXMpIiwgaGludHMudXRmOCgpLmRhdGEoKSk7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVM
RUFTRV9MT0coImNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRpb25IaW50czogKGhpbnRz
PSVzKSIsIGhpbnRzLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkFjdGl2ZSk7CiAgICAgaWYgKCFtX3BhZ2UpCkBAIC0xNTgsMTMgKzE1OCwxMyBAQCB2b2lk
IFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckdldEF1dGhvcml6YXRp
b25IaW50cyhjb25zdCBTdHJpbgogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51
ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3koY29uc3QgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeSYg
cG9saWN5KQogewogICAgIGlmIChwb2xpY3kgPT0gU09BdXRob3JpemF0aW9uTG9hZFBvbGljeTo6
SWdub3JlKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlU3RhcnRB
ZnRlckRlY2lkZVBvbGljeTogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpJZ25v
cmUiKTsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImNvbnRpbnVl
U3RhcnRBZnRlckRlY2lkZVBvbGljeTogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5
OjpJZ25vcmUiKTsKIAogICAgICAgICBmYWxsQmFja1RvV2ViUGF0aCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVTdGFydEFm
dGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3k6OkFsbG93
Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImNvbnRpbnVlU3RhcnRB
ZnRlckRlY2lkZVBvbGljeTogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5OjpBbGxv
dyIpOwogCiAgICAgaWYgKCFtX3NvQXV0aG9yaXphdGlvbiB8fCAhbV9wYWdlIHx8ICFtX25hdmln
YXRpb25BY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFNP
QXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeShjb25z
dCBTT0F1dGhvcml6YXRpbwogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmZhbGxCYWNr
VG9XZWJQYXRoKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJmYWxsQmFja1RvV2Vi
UGF0aDoiKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZmFsbEJhY2tU
b1dlYlBhdGg6Iik7CiAKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QWN0aXZlKQogICAgICAg
ICByZXR1cm47CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9u
OjpmYWxsQmFja1RvV2ViUGF0aCgpCiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6YWJv
cnQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiIpOworICAgIEFVVEhP
UklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJhYm9ydDoiKTsKIAogICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpJZGxlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
Y29tcGxldGUoTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSwgTlNEYXRhICpkCiAgICAg
Ly8gU2V0IGNvb2tpZXMuCiAgICAgYXV0byBjb29raWVzID0gdG9Db29raWVWZWN0b3IoW05TSFRU
UENvb2tpZSBjb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzOmh0dHBSZXNwb25zZS5hbGxI
ZWFkZXJGaWVsZHMgZm9yVVJMOnJlc3BvbnNlLnVybCgpXSk7CiAKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJjb21wbGV0ZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBoYXNDb29raWVzPSVkLCBo
YXNEYXRhPSVkKSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICFjb29raWVzLmlzRW1wdHko
KSwgISFkYXRhLmxlbmd0aCk7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0co
ImNvbXBsZXRlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIGhhc0Nvb2tpZXM9JWQsIGhhc0RhdGE9JWQp
IiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIWNvb2tpZXMuaXNFbXB0eSgpLCAhIWRhdGEu
bGVuZ3RoKTsKIAogICAgIGlmIChjb29raWVzLmlzRW1wdHkoKSkgewogICAgICAgICBjb21wbGV0
ZUludGVybmFsKHJlc3BvbnNlLCBkYXRhKTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFNPQXV0
aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlKE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9u
c2UsIE5TRGF0YSAqZAogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbXBsZXRlOiBDb29raWVzIGFy
ZSBzZXQuIik7CisgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJjb21w
bGV0ZTogQ29va2llcyBhcmUgc2V0LiIpOwogCiAgICAgICAgIGNvbXBsZXRlSW50ZXJuYWwocmVz
cG9uc2UsIGRhdGEuZ2V0KCkpOwogICAgIH0pOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGUoTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNw
b25zZSwgTlNEYXRhICpkCiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6cHJlc2VudFZp
ZXdDb250cm9sbGVyKFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHZpZXdDb250cm9sbGVy
LCBVSUNhbGxiYWNrIHVpQ2FsbGJhY2spCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cHJlc2VudFZpZXdDb250cm9sbGVyOiIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVB
U0VfTE9HKCJwcmVzZW50Vmlld0NvbnRyb2xsZXI6Iik7CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6QWN0aXZlKTsKICAgICAvLyBPbmx5IGV4cGVjdCBhdCBtb3N0IG9uZSBVSSBzZXNz
aW9uIGZvciB0aGUgd2hvbGUgYXV0aG9yaXphdGlvbiBzZXNzaW9uLgpAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6cHJlc2VudFZpZXdDb250cm9sbGVyKFNP
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwcmVzZW50Vmlld0NvbnRyb2xsZXI6IENhbGxpbmcg
YmVnaW5TaGVldCBvbiAlcCBmb3Igc2hlZXQgJXAuIiwgcHJlc2VudGluZ1dpbmRvdywgbV9zaGVl
dFdpbmRvdy5nZXQoKSk7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coInBy
ZXNlbnRWaWV3Q29udHJvbGxlcjogQ2FsbGluZyBiZWdpblNoZWV0IG9uICVwIGZvciBzaGVldCAl
cC4iLCBwcmVzZW50aW5nV2luZG93LCBtX3NoZWV0V2luZG93LmdldCgpKTsKICAgICBbcHJlc2Vu
dGluZ1dpbmRvdyBiZWdpblNoZWV0Om1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsKICNlbGlmIFBMQVRGT1JNKElPUykKICAgICBVSVZpZXdDb250cm9sbGVyICpwcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIgPSBtX3BhZ2UtPnVpQ2xpZW50KCkucHJlc2VudGluZ1ZpZXdD
b250cm9sbGVyKCk7CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNz
aW9uOjpwcmVzZW50Vmlld0NvbnRyb2xsZXIoU09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIK
IAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjoiKTsK
KyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9s
bGVyOiIpOwogCiAgICAgQVNTRVJUKG1fdmlld0NvbnRyb2xsZXIpOwogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTMwMywxMyArMzAzLDEzIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlz
bWlzc1ZpZXdDb250cm9sbGVyKCkKICAgICBpZiAobV9wYWdlICYmIG1fcGFnZS0+cGxhdGZvcm1X
aW5kb3coKSkgewogICAgICAgICBhdXRvICpwcmVzZW50aW5nV2luZG93ID0gbV9wYWdlLT5wbGF0
Zm9ybVdpbmRvdygpOwogICAgICAgICBpZiAocHJlc2VudGluZ1dpbmRvdy5taW5pYXR1cml6ZWQp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJv
bGxlcjogUGFnZSdzIHdpbmRvdyBpcyBtaW5pYXR1cml6ZWQuIFdhaXRpbmcgdG8gZGlzbWlzcyB1
bnRpbCBhY3RpdmUuIik7CisgICAgICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNF
X0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBQYWdlJ3Mgd2luZG93IGlzIG1pbmlhdHVyaXpl
ZC4gV2FpdGluZyB0byBkaXNtaXNzIHVudGlsIGFjdGl2ZS4iKTsKICAgICAgICAgICAgIGlmICht
X3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIpIHsKLSAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFtNaW5p
YXR1cml6ZWRdIEFscmVhZHkgaGFzIGEgZGVtaW5pYXR1cml6ZWQgb2JzZXJ2ZXIgKCVwKS4gSGlk
ZGVuIG9ic2VydmVyIGlzICVwIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9i
c2VydmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmll
d0NvbnRyb2xsZXI6IFtNaW5pYXR1cml6ZWRdIEFscmVhZHkgaGFzIGEgZGVtaW5pYXR1cml6ZWQg
b2JzZXJ2ZXIgKCVwKS4gSGlkZGVuIG9ic2VydmVyIGlzICVwIiwgbV9wcmVzZW50aW5nV2luZG93
RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2Jz
ZXJ2ZXIuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlciA9IFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5T
V2luZG93RGlkRGVtaW5pYXR1cml6ZU5vdGlmaWNhdGlvbiBvYmplY3Q6cHJlc2VudGluZ1dpbmRv
dyBxdWV1ZTpuaWwgdXNpbmdCbG9jazpbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IHRoaXNdIChOU05vdGlmaWNhdGlvbiAqKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBXaW5kb3cgaGFzIGRlbWluaWF0dXJp
emVkLiBDb21wbGV0aW5nIHRoZSBkaXNtaXNzYWwuIik7CisgICAgICAgICAgICAgICAgQVVUSE9S
SVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjogV2luZG93
IGhhcyBkZW1pbmlhdHVyaXplZC4gQ29tcGxldGluZyB0aGUgZGlzbWlzc2FsLiIpOwogICAgICAg
ICAgICAgICAgIGRpc21pc3NWaWV3Q29udHJvbGxlcigpOwogICAgICAgICAgICAgICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9wcmVzZW50
aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyLmdldCgpXTsKICAgICAgICAgICAgICAg
ICBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIgPSBudWxscHRyOwpA
QCAtMzE5LDEzICszMTksMTMgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNz
Vmlld0NvbnRyb2xsZXIoKQogICAgIH0KIAogICAgIGlmIChOU0FwcC5oaWRkZW4pIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBBcHBsaWNh
dGlvbiBpcyBoaWRkZW4uIFdhaXRpbmcgdG8gZGlzbWlzcyB1bnRpbCBhY3RpdmUuIik7CisgICAg
ICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xs
ZXI6IEFwcGxpY2F0aW9uIGlzIGhpZGRlbi4gV2FpdGluZyB0byBkaXNtaXNzIHVudGlsIGFjdGl2
ZS4iKTsKICAgICAgICAgaWYgKG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlcikgewotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBb
SGlkZGVuXSBBbHJlYWR5IGhhcyBhbiBVbmhpZGUgb2JzZXJ2ZXIgKCVwKS4gRGVtaW5pYXR1cml6
ZWQgb2JzZXJ2ZXIgaXMgJXAiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2Jz
ZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7CisgICAg
ICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250
cm9sbGVyOiBbSGlkZGVuXSBBbHJlYWR5IGhhcyBhbiBVbmhpZGUgb2JzZXJ2ZXIgKCVwKS4gRGVt
aW5pYXR1cml6ZWQgb2JzZXJ2ZXIgaXMgJXAiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlh
dHVyaXplT2JzZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9hcHBsaWNhdGlv
bkRpZFVuaGlkZU9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSBhZGRPYnNlcnZlckZvck5hbWU6TlNBcHBsaWNhdGlvbkRpZFVuaGlkZU5vdGlmaWNhdGlvbiBv
YmplY3Q6TlNBcHAgcXVldWU6bmlsIHVzaW5nQmxvY2s6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCB0aGlzXSAoTlNOb3RpZmljYXRpb24gKikgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBBcHBsaWNhdGlvbiBpcyBu
byBsb25nZXIgaGlkZGVuLiBDb21wbGV0aW5nIHRoZSBkaXNtaXNzYWwuIik7CisgICAgICAgICAg
ICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9sbGVy
OiBBcHBsaWNhdGlvbiBpcyBubyBsb25nZXIgaGlkZGVuLiBDb21wbGV0aW5nIHRoZSBkaXNtaXNz
YWwuIik7CiAgICAgICAgICAgICBkaXNtaXNzVmlld0NvbnRyb2xsZXIoKTsKICAgICAgICAgICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9h
cHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgpXTsKICAgICAgICAgICAgIG1fYXBwbGlj
YXRpb25EaWRVbmhpZGVPYnNlcnZlciA9IG51bGxwdHI7CkBAIC0zMzcsMTAgKzMzNywxMCBAQCB2
b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiAgICAg
bV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyID0gbnVsbHB0cjsKIAogICAgIGF1dG8gKnBy
ZXNlbnRpbmdXaW5kb3cgPSBtX3NoZWV0V2luZG93LmdldCgpLnNoZWV0UGFyZW50OwotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJvbGxlcjogQ2FsbGluZyBlbmRT
aGVldCBvbiAlcCBmb3Igc2hlZXQgJXAuIiwgcHJlc2VudGluZ1dpbmRvdywgbV9zaGVldFdpbmRv
dy5nZXQoKSk7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NW
aWV3Q29udHJvbGxlcjogQ2FsbGluZyBlbmRTaGVldCBvbiAlcCBmb3Igc2hlZXQgJXAuIiwgcHJl
c2VudGluZ1dpbmRvdywgbV9zaGVldFdpbmRvdy5nZXQoKSk7CiAgICAgW3ByZXNlbnRpbmdXaW5k
b3cgZW5kU2hlZXQ6bV9zaGVldFdpbmRvdy5nZXQoKV07CiAgICAgbV9zaGVldFdpbmRvdyA9IG51
bGxwdHI7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVy
OiBGaW5pc2hlZCBjYWxsIHdpdGggZGVtaW5pYXR1cml6ZWQgb2JzZXJ2ZXIgKCVwKSBhbmQgSGlk
ZGVuIG9ic2VydmVyICglcCkiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2Jz
ZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7CisgICAg
QVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NWaWV3Q29udHJvbGxlcjog
RmluaXNoZWQgY2FsbCB3aXRoIGRlbWluaWF0dXJpemVkIG9ic2VydmVyICglcCkgYW5kIEhpZGRl
biBvYnNlcnZlciAoJXApIiwgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2Vy
dmVyLmdldCgpLCBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCkpOwogI2VsaWYg
UExBVEZPUk0oSU9TKQogICAgIFtbbV92aWV3Q29udHJvbGxlciBwcmVzZW50aW5nVmlld0NvbnRy
b2xsZXJdIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07
CiAjZW5kaWYKQEAgLTM1MCw2ICszNTAsNiBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246
OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jdW5k
ZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAorI3VuZGVmIEFVVEhPUklaQVRJT05TRVNTSU9OX1JF
TEVBU0VfTE9HCiAKICNlbmRpZiAvLyBIQVZFKEFQUF9TU08pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggYWNmZjkwYzg4ZmRhZTc2
YjI5YzQ3ZWU4MjI2NDM1Y2NjMGNkNmQ0NS4uZDI1OWFiNGQ1N2YyYjc5ZTdkYThkMjUxYjYzYjFl
MjJjMDkyMDYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcApAQCAtNTUsOCArNTUsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChj
aGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBh
Z2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpLCBuYXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICJdIFByb3Zp
c2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fbmF2aWdhdGlvbklELCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRiht
X3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlUHJv
eHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWksIG5hdmlnYXRp
b25JRD0lIiBQUkl1NjQgIl0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX3Bh
Z2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwg
Li4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIs
IHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpLCBuYXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICJd
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9wYWdlLmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fbmF2aWdhdGlvbklELCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBQUk9WSVNJ
T05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFT
RV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQ
YWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiXSBQcm92
aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50
NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX25hdmlnYXRpb25JRCwgIyNfX1ZBX0FSR1NfXykKIAogUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBz
dXNwZW5kZWRQYWdlLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgaXNTZXJ2ZXJSZWRpcmVj
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiB3ZWJzaXRlUG9saWNpZXMpCiAgICAgOiBtX3BhZ2UocGFnZSkKQEAgLTc2LDcg
Kzc2LDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBh
Z2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8KICNlbmRpZgogI2VuZGlmCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25hbFBhZ2VQ
cm94eTogc3VzcGVuZGVkUGFnZT0lcCIsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIFBST1ZJ
U0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFs
UGFnZVByb3h5OiBzdXNwZW5kZWRQYWdlPSVwIiwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKICAg
ICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7CiAgICAgbV9wcm9jZXNz
LT5hZGRQcm92aXNpb25hbFBhZ2VQcm94eSgqdGhpcyk7CkBAIC0xMTgsNyArMTE4LDcgQEAgUHJv
dmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAKIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZToi
KTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3dh
cHBpbmcsICJwcm9jZXNzRGlkVGVybWluYXRlOiIpOwogICAgIG1fcGFnZS5wcm92aXNpb25hbFBy
b2Nlc3NEaWRUZXJtaW5hdGUoKTsKIH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgICAgIAogICAgIEFTU0VSVChtX3Byb2Nlc3Mt
PnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZyk7CiAKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBh
IGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSIpOwogICAgIEFTU0VSVChtX21haW5GcmFtZSk7
CiAgICAgYXV0byBlcnJvciA9IFdlYktpdDo6Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KTsKICAg
ICBlcnJvci5zZXRUeXBlKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlv
bik7CkBAIC0xNjQsMTQgKzE2NCwxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojppbml0
aWFsaXplV2ViUGFnZShSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2VicwogCiB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgImxvYWREYXRhOiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiIpOwogCiAgICAgbV9wYWdlLmxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5h
dmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5h
dmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAogdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNp
dGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGlu
ZywgImxvYWRSZXF1ZXN0OiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9H
KFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiIpOwogCiAgICAgLy8gSWYgdGhpcyBpcyBh
IGNsaWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0
aGUgbmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlz
IGNhc2UsCiAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXBkYXRlIGZyb21JdGVtJ3Mg
cHJvY2Vzc0lkZW50aWZpZXIgYXMgd2Ugd2FudCBmdXR1cmUgbmF2aWdhdGlvbnMgdG8gdGhpcyBC
YWNrRm9yd2FyZCBpdGVtIHRvIGhhcHBlbiBpbiB0aGUKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIFdlYkNvcmU6OlJlcwogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFj
a0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYgaXRlbSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xp
Y2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdv
VG9CYWNrRm9yd2FyZEl0ZW06Iik7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbToiKTsKIAogICAgIGF1dG8g
aXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1TdGF0ZXMo
W3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBpZiAoYXV0
byogYmFja0ZvcndhcmRDYWNoZUVudHJ5ID0gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKSkg
ewpAQCAtMjE0LDcgKzIxNCw3IEBAIGlubGluZSBib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2
YWxpZGF0ZUlucHV0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPCiAKIHZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRp
ZENyZWF0ZU1haW5GcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7
CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
ZGlkQ3JlYXRlTWFpbkZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgp
KTsKICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0gV2ViRnJh
bWVQcm94eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWUKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2
aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFt
ZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKICAgICBB
U1NFUlQobV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxM
b2FkVVJMID0gdXJsOwogCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0
LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0Vf
TE9HX0VSUk9SKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKCFt
X3Byb3Zpc2lvbmFsTG9hZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwg
PSB7IH07CiAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSQogICAg
IGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENv
bW1pdExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7
CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
ZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2
NCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKICAgICBtX3Byb2Nlc3MtPnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKIApAQCAtNDIxLDE0ICs0MjEsMTQgQEAgdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lKGNvbnN0
IFdlYkNvcmU6OkNvbnQKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZUNv
bnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb246IGNvbnRleHRJRD0ldSIs
IGNvbnRleHRJRCk7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N3YXBwaW5nLCAiZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbjogY29udGV4dElEPSV1IiwgY29udGV4dElEKTsKICAgICBtX2NvbnRleHRJREZvclZp
c2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJvY2VzcyA9IGNvbnRleHRJRDsKIH0KIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZUNv
bnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29u
dGV4dElEIGNvbnRleHRJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgImRpZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFn
YXRpb246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7CisgICAgUFJPVklTSU9OQUxQQUdFUFJP
WFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjogY29udGV4dElEPSV1IiwgY29udGV4dElEKTsK
ICAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcyA9IGNv
bnRleHRJRDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDk4MzVhNjQ1NzA0YTVm
OTZjMjM0Y2I5MDMzNGZiODQ5ODUxOGMwYWEuLjE0OTVkODljMjI0M2NiNDhiMDUzYmJmNTk5NTU0
YzkxYzk0N2U4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5Lm1tCkBAIC01MDQsNyArNTA0LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpoYXNWaXNpYmxlQ29udGVudCgpIGNvbnN0CiAKIGJvb2wgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7Cisg
ICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpOwogfQogCiBDQUxheWVyICpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojps
YXllcldpdGhJREZvclRlc3RpbmcodWludDY0X3QgbGF5ZXJJRCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGFmZDc2MjdjOTAwN2M3NDRkNjI1MDA3
ZTE1MmE2ZjYxYWMxZmJkZDIuLjkzMDFlZTA0NWE3NzFmMmIxN2FjMDY1YWZjZTNkNmJlNTllNzE3
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzE1LDgg
KzMxNSw4IEBACiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHVybCkgTUVTU0FH
RV9DSEVDS19CQVNFKGNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9j
ZXNzKHByb2Nlc3MsIHVybCksIHByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKICNkZWZpbmUgTUVTU0FH
RV9DSEVDS19DT01QTEVUSU9OKHByb2Nlc3MsIGFzc2VydGlvbiwgY29tcGxldGlvbikgTUVTU0FH
RV9DSEVDS19DT01QTEVUSU9OX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzLT5jb25uZWN0aW9uKCks
IGNvbXBsZXRpb24pCiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5u
ZWwsICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAi
LCBQSUQ9JWldIFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
Y2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBh
Z2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX2lk
ZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIlcCAt
IFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWld
IFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19W
QV9BUkdTX18pCisjZGVmaW5lIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVs
LCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlE
PSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laV0gV2ViUGFnZVByb3h5
OjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKIAog
Ly8gUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHdoZWVsIGV2ZW50cyB3ZSBjYW4gaG9sZCBpbiB0
aGUgcXVldWUgYmVmb3JlIHdlIHN0YXJ0IHB1c2hpbmcgdGhlbSBwcmVlbXB0aXZlbHkuCiBzdGF0
aWMgY29uc3QgdW5zaWduZWQgd2hlZWxFdmVudFF1ZXVlU2l6ZVRocmVzaG9sZCA9IDEwOwpAQCAt
NTEwLDcgKzUxMCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgLCBtX2xpbWl0c05h
dmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9uLT5saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3RvcjoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImNvbnN0cnVjdG9yOiIpOwogCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRp
b24tPmRyYXdzQmFja2dyb3VuZCgpKQogICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9IENvbG9y
KENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIFJlZgogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlc3RydWN0b3I6Iik7CisgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkZXN0cnVjdG9yOiIpOwogCiAgICAgQVNTRVJU
KG1fcHJvY2Vzcy0+d2ViUGFnZShtX2lkZW50aWZpZXIpICE9IHRoaXMpOwogI2lmIEFTU0VSVF9F
TkFCTEVECkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQcm8KICAgICBB
U1NFUlQoIW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaGFzUnVubmluZ1Byb2Nlc3MoKSk7CiAK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiIpOwor
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibGF1bmNoUHJvY2VzczoiKTsK
IAogICAgIC8vIEluIGNhc2Ugd2UgYXJlIGN1cnJlbnRseSBjb25uZWN0ZWQgdG8gdGhlIGR1bW15
IHByb2Nlc3MsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBpbnNwZWN0b3IgcHJveHkKICAgICAv
LyBkaXNjb25uZWN0cyBmcm9tIHRoZSBkdW1teSBwcm9jZXNzIGZpcnN0LgpAQCAtODY1LDEyICs4
NjUsMTIgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUo
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKCFoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBh
Z2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlk
ICVpIGJlY2F1c2UgaGFzIG5vdCBjb21taXR0ZWQgYW55IGxvYWQgeWV0IiwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5k
aW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgYmVjYXVzZSBoYXMgbm90IGNvbW1p
dHRlZCBhbnkgbG9hZCB5ZXQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGlzUGFnZU9wZW5lZEJ5RE9NU2hv
d2luZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qg
c3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgaXQgaXMg
c2hvd2luZyB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dh
cHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJy
ZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgaXQgaXMgc2hvd2luZyB0aGUgaW5p
dGlhbCBlbXB0eSBkb2N1bWVudCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTg3OSwyNSArODc5LDI1IEBAIGJvb2wg
V2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlv
biYgbmF2aWdhdGlvbiwgT3B0CiAgICAgLy8gSWYgdGhlIHNvdXJjZSBhbmQgdGhlIGRlc3RpbmF0
aW9uIGJhY2sgLyBmb3J3YXJkIGxpc3QgaXRlbXMgYXJlIHRoZSBzYW1lLCB0aGVuIHRoaXMgaXMg
YSBjbGllbnQtc2lkZSByZWRpcmVjdC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHRoZXJlIGlzIG5v
IG5lZWQgdG8gc3VzcGVuZCB0aGUgcHJldmlvdXMgcGFnZSBhcyB0aGVyZSB3aWxsIGJlIG5vIHdh
eSB0byBnZXQgYmFjayB0byBpdC4KICAgICBpZiAoZnJvbUl0ZW0gJiYgZnJvbUl0ZW0gPT0gbV9i
YWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBO
b3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgdGhp
cyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywg
InN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFn
ZSBmb3IgcHJvY2VzcyBwaWQgJWkgYmVjYXVzZSB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJl
Y3QiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgaWYgKGZyb21JdGVtICYmIGZyb21JdGVtLT51cmwoKSAhPSBwYWdl
TG9hZFN0YXRlKCkudXJsKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3Vz
cGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgZnJvbUl0ZW0n
cyBVUkwgZG9lcyBub3QgbWF0Y2ggdGhlIHBhZ2UgVVJMLiIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9j
ZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGlu
ZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1c2UgZnJvbUl0ZW0ncyBVUkwg
ZG9lcyBub3QgbWF0Y2ggdGhlIHBhZ2UgVVJMLiIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBib29sIG5lZWRzU3Vz
cGVuZGVkUGFnZVRvUHJldmVudEZsYXNoaW5nID0gc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJz
dExheWVyRmx1c2ggPT0gU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2g6Olll
czsKICAgICBpZiAoIW5lZWRzU3VzcGVuZGVkUGFnZVRvUHJldmVudEZsYXNoaW5nICYmICghZnJv
bUl0ZW0gfHwgIXNob3VsZFVzZUJhY2tGb3J3YXJkQ2FjaGUoKSkpIHsKICAgICAgICAgaWYgKCFm
cm9tSXRlbSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVu
dCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAg
ICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRD
dXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJv
Y2VzcyBwaWQgJWkgdGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3Vy
cmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nl
c3MgcGlkICVpIHRoZSBiYWNrIC8gZm9yd2FyZCBjYWNoZSBpcyBkaXNhYmxlZCIsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90
IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGUgYmFjayAvIGZv
cndhcmQgY2FjaGUgaXMgZGlzYWJsZWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNw
ZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dh
cHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNwZW5kaW5nIGN1cnJlbnQg
cGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkp
OwogICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VVbmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5
PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBzaG91bGREZWxheUNs
b3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCk7CiAKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAi
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHBy
b2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmlu
ZygpIDogMCk7CkBAIC05MjcsNyArOTI3LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZFVz
ZUJhY2tGb3J3YXJkQ2FjaGUoKSBjb25zdAogdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zp
c2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHByb3Zpc2lv
bmFsUGFnZSkKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1Byb3Zpc2lvbmFsUGFnZTogbmV3V2ViUGFnZUlEPSUi
IFBSSXU2NCwgcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInN3YXBUb1Byb3Zpc2lvbmFsUGFnZTog
bmV3V2ViUGFnZUlEPSUiIFBSSXU2NCwgcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKS50b1VJ
bnQ2NCgpKTsKIAogICAgIG1fcHJvY2VzcyA9IHByb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpOwog
ICAgIG1fd2ViUGFnZUlEID0gcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKTsKQEAgLTk0MSw4
ICs5NDEsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6
dW5pcXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gcAogI2VuZGlmCiAjZW5kaWYKIAorICAg
IC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBkaXNhYmxlIHRoaXMgbG9nZ2luZyBpbiBl
cGhlbWVyYWwgc2Vzc2lvbnM/CiAgICAgaWYgKG1fbG9nZ2VyKQotICAgICAgICBtX2xvZ2dlci0+
c2V0RW5hYmxlZCh0aGlzLCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSk7CisgICAgICAgIG1f
bG9nZ2VyLT5zZXRFbmFibGVkKHRoaXMsICFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKTsKIAog
ICAgIG1faGFzUnVubmluZ1Byb2Nlc3MgPSB0cnVlOwogCkBAIC0xMDM1LDEwICsxMDM2LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9y
UmVsb2FkOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibGF1bmNo
UHJvY2Vzc0ZvclJlbG9hZDoiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBh
Z2UgaXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5n
LCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtMTA0Nyw3ICsxMDQ4LDcgQEAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKICAg
ICBsYXVuY2hQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCBQcm9jZXNzTGF1bmNoUmVhc29uOjpD
cmFzaCk7CiAKICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JS
ZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50
IGl0ZW0gdG8gcmVsb2FkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
MTEwOSw3ICsxMTEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9p
c0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiY2xvc2U6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcs
ICJjbG9zZToiKTsKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwogCkBAIC0xMTg4LDcgKzExODks
NyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3MsICJ0cnlDbG9zZToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2VzcywgInRyeUNsb3NlOiIpOwogCiAgICAgLy8gQ2xvc2Ugd2l0aG91dCBkZWxheSBpZiB0
aGUgcHJvY2VzcyBhbGxvd3MgaXQuIE91ciBnb2FsIGlzIHRvIHRlcm1pbmF0ZQogICAgIC8vIHRo
ZSBwcm9jZXNzLCBzbyB3ZSBjaGVjayBhIHBlci1wcm9jZXNzIHN0YXR1cyBiaXQuCkBAIC0xMjEz
LDcgKzEyMTQsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6dHJ5Q2xvc2VUaW1lZE91dCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChQcm9jZXNzLCAidHJ5Q2xvc2VUaW1lZE91dDogVGltZWQgb3V0IHdhaXRpbmcgZm9y
IHRoZSBwcm9jZXNzIHRvIHJlc3BvbmQgdG8gdGhlIFdlYlBhZ2U6OlRyeUNsb3NlIElQQywgY2xv
c2luZyB0aGUgcGFnZSBub3ciKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1Io
UHJvY2VzcywgInRyeUNsb3NlVGltZWRPdXQ6IFRpbWVkIG91dCB3YWl0aW5nIGZvciB0aGUgcHJv
Y2VzcyB0byByZXNwb25kIHRvIHRoZSBXZWJQYWdlOjpUcnlDbG9zZSBJUEMsIGNsb3NpbmcgdGhl
IHBhZ2Ugbm93Iik7CiAgICAgY2xvc2VQYWdlKCk7CiB9CiAKQEAgLTEzMTAsNyArMTMxMSw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZFJlcXVlc3Q6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2Fk
UmVxdWVzdDoiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1
bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3QudXJsKCkgfSwgUHJvY2Vzc0xh
dW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwpAQCAtMTMzMiw3ICsxMzMzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXMKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCi0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNo
YXJlZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRSZXF1
ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQ6Iik7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9w
YWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTEzNjgsMTAgKzEzNjksMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZToiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRGaWxlOiIpOwogCiAgICAgaWYgKG1f
aXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZEZpbGU6IHBhZ2UgaXMgY2xvc2VkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhMb2FkaW5nLCAibG9hZEZpbGU6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMTM4MCw3ICsxMzgxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcs
IGNvbnMKIAogICAgIFVSTCBmaWxlVVJMID0gVVJMKFVSTCgpLCBmaWxlVVJMU3RyaW5nKTsKICAg
ICBpZiAoIWZpbGVVUkwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWwiKTsKKyAgICAgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3Qg
bG9jYWwiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMzkwLDcgKzEz
OTEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAgICByZXNv
dXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcp
OwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNv
dXJjZSBVUkwgaXMgbm90IGxvY2FsIik7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0MjQsNyAr
MTQyNSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiIpOworICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZERhdGE6Iik7CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgaWYgKE1JTUVUeXBlID09ICJ0ZXh0L2h0bWwiX3MgJiYgIWlzRnVsbFdl
YkJyb3dzZXIoKSkKQEAgLTE0MzIsNyArMTQzMyw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBj
CiAjZW5kaWYKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3Nl
ZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0NTAsNyArMTQ1MSw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb24iKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb24iKTsKIAogICAgIEFTU0VSVCghbV9p
c0Nsb3NlZCk7CiAKQEAgLTE0NzgsNyArMTQ3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywK
IAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBzaW11bGF0ZWRSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgc2ltdWxhdGVkUmVzcG9uc2UsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkU2ltdWxhdGVkUmVxdWVzdDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiIpOwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgIGlmIChzaW11bGF0ZWRSZXNwb25zZS5taW1lVHlwZSgpID09ICJ0ZXh0L2h0
bWwiX3MgJiYgIWlzRnVsbFdlYkJyb3dzZXIoKSkKQEAgLTE0ODYsNyArMTQ4Nyw3IEBAIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1CiAjZW5kaWYKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0
OiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiBwYWdlIGlzIGNsb3NlZCIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1MzIsMTMgKzE1MzMsMTMgQEAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXUKIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0cmluZyYgZW5jb2Rpbmcs
IGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRBbHRlcm5hdGVIVE1MIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcs
ICJsb2FkQWx0ZXJuYXRlSFRNTCIpOwogCiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGlu
IHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBu
b3QgYXR0ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9h
ZCBhcyB0aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKICAg
ICAvLyBoYW5kbGVkIHByb3Blcmx5LgogICAgIGlmIChtX2lzQ2xvc2VkIHx8IG1faXNMb2FkaW5n
QWx0ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2Ug
aXMgY2xvc2VkIChvciBvdGhlcikiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTc1LDEwICsxNTc2LDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGh0bWxEYXRhLCBjb25zdCBTCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURh
dGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YToi
KTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRXZWJBcmNoaXZl
RGF0YToiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsK
KyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2
ZURhdGE6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2
MDIsMTAgKzE2MDMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShB
UEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKIAogdm9pZCBXZWJQYWdl
UHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiIpOwogCiAgICAgaWYg
KG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiIpOwor
ICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgIm5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDoiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTYyMSwxMCArMTYyMiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAic3RvcExvYWRpbmc6Iik7CisgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJzdG9wTG9hZGluZzoiKTsKIAogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJu
YXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQiKTsK
KyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERG
TGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTYzOCw3ICsxNjM5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0
b3BMb2FkaW5nKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxv
YWQoT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWxvYWQ6Iik7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJyZWxvYWQ6Iik7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTcxOSwxMSArMTcyMCwxMSBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRl
bSwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06Iik7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiIpOwogICAgIExPRyhM
b2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGdvVG9CYWNrRm9yd2FyZEl0ZW0gdG8gaXRlbSBVUkwg
JXMiLCB0aGlzLCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tG
b3J3YXJkSXRlbTogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlIGlzIGNsb3NlZCIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE3NDksMTAgKzE3NTAsMTAgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVt
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVT
Y3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiIpOwogCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQiKTsKKyAgICAg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9z
aXRpb246IHBhZ2UgaXMgbm90IHZhbGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTIwMjEsNyArMjAyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0eVN0YXRl
KE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkCiAgICAgICAgIGlmIChp
c05vd1Zpc2libGUpCiAgICAgICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSk7CiAgICAgICAgIGlmICh3YXNWaXNpYmxlICE9IGlzTm93VmlzaWJsZSkK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoVmlld1N0YXRlLCAidXBkYXRlQWN0
aXZpdHlTdGF0ZTogdmlldyB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZWQgJWQgLT4gJWQiLCB3YXNW
aXNpYmxlLCBpc05vd1Zpc2libGUpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKFZpZXdTdGF0ZSwgInVwZGF0ZUFjdGl2aXR5U3RhdGU6IHZpZXcgdmlzaWJpbGl0eSBzdGF0
ZSBjaGFuZ2VkICVkIC0+ICVkIiwgd2FzVmlzaWJsZSwgaXNOb3dWaXNpYmxlKTsKICAgICB9CiAg
ICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVk
ICYmIHBhZ2VDbGllbnQoKS5pc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCgpKQogICAgICAgICBtX2Fj
dGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpOwpAQCAt
MjE4MSwxMSArMjE4Miw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3Rh
dGVDaGFuZ2UoKQogI2VuZGlmCiB9CiAKLWJvb2wgV2ViUGFnZVByb3h5Ojppc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSBjb25zdAotewotICAgIHJldHVybiBzZXNzaW9uSUQoKS5pc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxl
U3RhdGUoKQogewogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9IG1fcHJlZmVy
ZW5jZXMtPnBhZ2VWaXNpYmlsaXR5QmFzZWRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCk7CkBA
IC0yMjA0LDIzICsyMjAwLDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0
YXRlKCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChpc1ZpZXdWaXNpYmxlKCkp
IHsKICAgICAgICAgaWYgKCFtX2lzVmlzaWJsZUFjdGl2aXR5IHx8ICFtX2lzVmlzaWJsZUFjdGl2
aXR5LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5n
IGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyB2aXNpYmxlIik7Cisg
ICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1
cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3Nl
cnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyB2aXNpYmxlIik7CiAgICAgICAgICAgICBtX2lzVmlz
aWJsZUFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHko
IlZpZXcgaXMgdmlzaWJsZSJfcykubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKG1faXNWaXNpYmxlQWN0aXZpdHkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2Vz
cyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlz
IG5vIGxvbmdlciB2aXNpYmxlIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxl
YXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIG5vIGxvbmdl
ciB2aXNpYmxlIik7CiAgICAgICAgIG1faXNWaXNpYmxlQWN0aXZpdHkgPSBudWxscHRyOwogICAg
IH0KIAogICAgIGJvb2wgaXNBdWRpYmxlID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2
aXR5U3RhdGU6OklzQXVkaWJsZSk7CiAgICAgaWYgKGlzQXVkaWJsZSkgewogICAgICAgICBpZiAo
IW1faXNBdWRpYmxlQWN0aXZpdHkgfHwgIW1faXNBdWRpYmxlQWN0aXZpdHktPmlzVmFsaWQoKSkg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwg
InVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIHdlIGFyZSBwbGF5aW5nIGF1ZGlvIik7CisgICAgICAgICAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0
YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3
ZSBhcmUgcGxheWluZyBhdWRpbyIpOwogICAgICAgICAgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIHBsYXlp
bmcgYXVkaW8iX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICB9CiAgICAgICAgIG1fYXVk
aWJsZUFjdGl2aXR5VGltZXIuc3RvcCgpOwogICAgIH0gZWxzZSBpZiAobV9pc0F1ZGlibGVBY3Rp
dml0eSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9u
LCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIHdpbGwgcmVsZWFzZSBhIGZvcmVncm91
bmQgYXNzZXJ0aW9uIGluICVnIHNlY29uZHMgYmVjYXVzZSB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlp
bmcgYXVkaW8iLCBhdWRpYmxlQWN0aXZpdHlDbGVhckRlbGF5LnNlY29uZHMoKSk7CisgICAgICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90
dGxlU3RhdGU6IFVJUHJvY2VzcyB3aWxsIHJlbGVhc2UgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBp
biAlZyBzZWNvbmRzIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5nIGF1ZGlvIiwgYXVk
aWJsZUFjdGl2aXR5Q2xlYXJEZWxheS5zZWNvbmRzKCkpOwogICAgICAgICBpZiAoIW1fYXVkaWJs
ZUFjdGl2aXR5VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgICAgIG1fYXVkaWJsZUFjdGl2aXR5
VGltZXIuc3RhcnRPbmVTaG90KGF1ZGlibGVBY3Rpdml0eUNsZWFyRGVsYXkpOwogICAgIH0KQEAg
LTIyMjgsMTEgKzIyMjQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3Rh
dGUoKQogICAgIGJvb2wgaXNDYXB0dXJpbmdNZWRpYSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlu
cyhBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhKTsKICAgICBpZiAoaXNDYXB0dXJpbmdN
ZWRpYSkgewogICAgICAgICBpZiAoIW1faXNDYXB0dXJpbmdBY3Rpdml0eSB8fCAhbV9pc0NhcHR1
cmluZ0FjdGl2aXR5LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3Mg
aXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBtZWRpYSBjYXB0dXJlIGlz
IGFjdGl2ZSIpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZv
cmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBhY3RpdmUiKTsKICAg
ICAgICAgICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
Zm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIGNhcHR1cmluZyBtZWRpYSJfcykubW92ZVRvVW5p
cXVlUHRyKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1faXNDYXB0dXJpbmdBY3Rpdml0
eSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAi
dXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQg
YXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBubyBsb25nZXIgYWN0aXZlIik7Cisg
ICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0
ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2Vy
dGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgbm8gbG9uZ2VyIGFjdGl2ZSIpOwogICAgICAg
ICBtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgpAQCAtMjI0
MSw3ICsyMjM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxl
QWN0aXZpdHkoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNp
b24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdy
b3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcgYXVkaW8iKTsK
KyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVU
aHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRp
b24gYmVjYXVzZSB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcgYXVkaW8iKTsKICAgICBtX2lzQXVk
aWJsZUFjdGl2aXR5ID0gbnVsbHB0cjsKIH0KICNlbmRpZgpAQCAtMjUyNCw3ICsyNTIwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZVJlbmRlcmluZ0FmdGVyQ29tbWl0dGluZ0xvYWQo
KQogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtEdWVUb0xhY2tPZlJlbmRl
cmluZ1VwZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1faGFzVXBkYXRlZFJlbmRlcmluZ0FmdGVyRGlk
Q29tbWl0TG9hZCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAic3RvcE1h
a2luZ1ZpZXdCbGFua0R1ZVRvTGFja09mUmVuZGVyaW5nVXBkYXRlOiIpOworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAic3RvcE1ha2luZ1ZpZXdCbGFua0R1ZVRvTGFja09m
UmVuZGVyaW5nVXBkYXRlOiIpOwogICAgIHBhZ2VDbGllbnQoKS5tYWtlVmlld0JsYW5rKGZhbHNl
KTsKIH0KIApAQCAtMjU0MCw3ICsyNTM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VWaWV3
QmxhbmtJZlVucGFpbnRlZFNpbmNlTGFzdExvYWRDb21taXQoKQogICAgICAgICBzdGF0aWMgYm9v
bCBzaG91bGRNYWtlVmlld0JsYW5rID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICBpZiAoc2hvdWxk
TWFrZVZpZXdCbGFuaykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzLCAibWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdDogTWFraW5n
IHRoZSB2aWV3IGJsYW5rIGJlY2F1c2Ugb2YgYSBKUyBwcm9tcHQgYmVmb3JlIHRoZSBmaXJzdCBw
YWludCBmb3IgaXRzIHBhZ2UiKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzLCAibWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdDog
TWFraW5nIHRoZSB2aWV3IGJsYW5rIGJlY2F1c2Ugb2YgYSBKUyBwcm9tcHQgYmVmb3JlIHRoZSBm
aXJzdCBwYWludCBmb3IgaXRzIHBhZ2UiKTsKICAgICAgICAgICAgIHBhZ2VDbGllbnQoKS5tYWtl
Vmlld0JsYW5rKHRydWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzM0Nyw3ICszMzQzLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0
aW9uQWN0aW9uLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9s
aWNpZXM+JiYgcG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVjZWl2ZWROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb246IGZyYW1lSUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUsIHBvbGljeUFj
dGlvbj0ldSIsIGZyYW1lLmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uKTsKKyAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInJlY2VpdmVkTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1LCBwb2xpY3lBY3Rpb249
JXUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbik7CiAKICAgICBSZWY8
V2Vic2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5j
b3B5UmVmKCk7CiAgICAgaWYgKHBvbGljaWVzKSB7CkBAIC0zNDA5LDEwICszNDA1LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIGJvb2wgc2hvdWxkUHJvY2Vzc1N3YXAgPSBw
cm9jZXNzRm9yTmF2aWdhdGlvbi5wdHIoKSAhPSBzb3VyY2VQcm9jZXNzLnB0cigpOwogICAgICAg
ICBpZiAoc2hvdWxkUHJvY2Vzc1N3YXApIHsKICAgICAgICAgICAgIHBvbGljeUFjdGlvbiA9IFBv
bGljeUFjdGlvbjo6U3RvcEFsbExvYWRzOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLCBz
d2FwcGluZyBwcm9jZXNzICVpIHdpdGggcHJvY2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29u
PSUiIFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCBwcm9jZXNzRm9yTmF2
aWdhdGlvbi0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sIHN3YXBwaW5nIHByb2Nlc3MgJWkgd2l0aCBwcm9j
ZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19TVFJJTkcsIHByb2Nl
c3NJZGVudGlmaWVyKCksIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLT5wcm9jZXNzSWRlbnRpZmllcigp
LCByZWFzb24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5n
LCAiKFByb2Nlc3NTd2FwcGluZykgU3dpdGNoaW5nIGZyb20gcHJvY2VzcyAlaSB0byBuZXcgcHJv
Y2VzcyAoJWkpIGZvciBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcyciLCBwcm9jZXNzSWRlbnRp
ZmllcigpLCBwcm9jZXNzRm9yTmF2aWdhdGlvbi0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24tPmxvZ2dpbmdTdHJpbmcoKSk7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBrZWVwIHVzaW5nIHByb2Nl
c3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNvbj0lIiBQVUJMSUNfTE9HX1NUUklORywgcHJvY2Vz
c0lkZW50aWZpZXIoKSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246IGtlZXAgdXNpbmcgcHJvY2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29u
PSUiIFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgp
LmRhdGEoKSk7CiAKICAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBv
cHRpb25hbEhhbmRsZTsKICAgICAgICAgaWYgKHNob3VsZFByb2Nlc3NTd2FwKSB7CkBAIC0zNDkx
LDcgKzM0ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQ
b2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgY29uc3Qg
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2Fj
eVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJ
bnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29yZTo6TW91c2VF
dmVudFBvbGljeSBtb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRD0laSIsIG1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRD0l
aSIsIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAK
ICAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nl
c3MgPSBtX21haW5GcmFtZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX21haW5GcmFtZS0+ZnJhbWVJ
RCgpKSA6IHN0ZDo6bnVsbG9wdDsKIApAQCAtMzUyOSwxMiArMzUyNSwxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZUluZm9EYXRhJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1
c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IG5ld1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xp
Y2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5h
dmlnYXRpb25Jbk5ld1Byb2Nlc3M6IG5ld1Byb2Nlc3NQSUQ9JWksIGhhc1N1c3BlbmRlZFBhZ2U9
JWkiLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2UpOwor
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9u
SW5OZXdQcm9jZXNzOiBuZXdQcm9jZXNzUElEPSVpLCBoYXNTdXNwZW5kZWRQYWdlPSVpIiwgbmV3
UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlKTsKICAgICBMT0co
TG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3
IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dn
aW5nU3RyaW5nKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFuZXdQcm9jZXNzLT5pc0luUHJvY2Vz
c0NhY2hlKCkpOwogCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzOiBUaGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyBwcm92aXNpb25hbCBsb2FkLCBj
YW5jZWxsaW5nIGl0IChwcm92aXNvbmFsTmF2aWdhdGlvbklEPSVsbHUsIG5hdmlnYXRpb25JRD0l
bGx1KSIsIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5uYXZp
Z2F0aW9uSUQoKSk7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dh
cHBpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IFRoZXJlIGlzIGFscmVhZHkg
YSBwZW5kaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGNhbmNlbGxpbmcgaXQgKHByb3Zpc29uYWxOYXZp
Z2F0aW9uSUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUpIiwgbV9wcm92aXNpb25hbFBhZ2UtPm5h
dmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpKTsKICAgICAgICAgaWYgKG1f
cHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSAhPSBuYXZpZ2F0aW9uLm5hdmlnYXRpb25J
RCgpKQogICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNhbmNlbCgpOwogICAgICAgICBt
X3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CkBAIC0zNjY3LDcgKzM2NjMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJzdXNwZW5kOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAic3Vz
cGVuZDoiKTsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1N1c3BlbmRlZCkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIApAQCAtMzY3Nyw3ICsz
NjczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3Vt
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3VtZToiKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInJlc3VtZToiKTsKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9pc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTM3MjMsNyArMzcxOSw3IEBAIFNlc3Npb25TdGF0ZSBX
ZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3
YXJkTGlzdEl0CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVzdG9y
ZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0
ZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNl
c3Npb25TdGF0ZToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgInJl
c3RvcmVGcm9tU2Vzc2lvblN0YXRlOiIpOwogCiAgICAgbV9zZXNzaW9uUmVzdG9yYXRpb25SZW5k
ZXJUcmVlU2l6ZSA9IDA7CiAgICAgbV9oaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCA9IGZhbHNl
OwpAQCAtNDU0MSw3ICs0NTM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgogICAgICAgICBu
YXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwog
CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBw
aWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2
NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcmFtZUlELnRvVUludDY0KCks
IG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6
IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIHRyYW5z
YWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAgICAgbV9wYWdlTG9hZFN0
YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24pOwpAQCAtNDU3OCw3ICs0NTc0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEV4cGxpY2l0T3BlbkZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBVUkwmJiB1cmwsIFMKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vz
cywgZnJhbWUpOwogCiAgICAgaWYgKCFjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRPclByZXZp
b3VzV2ViUHJvY2VzcyhtX3Byb2Nlc3MsIHVybCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3JpbmcgV2ViUGFnZVByb3h5OjpEaWRFeHBsaWNp
dE9wZW5Gb3JGcmFtZSgpIElQQyBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgYmVjYXVzZSB0
aGUgZmlsZSBVUkwgaXMgb3V0c2lkZSB0aGUgc2FuZGJveCIpOworICAgICAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIklnbm9yaW5nIFdlYlBhZ2VQcm94eTo6RGlk
RXhwbGljaXRPcGVuRm9yRnJhbWUoKSBJUEMgZnJvbSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGJl
Y2F1c2UgdGhlIGZpbGUgVVJMIGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDYwMyw3ICs0NTk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRl
bnQKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBS
SXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCwgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9V
SW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50
KCkpOwogCkBAIC00NjMyLDcgKzQ2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBXZWJD
b3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogZnJhbWVJRD0lIiBQ
Ukl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1lSUQ9JSIg
UFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDY0NSw3ICs0NjQxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY28KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGly
ZWN0Rm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogZnJh
bWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFt
ZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ2OTMsNyArNDY4OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxD
b250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1
NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
IHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQgIiwgZG9tYWluPSVzLCBjb2RlPSVkIiwg
ZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3Ms
ICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGRv
bWFpbj0lcywgY29kZT0lZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRm
OCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDc2NCw3ICs0NzYwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgRnJhbWVJbmZvRGF0YSYKIHsKICAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdl
UHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIg
UFJJdTY0LCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBMT0co
QmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBBZnRlciBsb2FkIGNvbW1pdCwgYmFjay9mb3J3
YXJkIGxpc3QgaXMgbm93OiVzIiwgbV9iYWNrRm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJpbmcoKSk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZy
YW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogZnJhbWVJ
RD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00ODg4LDcgKzQ4ODQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBGcmFtZUluZm9EYXRhJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUi
IFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBS
SXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ5MTYsNyArNDkxMiw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkRmluaXNo
TG9hZEZvckZyYW1lIC0gV2ViUGFnZVByb3h5ICVwIHdpdGggbmF2aWdhdGlvbklEICUiIFBSSXU2
NCAiIGRpZEZpbmlzaExvYWQiLCB0aGlzLCBuYXZpZ2F0aW9uSUQpOwotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQ
Ukl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFt
ZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFn
ZUNsaWVudCgpKTsKIApAQCAtNDk2Nyw3ICs0OTYzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0
YSYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2
NCAiLCBkb21haW49JXMsIGNvZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFp
bigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9
JSIgUFJJdTY0ICIsIGRvbWFpbj0lcywgY29kZT0lZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTAxMiw3ICs1
MDA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLCBVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBh
Z2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUxOTgsNyAr
NTE5NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2Vu
ZGVyPiYmIHNlbmRlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25J
RD0lbGx1IiwgZnJhbWUuZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CisgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1IiwgZnJhbWUuZnJhbWVJ
RCgpLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAKICAgICBMT0coTG9hZGluZywgIldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAtIE9yaWdpbmFsIFVSTCAl
cywgY3VycmVudCB0YXJnZXQgVVJMICVzIiwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
QEAgLTUyMTQsNyArNTIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgIG1f
cGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uKTsKIAogICAg
IGlmICghY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJv
Y2VzcywgcmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJj
ZSBiZWNhdXNlIGl0IGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKKyAgICAgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQg
dGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgb3V0c2lkZSB0aGUgc2FuZGJveCIpOwog
ICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIo
KSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwg
MCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC01MjgwLDcgKzUyNzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS5kaWRIYW5kbGVDb250ZW50Rmls
dGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFp
biByZXNvdXJjZSBiZWNhdXNlIGl0IHdhcyBoYW5kbGVkIGJ5IGNvbnRlbnQgZmlsdGVyIik7Cisg
ICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiSWdub3Jpbmcg
cmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IHdhcyBoYW5kbGVk
IGJ5IGNvbnRlbnQgZmlsdGVyIik7CiAgICAgICAgIHJldHVybiByZWNlaXZlZFBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihu
YXZpZ2F0aW9uSUQpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3Zl
KHNlbmRlcikpOwogICAgIH0KICNlbmRpZgpAQCAtNTI5NSw3ICs1MjkxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXMKICNlbmRpZgogCiAgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJh
bWUuc2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVy
KSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9iamVj
dCA9IHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMq
IHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dh
cm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kRG9t
YWluKSBtdXRhYmxlIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogbGlzdGVuZXIgY2FsbGVkOiBmcmFtZUlE
PSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1LCBwb2xpY3lBY3Rpb249JXUsIHNhZmVCcm93c2luZ1dh
cm5pbmc9JWQsIGlzQXBwQm91bmREb21haW49JWQiLCBmcmFtZS0+ZnJhbWVJRCgpLnRvVUludDY0
KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25l
ZClwb2xpY3lBY3Rpb24sICEhc2FmZUJyb3dzaW5nV2FybmluZywgISFpc0FwcEJvdW5kRG9tYWlu
KTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBsaXN0ZW5lciBjYWxsZWQ6IGZyYW1lSUQ9JWxsdSwgbmF2
aWdhdGlvbklEPSVsbHUsIHBvbGljeUFjdGlvbj0ldSwgc2FmZUJyb3dzaW5nV2FybmluZz0lZCwg
aXNBcHBCb3VuZERvbWFpbj0lZCIsIGZyYW1lLT5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdh
dGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFj
dGlvbiwgISFzYWZlQnJvd3NpbmdXYXJuaW5nLCAhIWlzQXBwQm91bmREb21haW4pOwogCiAgICAg
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgZnJhbWUs
IHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiA9
IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewpA
QCAtNTMxNCw3ICs1MzEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgICAg
IGlmICghc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQo
ZnJhbWUtPmlzTWFpbkZyYW1lKCksIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCks
IGlzQXBwQm91bmREb21haW4pKSB7CiAgICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IGVycm9y
Rm9yVW5wZXJtaXR0ZWRBcHBCb3VuZERvbWFpbk5hdmlnYXRpb24obmF2aWdhdGlvbi0+Y3VycmVu
dFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlzLCBGcmFtZUluZm9EYXRh
IHsgZnJhbWVJbmZvIH0sIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCB1c2VyRGF0YU9iamVjdCk7
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAi
SWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlz
IGF0dGVtcHRpbmcgdG8gbmF2aWdhdGUgYXdheSBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4gb3Ig
bmF2aWdhdGUgYWZ0ZXIgdXNpbmcgcmVzdHJpY3RlZCBBUElzIik7CisgICAgICAgICAgICAgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJJZ25vcmluZyByZXF1ZXN0
IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgYXR0ZW1wdGluZyB0byBu
YXZpZ2F0ZSBhd2F5IGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiBvciBuYXZpZ2F0ZSBhZnRlciB1
c2luZyByZXN0cmljdGVkIEFQSXMiKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQpAQCAtNTU5MCw3ICs1NTg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZSYgc3RvcmUsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkOiIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGFTaGFyZWQ6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01NjEwLDcgKzU2MDYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3Ry
aW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1l
SUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlE
LnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIApAQCAtNTYzNyw3ICs1NjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBl
cmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdFNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3Q6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcs
ICJkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01NzY3LDcgKzU3NjMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2xvc2VQYWdlKCkKICAgICBpZiAoaXNDbG9zZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiY2xvc2VQYWdlOiIp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiY2xvc2VQYWdlOiIpOwog
ICAgIHBhZ2VDbGllbnQoKS5jbGVhckFsbEVkaXRDb21tYW5kcygpOwogICAgIG1fdWlDbGllbnQt
PmNsb3NlKHRoaXMpOwogfQpAQCAtNzQ4OCw3ICs3NDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZvY3VzZWRGcmFtZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiYgZnJh
bWVJRCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUo
KQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NE
aWRCZWNvbWVVbnJlc3BvbnNpdmU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiIpOwogCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC03NTAwLDcgKzc0OTYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNp
dmU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJwcm9jZXNzRGlk
QmVjb21lUmVzcG9uc2l2ZToiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzU0MSw3ICs3NTM3LDcgQEAgVVJMIFdlYlBhZ2VQcm94eTo6Y3Vy
cmVudFJlc291cmNlRGlyZWN0b3J5VVJMKCkgY29uc3QKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNl
dFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJl
YXNvbikKIHsKICAgICBpZiAocmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2
aWdhdGlvblN3YXApCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vz
cywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IChwaWQgJWQpLCByZWFzb24gJWQiLCBwcm9jZXNzSWRl
bnRpZmllcigpLCByZWFzb24pOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJS
T1IoUHJvY2VzcywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IChwaWQgJWQpLCByZWFzb24gJWQiLCBw
cm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24pOwogCiAgICAgQVNTRVJUKG1faGFzUnVubmluZ1By
b2Nlc3MpOwogCkBAIC03NTk1LDcgKzc1OTEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWxvYWRB
ZnRlclByb2Nlc3NUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NU
ZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlOiByZWFzb249JWQiLCBy
ZWFzb24pOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiZGlz
cGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlOiByZWFzb249JWQiLCByZWFzb24pOwogCiAgICAgYm9v
bCBoYW5kbGVkQnlDbGllbnQgPSBmYWxzZTsKICAgICBpZiAobV9sb2FkZXJDbGllbnQpCkBAIC03
NjEyLDExICs3NjA4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZWxvYWRBZnRlclByb2Nl
c3NUZXJtaW5hdGlvbigpCiAgICAgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lci5zdG9wKCk7
CiAKICAgICBpZiAoKyttX3JlY2VudENyYXNoQ291bnQgPiBtYXhpbXVtV2ViUHJvY2Vzc1JlbGF1
bmNoQXR0ZW1wdHMpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9j
ZXNzLCAidHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb246IHByb2Nlc3MgY3Jhc2hlZCBh
bmQgdGhlIGNsaWVudCBkaWQgbm90IGhhbmRsZSBpdCwgbm90IHJlbG9hZGluZyB0aGUgcGFnZSBi
ZWNhdXNlIHdlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGF0dGVtcHRzIik7CisgICAg
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAidHJ5UmVsb2FkQWZ0
ZXJQcm9jZXNzVGVybWluYXRpb246IHByb2Nlc3MgY3Jhc2hlZCBhbmQgdGhlIGNsaWVudCBkaWQg
bm90IGhhbmRsZSBpdCwgbm90IHJlbG9hZGluZyB0aGUgcGFnZSBiZWNhdXNlIHdlIHJlYWNoZWQg
dGhlIG1heGltdW0gbnVtYmVyIG9mIGF0dGVtcHRzIik7CiAgICAgICAgIG1fcmVjZW50Q3Jhc2hD
b3VudCA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzLCAidHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb246IHByb2Nlc3Mg
Y3Jhc2hlZCBhbmQgdGhlIGNsaWVudCBkaWQgbm90IGhhbmRsZSBpdCwgcmVsb2FkaW5nIHRoZSBw
YWdlIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJ0cnlSZWxvYWRB
ZnRlclByb2Nlc3NUZXJtaW5hdGlvbjogcHJvY2VzcyBjcmFzaGVkIGFuZCB0aGUgY2xpZW50IGRp
ZCBub3QgaGFuZGxlIGl0LCByZWxvYWRpbmcgdGhlIHBhZ2UiKTsKICAgICByZWxvYWQoUmVsb2Fk
T3B0aW9uOjpFeHBpcmVkT25seSk7CiB9CiAKQEAgLTgyNjMsMTYgKzgyNTksMTYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFj
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2
NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNwYWNlIGZvciBm
cmFtZSAlIiBQUkl1NjQgIiwgY3VycmVudCBxdW90YSAlIiBQUkl1NjQgIiBjdXJyZW50IHVzYWdl
ICUiIFBSSXU2NCAiIGV4cGVjdGVkIHVzYWdlICUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgp
LCBjdXJyZW50UXVvdGEsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlKTsKKyAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coU3RvcmFnZSwgInJlcXVlc3RTdG9yYWdlU3BhY2Ug
Zm9yIGZyYW1lICUiIFBSSXU2NCAiLCBjdXJyZW50IHF1b3RhICUiIFBSSXU2NCAiIGN1cnJlbnQg
dXNhZ2UgJSIgUFJJdTY0ICIgZXhwZWN0ZWQgdXNhZ2UgJSIgUFJJdTY0LCBmcmFtZUlELnRvVUlu
dDY0KCksIGN1cnJlbnRRdW90YSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2Up
OwogCiAgICAgU3RvcmFnZVJlcXVlc3RzOjpzaW5nbGV0b24oKS5wcm9jZXNzT3JBcHBlbmQoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGFnZVVSTCA9IGN1cnJlbnRVUkwo
KSwgZnJhbWVJRCwgb3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lLCBkaXNwbGF5TmFtZSwg
Y3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBl
eHBlY3RlZFVzYWdlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICB0aGlzLT5tYWtlU3RvcmFnZVNwYWNlUmVxdWVzdChm
cmFtZUlELCBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsIGRpc3BsYXlOYW1lLCBjdXJy
ZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVj
dGVkVXNhZ2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
ZnJhbWVJRCwgcGFnZVVSTCA9IFdURk1vdmUocGFnZVVSTCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGN1cnJlbnRRdW90YV0oYXV0byBxdW90YSkgbXV0
YWJsZSB7CiAKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoU3RvcmFnZSwgInJl
cXVlc3RTdG9yYWdlU3BhY2UgcmVzcG9uc2UgZm9yIGZyYW1lICUiIFBSSXU2NCAiLCBxdW90YSAl
IiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwgcXVvdGEpOworICAgICAgICAgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNwYWNlIHJlc3BvbnNl
IGZvciBmcmFtZSAlIiBQUkl1NjQgIiwgcXVvdGEgJSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0
KCksIHF1b3RhKTsKICAgICAgICAgICAgIFVOVVNFRF9WQVJJQUJMRShmcmFtZUlEKTsKIAogICAg
ICAgICAgICAgaWYgKHF1b3RhIDw9IGN1cnJlbnRRdW90YSAmJiB0aGlzLT5jdXJyZW50VVJMKCkg
PT0gcGFnZVVSTCkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoU3Rv
cmFnZSwgInN0b3JhZ2Ugc3BhY2UgaW5jcmVhc2UgZGVuaWVkIik7CisgICAgICAgICAgICAgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFN0b3JhZ2UsICJzdG9yYWdlIHNwYWNlIGluY3JlYXNl
IGRlbmllZCIpOwogICAgICAgICAgICAgICAgIG1faXNRdW90YUluY3JlYXNlRGVuaWVkID0gIHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihxdW90YSk7
CkBAIC05MzYxLDcgKzkzNTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlUmVwb3J0ZWRN
ZWRpYUNhcHR1cmVTdGF0ZSgpCiAgICAgaWYgKCFoYXZlUmVwb3J0ZWRDYXB0dXJlICYmIHdpbGxS
ZXBvcnRDYXB0dXJlKQogICAgICAgICBtX3VwZGF0ZVJlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGVU
aW1lci5zdGFydE9uZVNob3QobV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheSk7CiAKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFdlYlJUQywgInVwZGF0ZVJlcG9ydGVkTWVkaWFDYXB0dXJl
U3RhdGU6IGZyb20gJWQgdG8gJWQiLCBtX3JlcG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUudG9SYXco
KSwgYWN0aXZlQ2FwdHVyZVN0YXRlLnRvUmF3KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhXZWJSVEMsICJ1cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlOiBmcm9tICVkIHRv
ICVkIiwgbV9yZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlLnRvUmF3KCksIGFjdGl2ZUNhcHR1cmVT
dGF0ZS50b1JhdygpKTsKIAogICAgIGJvb2wgbWljcm9waG9uZUNhcHR1cmVDaGFuZ2VkID0gKG1f
cmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZU1h
c2spICE9IChhY3RpdmVDYXB0dXJlU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVN
YXNrKTsKICAgICBib29sIGNhbWVyYUNhcHR1cmVDaGFuZ2VkID0gKG1fcmVwb3J0ZWRNZWRpYUNh
cHR1cmVTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZU1hc2spICE9IChhY3RpdmVD
YXB0dXJlU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVNYXNrKTsKQEAgLTk2MDAs
MTMgKzk1OTYsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2Fz
RGlzbWlzc2VkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dEkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSgpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRFeGNlZWRJ
bmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkRXhjZWVkSW5hY3RpdmVNZW1vcnlM
aW1pdFdoaWxlQWN0aXZlIik7CiAgICAgbV91aUNsaWVudC0+ZGlkRXhjZWVkQmFja2dyb3VuZFJl
c291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCgqdGhpcywga1dLUmVzb3VyY2VMaW1pdE1lbW9y
eSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXRX
aGlsZUluRm9yZWdyb3VuZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQ
ZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXRXaGlsZUluRm9y
ZWdyb3VuZCIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5j
ZUxvZ2dpbmcsICJkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXRXaGlsZUluRm9yZWdyb3VuZCIp
OwogICAgIG1fdWlDbGllbnQtPmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJ
bkZvcmVncm91bmQoKnRoaXMsIGtXS1Jlc291cmNlTGltaXRDUFUpOwogfQogCkBAIC0xMDQxNCw3
ICsxMDQxMCw4IEBAIExvZ2dlciYgV2ViUGFnZVByb3h5Ojpsb2dnZXIoKQogewogICAgIGlmICgh
bV9sb2dnZXIpIHsKICAgICAgICAgbV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKLSAg
ICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCkpOworICAgICAgICAvLyBGSVhNRTogRG9lcyB0aGlzIHJlYWxseSBuZWVkIHRvIGJlIGRpc2Fi
bGVkIGluIGVwaGVtZXJhbCBzZXNzaW9ucz8KKyAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQo
dGhpcywgIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwogICAgIH0KIAogICAgIHJldHVybiAq
bV9sb2dnZXI7CkBAIC0xMDY3Myw3ICsxMDY3MCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVh
ckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RAorI3VuZGVmIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRworI3VuZGVmIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPR19FUlJPUgogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTgogI3VuZGVm
IE1FU1NBR0VfQ0hFQ0tfVVJMCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1MDQ4NWEzZDZjZmM5NjVkZDRkOTAyZDQxYmUzNmI5
MTg5MjgzMmM0Li5kNjBmNTRiNmQ1MGIxODllYmQ2OTkwMzI5MGE5MGU2ZWU5ZmUxMTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU5MCw3ICsxNTkwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCkgZmlu
YWw7CiAgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKICAgICB2b2lk
IHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKFdlYkNvcmU6OlBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwotICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
OyB9CisgICAgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7IH0KICAgICBib29sIHVz
ZWlUdW5lc0FWT3V0cHV0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIFBsYXRmb3JtVmlldyog
cGxhdGZvcm1WaWV3KCkgY29uc3QgZmluYWw7CiAKQEAgLTE2MjQsOCArMTYyNCw2IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzTmV2ZXJSaWNobHlFZGl0YWJsZUZvclRvdWNoQmFyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc05ldmVyUmljaGx5RWRpdGFibGVGb3JUb3VjaEJhcjsgfQogI2VuZGlmCiAKLSAg
ICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwotCiAjaWYgRU5BQkxFKEdB
TUVQQUQpCiAgICAgdm9pZCBnYW1lcGFkQWN0aXZpdHkoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRh
PiYsIFdlYkNvcmU6OkV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA4MTBiZTE3
YzFjOTZkNjljMmU0OWU5ZTM3YThhZjllOTZmZTY0YzdlLi5iYTU1MDc0MDZjNjQzMGE2N2U5ODY0
Y2IzMDZjNTE2YmJiNWMyMjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTgxLDcgKzgxLDcgQEAKIAogI2RlZmluZSBNRVNTQUdFX0NI
RUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgcHJvY2VzcygpLmNv
bm5lY3Rpb24oKSkKIAotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZt
dCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5l
bCwgIiVwIC0gW3BhZ2VQcm94eUlEPSVsbHUsIHdlYlBhZ2VJRD0lbGx1LCBQSUQ9JWldIFdlYlBh
Z2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMjX19WQV9BUkdT
X18pCisjZGVmaW5lIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikg
UkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSVsbHUsIHdlYlBhZ2VJRD0l
bGx1LCBQSUQ9JWldIFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKIAogICAgIGJvb2wgaXNTdXNwZW5kZWRVbmRlckxv
Y2sgPSBbVUlBcHAgaXNTdXNwZW5kZWRVbmRlckxvY2tdOwogICAgIAotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoVmlld1N0YXRlLCAiYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6IGlz
U3VzcGVuZGVkVW5kZXJMb2NrPyAlZCIsIGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coVmlld1N0YXRlLCAiYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQ6IGlzU3VzcGVuZGVkVW5kZXJMb2NrPyAlZCIsIGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsK
IAogI2lmICFQTEFURk9STShXQVRDSE9TKQogICAgIC8vIFdlIG5vcm1hbGx5IGRlbGF5IHByb2Nl
c3Mgc3VzcGVuc2lvbiB3aGVuIHRoZSBhcHAgaXMgYmFja2dyb3VuZGVkIHVudGlsIHRoZSBjdXJy
ZW50IHBhZ2UgbG9hZCBjb21wbGV0ZXMuIEhvd2V2ZXIsCkBAIC02MTksNyArNjE5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCiAgICAgbV9s
YXN0T2JzZXJ2ZWRTdGF0ZVdhc0JhY2tncm91bmQgPSBmYWxzZTsKIAogICAgIGJvb2wgaXNTdXNw
ZW5kZWRVbmRlckxvY2sgPSBbVUlBcHAgaXNTdXNwZW5kZWRVbmRlckxvY2tdOwotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoVmlld1N0YXRlLCAiYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kOiBpc1N1c3BlbmRlZFVuZGVyTG9jaz8gJWQiLCBpc1N1c3BlbmRlZFVuZGVyTG9jayk7Cisg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFZpZXdTdGF0ZSwgImFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZDogaXNTdXNwZW5kZWRVbmRlckxvY2s/ICVkIiwgaXNTdXNwZW5kZWRVbmRl
ckxvY2spOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBtX3dlYlBhZ2VJ
RCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYXJkd2FyZUtleWJv
YXJkQXZhaWxhYmlsaXR5Q2hhbmdlZChpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKSksIG1fd2Vi
UGFnZUlEKTsKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlKCkKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZEZvck1lZGlhKCkKIHsKICAgICBib29sIGlzU3VzcGVuZGVkVW5kZXJMb2Nr
ID0gW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFZpZXdTdGF0ZSwgImFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZEZvck1lZGlhOiBp
c1N1c3BlbmRlZFVuZGVyTG9jaz8gJWQiLCBpc1N1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKFZpZXdTdGF0ZSwgImFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZEZvck1lZGlhOiBpc1N1c3BlbmRlZFVuZGVyTG9jaz8gJWQiLCBpc1N1c3BlbmRlZFVu
ZGVyTG9jayk7CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kRm9yTWVkaWEoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBt
X3dlYlBhZ2VJRCk7CiB9CkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kRm9yTWVkaWEoKQogdm9pZCBXZWJQYWdlUHJveHk6
OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZEZvck1lZGlhKCkKIHsKICAgICBib29sIGlz
U3VzcGVuZGVkVW5kZXJMb2NrID0gW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXTsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFZpZXdTdGF0ZSwgImFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kRm9yTWVkaWE6IGlzU3VzcGVuZGVkVW5kZXJMb2NrPyAlZCIsIGlzU3VzcGVuZGVkVW5k
ZXJMb2NrKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coVmlld1N0YXRlLCAiYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmRGb3JNZWRpYTogaXNTdXNwZW5kZWRVbmRlckxvY2s/ICVk
IiwgaXNTdXNwZW5kZWRVbmRlckxvY2spOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRGb3JNZWRpYShpc1N1c3Bl
bmRlZFVuZGVyTG9jayksIG1fd2ViUGFnZUlEKTsKIH0KQEAgLTE0NjYsNyArMTQ2Niw3IEBAIGJv
b2wgV2ViUGFnZVByb3h5OjpzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5h
dmlnYXRpb24oKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGNhblRh
a2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucyA9IHBhZ2VDbGllbnQoKS5jYW5UYWtlRm9yZWdyb3VuZEFz
c2VydGlvbnMoKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJXZWJQYWdl
UHJveHk6OnNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigp
IHJldHVybnMgJWQgYmFzZWQgb24gUGFnZUNsaWVudDo6Y2FuVGFrZUZvcmVncm91bmRBc3NlcnRp
b25zKCkiLCBjYW5UYWtlRm9yZWdyb3VuZEFzc2VydGlvbnMpOworICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhQcm9jZXNzLCAiV2ViUGFnZVByb3h5OjpzaG91bGRGb3JjZUZvcmVncm91bmRQ
cmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSByZXR1cm5zICVkIGJhc2VkIG9uIFBhZ2VDbGll
bnQ6OmNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucygpIiwgY2FuVGFrZUZvcmVncm91bmRBc3Nl
cnRpb25zKTsKICAgICByZXR1cm4gY2FuVGFrZUZvcmVncm91bmRBc3NlcnRpb25zOwogfQogCkBA
IC0xNTc4LDcgKzE1NzgsNyBAQCBDb2xvciBXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yKCkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSN1bmRl
ZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
CiAjdW5kZWYgTUVTU0FHRV9DSEVDSwogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430276</attachid>
            <date>2021-06-01 10:26:48 -0700</date>
            <delta_ts>2021-06-01 11:14:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226342-20210601102647.patch</filename>
            <type>text/plain</type>
            <size>103977</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdiNzAzY2ZjNzFhODUwN2Nl
ODczMjlkMGU2YTNiN2M5NmVmODYyNzIuLjJhYjAyNGE5ZGE5ZGVjOTU1ODQ2NDc5ODZmMzg3YzAw
ODQ2YzI4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA1LTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIFdlYlBhZ2VQcm94eSdz
IHJlbGVhc2UgbG9nZ2luZyBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEVuYWJsZSBXZWJQYWdlUHJveHkncyByZWxlYXNl
IGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zLiBPdXIgcmVsZWFzZSBsb2dnaW5nIGRvZXNu
J3QKKyAgICAgICAgY29udGFpbiBhbnl0aGluZyBzZW5zaXRpdmUgYW5kIG5vdCBoYXZpbmcgdGhp
cyBsb2dnaW5nIG1ha2VzIGl0IGhhcmQgdG8gZGVidWcgaXNzdWVzIGluCisgICAgICAgIGFwcHMg
dXNpbmcgZXBoZW1lcmFsIHNlc3Npb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NP
QXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpzaG91bGRTdGFydCk6CisgICAgICAgIChXZWJLaXQ6
OlNPQXV0aG9yaXphdGlvblNlc3Npb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRo
b3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhpbnRz
KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFy
dEFmdGVyRGVjaWRlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vz
c2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGgpOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6YXRp
b25TZXNzaW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNlc3Np
b246OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
cHJlc2VudFZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zp
c2lvbmFsUGFnZVByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6
Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0
ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vz
c0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRy
eUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0cnlDbG9zZVRpbWVkT3V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2Fy
ZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQ
b3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJBdWRpYmxlQWN0aXZpdHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BNYWtpbmdWaWV3QmxhbmtEdWVU
b0xhY2tPZlJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
bWFrZVZpZXdCbGFua0lmVW5wYWludGVkU2luY2VMYXN0TG9hZENvbW1pdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRFeHBsaWNpdE9wZW5Gb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRl
cm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJ5UmVsb2FkQWZ0ZXJQ
cm9jZXNzVGVybWluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RTdG9yYWdlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVJl
cG9ydGVkTWVkaWFDYXB0dXJlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0V2hpbGVJbkZvcmVn
cm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvZ2dlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDIxLTA2LTAxICBQZXIgQXJuZSAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFByZXByb2Nlc3MgdGhlIFdlYkNvbnRl
bnQgc2FuZGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d0lPUy5tbQppbmRleCAzOTRlZWY5MWNhOWExM2VkYWJmZjdkN2U1ZTc3ODRmZmRmNGVhODRhLi4y
ZmY1OGE4Y2ZjMWRhZGI2ZGM5ZmRiNjhmMWE3ODZmZTlkZGQ5NTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtNzgsNyArNzgsNyBA
QCAtICh2b2lkKV9hY3Rpb246KGlkKXNlbmRlciBcCiAgICAgICAgIFtfY29udGVudFZpZXcgX2Fj
dGlvbiAjIyBGb3JXZWJWaWV3OnNlbmRlcl07IFwKIH0KIAotI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKC4uLikgUkVMRUFTRV9MT0dfSUYoX3BhZ2UgJiYgX3BhZ2UtPmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBWaWV3U3RhdGUsIF9fVkFfQVJHU19fKQorI2RlZmluZSBXS1dFQlZJ
RVdfUkVMRUFTRV9MT0coLi4uKSBSRUxFQVNFX0xPRyhWaWV3U3RhdGUsIF9fVkFfQVJHU19fKQog
CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWxheUJlZm9yZU5vVmlzaWJsZUNvbnRlbnRzUmVjdHNM
b2dnaW5nID0gMV9zOwogc3RhdGljIGNvbnN0IFNlY29uZHMgZGVsYXlCZWZvcmVOb0NvbW1pdHNM
b2dnaW5nID0gNV9zOwpAQCAtNjg2LDEzICs2ODYsMTMgQEAgLSAodm9pZClfcHJvY2Vzc1dpbGxT
d2FwT3JEaWRFeGl0CiAKIC0gKHZvaWQpX3Byb2Nlc3NXaWxsU3dhcAogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIiVwIC1bV0tXZWJWaWV3IF9wcm9jZXNzV2lsbFN3YXBdIiwgc2VsZik7
CisgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAtW1dLV2ViVmlldyBfcHJvY2Vzc1dpbGxT
d2FwXSIsIHNlbGYpOwogICAgIFtzZWxmIF9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXRdOwogfQog
CiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdAogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
IiVwIC1bV0tXZWJWaWV3IF9wcm9jZXNzRGlkRXhpdF0iLCBzZWxmKTsKKyAgICBXS1dFQlZJRVdf
UkVMRUFTRV9MT0coIiVwIC1bV0tXZWJWaWV3IF9wcm9jZXNzRGlkRXhpdF0iLCBzZWxmKTsKIAog
ICAgIFtzZWxmIF9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXRdOwogCkBAIC03MDQsNyArNzA0LDcg
QEAgLSAodm9pZClfcHJvY2Vzc0RpZEV4aXQKIAogLSAodm9pZClfZGlkUmVsYXVuY2hQcm9jZXNz
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX2RpZFJlbGF1
bmNoUHJvY2Vzc10iLCBzZWxmKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIC1bV0tX
ZWJWaWV3IF9kaWRSZWxhdW5jaFByb2Nlc3NdIiwgc2VsZik7CiAgICAgX2hhc1NjaGVkdWxlZFZp
c2libGVSZWN0VXBkYXRlID0gTk87CiAgICAgX3ZpZXdTdGFiaWxpdHlXaGVuVmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlU2NoZWR1bGVkID0geyB9OwogICAgIGlmIChfZ2VzdHVyZUNvbnRyb2xsZXIp
CkBAIC03ODcsMTQgKzc4NywxNCBAQCAtICh2b2lkKV9kaWRDb21taXRMYXllclRyZWVEdXJpbmdB
bmltYXRlZFJlc2l6ZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcgogLSAodm9pZClf
dHJhY2tUcmFuc2FjdGlvbkNvbW1pdDooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbiYpbGF5ZXJUcmVlVHJhbnNhY3Rpb24KIHsKICAgICBpZiAoX2RpZERlZmVyVXBkYXRl
VmlzaWJsZUNvbnRlbnRSZWN0c0ZvclVuc3RhYmxlU2Nyb2xsVmlldykgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2Rp
ZENvbW1pdExheWVyVHJlZTpdIC0gcmVjZWl2ZWQgYSBjb21taXQgKCVsbHUpIHdoaWxlIGRlZmVy
cmluZyB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGVzIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRl
TW9kZSAlZCwgX25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUg
JWQgKHdhbnRzIGNvbW1pdCAlbGx1KSwgc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGUgJWQsIFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10gJWQsIF9jdXJyZW50
bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQgJWQpIiwKKyAgICAgICAgV0tX
RUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2Rp
ZENvbW1pdExheWVyVHJlZTpdIC0gcmVjZWl2ZWQgYSBjb21taXQgKCVsbHUpIHdoaWxlIGRlZmVy
cmluZyB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGVzIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRl
TW9kZSAlZCwgX25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUg
JWQgKHdhbnRzIGNvbW1pdCAlbGx1KSwgc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGUgJWQsIFtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10gJWQsIF9jdXJyZW50
bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQgJWQpIiwKICAgICAgICAgc2Vs
ZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBsYXllclRyZWVUcmFuc2FjdGlvbi50
cmFuc2FjdGlvbklEKCkudG9VSW50NjQoKSwgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUsIF9u
ZWVkc1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRMb2FkRm9yTWFpbkZyYW1lLCBfZmlyc3RQYWlu
dEFmdGVyQ29tbWl0TG9hZFRyYW5zYWN0aW9uSUQudG9VSW50NjQoKSwgW19jb250ZW50VmlldyBz
aXplQ2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZV0sIFtfc2Nyb2xsVmll
dyBpc1pvb21Cb3VuY2luZ10sIF9jdXJyZW50bHlBZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9y
S2V5Ym9hcmQpOwogICAgIH0KIAogICAgIGlmIChfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdCkgewogICAgICAgICBhdXRvIHRpbWVTaW5jZUZpcnN0
UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0ID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSAqX3RpbWVP
ZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlV2l0aFBlbmRpbmdDb21taXQ7CiAgICAgICAg
IGlmICh0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdCA+IGRlbGF5QmVmb3Jl
Tm9Db21taXRzTG9nZ2luZykKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVw
IChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSBm
aW5hbGx5IHJlY2VpdmVkIGNvbW1pdCAlLjJmcyBhZnRlciB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1
cGRhdGUgcmVxdWVzdDsgdHJhbnNhY3Rpb25JRCAlbGx1Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCB0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdC52
YWx1ZSgpLCBsYXllclRyZWVUcmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkudG9VSW50NjQoKSk7
CisgICAgICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1
KSAtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSBmaW5hbGx5IHJlY2VpdmVkIGNv
bW1pdCAlLjJmcyBhZnRlciB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGUgcmVxdWVzdDsgdHJh
bnNhY3Rpb25JRCAlbGx1Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCB0
aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdC52YWx1ZSgpLCBsYXllclRyZWVU
cmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIF90aW1lT2ZG
aXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0ID0gc3RkOjpudWxs
b3B0OwogICAgIH0KIH0KQEAgLTg5NCw3ICs4OTQsNyBAQCAtICh2b2lkKV9kaWRDb21taXRMYXll
clRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJl
ZQogICAgIH0KIAogICAgIGlmIChfcmVzaXplQW5pbWF0aW9uVmlldykKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiJXAgLVtXS1dlYlZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpdIC0g
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSBpcyBOb3RSZXNpemluZywgYnV0IHN0aWxsIGhhdmUg
YSBsaXZlIHJlc2l6ZUFuaW1hdGlvblZpZXcgKHVucGFpcmVkIGJlZ2luL2VuZEFuaW1hdGVkUmVz
aXplPykiLCBzZWxmKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAtW1dLV2Vi
VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSBkeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlIGlz
IE5vdFJlc2l6aW5nLCBidXQgc3RpbGwgaGF2ZSBhIGxpdmUgcmVzaXplQW5pbWF0aW9uVmlldyAo
dW5wYWlyZWQgYmVnaW4vZW5kQW5pbWF0ZWRSZXNpemU/KSIsIHNlbGYpOwogCiAgICAgW3NlbGYg
X3VwZGF0ZVNjcm9sbFZpZXdGb3JUcmFuc2FjdGlvbjpsYXllclRyZWVUcmFuc2FjdGlvbl07CiAK
QEAgLTE5NjQsMTQgKzE5NjQsMTQgQEAgLSAodm9pZClfYWRkVXBkYXRlVmlzaWJsZUNvbnRlbnRS
ZWN0UHJlQ29tbWl0SGFuZGxlcgogICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6
W3JldGFpbmVkU2VsZl0gewogICAgICAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSByZXRhaW5lZFNl
bGYuZ2V0KCk7CiAgICAgICAgIGlmICghW3dlYlZpZXcgX2lzVmFsaWRdKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRih3ZWJWaWV3Ll9wYWdlICYmIHdlYlZpZXcuX3BhZ2UtPmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBWaWV3U3RhdGUsICJJbiBDQVRyYW5zYWN0aW9uIHByZUNvbW1p
dEhhbmRsZXIsIFdLV2ViVmlldyAlcCBpcyBpbnZhbGlkIiwgd2ViVmlldyk7CisgICAgICAgICAg
ICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIkluIENBVHJhbnNhY3Rpb24gcHJlQ29tbWl0SGFuZGxl
ciwgV0tXZWJWaWV3ICVwIGlzIGludmFsaWQiLCB3ZWJWaWV3KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIEB0cnkgewogICAgICAgICAgICAgW3dlYlZpZXcgX3Vw
ZGF0ZVZpc2libGVDb250ZW50UmVjdHNdOwogICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmV4Y2VwdGlvbikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViVmlldy5fcGFnZSAm
JiB3ZWJWaWV3Ll9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgVmlld1N0YXRlLCAi
SW4gQ0FUcmFuc2FjdGlvbiBwcmVDb21taXRIYW5kbGVyLCAtW1dLV2ViVmlldyAlcCBfdXBkYXRl
VmlzaWJsZUNvbnRlbnRSZWN0c10gdGhyZXcgYW4gZXhjZXB0aW9uIiwgd2ViVmlldyk7CisgICAg
ICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIkluIENBVHJhbnNhY3Rpb24gcHJlQ29tbWl0
SGFuZGxlciwgLVtXS1dlYlZpZXcgJXAgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdIHRocmV3
IGFuIGV4Y2VwdGlvbiIsIHdlYlZpZXcpOwogICAgICAgICB9CiAgICAgICAgIHdlYlZpZXctPl9o
YXNTY2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSA9IE5POwogICAgIH0gZm9yUGhhc2U6a0NBVHJh
bnNhY3Rpb25QaGFzZVByZUNvbW1pdF07CkBAIC0xOTg0LDcgKzE5ODQsNyBAQCAtICh2b2lkKV9z
Y2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZUFmdGVyU2Nyb2xsSW5WaWV3OihVSVNjcm9s
bFZpZXcgKilzY3JvbAogICAgIGlmIChfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGUpIHsK
ICAgICAgICAgYXV0byB0aW1lTm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgICAgIGlm
ICgodGltZU5vdyAtIF90aW1lT2ZSZXF1ZXN0Rm9yVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKSA+
IGRlbGF5QmVmb3JlTm9WaXNpYmxlQ29udGVudHNSZWN0c0xvZ2dpbmcpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIi1bV0tXZWJWaWV3ICVwIF9zY2hlZHVsZVZpc2libGVD
b250ZW50UmVjdFVwZGF0ZUFmdGVyU2Nyb2xsSW5WaWV3XTogX2hhc1NjaGVkdWxlZFZpc2libGVS
ZWN0VXBkYXRlIGlzIHRydWUgYnV0IGhhdmVuJ3QgdXBkYXRlZCB2aXNpYmxlIGNvbnRlbnQgcmVj
dHMgZm9yICUuMmZzIChsYXN0IHVwZGF0ZSB3YXMgJS4yZnMgYWdvKSAtIHZhbGlkICVkIiwKKyAg
ICAgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiLVtXS1dlYlZpZXcgJXAgX3NjaGVkdWxl
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlQWZ0ZXJTY3JvbGxJblZpZXddOiBfaGFzU2NoZWR1bGVk
VmlzaWJsZVJlY3RVcGRhdGUgaXMgdHJ1ZSBidXQgaGF2ZW4ndCB1cGRhdGVkIHZpc2libGUgY29u
dGVudCByZWN0cyBmb3IgJS4yZnMgKGxhc3QgdXBkYXRlIHdhcyAlLjJmcyBhZ28pIC0gdmFsaWQg
JWQiLAogICAgICAgICAgICAgICAgIHNlbGYsICh0aW1lTm93IC0gX3RpbWVPZlJlcXVlc3RGb3JW
aXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLnZhbHVlKCksICh0aW1lTm93IC0gX3RpbWVPZkxhc3RW
aXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLnZhbHVlKCksIFtzZWxmIF9pc1ZhbGlkXSk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMjA3OSw3ICsyMDc5LDcgQEAgLSAodm9pZClfdXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogICAgICAgICBbX3Bhc3N3b3JkVmlldyBzZXRGcmFtZTpz
ZWxmLmJvdW5kc107CiAgICAgICAgIFtfY3VzdG9tQ29udGVudFZpZXcgd2ViX2NvbXB1dGVkQ29u
dGVudEluc2V0RGlkQ2hhbmdlXTsKICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRl
bnRSZWN0c0ZvckFueVJlYXNvbiA9IFlFUzsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RzOl0gLSB1c2VzU3RhbmRhcmRDb250ZW50VmlldyBpcyBOTywgYmFpbGluZyIsIHNlbGYs
IF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIFdLV0VCVklFV19SRUxF
QVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzOl0gLSB1c2VzU3RhbmRhcmRDb250ZW50VmlldyBpcyBOTywgYmFpbGluZyIs
IHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTIwODcsMTMgKzIwODcsMTMgQEAgLSAodm9pZClfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0cwogICAgIGlmIChfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVX
aXRoUGVuZGluZ0NvbW1pdCkgewogICAgICAgICBhdXRvIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdp
dGhQZW5kaW5nQ29tbWl0ID0gdGltZU5vdyAtICpfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdDsKICAgICAgICAgaWYgKHRpbWVTaW5jZUZpcnN0UmVx
dWVzdFdpdGhQZW5kaW5nQ29tbWl0ID4gZGVsYXlCZWZvcmVOb0NvbW1pdHNMb2dnaW5nKQotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1b
V0tXZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0gLSBoYXZlIG5vdCByZWNlaXZl
ZCBhIGNvbW1pdCAlLjJmcyBhZnRlciB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGU7IGxhc3RU
cmFuc2FjdGlvbklEICVsbHUiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCks
IHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0LnZhbHVlKCksIF9sYXN0VHJh
bnNhY3Rpb25JRC50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xP
RygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RzOl0gLSBoYXZlIG5vdCByZWNlaXZlZCBhIGNvbW1pdCAlLjJmcyBhZnRlciB2aXNpYmxl
IGNvbnRlbnQgcmVjdCB1cGRhdGU7IGxhc3RUcmFuc2FjdGlvbklEICVsbHUiLCBzZWxmLCBfcGFn
ZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5k
aW5nQ29tbWl0LnZhbHVlKCksIF9sYXN0VHJhbnNhY3Rpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9
CiAKICAgICBpZiAoX2ludm9raW5nVUlTY3JvbGxWaWV3RGVsZWdhdGVDYWxsYmFjaykgewogICAg
ICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVUlTY3JvbGxWaWV3RGVs
ZWdhdGVDYWxsYmFjayA9IFlFUzsKICAgICAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRl
bnRSZWN0c0ZvckFueVJlYXNvbiA9IFlFUzsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RzOl0gLSBfaW52b2tpbmdVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrIGlzIFlFUywg
YmFpbGluZyIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAg
IFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3
IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOl0gLSBfaW52b2tpbmdVSVNjcm9sbFZpZXdEZWxl
Z2F0ZUNhbGxiYWNrIGlzIFlFUywgYmFpbGluZyIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIxMDYsMTMgKzIxMDYs
MTMgQEAgLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogICAgICAgICB8fCBfY3Vy
cmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0ZvcktleWJvYXJkKSB7CiAgICAgICAgIF9k
aWREZWZlclVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNGb3JBbnlSZWFzb24gPSBZRVM7CiAgICAg
ICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNGb3JVbnN0YWJsZVNjcm9sbFZp
ZXcgPSBZRVM7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJ
RD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czpdIC0gc2Nyb2xs
IHZpZXcgc3RhdGUgaXMgbm9uLXN0YWJsZSwgYmFpbGluZyAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGUgJWQsIF9uZWVkc1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRMb2FkRm9yTWFpbkZyYW1l
ICVkLCBzaXplQ2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSAlZCwgW19z
Y3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZp
ZXdJbnNldHNGb3JLZXlib2FyZCAlZCkiLAorICAgICAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0co
IiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRS
ZWN0czpdIC0gc2Nyb2xsIHZpZXcgc3RhdGUgaXMgbm9uLXN0YWJsZSwgYmFpbGluZyAoX2R5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUgJWQsIF9uZWVkc1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRM
b2FkRm9yTWFpbkZyYW1lICVkLCBzaXplQ2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVj
dFVwZGF0ZSAlZCwgW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSAlZCwgX2N1cnJlbnRseUFk
anVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCAlZCkiLAogICAgICAgICAgICAgc2Vs
ZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBfZHluYW1pY1ZpZXdwb3J0VXBkYXRl
TW9kZSwgX25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUsIFtf
Y29udGVudFZpZXcgc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVd
LCBbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddLCBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xs
Vmlld0luc2V0c0ZvcktleWJvYXJkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
IChfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yQW55UmVhc29uKQotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZp
ZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM6XSAtIHBlcmZvcm1pbmcgZmlyc3QgdmlzaWJs
ZSBjb250ZW50IHJlY3QgdXBkYXRlIGFmdGVyIGRlZmVycmluZyB1cGRhdGVzIiwgc2VsZiwgX3Bh
Z2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0Vf
TE9HKCIlcCAocGFnZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHM6XSAtIHBlcmZvcm1pbmcgZmlyc3QgdmlzaWJsZSBjb250ZW50IHJlY3QgdXBkYXRl
IGFmdGVyIGRlZmVycmluZyB1cGRhdGVzIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKIAogICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNGb3JVSVNj
cm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrID0gTk87CiAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJs
ZUNvbnRlbnRSZWN0c0ZvclVuc3RhYmxlU2Nyb2xsVmlldyA9IE5POwpAQCAtMjE2Niw3ICsyMTY2
LDcgQEAgLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogICAgIH0KIAogICAgIGlm
ICgodGltZU5vdyAtIF90aW1lT2ZSZXF1ZXN0Rm9yVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKSA+
IGRlbGF5QmVmb3JlTm9WaXNpYmxlQ29udGVudHNSZWN0c0xvZ2dpbmcpCi0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIiVwIC1bV0tXZWJWaWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJl
Y3RzOl0gZmluYWxseSByYW4gJS4yZnMgYWZ0ZXIgYmVpbmcgc2NoZWR1bGVkIiwgc2VsZiwgKHRp
bWVOb3cgLSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkudmFsdWUo
KSk7CisgICAgICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgLVtXS1dlYlZpZXcgX3VwZGF0
ZVZpc2libGVDb250ZW50UmVjdHM6XSBmaW5hbGx5IHJhbiAlLjJmcyBhZnRlciBiZWluZyBzY2hl
ZHVsZWQiLCBzZWxmLCAodGltZU5vdyAtIF90aW1lT2ZSZXF1ZXN0Rm9yVmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlKS52YWx1ZSgpKTsKIAogICAgIF9hbHdheXNTZW5kTmV4dFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZSA9IE5POwogICAgIF90aW1lT2ZMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
ID0gdGltZU5vdzsKQEAgLTIxOTIsNyArMjE5Miw3IEBAIHN0YXRpYyBpbnQzMl90IGFjdGl2ZU9y
aWVudGF0aW9uKFdLV2ViVmlldyAqd2ViVmlldykKIAogLSAodm9pZClfY2FuY2VsQW5pbWF0ZWRS
ZXNpemUKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5SUQ9JWxs
dSkgLVtXS1dlYlZpZXcgX2NhbmNlbEFuaW1hdGVkUmVzaXplXSBfZHluYW1pY1ZpZXdwb3J0VXBk
YXRlTW9kZSAlZCIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgX2R5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUpOworICAgIFdLV0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBh
Z2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9jYW5jZWxBbmltYXRlZFJlc2l6ZV0gX2R5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUgJWQiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCksIF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlKTsKIAogICAgIGlmIChfZHluYW1pY1Zp
ZXdwb3J0VXBkYXRlTW9kZSA9PSBXZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU6Ok5v
dFJlc2l6aW5nKQogICAgICAgICByZXR1cm47CkBAIC0yMjI0LDEyICsyMjI0LDEyIEBAIC0gKHZv
aWQpX2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemUKIAogICAgIGlmICghX3Jlc2l6ZUFuaW1hdGlv
blZpZXcpIHsKICAgICAgICAgLy8gUGFyYW5vaWEuIElmIF9yZXNpemVBbmltYXRpb25WaWV3IGlz
IG51bGwgd2UnbGwgZW5kIHVwIHNldHRpbmcgYSB6ZXJvIHNjYWxlIG9uIHRoZSBjb250ZW50IHZp
ZXcuCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIC1bV0tXZWJWaWV3IF9kaWRD
b21wbGV0ZUFuaW1hdGVkUmVzaXplOl0gLSBfcmVzaXplQW5pbWF0aW9uVmlldyBpcyBuaWwiLCBz
ZWxmKTsKKyAgICAgICAgV0tXRUJWSUVXX1JFTEVBU0VfTE9HKCIlcCAtW1dLV2ViVmlldyBfZGlk
Q29tcGxldGVBbmltYXRlZFJlc2l6ZTpdIC0gX3Jlc2l6ZUFuaW1hdGlvblZpZXcgaXMgbmlsIiwg
c2VsZik7CiAgICAgICAgIFtzZWxmIF9jYW5jZWxBbmltYXRlZFJlc2l6ZV07CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFnZVByb3h5
SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemVdIiwgc2VsZiwg
X3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9M
T0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZGlkQ29tcGxldGVBbmltYXRl
ZFJlc2l6ZV0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCiAgICAg
TlNVSW50ZWdlciBpbmRleE9mUmVzaXplQW5pbWF0aW9uVmlldyA9IFtbX3Njcm9sbFZpZXcgc3Vi
dmlld3NdIGluZGV4T2ZPYmplY3Q6X3Jlc2l6ZUFuaW1hdGlvblZpZXcuZ2V0KCldOwogICAgIFtf
c2Nyb2xsVmlldyBpbnNlcnRTdWJ2aWV3Ol9jb250ZW50Vmlldy5nZXQoKSBhdEluZGV4OmluZGV4
T2ZSZXNpemVBbmltYXRpb25WaWV3XTsKQEAgLTI5MDAsNyArMjkwMCw3IEBAIC0gKHZvaWQpX2Jl
Z2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVw
IChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhV
cGRhdGVzOl0iLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgIFdL
V0VCVklFV19SRUxFQVNFX0xPRygiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9i
ZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6XSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CiAKICAgICBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSA9IFdlYktp
dDo6RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6UmVzaXppbmdXaXRoQW5pbWF0aW9uOwogCkBA
IC0zMDM3LDcgKzMwMzcsNyBAQCAtICh2b2lkKV9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0
ZXM6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiAKIC0gKHZvaWQpX2VuZEFuaW1hdGVkUmVz
aXplCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUp
IC1bV0tXZWJWaWV3IF9lbmRBbmltYXRlZFJlc2l6ZV0gX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1v
ZGUgJWQiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIF9keW5hbWljVmll
d3BvcnRVcGRhdGVNb2RlKTsKKyAgICBXS1dFQlZJRVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJv
eHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfZW5kQW5pbWF0ZWRSZXNpemVdIF9keW5hbWljVmlld3Bv
cnRVcGRhdGVNb2RlICVkIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSk7CiAKICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUg
YW4gdXAtdG8tZGF0ZSBsYXllciB0cmVlLCBpbW1lZGlhdGVseSBjb21wbGV0ZQogICAgIC8vIHRo
ZSByZXNpemUuIE90aGVyd2lzZSwgd2Ugd2lsbCBkZWZlciBjb21wbGV0aW9uIHVudGlsIHdlIGRv
LgpAQCAtMzA0OCw3ICszMDQ4LDcgQEAgLSAodm9pZClfZW5kQW5pbWF0ZWRSZXNpemUKIAogLSAo
dm9pZClfcmVzaXplV2hpbGVIaWRpbmdDb250ZW50V2l0aFVwZGF0ZXM6KHZvaWQgKF4pKHZvaWQp
KXVwZGF0ZUJsb2NrCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBhZ2VQcm94
eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9yZXNpemVXaGlsZUhpZGluZ0NvbnRlbnRXaXRoVXBkYXRl
czpdIiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBXS1dFQlZJ
RVdfUkVMRUFTRV9MT0coIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmlldyBfcmVzaXpl
V2hpbGVIaWRpbmdDb250ZW50V2l0aFVwZGF0ZXM6XSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CiAKICAgICBbc2VsZiBfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRh
dGVzOnVwZGF0ZUJsb2NrXTsKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0g
V2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpSZXNpemluZ1dpdGhBbmltYXRpb24p
IHsKQEAgLTMzNTIsNCArMzM1Miw2IEBAIC0gKGlkIDxfV0tXZWJWaWV3UHJpbnRQcm92aWRlcj4p
X3ByaW50UHJvdmlkZXIKIAogQGVuZAogCisjdW5kZWYgV0tXRUJWSUVXX1JFTEVBU0VfTE9HCisK
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQppbmRleCA2MDc1NjJhZWU4
OGU3NjY5ZjhkOTE4NmZkZDgyNGI2MzU5NTVjNmI2Li41NDZlY2QwNWRiY2ZiOTVmZTRkZjc0ZDFi
M2ExNTQzNGY3MmExNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRva2VuKERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoYXV0byogd2Vi
UGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBwcmV2aWV3IiwgdGhpcyk7CisgICAg
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5
c3RlbSBwcmV2aWV3IiwgdGhpcyk7CiAgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eSk7CiAgICAg
ICAgIG1fYWN0aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJfcykubW92ZVRvVW5pcXVlUHRyKCk7
CiAgICAgfQpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnJl
bGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYgZG93bmxvCiB7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9hY3Rpdml0eSkgewotICAgICAgICBS
RUxFQVNFX0xPR19JRihkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpLT5pc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBVSVByb2Nlc3MgaXMgcmVs
ZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHN5c3RlbSBwcmV2aWV3IGRv
d25sb2FkIGNvbXBsZXRlZCIsIHRoaXMpOworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIGEgc3lzdGVtIHByZXZpZXcgZG93bmxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAg
ICAgICAgIG1fYWN0aXZpdHkgPSBudWxscHRyOwogICAgIH0KICNlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggZjdkNDA2MzYx
ZmU2ODc4ZWY3MzViMzVhOTgzNzg4Y2Q0NWUwZDRjZi4uMDczYTdiN2M0Y2UzNjM0NTRmMmM4ZDQ4
NjY2OTA3NzFjYmQ0NGMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTM2OCwxMCArMTM2OCwxMCBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eShOZXR3b3JrQWN0aXZpdHlSZWxlYXNlUmVh
c29uIHJlYXNvbgogCiAgICAgc3dpdGNoIChyZWFzb24pIHsKICAgICBjYXNlIE5ldHdvcmtBY3Rp
dml0eVJlbGVhc2VSZWFzb246OkxvYWRDb21wbGV0ZWQ6Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
KG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNpbmcgYmFja2dyb3VuZCBwcm9j
ZXNzIGFzc2VydGlvbiBiZWNhdXNlIGEgcGFnZSBsb2FkIGNvbXBsZXRlZCIsIHRoaXMpOworICAg
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBp
cyByZWxlYXNpbmcgYmFja2dyb3VuZCBwcm9jZXNzIGFzc2VydGlvbiBiZWNhdXNlIGEgcGFnZSBs
b2FkIGNvbXBsZXRlZCIsIHRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5ldHdvcmtB
Y3Rpdml0eVJlbGVhc2VSZWFzb246OlNjcmVlbkxvY2tlZDoKLSAgICAgICAgUkVMRUFTRV9MT0df
SUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NT
dXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRlIGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHBy
b2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHNjcmVlbiB3YXMgbG9ja2VkIiwgdGhpcyk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRl
IGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHNj
cmVlbiB3YXMgbG9ja2VkIiwgdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBtX25l
dHdvcmtBY3Rpdml0eSA9IG51bGxwdHI7CkBAIC0xMzg4LDE3ICsxMzg4LDE3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpkaWRDaGFuZ2VJc0xvYWRpbmcoKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGlmIChtX3JlbGVhc2VOZXR3b3JrQWN0aXZpdHlUaW1lci5pc0FjdGl2ZSgpKSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRihtX3dlYlZpZXctPl9wYWdlLT5pc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5hdmlnYXRpb25TdGF0
ZSBrZWVwcyBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBiZWNhdXNlIGEgbmV3IHBhZ2Ug
bG9hZCBzdGFydGVkIiwgdGhpcyk7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBzIGl0cyBwcm9jZXNzIG5ldHdvcmsg
YXNzZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0ZWQiLCB0aGlzKTsKICAgICAg
ICAgICAgIG1fcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRpbWVyLnN0b3AoKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIW1fbmV0d29ya0FjdGl2aXR5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRihtX3dlYlZpZXctPl9wYWdlLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIE5hdmlnYXRpb25TdGF0ZSBpcyB0YWtpbmcgYSBwcm9jZXNzIG5l
dHdvcmsgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdlIGxvYWQgc3RhcnRlZCIsIHRoaXMpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5hdmlnYXRpb25T
dGF0ZSBpcyB0YWtpbmcgYSBwcm9jZXNzIG5ldHdvcmsgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdl
IGxvYWQgc3RhcnRlZCIsIHRoaXMpOwogICAgICAgICAgICAgbV9uZXR3b3JrQWN0aXZpdHkgPSBt
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJQYWdlIExvYWQiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChtX25ldHdvcmtBY3Rpdml0eSkgewogICAgICAgICAvLyBUaGUgYXBwbGljYXRpb24gaXMg
dmlzaWJsZSBzbyB3ZSBkZWxheSByZWxlYXNpbmcgdGhlIGJhY2tncm91bmQgYWN0aXZpdHkgZm9y
IDMgc2Vjb25kcyB0byBnaXZlIGl0IGEgY2hhbmNlIHRvIHN0YXJ0IGFub3RoZXIgbmF2aWdhdGlv
bgogICAgICAgICAvLyBiZWZvcmUgc3VzcGVuZGluZyB0aGUgV2ViQ29udGVudCBwcm9jZXNzIDxy
ZGFyOi8vcHJvYmxlbS8yNzkxMDk2ND4uCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmll
dy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gTmF2aWdhdGlvblN0YXRlIHdpbGwgcmVsZWFzZSBpdHMgcHJvY2VzcyBuZXR3b3JrIGFz
c2VydGlvbiBzb29uIGJlY2F1c2UgdGhlIHBhZ2UgbG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5hdmlnYXRpb25TdGF0
ZSB3aWxsIHJlbGVhc2UgaXRzIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gc29vbiBiZWNhdXNl
IHRoZSBwYWdlIGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAgICAgIG1fcmVsZWFzZU5ldHdv
cmtBY3Rpdml0eVRpbWVyLnN0YXJ0T25lU2hvdCgzX3MpOwogICAgIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0
aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCBmZDhjNzA3ZDk5ZTg0
OTE4ZWNhMGIwN2VmZTFjOGE0Y2QyOGM0Yzg2Li5jOTBjMjk5MDRhNGE1NTE1ZWMwOWY3M2IyZmE0
NjAzNDZkMjg0YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5tbQpAQCAtNDQsNyArNDQsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0
IDx3dGYvVmVjdG9yLmg+CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYobV9wYWdlICYmIG1fcGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIEFwcFNTTywgIiVwIC0gW0luaXRpYXRpbmdBY3Rpb249JXNdIFNPQXV0aG9yaXphdGlv
blNlc3Npb246OiIgZm10LCB0aGlzLCB0b1N0cmluZyhtX2FjdGlvbiksICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxF
QVNFX0xPRyhBcHBTU08sICIlcCAtIFtJbml0aWF0aW5nQWN0aW9uPSVzXSBTT0F1dGhvcml6YXRp
b25TZXNzaW9uOjoiIGZtdCwgdGhpcywgdG9TdHJpbmcobV9hY3Rpb24pLCAjI19fVkFfQVJHU19f
KQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU09BdXRo
b3JpemF0aW9uU2Vzc2lvbjo6YmVjb21lQ29tcGxldGVkKCkKIAogdm9pZCBTT0F1dGhvcml6YXRp
b25TZXNzaW9uOjpzaG91bGRTdGFydCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
c2hvdWxkU3RhcnQ6Iik7CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coInNo
b3VsZFN0YXJ0OiIpOwogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUpOwogICAg
IGlmICghbV9wYWdlKQpAQCAtMTI3LDEyICsxMjcsMTIgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpzaG91bGRTdGFydCgpCiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6c3Rh
cnQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiIpOworICAgIEFVVEhP
UklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJzdGFydDoiKTsKIAogICAgIEFTU0VSVCgobV9z
dGF0ZSA9PSBTdGF0ZTo6SWRsZSB8fCBtX3N0YXRlID09IFN0YXRlOjpXYWl0aW5nKSAmJiBtX25h
dmlnYXRpb25BY3Rpb24pOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWN0aXZlOwogICAgIFttX3Nv
QXV0aG9yaXphdGlvbiBnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOm1fbmF2aWdhdGlvbkFj
dGlvbi0+cmVxdWVzdCgpLnVybCgpIHJlc3BvbnNlQ29kZTowIGNvbXBsZXRpb246bWFrZUJsb2Nr
UHRyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKFNPQXV0aG9yaXphdGlv
bkhpbnRzICphdXRob3JpemF0aW9uSGludHMsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkhpbnRz
IChlcnJvcj0lbGQpIiwgZXJyb3IgPyBlcnJvci5jb2RlIDogMCk7CisgICAgICAgIEFVVEhPUkla
QVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJzdGFydDogUmVjZWl2ZSBTT0F1dGhvcml6YXRpb25I
aW50cyAoZXJyb3I9JWxkKSIsIGVycm9yID8gZXJyb3IuY29kZSA6IDApOwogCiAgICAgICAgIGlm
ICghd2Vha1RoaXMgfHwgZXJyb3IgfHwgIWF1dGhvcml6YXRpb25IaW50cykKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246
OnN0YXJ0KCkKIAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0
ZXJHZXRBdXRob3JpemF0aW9uSGludHMoY29uc3QgU3RyaW5nJiBoaW50cykKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVN0YXJ0QWZ0ZXJHZXRBdXRob3JpemF0aW9uSGlu
dHM6IChoaW50cz0lcykiLCBoaW50cy51dGY4KCkuZGF0YSgpKTsKKyAgICBBVVRIT1JJWkFUSU9O
U0VTU0lPTl9SRUxFQVNFX0xPRygiY29udGludWVTdGFydEFmdGVyR2V0QXV0aG9yaXphdGlvbkhp
bnRzOiAoaGludHM9JXMpIiwgaGludHMudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKICAgICBpZiAoIW1fcGFnZSkKQEAgLTE1OCwxMyArMTU4
LDEzIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyR2V0
QXV0aG9yaXphdGlvbkhpbnRzKGNvbnN0IFN0cmluCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBvbGljeShjb25zdCBTT0F1dGhvcml6YXRpb25M
b2FkUG9saWN5JiBwb2xpY3kpCiB7CiAgICAgaWYgKHBvbGljeSA9PSBTT0F1dGhvcml6YXRpb25M
b2FkUG9saWN5OjpJZ25vcmUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29u
dGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQ
b2xpY3k6Oklnbm9yZSIpOworICAgICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xP
RygiY29udGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlv
bkxvYWRQb2xpY3k6Oklnbm9yZSIpOwogCiAgICAgICAgIGZhbGxCYWNrVG9XZWJQYXRoKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250
aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3k6IFJlY2VpdmUgU09BdXRob3JpemF0aW9uTG9hZFBv
bGljeTo6QWxsb3ciKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiY29u
dGludWVTdGFydEFmdGVyRGVjaWRlUG9saWN5OiBSZWNlaXZlIFNPQXV0aG9yaXphdGlvbkxvYWRQ
b2xpY3k6OkFsbG93Iik7CiAKICAgICBpZiAoIW1fc29BdXRob3JpemF0aW9uIHx8ICFtX3BhZ2Ug
fHwgIW1fbmF2aWdhdGlvbkFjdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29udGludWVTdGFydEFmdGVyRGVjaWRl
UG9saWN5KGNvbnN0IFNPQXV0aG9yaXphdGlvCiAKIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lv
bjo6ZmFsbEJhY2tUb1dlYlBhdGgoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImZh
bGxCYWNrVG9XZWJQYXRoOiIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9H
KCJmYWxsQmFja1RvV2ViUGF0aDoiKTsKIAogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpBY3Rp
dmUpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNPQXV0aG9yaXph
dGlvblNlc3Npb246OmZhbGxCYWNrVG9XZWJQYXRoKCkKIAogdm9pZCBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjphYm9ydCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJvcnQ6Iik7
CisgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImFib3J0OiIpOwogCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVk
KQogICAgICAgICByZXR1cm47CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRp
b25TZXNzaW9uOjpjb21wbGV0ZShOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlLCBOU0Rh
dGEgKmQKICAgICAvLyBTZXQgY29va2llcy4KICAgICBhdXRvIGNvb2tpZXMgPSB0b0Nvb2tpZVZl
Y3RvcihbTlNIVFRQQ29va2llIGNvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6aHR0cFJl
c3BvbnNlLmFsbEhlYWRlckZpZWxkcyBmb3JVUkw6cmVzcG9uc2UudXJsKCldKTsKIAotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbXBsZXRlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIGhhc0Nv
b2tpZXM9JWQsIGhhc0RhdGE9JWQpIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIWNvb2tp
ZXMuaXNFbXB0eSgpLCAhIWRhdGEubGVuZ3RoKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9S
RUxFQVNFX0xPRygiY29tcGxldGU6IChodHRwU3RhdHVzQ29kZT0lZCwgaGFzQ29va2llcz0lZCwg
aGFzRGF0YT0lZCkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAhY29va2llcy5pc0VtcHR5
KCksICEhZGF0YS5sZW5ndGgpOwogCiAgICAgaWYgKGNvb2tpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGNvbXBsZXRlSW50ZXJuYWwocmVzcG9uc2UsIGRhdGEpOwpAQCAtMjM5LDcgKzIzOSw3IEBA
IHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGUoTlNIVFRQVVJMUmVzcG9uc2Ug
Kmh0dHBSZXNwb25zZSwgTlNEYXRhICpkCiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29tcGxldGU6
IENvb2tpZXMgYXJlIHNldC4iKTsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFT
RV9MT0coImNvbXBsZXRlOiBDb29raWVzIGFyZSBzZXQuIik7CiAKICAgICAgICAgY29tcGxldGVJ
bnRlcm5hbChyZXNwb25zZSwgZGF0YS5nZXQoKSk7CiAgICAgfSk7CkBAIC0yNDcsNyArMjQ3LDcg
QEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZShOU0hUVFBVUkxSZXNwb25z
ZSAqaHR0cFJlc3BvbnNlLCBOU0RhdGEgKmQKIAogdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9u
OjpwcmVzZW50Vmlld0NvbnRyb2xsZXIoU09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgdmll
d0NvbnRyb2xsZXIsIFVJQ2FsbGJhY2sgdWlDYWxsYmFjaykKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJwcmVzZW50Vmlld0NvbnRyb2xsZXI6Iik7CisgICAgQVVUSE9SSVpBVElPTlNF
U1NJT05fUkVMRUFTRV9MT0coInByZXNlbnRWaWV3Q29udHJvbGxlcjoiKTsKIAogICAgIEFTU0VS
VChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwogICAgIC8vIE9ubHkgZXhwZWN0IGF0IG1vc3Qg
b25lIFVJIHNlc3Npb24gZm9yIHRoZSB3aG9sZSBhdXRob3JpemF0aW9uIHNlc3Npb24uCkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpwcmVzZW50Vmlld0Nv
bnRyb2xsZXIoU09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInByZXNlbnRWaWV3Q29udHJvbGxl
cjogQ2FsbGluZyBiZWdpblNoZWV0IG9uICVwIGZvciBzaGVldCAlcC4iLCBwcmVzZW50aW5nV2lu
ZG93LCBtX3NoZWV0V2luZG93LmdldCgpKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxF
QVNFX0xPRygicHJlc2VudFZpZXdDb250cm9sbGVyOiBDYWxsaW5nIGJlZ2luU2hlZXQgb24gJXAg
Zm9yIHNoZWV0ICVwLiIsIHByZXNlbnRpbmdXaW5kb3csIG1fc2hlZXRXaW5kb3cuZ2V0KCkpOwog
ICAgIFtwcmVzZW50aW5nV2luZG93IGJlZ2luU2hlZXQ6bV9zaGVldFdpbmRvdy5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpuaWxdOwogI2VsaWYgUExBVEZPUk0oSU9TKQogICAgIFVJVmlld0NvbnRy
b2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fcGFnZS0+dWlDbGllbnQoKS5wcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIFNPQXV0aG9y
aXphdGlvblNlc3Npb246OnByZXNlbnRWaWV3Q29udHJvbGxlcihTT0F1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcgogCiB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmRpc21pc3NWaWV3Q29u
dHJvbGxlcigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250
cm9sbGVyOiIpOworICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNz
Vmlld0NvbnRyb2xsZXI6Iik7CiAKICAgICBBU1NFUlQobV92aWV3Q29udHJvbGxlcik7CiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMzAzLDEzICszMDMsMTMgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQogICAgIGlmIChtX3BhZ2UgJiYgbV9wYWdl
LT5wbGF0Zm9ybVdpbmRvdygpKSB7CiAgICAgICAgIGF1dG8gKnByZXNlbnRpbmdXaW5kb3cgPSBt
X3BhZ2UtPnBsYXRmb3JtV2luZG93KCk7CiAgICAgICAgIGlmIChwcmVzZW50aW5nV2luZG93Lm1p
bmlhdHVyaXplZCkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlz
c1ZpZXdDb250cm9sbGVyOiBQYWdlJ3Mgd2luZG93IGlzIG1pbmlhdHVyaXplZC4gV2FpdGluZyB0
byBkaXNtaXNzIHVudGlsIGFjdGl2ZS4iKTsKKyAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNT
SU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFBhZ2UncyB3aW5kb3cgaXMg
bWluaWF0dXJpemVkLiBXYWl0aW5nIHRvIGRpc21pc3MgdW50aWwgYWN0aXZlLiIpOwogICAgICAg
ICAgICAgaWYgKG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlcikgewot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpc21pc3NWaWV3Q29udHJv
bGxlcjogW01pbmlhdHVyaXplZF0gQWxyZWFkeSBoYXMgYSBkZW1pbmlhdHVyaXplZCBvYnNlcnZl
ciAoJXApLiBIaWRkZW4gb2JzZXJ2ZXIgaXMgJXAiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1p
bmlhdHVyaXplT2JzZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0co
ImRpc21pc3NWaWV3Q29udHJvbGxlcjogW01pbmlhdHVyaXplZF0gQWxyZWFkeSBoYXMgYSBkZW1p
bmlhdHVyaXplZCBvYnNlcnZlciAoJXApLiBIaWRkZW4gb2JzZXJ2ZXIgaXMgJXAiLCBtX3ByZXNl
bnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25E
aWRVbmhpZGVPYnNlcnZlci5nZXQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9i
c2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
ckZvck5hbWU6TlNXaW5kb3dEaWREZW1pbmlhdHVyaXplTm90aWZpY2F0aW9uIG9iamVjdDpwcmVz
ZW50aW5nV2luZG93IHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOltwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKSwgdGhpc10gKE5TTm90aWZpY2F0aW9uICopIHsKLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IFdpbmRvdyBoYXMg
ZGVtaW5pYXR1cml6ZWQuIENvbXBsZXRpbmcgdGhlIGRpc21pc3NhbC4iKTsKKyAgICAgICAgICAg
ICAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdDb250cm9s
bGVyOiBXaW5kb3cgaGFzIGRlbWluaWF0dXJpemVkLiBDb21wbGV0aW5nIHRoZSBkaXNtaXNzYWwu
Iik7CiAgICAgICAgICAgICAgICAgZGlzbWlzc1ZpZXdDb250cm9sbGVyKCk7CiAgICAgICAgICAg
ICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZl
cjptX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0KCldOwogICAg
ICAgICAgICAgICAgIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlciA9
IG51bGxwdHI7CkBAIC0zMTksMTMgKzMxOSwxMyBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Np
b246OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiAgICAgfQogCiAgICAgaWYgKE5TQXBwLmhpZGRl
bikgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xs
ZXI6IEFwcGxpY2F0aW9uIGlzIGhpZGRlbi4gV2FpdGluZyB0byBkaXNtaXNzIHVudGlsIGFjdGl2
ZS4iKTsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coImRpc21pc3NW
aWV3Q29udHJvbGxlcjogQXBwbGljYXRpb24gaXMgaGlkZGVuLiBXYWl0aW5nIHRvIGRpc21pc3Mg
dW50aWwgYWN0aXZlLiIpOwogICAgICAgICBpZiAobV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2Vy
dmVyKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0Nv
bnRyb2xsZXI6IFtIaWRkZW5dIEFscmVhZHkgaGFzIGFuIFVuaGlkZSBvYnNlcnZlciAoJXApLiBE
ZW1pbmlhdHVyaXplZCBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWlu
aWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdl
dCgpKTsKKyAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNt
aXNzVmlld0NvbnRyb2xsZXI6IFtIaWRkZW5dIEFscmVhZHkgaGFzIGFuIFVuaGlkZSBvYnNlcnZl
ciAoJXApLiBEZW1pbmlhdHVyaXplZCBvYnNlcnZlciBpcyAlcCIsIG1fcHJlc2VudGluZ1dpbmRv
d0RpZERlbWluaWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9i
c2VydmVyLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBt
X2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxpY2F0aW9uRGlkVW5oaWRlTm90
aWZpY2F0aW9uIG9iamVjdDpOU0FwcCBxdWV1ZTpuaWwgdXNpbmdCbG9jazpbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIChOU05vdGlmaWNhdGlvbiAqKSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmlld0NvbnRyb2xsZXI6IEFwcGxp
Y2F0aW9uIGlzIG5vIGxvbmdlciBoaWRkZW4uIENvbXBsZXRpbmcgdGhlIGRpc21pc3NhbC4iKTsK
KyAgICAgICAgICAgIEFVVEhPUklaQVRJT05TRVNTSU9OX1JFTEVBU0VfTE9HKCJkaXNtaXNzVmll
d0NvbnRyb2xsZXI6IEFwcGxpY2F0aW9uIGlzIG5vIGxvbmdlciBoaWRkZW4uIENvbXBsZXRpbmcg
dGhlIGRpc21pc3NhbC4iKTsKICAgICAgICAgICAgIGRpc21pc3NWaWV3Q29udHJvbGxlcigpOwog
ICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjptX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIuZ2V0KCldOwogICAgICAgICAg
ICAgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyID0gbnVsbHB0cjsKQEAgLTMzNywxMCAr
MzM3LDEwIEBAIHZvaWQgU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9s
bGVyKCkKICAgICBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2ZXIgPSBudWxscHRyOwogCiAg
ICAgYXV0byAqcHJlc2VudGluZ1dpbmRvdyA9IG1fc2hlZXRXaW5kb3cuZ2V0KCkuc2hlZXRQYXJl
bnQ7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBD
YWxsaW5nIGVuZFNoZWV0IG9uICVwIGZvciBzaGVldCAlcC4iLCBwcmVzZW50aW5nV2luZG93LCBt
X3NoZWV0V2luZG93LmdldCgpKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xP
RygiZGlzbWlzc1ZpZXdDb250cm9sbGVyOiBDYWxsaW5nIGVuZFNoZWV0IG9uICVwIGZvciBzaGVl
dCAlcC4iLCBwcmVzZW50aW5nV2luZG93LCBtX3NoZWV0V2luZG93LmdldCgpKTsKICAgICBbcHJl
c2VudGluZ1dpbmRvdyBlbmRTaGVldDptX3NoZWV0V2luZG93LmdldCgpXTsKICAgICBtX3NoZWV0
V2luZG93ID0gbnVsbHB0cjsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaXNtaXNzVmll
d0NvbnRyb2xsZXI6IEZpbmlzaGVkIGNhbGwgd2l0aCBkZW1pbmlhdHVyaXplZCBvYnNlcnZlciAo
JXApIGFuZCBIaWRkZW4gb2JzZXJ2ZXIgKCVwKSIsIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWlu
aWF0dXJpemVPYnNlcnZlci5nZXQoKSwgbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdl
dCgpKTsKKyAgICBBVVRIT1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygiZGlzbWlzc1ZpZXdD
b250cm9sbGVyOiBGaW5pc2hlZCBjYWxsIHdpdGggZGVtaW5pYXR1cml6ZWQgb2JzZXJ2ZXIgKCVw
KSBhbmQgSGlkZGVuIG9ic2VydmVyICglcCkiLCBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlh
dHVyaXplT2JzZXJ2ZXIuZ2V0KCksIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQo
KSk7CiAjZWxpZiBQTEFURk9STShJT1MpCiAgICAgW1ttX3ZpZXdDb250cm9sbGVyIHByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcl0gZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBs
ZXRpb246bmlsXTsKICNlbmRpZgpAQCAtMzUwLDYgKzM1MCw2IEBAIHZvaWQgU09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgQVVUSE9SSVpBVElP
TlNFU1NJT05fUkVMRUFTRV9MT0cKIAogI2VuZGlmIC8vIEhBVkUoQVBQX1NTTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAwZmU2
MmRjOWM5NjllY2U4NThhMTBmYzhhMDAwODE3YmViNGM2ZGE3Li5iYjRhNGMyZjZhMTdmNGFkYTI2
OWEzNDUwZjljMjc2ZjY0OGM3MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC01NSw4ICs1NSw4IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UuaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1
NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWksIG5hdmlnYXRpb25JRD0lIiBQUkl1
NjQgIl0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX3BhZ2UuaWRlbnRpZmll
cigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVw
IC0gW3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0l
aSwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiXSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQs
IHRoaXMsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX25hdmlnYXRpb25JRCwgIyNf
X1ZBX0FSR1NfXykKKyNkZWZpbmUgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coY2hh
bm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJRD0l
IiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBQSUQ9JWksIG5hdmlnYXRpb25JRD0l
IiBQUkl1NjQgIl0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlzLCBtX3BhZ2UuaWRl
bnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9uYXZpZ2F0aW9uSUQsICMjX19WQV9BUkdTX18pCisjZGVm
aW5lIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJ
dTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpLCBuYXZpZ2F0aW9uSUQ9JSIgUFJJ
dTY0ICJdIFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9wYWdlLmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fbmF2aWdhdGlvbklELCAjI19fVkFfQVJHU19fKQogCiBQcm92aXNp
b25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+IHN1c3BlbmRlZFBhZ2UsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBpc1Nl
cnZlclJlZGlyZWN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
QVBJOjpXZWJzaXRlUG9saWNpZXMqIHdlYnNpdGVQb2xpY2llcykKICAgICA6IG1fcGFnZShwYWdl
KQpAQCAtNzYsNyArNzYsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdl
UHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1BybwogI2VuZGlmCiAjZW5k
aWYKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zp
c2lvbmFsUGFnZVByb3h5OiBzdXNwZW5kZWRQYWdlPSVwIiwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7
CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
UHJvdmlzaW9uYWxQYWdlUHJveHk6IHN1c3BlbmRlZFBhZ2U9JXAiLCBzdXNwZW5kZWRQYWdlLmdl
dCgpKTsKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0aGlzKTsKICAg
ICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsKQEAgLTExOCw3ICsx
MTgsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNzRGlk
VGVybWluYXRlOiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9S
KFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6Iik7CiAgICAgbV9wYWdlLnBy
b3Zpc2lvbmFsUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogfQogCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAgICAgICAgCiAgICAgQVNTRVJU
KG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nKTsK
IAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBT
aW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7CisgICAgUFJPVklT
SU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBTaW11
bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7CiAgICAgQVNTRVJUKG1f
bWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpjYW5jZWxsZWRFcnJvcihtX3Jl
cXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6
Q2FuY2VsbGF0aW9uKTsKQEAgLTE2NCwxNCArMTY0LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmluaXRpYWxpemVXZWJQYWdlKFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3
ZWJzCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlv
biYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiIpOworICAgIFBST1ZJU0lP
TkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiIpOwog
CiAgICAgbV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlS
ZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywg
YmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
WWVzLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2ll
cyksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3Qo
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDoiKTsKKyAgICBQ
Uk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVx
dWVzdDoiKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250
aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3Zlcndy
aXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdlIG5lZWQgdG8g
bWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVyIGFzIHdlIHdh
bnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0byBoYXBwZW4g
aW4gdGhlCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIAogdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFJlZlB0cjxBUEk6
OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiIpOworICAg
IFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImdvVG9C
YWNrRm9yd2FyZEl0ZW06Iik7CiAKICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX3BhZ2UuYmFja0Zv
cndhcmRMaXN0KCkuZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0gJml0ZW1d
KGF1dG8mIGl0ZW0pIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tGb3J3YXJkQ2FjaGVFbnRyeSA9
IGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCkpIHsKQEAgLTIxNCw3ICsyMTQsNyBAQCBpbmxp
bmUgYm9vbCBQcm92aXNpb25hbFBhZ2VQcm94eTo6dmFsaWRhdGVJbnB1dChGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgcwogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVh
dGVNYWluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IGZyYW1lSUQ9
JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZU1haW5GcmFtZTogZnJhbWVJ
RD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKCFtX21haW5GcmFt
ZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZShtX3BhZ2UsIGZy
YW1lSUQpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lCiAgICAg
aWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9V
SW50NjQoKSk7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1
NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJM
LmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHVybDsKIApAQCAtMjcyLDcg
KzI3Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0
KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAg
ICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3dhcHBpbmcs
ICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFt
ZUlELnRvVUludDY0KCkpOwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxs
KCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yODgsNyArMjg4LDcg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJ
RCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9
JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogZnJh
bWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAgICAgbV9wcm92aXNpb25hbExv
YWRVUkwgPSB7IH07CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAK
QEAgLTQyMSwxNCArNDIxLDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNvbnRlbnRG
aWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZShjb25zdCBXZWJDb3JlOjpDb250CiAjaWYgSEFWRShW
SVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVy
SG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJp
bGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9JXUiLCBjb250ZXh0SUQpOworICAgIFBST1ZJU0lP
TkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRl
eHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb246IGNvbnRleHRJRD0ldSIsIGNv
bnRleHRJRCk7CiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlBy
b2Nlc3MgPSBjb250ZXh0SUQ7CiB9CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJp
bGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVDb250ZXh0
SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9JXUiLCBjb250
ZXh0SUQpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgImRpZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRp
b246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7CiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmls
aXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MgPSBjb250ZXh0SUQ7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbQppbmRleCA5ODM1YTY0NTcwNGE1Zjk2YzIzNGNiOTAzMzRmYjg0OTg1MThjMGFh
Li4xNDk1ZDg5YzIyNDNjYjQ4YjA1M2JiZjU5OTU1NGM5MWM5NDdlOGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtNTA0LDcgKzUwNCw3
IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aGFzVmlzaWJsZUNvbnRl
bnQoKSBjb25zdAogCiBib29sIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5
LmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5z
ZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKIH0KIAogQ0FMYXllciAqUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bGF5ZXJXaXRoSURGb3JUZXN0aW5nKHVpbnQ2
NF90IGxheWVySUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBlYmU1OWNiYjNjNGQxOWI0ZjJhNzVhMDlmZmMyNmY4MzlkNzdkNjVlLi5hZTRhMGY0
NzM0NjY1ZmZiNjU1ZmQ5MjczOTE5YTA3MzUzYjExNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxNSw4ICszMTUsOCBAQAogI2RlZmluZSBNRVNTQUdF
X0NIRUNLX1VSTChwcm9jZXNzLCB1cmwpIE1FU1NBR0VfQ0hFQ0tfQkFTRShjaGVja1VSTFJlY2Vp
dmVkRnJvbUN1cnJlbnRPclByZXZpb3VzV2ViUHJvY2Vzcyhwcm9jZXNzLCB1cmwpLCBwcm9jZXNz
LT5jb25uZWN0aW9uKCkpCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihwcm9jZXNz
LCBhc3NlcnRpb24sIGNvbXBsZXRpb24pIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTl9CQVNFKGFz
c2VydGlvbiwgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLCBjb21wbGV0aW9uKQogCi0jZGVmaW5lIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIg
UFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIg
Zm10LCB0aGlzLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQotI2RlZmlu
ZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0g
W3BhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIFBJRD0laV0g
V2ViUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG1fd2Vi
UGFnZUlELnRvVUludDY0KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIyNfX1ZB
X0FSR1NfXykKKyNkZWZpbmUgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwg
Li4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIs
IHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgUElEPSVpXSBXZWJQYWdlUHJveHk6OiIgZm10LCB0aGlz
LCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VS
Uk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUi
IFBSSXU2NCAiLCBQSUQ9JWldIFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAKIC8vIFJlcHJlc2VudHMgdGhlIG51bWJlciBv
ZiB3aGVlbCBldmVudHMgd2UgY2FuIGhvbGQgaW4gdGhlIHF1ZXVlIGJlZm9yZSB3ZSBzdGFydCBw
dXNoaW5nIHRoZW0gcHJlZW1wdGl2ZWx5Lgogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdoZWVsRXZl
bnRRdWV1ZVNpemVUaHJlc2hvbGQgPSAxMDsKQEAgLTUxMCw3ICs1MTAsNyBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIFJlZgogICAgICwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KG1fY29uZmlndXJhdGlvbi0+bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpKQog
I2VuZGlmCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0
b3I6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJjb25zdHJ1Y3Rv
cjoiKTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAg
ICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7
CkBAIC01NzIsNyArNTcyLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKIAogV2ViUGFnZVBy
b3h5Ojp+V2ViUGFnZVByb3h5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkZXN0cnVjdG9yOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5n
LCAiZGVzdHJ1Y3RvcjoiKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9pZGVu
dGlmaWVyKSAhPSB0aGlzKTsKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtODIzLDcgKzgyMyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbiwgUHJvCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBB
U1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNzKCkpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibGF1bmNoUHJvY2VzczoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImxhdW5jaFByb2Nlc3M6Iik7CiAKICAgICAvLyBJbiBjYXNlIHdlIGFyZSBj
dXJyZW50bHkgY29ubmVjdGVkIHRvIHRoZSBkdW1teSBwcm9jZXNzLCB3ZSBuZWVkIHRvIG1ha2Ug
c3VyZSB0aGUgaW5zcGVjdG9yIHByb3h5CiAgICAgLy8gZGlzY29ubmVjdHMgZnJvbSB0aGUgZHVt
bXkgcHJvY2VzcyBmaXJzdC4KQEAgLTg2NSwxMiArODY1LDEyIEBAIGJvb2wgV2ViUGFnZVByb3h5
OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgc3RkCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghaGFzQ29tbWl0dGVkQW55
UHJvdmlzaW9uYWxMb2FkcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRp
bmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGhhcyBub3QgY29tbWl0
dGVkIGFueSBsb2FkIHlldCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAg
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3Vy
cmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nl
c3MgcGlkICVpIGJlY2F1c2UgaGFzIG5vdCBjb21taXR0ZWQgYW55IGxvYWQgeWV0IiwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAogICAgIGlmIChpc1BhZ2VPcGVuZWRCeURPTVNob3dpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZv
ciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIGl0IGlzIHNob3dpbmcgdGhlIGluaXRpYWwgZW1wdHkg
ZG9jdW1lbnQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdl
SWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAl
aSBiZWNhdXNlIGl0IGlzIHNob3dpbmcgdGhlIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQiLCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC04NzksMjUgKzg3OSwyNSBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZAogICAgIC8v
IElmIHRoZSBzb3VyY2UgYW5kIHRoZSBkZXN0aW5hdGlvbiBiYWNrIC8gZm9yd2FyZCBsaXN0IGl0
ZW1zIGFyZSB0aGUgc2FtZSwgdGhlbiB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3QuIElu
IHRoaXMgY2FzZSwKICAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIHN1c3BlbmQgdGhlIHByZXZp
b3VzIHBhZ2UgYXMgdGhlcmUgd2lsbCBiZSBubyB3YXkgdG8gZ2V0IGJhY2sgdG8gaXQuCiAgICAg
aWYgKGZyb21JdGVtICYmIGZyb21JdGVtID09IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdl
IGZvciBwcm9jZXNzIHBpZCAlaSBiZWNhdXNlIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVj
dCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIGJlY2F1
c2UgdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChmcm9t
SXRlbSAmJiBmcm9tSXRlbS0+dXJsKCkgIT0gcGFnZUxvYWRTdGF0ZSgpLnVybCgpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVu
ZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBw
cm9jZXNzIHBpZCAlaSBiZWNhdXNlIGZyb21JdGVtJ3MgVVJMIGRvZXMgbm90IG1hdGNoIHRoZSBw
YWdlIFVSTC4iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNz
IHBpZCAlaSBiZWNhdXNlIGZyb21JdGVtJ3MgVVJMIGRvZXMgbm90IG1hdGNoIHRoZSBwYWdlIFVS
TC4iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc1N1c3BlbmRlZFBhZ2VUb1ByZXZlbnRGbGFzaGlu
ZyA9IHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoID09IFNob3VsZERlbGF5
Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoOjpZZXM7CiAgICAgaWYgKCFuZWVkc1N1c3BlbmRl
ZFBhZ2VUb1ByZXZlbnRGbGFzaGluZyAmJiAoIWZyb21JdGVtIHx8ICFzaG91bGRVc2VCYWNrRm9y
d2FyZENhY2hlKCkpKSB7CiAgICAgICAgIGlmICghZnJvbUl0ZW0pCi0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlm
UG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkg
dGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIiwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qg
c3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIHRoZXJlIGlzIG5vIGFz
c29jaWF0ZWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGUgYmFjayAvIGZvcndh
cmQgY2FjaGUgaXMgZGlzYWJsZWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwor
ICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInN1
c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBm
b3IgcHJvY2VzcyBwaWQgJWkgdGhlIGJhY2sgLyBmb3J3YXJkIGNhY2hlIGlzIGRpc2FibGVkIiwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHBy
b2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdl
SWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2Ug
PSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVm
KCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gp
OwogCiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBj
cmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJk
IGl0ZW0gJXMiIFBSSXU2NCwgaWRlbnRpZmllcigpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2Ut
PmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRl
bSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOwpAQCAtOTI3LDcgKzkyNyw3
IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRVc2VCYWNrRm9yd2FyZENhY2hlKCkgY29uc3QK
IHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRy
PFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwcm92aXNpb25hbFBhZ2UpCiB7CiAgICAgQVNTRVJUKCFt
X2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9Q
cm92aXNpb25hbFBhZ2U6IG5ld1dlYlBhZ2VJRD0lIiBQUkl1NjQsIHByb3Zpc2lvbmFsUGFnZS0+
d2ViUGFnZUlEKCkudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJzd2FwVG9Qcm92aXNpb25hbFBhZ2U6IG5ld1dlYlBhZ2VJRD0lIiBQUkl1NjQsIHBy
b3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3Byb2Nlc3Mg
PSBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKTsKICAgICBtX3dlYlBhZ2VJRCA9IHByb3Zpc2lv
bmFsUGFnZS0+d2ViUGFnZUlEKCk7CkBAIC05NDEsOCArOTQxLDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdl
UHJveHk+IHAKICNlbmRpZgogI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogRG8gd2UgcmVhbGx5IG5l
ZWQgdG8gZGlzYWJsZSB0aGlzIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zPwogICAgIGlm
IChtX2xvZ2dlcikKLSAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCkpOworICAgICAgICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCAh
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSk7CiAKICAgICBtX2hhc1J1bm5pbmdQcm9jZXNzID0g
dHJ1ZTsKIApAQCAtMTAzNSwxMCArMTAzNiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0
YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDoiKTsKKyAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6Iik7CiAKICAg
ICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6
IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAK
QEAgLTEwNDcsNyArMTA0OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94
eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgbGF1bmNoUHJvY2VzcyhyZWdpc3RyYWJs
ZURvbWFpbiwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6Q3Jhc2gpOwogCiAgICAgaWYgKCFtX2JhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8g
cmVsb2FkIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibGF1
bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJlbG9hZCIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTExMDksNyArMTExMCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjbG9zZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiIpOworICAgIFdF
QlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY2xvc2U6Iik7CiAKICAgICBtX2lzQ2xv
c2VkID0gdHJ1ZTsKIApAQCAtMTE4OCw3ICsxMTg5LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnRy
eUNsb3NlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAidHJ5Q2xvc2U6Iik7
CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJ0cnlDbG9zZToiKTsKIAog
ICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIg
Z29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2UgY2hlY2sgYSBw
ZXItcHJvY2VzcyBzdGF0dXMgYml0LgpAQCAtMTIxMyw3ICsxMjE0LDcgQEAgYm9vbCBXZWJQYWdl
UHJveHk6OnRyeUNsb3NlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlVGltZWRPdXQo
KQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgInRyeUNsb3Nl
VGltZWRPdXQ6IFRpbWVkIG91dCB3YWl0aW5nIGZvciB0aGUgcHJvY2VzcyB0byByZXNwb25kIHRv
IHRoZSBXZWJQYWdlOjpUcnlDbG9zZSBJUEMsIGNsb3NpbmcgdGhlIHBhZ2Ugbm93Iik7CisgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJ0cnlDbG9zZVRpbWVkT3V0
OiBUaW1lZCBvdXQgd2FpdGluZyBmb3IgdGhlIHByb2Nlc3MgdG8gcmVzcG9uZCB0byB0aGUgV2Vi
UGFnZTo6VHJ5Q2xvc2UgSVBDLCBjbG9zaW5nIHRoZSBwYWdlIG5vdyIpOwogICAgIGNsb3NlUGFn
ZSgpOwogfQogCkBAIC0xMzEwLDcgKzEzMTEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwog
ICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiIpOworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFJlcXVlc3Q6Iik7CiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21h
aW4geyByZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNz
KTsKQEAgLTEzMzIsNyArMTMzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQ6Iik7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkOiIp
OwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigp
OwogCkBAIC0xMzY4LDEwICsxMzY5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5n
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZEZpbGU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRp
bmcsICJsb2FkRmlsZToiKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZCIpOwor
ICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRGaWxlOiBwYWdl
IGlzIGNsb3NlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEzODAs
NyArMTM4MSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZp
bGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKICAgICBVUkwgZmlsZVVSTCA9
IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxl
KCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6
IGZpbGUgaXMgbm90IGxvY2FsIik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhM
b2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsIik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMTM5MCw3ICsxMzkxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcs
IGNvbnMKICAgICBlbHNlIHsKICAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwoVVJM
KCksIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nKTsKICAgICAgICAgaWYgKCFyZXNvdXJjZURp
cmVjdG9yeVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbCIpOwor
ICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJsb2FkRmlsZTog
cmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDI0LDcgKzE0MjUsNyBAQCBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmlu
ZywgY29ucwogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkRGF0YToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRE
YXRhOiIpOwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChNSU1FVHlw
ZSA9PSAidGV4dC9odG1sIl9zICYmICFpc0Z1bGxXZWJCcm93c2VyKCkpCkBAIC0xNDMyLDcgKzE0
MzMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogI2VuZGlmCiAKICAgICBpZiAobV9pc0Ns
b3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0
YTogcGFnZSBpcyBjbG9zZWQiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCkBAIC0xNDUwLDcgKzE0NTEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
YwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBh
Z2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRo
TmF2aWdhdGlvbiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9h
ZERhdGFXaXRoTmF2aWdhdGlvbiIpOwogCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAt
MTQ3OCw3ICsxNDc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRp
b25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogCiBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHNpbXVsYXRlZFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiBzaW11bGF0ZWRSZXNwb25zZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRTaW11bGF0ZWRSZXF1
ZXN0OiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFNpbXVs
YXRlZFJlcXVlc3Q6Iik7CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYg
KHNpbXVsYXRlZFJlc3BvbnNlLm1pbWVUeXBlKCkgPT0gInRleHQvaHRtbCJfcyAmJiAhaXNGdWxs
V2ViQnJvd3NlcigpKQpAQCAtMTQ4Niw3ICsxNDg3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXUKICNlbmRpZgogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFNpbXVsYXRlZFJlcXVlc3Q6IHBhZ2UgaXMgY2xvc2Vk
Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFNpbXVs
YXRlZFJlcXVlc3Q6IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtMTUzMiwxMyArMTUzMywxMyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUwi
KTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRBbHRlcm5hdGVI
VE1MIik7CiAKICAgICAvLyBXaGVuIHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2Yg
aGFuZGxpbmcgYSBmYWlsaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRvCiAg
ICAgLy8gc3RhcnQgYSBzZWNvbmQgYWx0ZXJuYXRpdmUgSFRNTCBsb2FkIGFzIHRoaXMgd2lsbCBw
cmV2ZW50IHRoZSBwYWdlIGxvYWQgc3RhdGUgZnJvbSBiZWluZwogICAgIC8vIGhhbmRsZWQgcHJv
cGVybHkuCiAgICAgaWYgKG1faXNDbG9zZWQgfHwgbV9pc0xvYWRpbmdBbHRlcm5hdGVIVE1MU3Ry
aW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90
aGVyKSIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRB
bHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTE1NzUsMTAgKzE1NzYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0
IFMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdl
YkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiIpOwogCiAgICAg
aWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBj
bG9zZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTYwMiwxMCArMTYwMywxMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJj
aGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIEludFBv
aW50IGRvY3VtZW50UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50KQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENs
aWNrOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6Iik7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6Iik7CisgICAgICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVk
Q2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
NjIxLDEwICsxNjIyLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywKIAogdm9pZCBXZWJQYWdl
UHJveHk6OnN0b3BMb2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJzdG9wTG9hZGluZzoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGlu
ZywgInN0b3BMb2FkaW5nOiIpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5r
V2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZCIpOworICAgICAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjM4LDcgKzE2MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2Vi
Q29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgInJlbG9hZDoiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgInJlbG9hZDoiKTsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xNzE5LDExICsxNzIwLDExIEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBl
IGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Z29Ub0JhY2tGb3J3YXJkSXRlbToiKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9h
ZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06Iik7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdl
UHJveHkgJXAgZ29Ub0JhY2tGb3J3YXJkSXRlbSB0byBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0u
dXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdl
IGlzIGNsb3NlZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywg
ImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBhZ2UgaXMgY2xvc2VkIik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMTc0OSwxMCArMTc1MCwxMCBAQCBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRM
aXN0SXRlbQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb246Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJ0cnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb246Iik7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNj
cm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZCIpOworICAgICAgICBXRUJQQUdFUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBu
b3QgdmFsaWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjAyMSw3ICsyMDIyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2
aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGQKICAgICAgICAgaWYgKGlzTm93VmlzaWJsZSkKICAg
ICAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsK
ICAgICAgICAgaWYgKHdhc1Zpc2libGUgIT0gaXNOb3dWaXNpYmxlKQotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChWaWV3U3RhdGUsICJ1cGRhdGVBY3Rpdml0eVN0YXRlOiB2aWV3
IHZpc2liaWxpdHkgc3RhdGUgY2hhbmdlZCAlZCAtPiAlZCIsIHdhc1Zpc2libGUsIGlzTm93Vmlz
aWJsZSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coVmlld1N0YXRlLCAi
dXBkYXRlQWN0aXZpdHlTdGF0ZTogdmlldyB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZWQgJWQgLT4g
JWQiLCB3YXNWaXNpYmxlLCBpc05vd1Zpc2libGUpOwogICAgIH0KICAgICBpZiAoZmxhZ3NUb1Vw
ZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgJiYgcGFnZUNsaWVudCgp
LmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkpCiAgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQo
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCk7CkBAIC0yMTgxLDExICsyMTgyLDYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAjZW5k
aWYKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
OwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiB7CiAgICAg
Ym9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkID0gbV9wcmVmZXJlbmNlcy0+cGFnZVZpc2li
aWxpdHlCYXNlZFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKTsKQEAgLTIyMDQsMjMgKzIyMDAs
MjMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKGlzVmlld1Zpc2libGUoKSkgewogICAgICAgICBpZiAo
IW1faXNWaXNpYmxlQWN0aXZpdHkgfHwgIW1faXNWaXNpYmxlQWN0aXZpdHktPmlzVmFsaWQoKSkg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwg
InVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIHZpc2libGUiKTsKKyAgICAgICAgICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3Rh
dGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRo
ZSB2aWV3IGlzIHZpc2libGUiKTsKICAgICAgICAgICAgIG1faXNWaXNpYmxlQWN0aXZpdHkgPSBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyB2aXNpYmxl
Il9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9pc1Zp
c2libGVBY3Rpdml0eSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
dXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBh
IGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgbm8gbG9uZ2VyIHZpc2li
bGUiKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91
bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgbm8gbG9uZ2VyIHZpc2libGUiKTsKICAg
ICAgICAgbV9pc1Zpc2libGVBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgYm9vbCBp
c0F1ZGlibGUgPSBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNBdWRp
YmxlKTsKICAgICBpZiAoaXNBdWRpYmxlKSB7CiAgICAgICAgIGlmICghbV9pc0F1ZGlibGVBY3Rp
dml0eSB8fCAhbV9pc0F1ZGlibGVBY3Rpdml0eS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVT
dGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ug
d2UgYXJlIHBsYXlpbmcgYXVkaW8iKTsKKyAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBp
cyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHdlIGFyZSBwbGF5aW5nIGF1
ZGlvIik7CiAgICAgICAgICAgICBtX2lzQXVkaWJsZUFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlZpZXcgaXMgcGxheWluZyBhdWRpbyJfcykubW92
ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIH0KICAgICAgICAgbV9hdWRpYmxlQWN0aXZpdHlUaW1l
ci5zdG9wKCk7CiAgICAgfSBlbHNlIGlmIChtX2lzQXVkaWJsZUFjdGl2aXR5KSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRs
ZVN0YXRlOiBVSVByb2Nlc3Mgd2lsbCByZWxlYXNlIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gaW4g
JWcgc2Vjb25kcyBiZWNhdXNlIHdlIGFyZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIsIGF1ZGli
bGVBY3Rpdml0eUNsZWFyRGVsYXkuc2Vjb25kcygpKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9j
ZXNzIHdpbGwgcmVsZWFzZSBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGluICVnIHNlY29uZHMgYmVj
YXVzZSB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcgYXVkaW8iLCBhdWRpYmxlQWN0aXZpdHlDbGVh
ckRlbGF5LnNlY29uZHMoKSk7CiAgICAgICAgIGlmICghbV9hdWRpYmxlQWN0aXZpdHlUaW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICAgICAgbV9hdWRpYmxlQWN0aXZpdHlUaW1lci5zdGFydE9uZVNo
b3QoYXVkaWJsZUFjdGl2aXR5Q2xlYXJEZWxheSk7CiAgICAgfQpAQCAtMjIyOCwxMSArMjIyNCwx
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgYm9vbCBp
c0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6
OklzQ2FwdHVyaW5nTWVkaWEpOwogICAgIGlmIChpc0NhcHR1cmluZ01lZGlhKSB7CiAgICAgICAg
IGlmICghbV9pc0NhcHR1cmluZ0FjdGl2aXR5IHx8ICFtX2lzQ2FwdHVyaW5nQWN0aXZpdHktPmlz
VmFsaWQoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3Vz
cGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3Jl
Z3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlIik7CisgICAg
ICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRh
dGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRp
b24gYmVjYXVzZSBtZWRpYSBjYXB0dXJlIGlzIGFjdGl2ZSIpOwogICAgICAgICAgICAgbV9pc0Nh
cHR1cmluZ0FjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZp
dHkoIlZpZXcgaXMgY2FwdHVyaW5nIG1lZGlhIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAobV9pc0NhcHR1cmluZ0FjdGl2aXR5KSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0
YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVz
ZSBtZWRpYSBjYXB0dXJlIGlzIG5vIGxvbmdlciBhY3RpdmUiKTsKKyAgICAgICAgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTog
VUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVk
aWEgY2FwdHVyZSBpcyBubyBsb25nZXIgYWN0aXZlIik7CiAgICAgICAgIG1faXNDYXB0dXJpbmdB
Y3Rpdml0eSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlmCkBAIC0yMjQxLDcgKzIyMzcsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckF1ZGlibGVBY3Rpdml0eSgpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90
dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBi
ZWNhdXNlIHdlIGFyZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIpOworICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJ
UHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHdlIGFy
ZSBubyBsb25nZXIgcGxheWluZyBhdWRpbyIpOwogICAgIG1faXNBdWRpYmxlQWN0aXZpdHkgPSBu
dWxscHRyOwogfQogI2VuZGlmCkBAIC0yNTI0LDcgKzI1MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkVXBkYXRlUmVuZGVyaW5nQWZ0ZXJDb21taXR0aW5nTG9hZCgpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c3RvcE1ha2luZ1ZpZXdCbGFua0R1ZVRvTGFja09mUmVuZGVyaW5nVXBkYXRlKCkKIHsK
ICAgICBBU1NFUlQobV9oYXNVcGRhdGVkUmVuZGVyaW5nQWZ0ZXJEaWRDb21taXRMb2FkKTsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJzdG9wTWFraW5nVmlld0JsYW5rRHVl
VG9MYWNrT2ZSZW5kZXJpbmdVcGRhdGU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KFByb2Nlc3MsICJzdG9wTWFraW5nVmlld0JsYW5rRHVlVG9MYWNrT2ZSZW5kZXJpbmdVcGRhdGU6
Iik7CiAgICAgcGFnZUNsaWVudCgpLm1ha2VWaWV3QmxhbmsoZmFsc2UpOwogfQogCkBAIC0yNTQw
LDcgKzI1MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bWFrZVZpZXdCbGFua0lmVW5wYWludGVk
U2luY2VMYXN0TG9hZENvbW1pdCgpCiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZE1ha2VWaWV3
QmxhbmsgPSB0cnVlOwogI2VuZGlmCiAgICAgICAgIGlmIChzaG91bGRNYWtlVmlld0JsYW5rKSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJtYWtlVmlld0Js
YW5rSWZVbnBhaW50ZWRTaW5jZUxhc3RMb2FkQ29tbWl0OiBNYWtpbmcgdGhlIHZpZXcgYmxhbmsg
YmVjYXVzZSBvZiBhIEpTIHByb21wdCBiZWZvcmUgdGhlIGZpcnN0IHBhaW50IGZvciBpdHMgcGFn
ZSIpOworICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJtYWtl
Vmlld0JsYW5rSWZVbnBhaW50ZWRTaW5jZUxhc3RMb2FkQ29tbWl0OiBNYWtpbmcgdGhlIHZpZXcg
YmxhbmsgYmVjYXVzZSBvZiBhIEpTIHByb21wdCBiZWZvcmUgdGhlIGZpcnN0IHBhaW50IGZvciBp
dHMgcGFnZSIpOwogICAgICAgICAgICAgcGFnZUNsaWVudCgpLm1ha2VWaWV3QmxhbmsodHJ1ZSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0zMzU0LDcgKzMzNTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2Vi
RnJhbWVQcm94eSYgZnJhbWUsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiBwb2xpY2ll
cywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjog
ZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1IiwgZnJhbWUu
ZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9u
SUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24pOworICAgIFdFQlBBR0VQUk9YWV9SRUxF
QVNFX0xPRyhMb2FkaW5nLCAicmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246IGZyYW1l
SUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUsIHBvbGljeUFjdGlvbj0ldSIsIGZyYW1lLmZyYW1l
SUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkg
OiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uKTsKIAogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3Jl
PiB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmNvcHlSZWYoKTsKICAgICBp
ZiAocG9saWNpZXMpIHsKQEAgLTM0MTYsMTAgKzM0MTIsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIEEKICAgICAgICAgYm9vbCBzaG91bGRQcm9jZXNzU3dhcCA9IHByb2Nlc3NGb3JOYXZpZ2F0
aW9uLnB0cigpICE9IHNvdXJjZVByb2Nlc3MucHRyKCk7CiAgICAgICAgIGlmIChzaG91bGRQcm9j
ZXNzU3dhcCkgewogICAgICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9uOjpTdG9w
QWxsTG9hZHM7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2Fw
cGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sIHN3YXBwaW5nIHByb2Nlc3Mg
JWkgd2l0aCBwcm9jZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19T
VFJJTkcsIHByb2Nlc3NJZGVudGlmaWVyKCksIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLT5wcm9jZXNz
SWRlbnRpZmllcigpLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbiwgc3dhcHBpbmcgcHJvY2VzcyAlaSB3aXRoIHByb2Nlc3MgJWkgZm9yIG5hdmln
YXRpb24sIHJlYXNvbj0lIiBQVUJMSUNfTE9HX1NUUklORywgcHJvY2Vzc0lkZW50aWZpZXIoKSwg
cHJvY2Vzc0Zvck5hdmlnYXRpb24tPnByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBw
aW5nKSBTd2l0Y2hpbmcgZnJvbSBwcm9jZXNzICVpIHRvIG5ldyBwcm9jZXNzICglaSkgZm9yIG5h
dmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHByb2Nlc3NG
b3JOYXZpZ2F0aW9uLT5wcm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9u
SUQoKSwgbmF2aWdhdGlvbi0+bG9nZ2luZ1N0cmluZygpKTsKICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246IGtlZXAgdXNpbmcgcHJvY2VzcyAlaSBmb3IgbmF2aWdh
dGlvbiwgcmVhc29uPSUiIFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCBy
ZWFzb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoga2Vl
cCB1c2luZyBwcm9jZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb249JSIgUFVCTElDX0xPR19T
VFJJTkcsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKIAogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gb3B0aW9uYWxIYW5k
bGU7CiAgICAgICAgIGlmIChzaG91bGRQcm9jZXNzU3dhcCkgewpAQCAtMzQ5OCw3ICszNDk0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9u
IGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zp
c2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3Vy
ZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29yZTo6TW91c2VFdmVudFBv
bGljeSBtb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
QVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRD0laSIsIG1fcHJvdmlzaW9uYWxQ
YWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRD0laSIsIG1f
cHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICAgICBz
dGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vz
cyA9IG1fbWFpbkZyYW1lID8gc3RkOjptYWtlX29wdGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlE
KCkpIDogc3RkOjpudWxsb3B0OwogCkBAIC0zNTM2LDEyICszNTMyLDEyIEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZy
YW1lSW5mb0RhdGEmCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
bmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGlj
aWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2
aWdhdGlvbkluTmV3UHJvY2VzczogbmV3UHJvY2Vzc1BJRD0laSwgaGFzU3VzcGVuZGVkUGFnZT0l
aSIsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZSk7Cisg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25J
bk5ld1Byb2Nlc3M6IG5ld1Byb2Nlc3NQSUQ9JWksIGhhc1N1c3BlbmRlZFBhZ2U9JWkiLCBuZXdQ
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2UpOwogICAgIExPRyhM
b2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcg
d2ViIHByb2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dp
bmdTdHJpbmcoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW5ld1Byb2Nlc3MtPmlzSW5Qcm9jZXNz
Q2FjaGUoKSk7CiAKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3M6IFRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGNh
bmNlbGxpbmcgaXQgKHByb3Zpc29uYWxOYXZpZ2F0aW9uSUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVs
bHUpIiwgbV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLm5hdmln
YXRpb25JRCgpKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzczogVGhlcmUgaXMgYWxyZWFkeSBh
IHBlbmRpbmcgcHJvdmlzaW9uYWwgbG9hZCwgY2FuY2VsbGluZyBpdCAocHJvdmlzb25hbE5hdmln
YXRpb25JRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2
aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCkpOwogICAgICAgICBpZiAobV9w
cm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25JRCgpICE9IG5hdmlnYXRpb24ubmF2aWdhdGlvbklE
KCkpCiAgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Y2FuY2VsKCk7CiAgICAgICAgIG1f
cHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKQEAgLTM2NzQsNyArMzY3MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InN1c3BlbmQ6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJzdXNw
ZW5kOiIpOwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2lzU3VzcGVuZGVkKQog
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogCkBAIC0zNjg0LDcgKzM2
ODAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1l
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdW1lOiIpOworICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAicmVzdW1lOiIpOwogCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpIHx8ICFtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMzczMCw3ICszNzI2LDcgQEAgU2Vzc2lvblN0YXRlIFdl
YlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0Zvcndh
cmRMaXN0SXQKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3Jl
RnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRl
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vz
c2lvblN0YXRlOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAicmVz
dG9yZUZyb21TZXNzaW9uU3RhdGU6Iik7CiAKICAgICBtX3Nlc3Npb25SZXN0b3JhdGlvblJlbmRl
clRyZWVTaXplID0gMDsKICAgICBtX2hpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkID0gZmFsc2U7
CkBAIC00NTQ4LDcgKzQ1NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAgICAgIG5h
dmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAK
ICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBp
ZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0
ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQudG9VSW50NjQoKSwg
bmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBm
cmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gdHJhbnNh
Y3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2FkU3Rh
dGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbik7CkBAIC00NTg1LDcgKzQ1ODEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRXhwbGljaXRPcGVuRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFVSTCYmIHVybCwgUwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNz
LCBmcmFtZSk7CiAKICAgICBpZiAoIWNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlv
dXNXZWJQcm9jZXNzKG1fcHJvY2VzcywgdXJsKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyBXZWJQYWdlUHJveHk6OkRpZEV4cGxpY2l0
T3BlbkZvckZyYW1lKCkgSVBDIGZyb20gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBiZWNhdXNlIHRo
ZSBmaWxlIFVSTCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7CisgICAgICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiSWdub3JpbmcgV2ViUGFnZVByb3h5OjpEaWRF
eHBsaWNpdE9wZW5Gb3JGcmFtZSgpIElQQyBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgYmVj
YXVzZSB0aGUgZmlsZSBVUkwgaXMgb3V0c2lkZSB0aGUgc2FuZGJveCIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00NjEwLDcgKzQ2MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVu
dAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2Fk
aW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJ
dTY0ICIsIHVybCAlcyIsIGZyYW1lSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKQEAgLTQ2MzksNyArNDYzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXksIFdlYkNv
cmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFtZUlEPSUiIFBS
SXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0co
TG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogZnJhbWVJRD0lIiBQ
Ukl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NjUyLDcgKzQ2NDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjbwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiBmcmFt
ZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVM
RUFTRV9MT0coTG9hZGluZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IGZyYW1l
SUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDcwMCw3ICs0Njk2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWUKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENv
bnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2
NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUg
dG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7Ci0gICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAiLCBkb21haW49JXMsIGNvZGU9JWQiLCBm
cmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVy
cm9yQ29kZSgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzcywg
ImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQgIiwgZG9t
YWluPSVzLCBjb2RlPSVkIiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4
KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NzcxLDcgKzQ3NjcsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJgogewogICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQ
cm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQ
Ukl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwogICAgIExPRyhC
YWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0LCBiYWNrL2Zvcndh
cmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2luZ1N0cmluZygpKTsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJh
bWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBmcmFtZUlE
PSUiIFBSSXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ4OTUsNyArNDg5MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIEZyYW1lSW5mb0RhdGEmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIg
UFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDkyMyw3ICs0OTE5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCB1aW50NjQKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hM
b2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0
ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBS
SXU2NCwgZnJhbWVJRC50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0co
TG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1l
SUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdl
Q2xpZW50KCkpOwogCkBAIC00OTc0LDcgKzQ5NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0
ICIsIGRvbWFpbj0lcywgY29kZT0lZCIsIGZyYW1lSUQudG9VSW50NjQoKSwgZXJyb3IuZG9tYWlu
KCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogZnJhbWVJRD0l
IiBQUkl1NjQgIiwgZG9tYWluPSVzLCBjb2RlPSVkIiwgZnJhbWVJRC50b1VJbnQ2NCgpLCBlcnJv
ci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01MDE5LDcgKzUw
MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUsIFVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZTogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFH
RVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWU6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTIwNSw3ICs1
MjAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lv
blNlbmRlcj4mJiBzZW5kZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0
aW9uSUQ9JWxsdSIsIGZyYW1lLmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwor
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSIsIGZyYW1lLmZy
YW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgTE9HKExvYWRpbmcsICJX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBV
UkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCkBAIC01MjIxLDcgKzUyMTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAg
ICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbik7CiAK
ICAgICBpZiAoIWNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNz
KHByb2Nlc3MsIHJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVz
b3VyY2UgYmVjYXVzZSBpdCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7CisgICAgICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBs
b2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIG91dHNpZGUgdGhlIHNhbmRib3gi
KTsKICAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlm
aWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25v
cmUsIDAsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNTI4Nyw3ICs1MjgzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVu
dEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlz
IG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIp
OworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIklnbm9y
aW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFu
ZGxlZCBieSBjb250ZW50IGZpbHRlciIpOwogICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRp
b24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICB9CiAjZW5kaWYKQEAgLTUzMDIsNyArNTI5OCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzCiAjZW5kaWYKIAogICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVm
KGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNl
bmRlciksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIGZyYW1lSW5mbywgdXNlckRhdGFP
YmplY3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGlj
aWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3Np
bmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0Fw
cEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogbGlzdGVuZXIgY2FsbGVk
OiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1LCBwb2xpY3lBY3Rpb249JXUsIHNhZmVC
cm93c2luZ1dhcm5pbmc9JWQsIGlzQXBwQm91bmREb21haW49JWQiLCBmcmFtZS0+ZnJhbWVJRCgp
LnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAs
ICh1bnNpZ25lZClwb2xpY3lBY3Rpb24sICEhc2FmZUJyb3dzaW5nV2FybmluZywgISFpc0FwcEJv
dW5kRG9tYWluKTsKKyAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBsaXN0ZW5lciBjYWxsZWQ6IGZyYW1lSUQ9
JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUsIHBvbGljeUFjdGlvbj0ldSwgc2FmZUJyb3dzaW5nV2Fy
bmluZz0lZCwgaXNBcHBCb3VuZERvbWFpbj0lZCIsIGZyYW1lLT5mcmFtZUlEKCkudG9VSW50NjQo
KSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVk
KXBvbGljeUFjdGlvbiwgISFzYWZlQnJvd3NpbmdXYXJuaW5nLCAhIWlzQXBwQm91bmREb21haW4p
OwogCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cywgZnJhbWUsIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlv
bkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJh
bWUoKSkgewpAQCAtNTMyMSw3ICs1MzE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAg
ICAgICAgICAgIGlmICghc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQ
ZXJtaXR0ZWQoZnJhbWUtPmlzTWFpbkZyYW1lKCksIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0
KCkudXJsKCksIGlzQXBwQm91bmREb21haW4pKSB7CiAgICAgICAgICAgICAgICAgYXV0byBlcnJv
ciA9IGVycm9yRm9yVW5wZXJtaXR0ZWRBcHBCb3VuZERvbWFpbk5hdmlnYXRpb24obmF2aWdhdGlv
bi0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlzLCBGcmFt
ZUluZm9EYXRhIHsgZnJhbWVJbmZvIH0sIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCB1c2VyRGF0
YU9iamVjdCk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChM
b2FkaW5nLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNh
dXNlIGl0IGlzIGF0dGVtcHRpbmcgdG8gbmF2aWdhdGUgYXdheSBmcm9tIGFuIGFwcC1ib3VuZCBk
b21haW4gb3IgbmF2aWdhdGUgYWZ0ZXIgdXNpbmcgcmVzdHJpY3RlZCBBUElzIik7CisgICAgICAg
ICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJJZ25vcmlu
ZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgYXR0ZW1w
dGluZyB0byBuYXZpZ2F0ZSBhd2F5IGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiBvciBuYXZpZ2F0
ZSBhZnRlciB1c2luZyByZXN0cmljdGVkIEFQSXMiKTsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQpAQCAtNTU5Nyw3ICs1NTkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3Rv
cmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZSYgc3RvcmUsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
U2hhcmVkOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQ6Iik7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01NjE3LDcgKzU2MTMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291
cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcs
IEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogZnJhbWVJRD0lIiBQUkl1
NjQsIGZyYW1lSUQudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IGZyYW1lSUQ9JSIgUFJJdTY0
LCBmcmFtZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTY0NCw3ICs1NjQwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmlu
ZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdFNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q6Iik7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01Nzc0LDcgKzU3NzAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQYWdlKCkKICAgICBpZiAoaXNDbG9zZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiY2xv
c2VQYWdlOiIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiY2xvc2VQ
YWdlOiIpOwogICAgIHBhZ2VDbGllbnQoKS5jbGVhckFsbEVkaXRDb21tYW5kcygpOwogICAgIG1f
dWlDbGllbnQtPmNsb3NlKHRoaXMpOwogfQpAQCAtNzQ5NSw3ICs3NDkxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmZvY3VzZWRGcmFtZUNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+JiBmcmEKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzcywg
InByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HX0VSUk9SKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiIpOwog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC03NTA3
LDcgKzc1MDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9u
c2l2ZSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29t
ZVJlc3BvbnNpdmU6Iik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJw
cm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZToiKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzU0OCw3ICs3NTQ0LDcgQEAgVVJMIFdlYlBhZ2VQ
cm94eTo6Y3VycmVudFJlc291cmNlRGlyZWN0b3J5VVJMKCkgY29uc3QKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uIHJlYXNvbikKIHsKICAgICBpZiAocmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6TmF2aWdhdGlvblN3YXApCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoUHJvY2VzcywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IChwaWQgJWQpLCByZWFzb24gJWQiLCBw
cm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24pOworICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0dfRVJST1IoUHJvY2VzcywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IChwaWQgJWQpLCByZWFz
b24gJWQiLCBwcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24pOwogCiAgICAgQVNTRVJUKG1faGFz
UnVubmluZ1Byb2Nlc3MpOwogCkBAIC03NjAyLDcgKzc1OTgsNyBAQCBzdGF0aWMgYm9vbCBzaG91
bGRSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb24g
cmVhc29uKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRl
KFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlOiByZWFz
b249JWQiLCByZWFzb24pOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihMb2Fk
aW5nLCAiZGlzcGF0Y2hQcm9jZXNzRGlkVGVybWluYXRlOiByZWFzb249JWQiLCByZWFzb24pOwog
CiAgICAgYm9vbCBoYW5kbGVkQnlDbGllbnQgPSBmYWxzZTsKICAgICBpZiAobV9sb2FkZXJDbGll
bnQpCkBAIC03NjE5LDExICs3NjE1LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZWxvYWRB
ZnRlclByb2Nlc3NUZXJtaW5hdGlvbigpCiAgICAgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1l
ci5zdG9wKCk7CiAKICAgICBpZiAoKyttX3JlY2VudENyYXNoQ291bnQgPiBtYXhpbXVtV2ViUHJv
Y2Vzc1JlbGF1bmNoQXR0ZW1wdHMpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChQcm9jZXNzLCAidHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb246IHByb2Nlc3Mg
Y3Jhc2hlZCBhbmQgdGhlIGNsaWVudCBkaWQgbm90IGhhbmRsZSBpdCwgbm90IHJlbG9hZGluZyB0
aGUgcGFnZSBiZWNhdXNlIHdlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGF0dGVtcHRz
Iik7CisgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAidHJ5
UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb246IHByb2Nlc3MgY3Jhc2hlZCBhbmQgdGhlIGNs
aWVudCBkaWQgbm90IGhhbmRsZSBpdCwgbm90IHJlbG9hZGluZyB0aGUgcGFnZSBiZWNhdXNlIHdl
IHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGF0dGVtcHRzIik7CiAgICAgICAgIG1fcmVj
ZW50Q3Jhc2hDb3VudCA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzLCAidHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb246
IHByb2Nlc3MgY3Jhc2hlZCBhbmQgdGhlIGNsaWVudCBkaWQgbm90IGhhbmRsZSBpdCwgcmVsb2Fk
aW5nIHRoZSBwYWdlIik7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJ0
cnlSZWxvYWRBZnRlclByb2Nlc3NUZXJtaW5hdGlvbjogcHJvY2VzcyBjcmFzaGVkIGFuZCB0aGUg
Y2xpZW50IGRpZCBub3QgaGFuZGxlIGl0LCByZWxvYWRpbmcgdGhlIHBhZ2UiKTsKICAgICByZWxv
YWQoUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiB9CiAKQEAgLTgyNzAsMTYgKzgyNjYsMTYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFN0
b3JhZ2VTcGFjZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNh
Z2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNw
YWNlIGZvciBmcmFtZSAlIiBQUkl1NjQgIiwgY3VycmVudCBxdW90YSAlIiBQUkl1NjQgIiBjdXJy
ZW50IHVzYWdlICUiIFBSSXU2NCAiIGV4cGVjdGVkIHVzYWdlICUiIFBSSXU2NCwgZnJhbWVJRC50
b1VJbnQ2NCgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVz
YWdlKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coU3RvcmFnZSwgInJlcXVlc3RTdG9y
YWdlU3BhY2UgZm9yIGZyYW1lICUiIFBSSXU2NCAiLCBjdXJyZW50IHF1b3RhICUiIFBSSXU2NCAi
IGN1cnJlbnQgdXNhZ2UgJSIgUFJJdTY0ICIgZXhwZWN0ZWQgdXNhZ2UgJSIgUFJJdTY0LCBmcmFt
ZUlELnRvVUludDY0KCksIGN1cnJlbnRRdW90YSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVj
dGVkVXNhZ2UpOwogCiAgICAgU3RvcmFnZVJlcXVlc3RzOjpzaW5nbGV0b24oKS5wcm9jZXNzT3JB
cHBlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGFnZVVSTCA9IGN1
cnJlbnRVUkwoKSwgZnJhbWVJRCwgb3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lLCBkaXNw
bGF5TmFtZSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFz
ZVVzYWdlLCBleHBlY3RlZFVzYWdlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICB0aGlzLT5tYWtlU3RvcmFnZVNwYWNl
UmVxdWVzdChmcmFtZUlELCBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsIGRpc3BsYXlO
YW1lLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNh
Z2UsIGV4cGVjdGVkVXNhZ2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgZnJhbWVJRCwgcGFnZVVSTCA9IFdURk1vdmUocGFnZVVSTCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGN1cnJlbnRRdW90YV0oYXV0byBx
dW90YSkgbXV0YWJsZSB7CiAKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoU3Rv
cmFnZSwgInJlcXVlc3RTdG9yYWdlU3BhY2UgcmVzcG9uc2UgZm9yIGZyYW1lICUiIFBSSXU2NCAi
LCBxdW90YSAlIiBQUkl1NjQsIGZyYW1lSUQudG9VSW50NjQoKSwgcXVvdGEpOworICAgICAgICAg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFN0b3JhZ2UsICJyZXF1ZXN0U3RvcmFnZVNwYWNl
IHJlc3BvbnNlIGZvciBmcmFtZSAlIiBQUkl1NjQgIiwgcXVvdGEgJSIgUFJJdTY0LCBmcmFtZUlE
LnRvVUludDY0KCksIHF1b3RhKTsKICAgICAgICAgICAgIFVOVVNFRF9WQVJJQUJMRShmcmFtZUlE
KTsKIAogICAgICAgICAgICAgaWYgKHF1b3RhIDw9IGN1cnJlbnRRdW90YSAmJiB0aGlzLT5jdXJy
ZW50VVJMKCkgPT0gcGFnZVVSTCkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoU3RvcmFnZSwgInN0b3JhZ2Ugc3BhY2UgaW5jcmVhc2UgZGVuaWVkIik7CisgICAgICAg
ICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFN0b3JhZ2UsICJzdG9yYWdlIHNwYWNl
IGluY3JlYXNlIGRlbmllZCIpOwogICAgICAgICAgICAgICAgIG1faXNRdW90YUluY3JlYXNlRGVu
aWVkID0gIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihxdW90YSk7CkBAIC05MzY4LDcgKzkzNjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRl
UmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZSgpCiAgICAgaWYgKCFoYXZlUmVwb3J0ZWRDYXB0dXJl
ICYmIHdpbGxSZXBvcnRDYXB0dXJlKQogICAgICAgICBtX3VwZGF0ZVJlcG9ydGVkTWVkaWFDYXB0
dXJlU3RhdGVUaW1lci5zdGFydE9uZVNob3QobV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheSk7
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFdlYlJUQywgInVwZGF0ZVJlcG9ydGVkTWVk
aWFDYXB0dXJlU3RhdGU6IGZyb20gJWQgdG8gJWQiLCBtX3JlcG9ydGVkTWVkaWFDYXB0dXJlU3Rh
dGUudG9SYXcoKSwgYWN0aXZlQ2FwdHVyZVN0YXRlLnRvUmF3KCkpOworICAgIFdFQlBBR0VQUk9Y
WV9SRUxFQVNFX0xPRyhXZWJSVEMsICJ1cGRhdGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlOiBm
cm9tICVkIHRvICVkIiwgbV9yZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlLnRvUmF3KCksIGFjdGl2
ZUNhcHR1cmVTdGF0ZS50b1JhdygpKTsKIAogICAgIGJvb2wgbWljcm9waG9uZUNhcHR1cmVDaGFu
Z2VkID0gKG1fcmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlv
Q2FwdHVyZU1hc2spICE9IChhY3RpdmVDYXB0dXJlU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpBdWRp
b0NhcHR1cmVNYXNrKTsKICAgICBib29sIGNhbWVyYUNhcHR1cmVDaGFuZ2VkID0gKG1fcmVwb3J0
ZWRNZWRpYUNhcHR1cmVTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZU1hc2spICE9
IChhY3RpdmVDYXB0dXJlU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVNYXNrKTsK
QEAgLTk2MDcsMTMgKzk2MDMsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBsYXliYWNrVGFyZ2V0
UGlja2VyV2FzRGlzbWlzc2VkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dEkKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSgpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJk
aWRFeGNlZWRJbmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUiKTsKKyAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkRXhjZWVkSW5hY3Rp
dmVNZW1vcnlMaW1pdFdoaWxlQWN0aXZlIik7CiAgICAgbV91aUNsaWVudC0+ZGlkRXhjZWVkQmFj
a2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCgqdGhpcywga1dLUmVzb3VyY2VM
aW1pdE1lbW9yeSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFeGNlZWRCYWNrZ3JvdW5k
Q1BVTGltaXRXaGlsZUluRm9yZWdyb3VuZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXRX
aGlsZUluRm9yZWdyb3VuZCIpOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQ
ZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXRXaGlsZUluRm9y
ZWdyb3VuZCIpOwogICAgIG1fdWlDbGllbnQtPmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxp
bWl0V2hpbGVJbkZvcmVncm91bmQoKnRoaXMsIGtXS1Jlc291cmNlTGltaXRDUFUpOwogfQogCkBA
IC0xMDQyMSw3ICsxMDQxNyw4IEBAIExvZ2dlciYgV2ViUGFnZVByb3h5Ojpsb2dnZXIoKQogewog
ICAgIGlmICghbV9sb2dnZXIpIHsKICAgICAgICAgbV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0ZSh0
aGlzKTsKLSAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCkpOworICAgICAgICAvLyBGSVhNRTogRG9lcyB0aGlzIHJlYWxseSBuZWVkIHRv
IGJlIGRpc2FibGVkIGluIGVwaGVtZXJhbCBzZXNzaW9ucz8KKyAgICAgICAgbV9sb2dnZXItPnNl
dEVuYWJsZWQodGhpcywgIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwogICAgIH0KIAogICAg
IHJldHVybiAqbV9sb2dnZXI7CkBAIC0xMDY4MCw3ICsxMDY3Nyw4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jdW5kZWYgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRAorI3VuZGVmIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRworI3VuZGVmIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUgogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElP
TgogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfVVJMCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3MWZlNTg1Y2I1N2VmMzhlOGU0Mjk5
MTVjMGUzYzhiOWYyNzA3NGE0Li40MTg0MGQ0ZjhhYWI1YzFlMTc1YzhjMDM3MzU3NzU5ZmIyZGYz
ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU5MCw3ICsx
NTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UoV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwg
Ym9vbCkgZmluYWw7CiAgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBib29sKSBmaW5hbDsK
ICAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKFdlYkNvcmU6OlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwotICAgIGJvb2wgYWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpOyB9CisgICAgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7IH0KICAg
ICBib29sIHVzZWlUdW5lc0FWT3V0cHV0Q29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIFBsYXRm
b3JtVmlldyogcGxhdGZvcm1WaWV3KCkgY29uc3QgZmluYWw7CiAKQEAgLTE2MjQsOCArMTYyNCw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTmV2ZXJSaWNobHlFZGl0YWJsZUZvclRvdWNoQmFyKCkg
Y29uc3QgeyByZXR1cm4gbV9pc05ldmVyUmljaGx5RWRpdGFibGVGb3JUb3VjaEJhcjsgfQogI2Vu
ZGlmCiAKLSAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwotCiAjaWYg
RU5BQkxFKEdBTUVQQUQpCiAgICAgdm9pZCBnYW1lcGFkQWN0aXZpdHkoY29uc3QgVmVjdG9yPEdh
bWVwYWREYXRhPiYsIFdlYkNvcmU6OkV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRl
eCAyMGYyMDMzZjlkNzQxZTcxNWE0YmMzY2UxNGYyMGRhOTRlYzI3OGVkLi5kN2E0NjVkZTk2ZTA5
Mzg0YTBkYzRiYWViYWI5NTkwMjIzYjA4YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTgxLDcgKzgxLDcgQEAKIAogI2RlZmluZSBN
RVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgcHJv
Y2VzcygpLmNvbm5lY3Rpb24oKSkKIAotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNo
YW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSVsbHUsIHdlYlBhZ2VJRD0lbGx1LCBQSUQ9
JWldIFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBt
X3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICMj
X19WQV9BUkdTX18pCisjZGVmaW5lIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VQcm94eUlEPSVsbHUsIHdl
YlBhZ2VJRD0lbGx1LCBQSUQ9JWldIFdlYlBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKIAogICAgIGJvb2wgaXNTdXNwZW5k
ZWRVbmRlckxvY2sgPSBbVUlBcHAgaXNTdXNwZW5kZWRVbmRlckxvY2tdOwogICAgIAotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoVmlld1N0YXRlLCAiYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQ6IGlzU3VzcGVuZGVkVW5kZXJMb2NrPyAlZCIsIGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsK
KyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coVmlld1N0YXRlLCAiYXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQ6IGlzU3VzcGVuZGVkVW5kZXJMb2NrPyAlZCIsIGlzU3VzcGVuZGVkVW5k
ZXJMb2NrKTsKIAogI2lmICFQTEFURk9STShXQVRDSE9TKQogICAgIC8vIFdlIG5vcm1hbGx5IGRl
bGF5IHByb2Nlc3Mgc3VzcGVuc2lvbiB3aGVuIHRoZSBhcHAgaXMgYmFja2dyb3VuZGVkIHVudGls
IHRoZSBjdXJyZW50IHBhZ2UgbG9hZCBjb21wbGV0ZXMuIEhvd2V2ZXIsCkBAIC02MTksNyArNjE5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgp
CiAgICAgbV9sYXN0T2JzZXJ2ZWRTdGF0ZVdhc0JhY2tncm91bmQgPSBmYWxzZTsKIAogICAgIGJv
b2wgaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbVUlBcHAgaXNTdXNwZW5kZWRVbmRlckxvY2tdOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoVmlld1N0YXRlLCAiYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kOiBpc1N1c3BlbmRlZFVuZGVyTG9jaz8gJWQiLCBpc1N1c3BlbmRlZFVuZGVy
TG9jayk7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFZpZXdTdGF0ZSwgImFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZDogaXNTdXNwZW5kZWRVbmRlckxvY2s/ICVkIiwgaXNTdXNw
ZW5kZWRVbmRlckxvY2spOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBt
X3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYXJk
d2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZChpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUo
KSksIG1fd2ViUGFnZUlEKTsKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZEZvck1lZGlhKCkKIHsKICAgICBib29sIGlzU3VzcGVuZGVk
VW5kZXJMb2NrID0gW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2NrXTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFZpZXdTdGF0ZSwgImFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZEZv
ck1lZGlhOiBpc1N1c3BlbmRlZFVuZGVyTG9jaz8gJWQiLCBpc1N1c3BlbmRlZFVuZGVyTG9jayk7
CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFZpZXdTdGF0ZSwgImFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZEZvck1lZGlhOiBpc1N1c3BlbmRlZFVuZGVyTG9jaz8gJWQiLCBpc1N1
c3BlbmRlZFVuZGVyTG9jayk7CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kRm9yTWVkaWEoaXNTdXNwZW5kZWRVbmRl
ckxvY2spLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kRm9yTWVkaWEoKQogdm9pZCBXZWJQ
YWdlUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZEZvck1lZGlhKCkKIHsKICAg
ICBib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1VJQXBwIGlzU3VzcGVuZGVkVW5kZXJMb2Nr
XTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFZpZXdTdGF0ZSwgImFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kRm9yTWVkaWE6IGlzU3VzcGVuZGVkVW5kZXJMb2NrPyAlZCIsIGlzU3Vz
cGVuZGVkVW5kZXJMb2NrKTsKKyAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coVmlld1N0YXRl
LCAiYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRGb3JNZWRpYTogaXNTdXNwZW5kZWRVbmRl
ckxvY2s/ICVkIiwgaXNTdXNwZW5kZWRVbmRlckxvY2spOwogCiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRGb3JNZWRp
YShpc1N1c3BlbmRlZFVuZGVyTG9jayksIG1fd2ViUGFnZUlEKTsKIH0KQEAgLTE0NjYsNyArMTQ2
Niw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZv
ckNsaWVudE5hdmlnYXRpb24oKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBi
b29sIGNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucyA9IHBhZ2VDbGllbnQoKS5jYW5UYWtlRm9y
ZWdyb3VuZEFzc2VydGlvbnMoKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3Ms
ICJXZWJQYWdlUHJveHk6OnNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2
aWdhdGlvbigpIHJldHVybnMgJWQgYmFzZWQgb24gUGFnZUNsaWVudDo6Y2FuVGFrZUZvcmVncm91
bmRBc3NlcnRpb25zKCkiLCBjYW5UYWtlRm9yZWdyb3VuZEFzc2VydGlvbnMpOworICAgIFdFQlBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiV2ViUGFnZVByb3h5OjpzaG91bGRGb3JjZUZv
cmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSByZXR1cm5zICVkIGJhc2VkIG9u
IFBhZ2VDbGllbnQ6OmNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucygpIiwgY2FuVGFrZUZvcmVn
cm91bmRBc3NlcnRpb25zKTsKICAgICByZXR1cm4gY2FuVGFrZUZvcmVncm91bmRBc3NlcnRpb25z
OwogfQogCkBAIC0xNTc4LDcgKzE1NzgsNyBAQCBDb2xvciBXZWJQYWdlUHJveHk6OnBsYXRmb3Jt
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>