<?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>232982</bug_id>
          
          <creation_ts>2021-11-10 20:15:02 -0800</creation_ts>
          <short_desc>Get daemon API ready to work in the iOS simulator (starting with WebPushD)</short_desc>
          <delta_ts>2021-11-14 23:18:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=233080</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813895</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-10 20:15:02 -0800</bug_when>
    <thetext>Get daemon API tests working in the iOS simulator (starting with WebPushD.PermissionManagement)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813898</commentid>
    <comment_count>1</comment_count>
      <attachid>443900</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-10 20:28:37 -0800</bug_when>
    <thetext>Created attachment 443900
Patch for EWS v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813901</commentid>
    <comment_count>2</comment_count>
      <attachid>443902</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-10 20:59:29 -0800</bug_when>
    <thetext>Created attachment 443902
Patch for EWS v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813908</commentid>
    <comment_count>3</comment_count>
      <attachid>443905</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-10 21:27:18 -0800</bug_when>
    <thetext>Created attachment 443905
Patch for EWS v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813910</commentid>
    <comment_count>4</comment_count>
      <attachid>443906</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-10 21:32:55 -0800</bug_when>
    <thetext>Created attachment 443906
Patch for EWS v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813911</commentid>
    <comment_count>5</comment_count>
      <attachid>443907</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-10 21:37:38 -0800</bug_when>
    <thetext>Created attachment 443907
Patch for EWS v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814081</commentid>
    <comment_count>6</comment_count>
      <attachid>443964</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-11 10:08:44 -0800</bug_when>
    <thetext>Created attachment 443964
Patch for EWS v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814203</commentid>
    <comment_count>7</comment_count>
      <attachid>443998</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-11 13:46:56 -0800</bug_when>
    <thetext>Created attachment 443998
Patch for EWS v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814239</commentid>
    <comment_count>8</comment_count>
      <attachid>444004</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-11 14:35:16 -0800</bug_when>
    <thetext>Created attachment 444004
Patch for EWS v8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814274</commentid>
    <comment_count>9</comment_count>
      <attachid>444013</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-11 15:44:20 -0800</bug_when>
    <thetext>Created attachment 444013
Patch for EWS v9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814304</commentid>
    <comment_count>10</comment_count>
      <attachid>444013</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-11-11 16:53:41 -0800</bug_when>
    <thetext>Comment on attachment 444013
Patch for EWS v9

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814332</commentid>
    <comment_count>11</comment_count>
      <attachid>444033</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-11 18:44:57 -0800</bug_when>
    <thetext>Created attachment 444033
Patch for landing v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814507</commentid>
    <comment_count>12</comment_count>
      <attachid>444078</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-12 10:12:29 -0800</bug_when>
    <thetext>Created attachment 444078
Patch for landing v2

Daemon failed to launch on the EWS bot, causing TestWebKitAPI crashes.

This patch fixes those crashes and turns them into &quot;clean failures&quot;, but I&apos;m still exploring why the daemon isn&apos;t launching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814562</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-12 12:33:45 -0800</bug_when>
    <thetext>Okay I figured out the difference between my setup and what the bots are doing.

Locally, we often symlink our built frameworks into the sim runtime.
When I did that, the tests were working great.

If I undo that and just rely on the run-api-tests script like the bots do, I get the same &quot;daemon won&apos;t launch&quot; failure.

Trying to figure out the difference now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814682</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-12 16:32:26 -0800</bug_when>
    <thetext>TL;DR

OSLaunchdJob + the simulator require us to pass a daemon path relative to the runtime root.

But run-api-tests just sets a whole bunch of Mac-relative DYLD* paths, and we don&apos;t actually *have* anything installed inside the runtime root.

Jonathan helped me brainstorm possible solutions an has volunteered to hack on run-api-tests to implement a solution that seems reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814695</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-12 17:08:08 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #14)
&gt; TL;DR
&gt; 
&gt; OSLaunchdJob + the simulator require us to pass a daemon path relative to
&gt; the runtime root.
&gt; 
&gt; But run-api-tests just sets a whole bunch of Mac-relative DYLD* paths, and
&gt; we don&apos;t actually *have* anything installed inside the runtime root.
&gt; 
&gt; Jonathan helped me brainstorm possible solutions an has volunteered to hack
&gt; on run-api-tests to implement a solution that seems reasonable.

https://bugs.webkit.org/show_bug.cgi?id=232982 for that change.

I&apos;ll be testing changes to this patch with that one applied \o/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814696</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-12 17:09:00 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #15)&gt; 
&gt; https://bugs.webkit.org/show_bug.cgi?id=232982 for that change.
&gt; 
&gt; I&apos;ll be testing changes to this patch with that one applied \o/

I, of course, meant https://bugs.webkit.org/show_bug.cgi?id=233080</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814734</commentid>
    <comment_count>17</comment_count>
      <attachid>444133</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-12 20:58:02 -0800</bug_when>
    <thetext>Created attachment 444133
Patch for landing v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814941</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-14 19:52:19 -0800</bug_when>
    <thetext>Retitling:
        Get daemon API ready to work in the iOS simulator (starting with WebPushD)

Because I&apos;m going to land this patch as-is - doing all the groundwork to enable the daemon tests - but still disabled until we resolve the &quot;how to get the daemon executable visible inside the runtime root&quot; patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814944</commentid>
    <comment_count>19</comment_count>
      <attachid>444209</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-14 19:55:41 -0800</bug_when>
    <thetext>Created attachment 444209
Patch for landing v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814959</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-14 23:17:43 -0800</bug_when>
    <thetext>Committed r285799 (244243@main): &lt;https://commits.webkit.org/244243@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444209.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814960</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-14 23:18:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/85400420&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443900</attachid>
            <date>2021-11-10 20:28:37 -0800</date>
            <delta_ts>2021-11-10 20:59:29 -0800</delta_ts>
            <desc>Patch for EWS v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25658</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGU4NzIyZDgyMjRkLi40YmExOTRhNmZhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJl
bmFibGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVt
b24gZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRo
aW4gdGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTAzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQg
QVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVzdHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5k
ZXggOWJjZjdlZGFmMDZjLi42MDJlYjcxM2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTUzLDE2ICsxMTUzLDYg
QEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVo
YXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQoZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCi17Ci0gICAg
cmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLQogLSAodm9p
ZClfc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAg
IF9wcmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CkBAIC0xNTU0LDYgKzE1NDQsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2
aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJl
ZmVyZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9
CiAKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAg
ICBfcHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCist
IChCT09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMt
Pm5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2
LDYgKzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlv
bkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3Rl
bUFjY2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJ
RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxl
ZDopIEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFU
QVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVu
YWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0
Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdH
ZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5T
U3RyaW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5h
dmlnYXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2
YTFiYTNlODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3Bl
Y3RvckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4w
KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1
cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhP
TkUKIApAQCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0
KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJl
Y3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihO
U1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vidmll
dyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1
bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5T
U2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDoo
X1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09M
KWlzUmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAz
MzMwYTYzYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmpl
Y3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1
c0RpcmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0
b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5Kikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIs
NyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
RmxvYXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpP
YmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94
eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxl
KFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcg
KzIxNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91
bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlh
dGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxl
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2
LDYgKzI2Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRs
ZXIgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9k
ZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAg
dm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNl
TGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxl
U3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVk
RmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3Rv
cjopXTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlk
IDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENv
bXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
Rm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlF
CiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURl
bGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0
b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3Mp
XTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxl
Z2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
X3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpk
ZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3Jp
Z2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0
Miw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQo
KSBzYXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJM
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmln
aW46ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0
eU9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChCT09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5z
cGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsK
ICAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjOTBlNzExNDExOS4uN2EwOWI5NTIyYTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
MTczLDYgKzEzMTczLDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBG
ZWF0dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBD
aGVjayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENy
ZWF0ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywK
KwkJCQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1v
bnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZB
OEYgLyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5
OTZFIC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY2Niw2ICsxMzY2Nywy
NCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMv
cHJvY2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4
N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxp
c3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAi
Q3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlv
dXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FU
SU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUg
dGhlIE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1v
bnMsXG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRo
cyBiZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1f
TkFNRX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RV
Q1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBE
QUVNT05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVt
b25zXCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9
XCIuLi8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwi
JHtCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hk
XCIgXCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtE
QUVNT05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0
N0MwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDdjYjkwM2I5NjZkLi43
ZDJjZGFlNmU0ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0
aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdl
bWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
byBnZXQgdGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVt
b25zIHZpc2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQg
dGhlIE9TTGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5v
dCBNYWMtcmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3Rp
bmcgaW5zdGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2lt
dWxhdG9yLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4K
KyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFu
VXBUZXN0V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0Rh
ZW1vblRlc3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1v
bkluc3RhbmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZE
YWVtb24pOgorCiAyMDIxLTExLTAzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQgQVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVz
dHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMK
aW5kZXggNmFjNDVjNjhkNDMzLi4zYjQwMTE3NzM1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1Mu
ZW50aXRsZW1lbnRzCkBAIC0xMCw1ICsxMCw3IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxl
LlBhc3RlYm9hcmQucGFzdGUtdW5jaGVja2VkPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFw
cGxlLnByaXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8L2tleT4KKwk8c3RyaW5nPlRlc3RX
ZWJLaXRBUEk8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5k
ZXggNWRmYmZkM2VmODViLi4yZjY0ZWZhNjE2NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKQEAgLTQ2
LDYgKzQ2LDggQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19jb2NvYXRvdWNoID0gJChpbmhlcml0
ZWQpICQoV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xE
RkxBR1MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUp
KTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfTUFDT1NfMTIwMCkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZM
QUdTX01BQ09TX1NJTkNFXzEyMDAgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQKK1dLX0FQ
UFNFUlZFUlNVUFBPUlRfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Nf
SU9TX1NJTkNFXzE1ID0gLWZyYW1ld29yayBBcHBTZXJ2ZXJTdXBwb3J0CiAKIFdLX0FVVEhLSVRf
TERGTEFHUyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tf
QVVUSEtJVF9MREZMQUdTX2lwaG9uZW9zID0gJChXS19BVVRIS0lUX0xERkxBR1MkKFdLX0lPU18x
MykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCmluZGV4IDE2OGQ0NmZmMzJmYy4uZTM1MTRkYjZmNTFmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCkBAIC01Miw5ICs1Miw2IEBAIHN0YXRpYyBib29sIGFsZXJ0UmVjZWl2ZWQgPSBmYWxz
ZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29y
a2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRpYyBS
ZXRhaW5QdHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRpb24oKQogewogICAgIHJldHVy
biBbY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJ3ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpAQCAtODMsNyArODAsMTEgQEAgc3RhdGlj
IFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQdXNoRGFlbW9uUExpc3QoTlNVUkwgKnN0
b3JhZ2VMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8gcHJvZ3JhbUFyZ3VtZW50cyA9IGFk
b3B0TlMoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CiAgICAgICAgIGF1dG8gZXhlY3V0
YWJsZUxvY2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpOworI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQo
KSwgWFBDX0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxvY2F0aW9uLmdldCgpLmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhwcm9n
cmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9EYWVtb25zL3dlYnB1c2hkIik7CisjZW5kaWYKICAg
ICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FS
UkFZX0FQUEVORCwgIi0tbWFjaFNlcnZpY2VOYW1lIik7CiAgICAgICAgIHhwY19hcnJheV9zZXRf
c3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsICJvcmcud2Vi
a2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKTsKICAgICAgICAgeHBjX2RpY3Rpb25hcnlf
c2V0X3ZhbHVlKHBsaXN0LmdldCgpLCAiUHJvZ3JhbUFyZ3VtZW50cyIsIHByb2dyYW1Bcmd1bWVu
dHMuZ2V0KCkpOwpAQCAtMTIwLDcgKzEyMSw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2Vi
UHVzaEQoKQogICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJy
b3I6JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAKLSAgICBzeXN0ZW0oImtpbGxh
bGwgd2VicHVzaGQgLTkgMj4gL2Rldi9udWxsIik7CisgICAga2lsbEZpcnN0SW5zdGFuY2VPZkRh
ZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBhdXRvIHBsaXN0ID0gdGVzdFdlYlB1c2hEYWVtb25Q
TGlzdCh0ZW1wRGlyKTsKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtMTM0LDcgKzEzNSw3
IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2ViUHVzaEQoKQogCiBzdGF0aWMgdm9pZCBjbGVh
blVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGlyKQogewotICAgIHN5c3RlbSgia2lsbGFsbCB3
ZWJwdXNoZCAtOSIpOworICAgIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oQCJ3ZWJwdXNoZCIp
OwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOwogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwpA
QCAtMTg2LDYgKzE4Nyw3IEBAIFRFU1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50KQog
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5j
ZXMgX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOllFU107CiAgICAgZm9yIChfV0tFeHBlcmltZW50
YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJl
c10pIHsKICAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJCdWlsdElu
Tm90aWZpY2F0aW9uc0VuYWJsZWQiXSkKICAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CkBAIC0yMzksNiAr
MjQxLDQgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAgICAgY2xlYW5V
cFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaAppbmRleCAwNmE3NjRkMDM4OTkuLjJmMjU2
MWZkMzQxOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0
VXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRp
bGl0aWVzLmgKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKIAordm9pZCBr
aWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKE5TU3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSk7
CisKIC8vIEZJWE1FOiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBpT1Mgc2ltdWxhdG9yLgotI2lm
IFBMQVRGT1JNKE1BQykKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQogdm9pZCByZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4mJik7CiAjZWxzZQogdm9pZCBy
ZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4mJiwgTlNVUkwg
KnRlbXBEaXIpOwogI2VuZGlmCi0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0
aWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1t
CmluZGV4IDk3NGE2NDJhMGI1ZC4uOGQ4YzcyNWU3NzMzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1tCkBAIC0yOSw2ICsyOSwxOSBAQAog
I2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAorTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBOU1Rhc2sgOiBOU09iamVjdAorLSAoaW5z
dGFuY2V0eXBlKWluaXQ7CistICh2b2lkKWxhdW5jaDsKKy0gKHZvaWQpd2FpdFVudGlsRXhpdDsK
KworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmxhdW5jaFBhdGg7CitAcHJv
cGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICphcmd1bWVudHM7CitA
cHJvcGVydHkgKG51bGxhYmxlLCByZXRhaW4pIGlkIHN0YW5kYXJkT3V0cHV0OworQHByb3BlcnR5
IChyZWFkb25seSwgZ2V0dGVyPWlzUnVubmluZykgQk9PTCBydW5uaW5nOworQGVuZAorCiBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRF
eGVjdXRhYmxlTG9jYXRpb24oKQpAQCAtNDgsOCArNjEsNiBAQCBSZXRhaW5QdHI8TlNVUkw+IGN1
cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gW2N1cnJlbnRFeGVjdXRhYmxl
TG9jYXRpb24oKSBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOwogfQogCi0vLyBGSVhN
RTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShN
QUMpCiAjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikKIAogdm9pZCByZWdpc3RlclBsaXN0V2l0aExh
dW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4mJiBwbGlzdCkKQEAgLTU3LDcgKzY4LDEzIEBA
IHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYg
cGxpc3QpCiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgYXV0byBsYXVuY2hESm9iID0g
YWRvcHROUyhbW09TTGF1bmNoZEpvYiBhbGxvY10gaW5pdFdpdGhQbGlzdDpwbGlzdC5nZXQoKV0p
OwogICAgIFtsYXVuY2hESm9iIHN1Ym1pdDomZXJyb3JdOworCisgICAgLy8gSW4gdGhlIGlPUyBT
aW11bGF0b3Igd2Ugb2Z0ZW4gc2VlIHRoZSBmb2xsb3dpbmcgZXJyb3IgaGVyZToKKyAgICAvLyBF
cnJvciBEb21haW49T1NMYXVuY2hkRXJyb3JEb21haW4gQ29kZT0xNyAiRmlsZSBleGlzdHMiCisg
ICAgLy8gVGVzdHMgc3RpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLgorI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworI2VuZGlmCiB9CiAKICNlbHNlIC8vIEhBVkUoT1Nf
TEFVTkNIRF9KT0IpCkBAIC03Nyw2ICs5NCw1NyBAQCB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1
bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiYmIHBsaXN0LCBOU1VSTCAqdGVtcERpcikKIH0K
IAogI2VuZGlmIC8vIEhBVkUoT1NfTEFVTkNIRF9KT0IpCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQorCitzdGF0aWMgaW50IHBpZE9mRmlyc3REYWVtb25JbnN0YW5jZShOU1N0cmluZyAqZGFlbW9u
RXhlY3V0YWJsZU5hbWUpCit7CisgICAgYXV0byB0YXNrID0gYWRvcHROUyhbW05TVGFzayBhbGxv
Y10gaW5pdF0pOworICAgIHRhc2suZ2V0KCkubGF1bmNoUGF0aCA9IEAiL2Jpbi9wcyI7CisgICAg
dGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAgICAgICBAIi1heCIsCisgICAgICAgIEAiLW8i
LAorICAgICAgICBAInBpZCxjb21tIgorICAgIF07CisKKyAgICBhdXRvIHRhc2tQaXBlID0gYWRv
cHROUyhbW05TUGlwZSBhbGxvY10gaW5pdF0pOworICAgIFt0YXNrIHNldFN0YW5kYXJkT3V0cHV0
OnRhc2tQaXBlLmdldCgpXTsKKyAgICBbdGFzayBsYXVuY2hdOworCisgICAgYXV0byBkYXRhID0g
YWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICB3aGlsZSAoW3Rhc2sg
aXNSdW5uaW5nXSkKKyAgICAgICAgW2RhdGEgYXBwZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5k
bGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5kT2ZGaWxlXV07CisgICAgW2RhdGEgYXBwZW5kRGF0
YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5kT2ZGaWxlXV07
CisKKyAgICBhdXRvIHBzU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6ZGF0YS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKnBzRW50cmllcyA9IFtwc1N0cmluZyBjb21wb25lbnRzU2VwYXJh
dGVkQnlTdHJpbmc6QCJcbiJdOworCisgICAgZm9yIChOU1N0cmluZyogZW50cnkgaW4gcHNFbnRy
aWVzKSB7CisgICAgICAgIGlmICghW2VudHJ5IGhhc1N1ZmZpeDpkYWVtb25FeGVjdXRhYmxlTmFt
ZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgTlNBcnJheTxOU1N0cmluZyAqPiAq
Y29tcG9uZW50cyA9IFtlbnRyeSBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6QCIgIl07Cisg
ICAgICAgIEVYUEVDVF9HRShbY29tcG9uZW50cyBjb3VudF0sIDIpOworICAgICAgICByZXR1cm4g
W1tjb21wb25lbnRzIGZpcnN0T2JqZWN0XSBpbnRlZ2VyVmFsdWVdOworICAgIH0KKworICAgIHJl
dHVybiAwOworfQorCit2b2lkIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oTlNTdHJpbmcgKmRh
ZW1vbkV4ZWN1dGFibGVOYW1lKQoreworICAgIGF1dG8gcGlkID0gcGlkT2ZGaXJzdERhZW1vbklu
c3RhbmNlKGRhZW1vbkV4ZWN1dGFibGVOYW1lKTsKKyAgICBpZiAoIXBpZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byB0YXNrID0gYWRvcHROUyhbW05TVGFzayBhbGxvY10gaW5pdF0pOwor
ICAgIHRhc2suZ2V0KCkubGF1bmNoUGF0aCA9IEAiL2Jpbi9raWxsIjsKKyAgICB0YXNrLmdldCgp
LmFyZ3VtZW50cyA9IEBbCisgICAgICAgIEAiLTkiLAorICAgICAgICBbQChwaWQpIHN0cmluZ1Zh
bHVlXQorICAgIF07CisKKyAgICBbdGFzayBsYXVuY2hdOworICAgIFt0YXNrIHdhaXRVbnRpbEV4
aXRdOworfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKK05TX0FTU1VNRV9OT05O
VUxMX0VORAo=
</data>
<flag name="commit-queue"
          id="468735"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443902</attachid>
            <date>2021-11-10 20:59:29 -0800</date>
            <delta_ts>2021-11-10 21:27:18 -0800</delta_ts>
            <desc>Patch for EWS v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25685</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGU4NzIyZDgyMjRkLi40YmExOTRhNmZhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJl
bmFibGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVt
b24gZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRo
aW4gdGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTAzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQg
QVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVzdHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5k
ZXggOWJjZjdlZGFmMDZjLi42MDJlYjcxM2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTUzLDE2ICsxMTUzLDYg
QEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVo
YXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQoZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCi17Ci0gICAg
cmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLQogLSAodm9p
ZClfc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAg
IF9wcmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CkBAIC0xNTU0LDYgKzE1NDQsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2
aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJl
ZmVyZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9
CiAKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAg
ICBfcHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCist
IChCT09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMt
Pm5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2
LDYgKzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlv
bkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3Rl
bUFjY2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJ
RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxl
ZDopIEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFU
QVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVu
YWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0
Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdH
ZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5T
U3RyaW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5h
dmlnYXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2
YTFiYTNlODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3Bl
Y3RvckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4w
KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1
cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhP
TkUKIApAQCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0
KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJl
Y3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihO
U1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vidmll
dyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1
bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5T
U2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDoo
X1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09M
KWlzUmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAz
MzMwYTYzYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmpl
Y3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1
c0RpcmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0
b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5Kikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIs
NyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
RmxvYXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpP
YmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94
eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxl
KFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcg
KzIxNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91
bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlh
dGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxl
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2
LDYgKzI2Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRs
ZXIgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9k
ZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAg
dm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNl
TGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxl
U3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVk
RmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3Rv
cjopXTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlk
IDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENv
bXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
Rm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlF
CiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURl
bGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0
b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3Mp
XTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxl
Z2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
X3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpk
ZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3Jp
Z2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0
Miw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQo
KSBzYXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJM
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmln
aW46ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0
eU9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChCT09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5z
cGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsK
ICAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjOTBlNzExNDExOS4uN2EwOWI5NTIyYTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
MTczLDYgKzEzMTczLDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBG
ZWF0dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBD
aGVjayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENy
ZWF0ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywK
KwkJCQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1v
bnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZB
OEYgLyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5
OTZFIC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY2Niw2ICsxMzY2Nywy
NCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMv
cHJvY2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4
N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxp
c3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAi
Q3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlv
dXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FU
SU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUg
dGhlIE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1v
bnMsXG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRo
cyBiZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1f
TkFNRX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RV
Q1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBE
QUVNT05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVt
b25zXCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9
XCIuLi8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwi
JHtCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hk
XCIgXCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtE
QUVNT05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0
N0MwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDdjYjkwM2I5NjZkLi43
ZDJjZGFlNmU0ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0
aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdl
bWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
byBnZXQgdGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVt
b25zIHZpc2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQg
dGhlIE9TTGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5v
dCBNYWMtcmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3Rp
bmcgaW5zdGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2lt
dWxhdG9yLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4K
KyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFu
VXBUZXN0V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0Rh
ZW1vblRlc3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1v
bkluc3RhbmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZE
YWVtb24pOgorCiAyMDIxLTExLTAzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQgQVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVz
dHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMK
aW5kZXggNmFjNDVjNjhkNDMzLi4zYjQwMTE3NzM1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1Mu
ZW50aXRsZW1lbnRzCkBAIC0xMCw1ICsxMCw3IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxl
LlBhc3RlYm9hcmQucGFzdGUtdW5jaGVja2VkPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFw
cGxlLnByaXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8L2tleT4KKwk8c3RyaW5nPlRlc3RX
ZWJLaXRBUEk8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5k
ZXggNWRmYmZkM2VmODViLi4yZjY0ZWZhNjE2NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKQEAgLTQ2
LDYgKzQ2LDggQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19jb2NvYXRvdWNoID0gJChpbmhlcml0
ZWQpICQoV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xE
RkxBR1MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUp
KTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfTUFDT1NfMTIwMCkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZM
QUdTX01BQ09TX1NJTkNFXzEyMDAgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQKK1dLX0FQ
UFNFUlZFUlNVUFBPUlRfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Nf
SU9TX1NJTkNFXzE1ID0gLWZyYW1ld29yayBBcHBTZXJ2ZXJTdXBwb3J0CiAKIFdLX0FVVEhLSVRf
TERGTEFHUyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tf
QVVUSEtJVF9MREZMQUdTX2lwaG9uZW9zID0gJChXS19BVVRIS0lUX0xERkxBR1MkKFdLX0lPU18x
MykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCmluZGV4IDE2OGQ0NmZmMzJmYy4uZTM1MTRkYjZmNTFmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCkBAIC01Miw5ICs1Miw2IEBAIHN0YXRpYyBib29sIGFsZXJ0UmVjZWl2ZWQgPSBmYWxz
ZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29y
a2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRpYyBS
ZXRhaW5QdHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRpb24oKQogewogICAgIHJldHVy
biBbY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJ3ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpAQCAtODMsNyArODAsMTEgQEAgc3RhdGlj
IFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQdXNoRGFlbW9uUExpc3QoTlNVUkwgKnN0
b3JhZ2VMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8gcHJvZ3JhbUFyZ3VtZW50cyA9IGFk
b3B0TlMoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CiAgICAgICAgIGF1dG8gZXhlY3V0
YWJsZUxvY2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpOworI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQo
KSwgWFBDX0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxvY2F0aW9uLmdldCgpLmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhwcm9n
cmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9EYWVtb25zL3dlYnB1c2hkIik7CisjZW5kaWYKICAg
ICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FS
UkFZX0FQUEVORCwgIi0tbWFjaFNlcnZpY2VOYW1lIik7CiAgICAgICAgIHhwY19hcnJheV9zZXRf
c3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsICJvcmcud2Vi
a2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKTsKICAgICAgICAgeHBjX2RpY3Rpb25hcnlf
c2V0X3ZhbHVlKHBsaXN0LmdldCgpLCAiUHJvZ3JhbUFyZ3VtZW50cyIsIHByb2dyYW1Bcmd1bWVu
dHMuZ2V0KCkpOwpAQCAtMTIwLDcgKzEyMSw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2Vi
UHVzaEQoKQogICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJy
b3I6JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAKLSAgICBzeXN0ZW0oImtpbGxh
bGwgd2VicHVzaGQgLTkgMj4gL2Rldi9udWxsIik7CisgICAga2lsbEZpcnN0SW5zdGFuY2VPZkRh
ZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBhdXRvIHBsaXN0ID0gdGVzdFdlYlB1c2hEYWVtb25Q
TGlzdCh0ZW1wRGlyKTsKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtMTM0LDcgKzEzNSw3
IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2ViUHVzaEQoKQogCiBzdGF0aWMgdm9pZCBjbGVh
blVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGlyKQogewotICAgIHN5c3RlbSgia2lsbGFsbCB3
ZWJwdXNoZCAtOSIpOworICAgIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oQCJ3ZWJwdXNoZCIp
OwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOwogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwpA
QCAtMTg2LDYgKzE4Nyw3IEBAIFRFU1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50KQog
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5j
ZXMgX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOllFU107CiAgICAgZm9yIChfV0tFeHBlcmltZW50
YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJl
c10pIHsKICAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJCdWlsdElu
Tm90aWZpY2F0aW9uc0VuYWJsZWQiXSkKICAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CkBAIC0yMzksNiAr
MjQxLDQgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAgICAgY2xlYW5V
cFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaAppbmRleCAwNmE3NjRkMDM4OTkuLjJmMjU2
MWZkMzQxOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0
VXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRp
bGl0aWVzLmgKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKIAordm9pZCBr
aWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKE5TU3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSk7
CisKIC8vIEZJWE1FOiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBpT1Mgc2ltdWxhdG9yLgotI2lm
IFBMQVRGT1JNKE1BQykKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQogdm9pZCByZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4mJik7CiAjZWxzZQogdm9pZCBy
ZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4mJiwgTlNVUkwg
KnRlbXBEaXIpOwogI2VuZGlmCi0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0
aWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1t
CmluZGV4IDk3NGE2NDJhMGI1ZC4uZmRjYmY1YmNhNzI3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1tCkBAIC0yOSw2ICsyOSwyMSBAQAog
I2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAorTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworI2lmIFBMQVRGT1JNKElPUykKK0BpbnRlcmZhY2UgTlNUYXNr
IDogTlNPYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0OworLSAodm9pZClsYXVuY2g7CistICh2
b2lkKXdhaXRVbnRpbEV4aXQ7CisKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TU3RyaW5n
ICpsYXVuY2hQYXRoOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqYXJndW1lbnRzOworQHByb3BlcnR5IChudWxsYWJsZSwgcmV0YWluKSBpZCBzdGFuZGFy
ZE91dHB1dDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRlcj1pc1J1bm5pbmcpIEJPT0wgcnVu
bmluZzsKK0BlbmQKKyNlbmRpZgorCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlTG9jYXRpb24oKQpAQCAtNDgsOCAr
NjMsNiBAQCBSZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKICAg
ICByZXR1cm4gW2N1cnJlbnRFeGVjdXRhYmxlTG9jYXRpb24oKSBVUkxCeURlbGV0aW5nTGFzdFBh
dGhDb21wb25lbnRdOwogfQogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9T
IHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCiAjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikK
IAogdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4m
JiBwbGlzdCkKQEAgLTU3LDcgKzcwLDEzIEBAIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hE
KFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYgcGxpc3QpCiAgICAgTlNFcnJvciAqZXJyb3IgPSBu
aWw7CiAgICAgYXV0byBsYXVuY2hESm9iID0gYWRvcHROUyhbW09TTGF1bmNoZEpvYiBhbGxvY10g
aW5pdFdpdGhQbGlzdDpwbGlzdC5nZXQoKV0pOwogICAgIFtsYXVuY2hESm9iIHN1Ym1pdDomZXJy
b3JdOworCisgICAgLy8gSW4gdGhlIGlPUyBTaW11bGF0b3Igd2Ugb2Z0ZW4gc2VlIHRoZSBmb2xs
b3dpbmcgZXJyb3IgaGVyZToKKyAgICAvLyBFcnJvciBEb21haW49T1NMYXVuY2hkRXJyb3JEb21h
aW4gQ29kZT0xNyAiRmlsZSBleGlzdHMiCisgICAgLy8gVGVzdHMgc3RpbGwgYmVoYXZlIGFzIGV4
cGVjdGVkLgorI2lmIFBMQVRGT1JNKE1BQykKICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworI2Vu
ZGlmCiB9CiAKICNlbHNlIC8vIEhBVkUoT1NfTEFVTkNIRF9KT0IpCkBAIC03Nyw2ICs5Niw1NyBA
QCB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiYm
IHBsaXN0LCBOU1VSTCAqdGVtcERpcikKIH0KIAogI2VuZGlmIC8vIEhBVkUoT1NfTEFVTkNIRF9K
T0IpCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCitzdGF0aWMgaW50IHBpZE9mRmlyc3REYWVt
b25JbnN0YW5jZShOU1N0cmluZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUpCit7CisgICAgYXV0byB0
YXNrID0gYWRvcHROUyhbW05TVGFzayBhbGxvY10gaW5pdF0pOworICAgIHRhc2suZ2V0KCkubGF1
bmNoUGF0aCA9IEAiL2Jpbi9wcyI7CisgICAgdGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAg
ICAgICBAIi1heCIsCisgICAgICAgIEAiLW8iLAorICAgICAgICBAInBpZCxjb21tIgorICAgIF07
CisKKyAgICBhdXRvIHRhc2tQaXBlID0gYWRvcHROUyhbW05TUGlwZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt0YXNrIHNldFN0YW5kYXJkT3V0cHV0OnRhc2tQaXBlLmdldCgpXTsKKyAgICBbdGFzayBs
YXVuY2hdOworCisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2Nd
IGluaXRdKTsKKyAgICB3aGlsZSAoW3Rhc2sgaXNSdW5uaW5nXSkKKyAgICAgICAgW2RhdGEgYXBw
ZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5kT2ZG
aWxlXV07CisgICAgW2RhdGEgYXBwZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JSZWFk
aW5nXSByZWFkRGF0YVRvRW5kT2ZGaWxlXV07CisKKyAgICBhdXRvIHBzU3RyaW5nID0gYWRvcHRO
UyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YS5nZXQoKSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBzRW50cmllcyA9
IFtwc1N0cmluZyBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6QCJcbiJdOworCisgICAgZm9y
IChOU1N0cmluZyogZW50cnkgaW4gcHNFbnRyaWVzKSB7CisgICAgICAgIGlmICghW2VudHJ5IGhh
c1N1ZmZpeDpkYWVtb25FeGVjdXRhYmxlTmFtZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqY29tcG9uZW50cyA9IFtlbnRyeSBjb21wb25lbnRz
U2VwYXJhdGVkQnlTdHJpbmc6QCIgIl07CisgICAgICAgIEVYUEVDVF9HRShbY29tcG9uZW50cyBj
b3VudF0sIDIpOworICAgICAgICByZXR1cm4gW1tjb21wb25lbnRzIGZpcnN0T2JqZWN0XSBpbnRl
Z2VyVmFsdWVdOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIGtpbGxGaXJzdElu
c3RhbmNlT2ZEYWVtb24oTlNTdHJpbmcgKmRhZW1vbkV4ZWN1dGFibGVOYW1lKQoreworICAgIGF1
dG8gcGlkID0gcGlkT2ZGaXJzdERhZW1vbkluc3RhbmNlKGRhZW1vbkV4ZWN1dGFibGVOYW1lKTsK
KyAgICBpZiAoIXBpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0YXNrID0gYWRvcHRO
UyhbW05TVGFzayBhbGxvY10gaW5pdF0pOworICAgIHRhc2suZ2V0KCkubGF1bmNoUGF0aCA9IEAi
L2Jpbi9raWxsIjsKKyAgICB0YXNrLmdldCgpLmFyZ3VtZW50cyA9IEBbCisgICAgICAgIEAiLTki
LAorICAgICAgICBbQChwaWQpIHN0cmluZ1ZhbHVlXQorICAgIF07CisKKyAgICBbdGFzayBsYXVu
Y2hdOworICAgIFt0YXNrIHdhaXRVbnRpbEV4aXRdOworfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAo=
</data>
<flag name="commit-queue"
          id="468739"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443905</attachid>
            <date>2021-11-10 21:27:18 -0800</date>
            <delta_ts>2021-11-10 21:46:35 -0800</delta_ts>
            <desc>Patch for EWS v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25686</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGU4NzIyZDgyMjRkLi40YmExOTRhNmZhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJl
bmFibGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVt
b24gZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRo
aW4gdGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTAzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQg
QVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVzdHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5k
ZXggOWJjZjdlZGFmMDZjLi42MDJlYjcxM2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTUzLDE2ICsxMTUzLDYg
QEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVo
YXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQoZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCi17Ci0gICAg
cmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLQogLSAodm9p
ZClfc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAg
IF9wcmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CkBAIC0xNTU0LDYgKzE1NDQsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2
aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJl
ZmVyZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9
CiAKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAg
ICBfcHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCist
IChCT09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMt
Pm5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2
LDYgKzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlv
bkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3Rl
bUFjY2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJ
RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxl
ZDopIEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFU
QVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVu
YWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0
Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdH
ZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5T
U3RyaW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5h
dmlnYXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2
YTFiYTNlODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3Bl
Y3RvckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4w
KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1
cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhP
TkUKIApAQCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0
KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJl
Y3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihO
U1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vidmll
dyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1
bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5T
U2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDoo
X1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09M
KWlzUmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAz
MzMwYTYzYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmpl
Y3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1
c0RpcmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0
b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5Kikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIs
NyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
RmxvYXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpP
YmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94
eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxl
KFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcg
KzIxNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91
bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlh
dGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxl
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2
LDYgKzI2Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRs
ZXIgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9k
ZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAg
dm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNl
TGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxl
U3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVk
RmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3Rv
cjopXTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlk
IDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENv
bXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
Rm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlF
CiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURl
bGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0
b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3Mp
XTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxl
Z2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
X3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpk
ZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3Jp
Z2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0
Miw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQo
KSBzYXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJM
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmln
aW46ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0
eU9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChCT09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5z
cGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsK
ICAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjOTBlNzExNDExOS4uN2EwOWI5NTIyYTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
MTczLDYgKzEzMTczLDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBG
ZWF0dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBD
aGVjayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENy
ZWF0ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywK
KwkJCQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1v
bnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZB
OEYgLyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5
OTZFIC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY2Niw2ICsxMzY2Nywy
NCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMv
cHJvY2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4
N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxp
c3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAi
Q3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlv
dXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FU
SU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUg
dGhlIE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1v
bnMsXG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRo
cyBiZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1f
TkFNRX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RV
Q1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBE
QUVNT05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVt
b25zXCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9
XCIuLi8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwi
JHtCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hk
XCIgXCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtE
QUVNT05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0
N0MwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDdjYjkwM2I5NjZkLi43
ZDJjZGFlNmU0ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0
aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdl
bWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
byBnZXQgdGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVt
b25zIHZpc2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQg
dGhlIE9TTGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5v
dCBNYWMtcmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3Rp
bmcgaW5zdGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2lt
dWxhdG9yLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4K
KyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFu
VXBUZXN0V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0Rh
ZW1vblRlc3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1v
bkluc3RhbmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZE
YWVtb24pOgorCiAyMDIxLTExLTAzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQgQVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVz
dHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMK
aW5kZXggNmFjNDVjNjhkNDMzLi4zYjQwMTE3NzM1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1Mu
ZW50aXRsZW1lbnRzCkBAIC0xMCw1ICsxMCw3IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxl
LlBhc3RlYm9hcmQucGFzdGUtdW5jaGVja2VkPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFw
cGxlLnByaXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8L2tleT4KKwk8c3RyaW5nPlRlc3RX
ZWJLaXRBUEk8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5k
ZXggNWRmYmZkM2VmODViLi4yZjY0ZWZhNjE2NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKQEAgLTQ2
LDYgKzQ2LDggQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19jb2NvYXRvdWNoID0gJChpbmhlcml0
ZWQpICQoV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xE
RkxBR1MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUp
KTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfTUFDT1NfMTIwMCkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZM
QUdTX01BQ09TX1NJTkNFXzEyMDAgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQKK1dLX0FQ
UFNFUlZFUlNVUFBPUlRfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Nf
SU9TX1NJTkNFXzE1ID0gLWZyYW1ld29yayBBcHBTZXJ2ZXJTdXBwb3J0CiAKIFdLX0FVVEhLSVRf
TERGTEFHUyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tf
QVVUSEtJVF9MREZMQUdTX2lwaG9uZW9zID0gJChXS19BVVRIS0lUX0xERkxBR1MkKFdLX0lPU18x
MykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCmluZGV4IDE2OGQ0NmZmMzJmYy4uZTM1MTRkYjZmNTFmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCkBAIC01Miw5ICs1Miw2IEBAIHN0YXRpYyBib29sIGFsZXJ0UmVjZWl2ZWQgPSBmYWxz
ZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29y
a2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRpYyBS
ZXRhaW5QdHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRpb24oKQogewogICAgIHJldHVy
biBbY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJ3ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpAQCAtODMsNyArODAsMTEgQEAgc3RhdGlj
IFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQdXNoRGFlbW9uUExpc3QoTlNVUkwgKnN0
b3JhZ2VMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8gcHJvZ3JhbUFyZ3VtZW50cyA9IGFk
b3B0TlMoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CiAgICAgICAgIGF1dG8gZXhlY3V0
YWJsZUxvY2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpOworI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQo
KSwgWFBDX0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxvY2F0aW9uLmdldCgpLmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhwcm9n
cmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9EYWVtb25zL3dlYnB1c2hkIik7CisjZW5kaWYKICAg
ICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FS
UkFZX0FQUEVORCwgIi0tbWFjaFNlcnZpY2VOYW1lIik7CiAgICAgICAgIHhwY19hcnJheV9zZXRf
c3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsICJvcmcud2Vi
a2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKTsKICAgICAgICAgeHBjX2RpY3Rpb25hcnlf
c2V0X3ZhbHVlKHBsaXN0LmdldCgpLCAiUHJvZ3JhbUFyZ3VtZW50cyIsIHByb2dyYW1Bcmd1bWVu
dHMuZ2V0KCkpOwpAQCAtMTIwLDcgKzEyMSw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2Vi
UHVzaEQoKQogICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJy
b3I6JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAKLSAgICBzeXN0ZW0oImtpbGxh
bGwgd2VicHVzaGQgLTkgMj4gL2Rldi9udWxsIik7CisgICAga2lsbEZpcnN0SW5zdGFuY2VPZkRh
ZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBhdXRvIHBsaXN0ID0gdGVzdFdlYlB1c2hEYWVtb25Q
TGlzdCh0ZW1wRGlyKTsKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtMTM0LDcgKzEzNSw3
IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2ViUHVzaEQoKQogCiBzdGF0aWMgdm9pZCBjbGVh
blVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGlyKQogewotICAgIHN5c3RlbSgia2lsbGFsbCB3
ZWJwdXNoZCAtOSIpOworICAgIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oQCJ3ZWJwdXNoZCIp
OwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOwogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwpA
QCAtMTg2LDYgKzE4Nyw3IEBAIFRFU1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50KQog
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5j
ZXMgX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOllFU107CiAgICAgZm9yIChfV0tFeHBlcmltZW50
YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJl
c10pIHsKICAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJCdWlsdElu
Tm90aWZpY2F0aW9uc0VuYWJsZWQiXSkKICAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CkBAIC0yMzksNiAr
MjQxLDQgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAgICAgY2xlYW5V
cFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaAppbmRleCAwNmE3NjRkMDM4OTkuLjJmMjU2
MWZkMzQxOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0
VXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRp
bGl0aWVzLmgKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKIAordm9pZCBr
aWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKE5TU3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSk7
CisKIC8vIEZJWE1FOiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBpT1Mgc2ltdWxhdG9yLgotI2lm
IFBMQVRGT1JNKE1BQykKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQogdm9pZCByZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4mJik7CiAjZWxzZQogdm9pZCBy
ZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4mJiwgTlNVUkwg
KnRlbXBEaXIpOwogI2VuZGlmCi0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0
aWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1t
CmluZGV4IDk3NGE2NDJhMGI1ZC4uNjhkZGI4YmJkMzgzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1tCkBAIC0yOSw2ICsyOSwyMSBAQAog
I2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAorTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworI2lmIFBMQVRGT1JNKElPUykKK0BpbnRlcmZhY2UgTlNUYXNr
IDogTlNPYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0OworLSAodm9pZClsYXVuY2g7CistICh2
b2lkKXdhaXRVbnRpbEV4aXQ7CisKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TU3RyaW5n
ICpsYXVuY2hQYXRoOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqYXJndW1lbnRzOworQHByb3BlcnR5IChudWxsYWJsZSwgcmV0YWluKSBpZCBzdGFuZGFy
ZE91dHB1dDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRlcj1pc1J1bm5pbmcpIEJPT0wgcnVu
bmluZzsKK0BlbmQKKyNlbmRpZgorCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlTG9jYXRpb24oKQpAQCAtNDgsOCAr
NjMsNiBAQCBSZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKICAg
ICByZXR1cm4gW2N1cnJlbnRFeGVjdXRhYmxlTG9jYXRpb24oKSBVUkxCeURlbGV0aW5nTGFzdFBh
dGhDb21wb25lbnRdOwogfQogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9T
IHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCiAjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikK
IAogdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4m
JiBwbGlzdCkKQEAgLTU3LDcgKzcwLDEzIEBAIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hE
KFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYgcGxpc3QpCiAgICAgTlNFcnJvciAqZXJyb3IgPSBu
aWw7CiAgICAgYXV0byBsYXVuY2hESm9iID0gYWRvcHROUyhbW09TTGF1bmNoZEpvYiBhbGxvY10g
aW5pdFdpdGhQbGlzdDpwbGlzdC5nZXQoKV0pOwogICAgIFtsYXVuY2hESm9iIHN1Ym1pdDomZXJy
b3JdOworCisgICAgLy8gSW4gdGhlIGlPUyBTaW11bGF0b3Igd2Ugb2Z0ZW4gc2VlIHRoZSBmb2xs
b3dpbmcgZXJyb3IgaGVyZToKKyAgICAvLyBFcnJvciBEb21haW49T1NMYXVuY2hkRXJyb3JEb21h
aW4gQ29kZT0xNyAiRmlsZSBleGlzdHMiCisgICAgLy8gVGVzdHMgc3RpbGwgYmVoYXZlIGFzIGV4
cGVjdGVkLgorI2lmIFBMQVRGT1JNKE1BQykKICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworI2Vu
ZGlmCiB9CiAKICNlbHNlIC8vIEhBVkUoT1NfTEFVTkNIRF9KT0IpCkBAIC03Nyw2ICs5Niw1NyBA
QCB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiYm
IHBsaXN0LCBOU1VSTCAqdGVtcERpcikKIH0KIAogI2VuZGlmIC8vIEhBVkUoT1NfTEFVTkNIRF9K
T0IpCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCitzdGF0aWMgaW50IHBpZE9mRmlyc3REYWVt
b25JbnN0YW5jZShOU1N0cmluZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUpCit7CisgICAgYXV0byB0
YXNrID0gYWRvcHROUyhbW05TVGFzayBhbGxvY10gaW5pdF0pOworICAgIHRhc2suZ2V0KCkubGF1
bmNoUGF0aCA9IEAiL2Jpbi9wcyI7CisgICAgdGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAg
ICAgICBAIi1heCIsCisgICAgICAgIEAiLW8iLAorICAgICAgICBAInBpZCxjb21tIgorICAgIF07
CisKKyAgICBhdXRvIHRhc2tQaXBlID0gYWRvcHROUyhbW05TUGlwZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt0YXNrIHNldFN0YW5kYXJkT3V0cHV0OnRhc2tQaXBlLmdldCgpXTsKKyAgICBbdGFzayBs
YXVuY2hdOworCisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2Nd
IGluaXRdKTsKKyAgICB3aGlsZSAoW3Rhc2sgaXNSdW5uaW5nXSkKKyAgICAgICAgW2RhdGEgYXBw
ZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5kT2ZG
aWxlXV07CisgICAgW2RhdGEgYXBwZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JSZWFk
aW5nXSByZWFkRGF0YVRvRW5kT2ZGaWxlXV07CisKKyAgICBhdXRvIHBzU3RyaW5nID0gYWRvcHRO
UyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YS5nZXQoKSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBzRW50cmllcyA9
IFtwc1N0cmluZyBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6QCJcbiJdOworCisgICAgZm9y
IChOU1N0cmluZyogZW50cnkgaW4gcHNFbnRyaWVzKSB7CisgICAgICAgIGlmICghW2VudHJ5IGhh
c1N1ZmZpeDpkYWVtb25FeGVjdXRhYmxlTmFtZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqY29tcG9uZW50cyA9IFtlbnRyeSBjb21wb25lbnRz
U2VwYXJhdGVkQnlTdHJpbmc6QCIgIl07CisgICAgICAgIEVYUEVDVF9HRShbY29tcG9uZW50cyBj
b3VudF0sIDJ1KTsKKyAgICAgICAgcmV0dXJuIFtbY29tcG9uZW50cyBmaXJzdE9iamVjdF0gaW50
ZWdlclZhbHVlXTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBraWxsRmlyc3RJ
bnN0YW5jZU9mRGFlbW9uKE5TU3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSkKK3sKKyAgICBh
dXRvIHBpZCA9IHBpZE9mRmlyc3REYWVtb25JbnN0YW5jZShkYWVtb25FeGVjdXRhYmxlTmFtZSk7
CisgICAgaWYgKCFwaWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFzayA9IGFkb3B0
TlMoW1tOU1Rhc2sgYWxsb2NdIGluaXRdKTsKKyAgICB0YXNrLmdldCgpLmxhdW5jaFBhdGggPSBA
Ii9iaW4va2lsbCI7CisgICAgdGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAgICAgICBAIi05
IiwKKyAgICAgICAgW0AocGlkKSBzdHJpbmdWYWx1ZV0KKyAgICBdOworCisgICAgW3Rhc2sgbGF1
bmNoXTsKKyAgICBbdGFzayB3YWl0VW50aWxFeGl0XTsKK30KIAogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQK
</data>
<flag name="commit-queue"
          id="468741"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443906</attachid>
            <date>2021-11-10 21:32:55 -0800</date>
            <delta_ts>2021-11-10 21:52:12 -0800</delta_ts>
            <desc>Patch for EWS v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26007</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGU4NzIyZDgyMjRkLi40YmExOTRhNmZhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJl
bmFibGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVt
b24gZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRo
aW4gdGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTAzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQg
QVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVzdHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5k
ZXggOWJjZjdlZGFmMDZjLi42MDJlYjcxM2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTUzLDE2ICsxMTUzLDYg
QEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVo
YXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQoZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCi17Ci0gICAg
cmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLQogLSAodm9p
ZClfc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAg
IF9wcmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CkBAIC0xNTU0LDYgKzE1NDQsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2
aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJl
ZmVyZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9
CiAKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAg
ICBfcHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCist
IChCT09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMt
Pm5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2
LDYgKzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlv
bkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3Rl
bUFjY2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJ
RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxl
ZDopIEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFU
QVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVu
YWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0
Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdH
ZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5T
U3RyaW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5h
dmlnYXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2
YTFiYTNlODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3Bl
Y3RvckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4w
KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1
cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhP
TkUKIApAQCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0
KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJl
Y3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihO
U1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vidmll
dyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1
bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5T
U2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDoo
X1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09M
KWlzUmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAz
MzMwYTYzYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmpl
Y3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1
c0RpcmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0
b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5Kikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIs
NyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
RmxvYXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpP
YmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94
eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxl
KFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcg
KzIxNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91
bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlh
dGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxl
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2
LDYgKzI2Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRs
ZXIgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9k
ZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAg
dm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNl
TGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxl
U3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVk
RmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3Rv
cjopXTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlk
IDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENv
bXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
Rm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlF
CiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURl
bGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0
b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3Mp
XTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxl
Z2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
X3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpk
ZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3Jp
Z2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0
Miw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQo
KSBzYXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJM
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmln
aW46ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0
eU9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChCT09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5z
cGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsK
ICAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjOTBlNzExNDExOS4uN2EwOWI5NTIyYTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
MTczLDYgKzEzMTczLDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBG
ZWF0dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBD
aGVjayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENy
ZWF0ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywK
KwkJCQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1v
bnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZB
OEYgLyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5
OTZFIC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY2Niw2ICsxMzY2Nywy
NCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMv
cHJvY2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4
N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxp
c3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAi
Q3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlv
dXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FU
SU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUg
dGhlIE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1v
bnMsXG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRo
cyBiZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1f
TkFNRX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RV
Q1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBE
QUVNT05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVt
b25zXCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9
XCIuLi8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwi
JHtCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hk
XCIgXCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtE
QUVNT05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0
N0MwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDdjYjkwM2I5NjZkLi43
ZDJjZGFlNmU0ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0
aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdl
bWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
byBnZXQgdGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVt
b25zIHZpc2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQg
dGhlIE9TTGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5v
dCBNYWMtcmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3Rp
bmcgaW5zdGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2lt
dWxhdG9yLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4K
KyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFu
VXBUZXN0V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0Rh
ZW1vblRlc3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1v
bkluc3RhbmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZE
YWVtb24pOgorCiAyMDIxLTExLTAzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQgQVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVz
dHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMK
aW5kZXggNmFjNDVjNjhkNDMzLi4zYjQwMTE3NzM1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1Mu
ZW50aXRsZW1lbnRzCkBAIC0xMCw1ICsxMCw3IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxl
LlBhc3RlYm9hcmQucGFzdGUtdW5jaGVja2VkPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFw
cGxlLnByaXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8L2tleT4KKwk8c3RyaW5nPlRlc3RX
ZWJLaXRBUEk8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5k
ZXggNWRmYmZkM2VmODViLi4yZjY0ZWZhNjE2NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKQEAgLTQ2
LDYgKzQ2LDggQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19jb2NvYXRvdWNoID0gJChpbmhlcml0
ZWQpICQoV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xE
RkxBR1MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUp
KTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfTUFDT1NfMTIwMCkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZM
QUdTX01BQ09TX1NJTkNFXzEyMDAgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQKK1dLX0FQ
UFNFUlZFUlNVUFBPUlRfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Nf
SU9TX1NJTkNFXzE1ID0gLWZyYW1ld29yayBBcHBTZXJ2ZXJTdXBwb3J0CiAKIFdLX0FVVEhLSVRf
TERGTEFHUyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tf
QVVUSEtJVF9MREZMQUdTX2lwaG9uZW9zID0gJChXS19BVVRIS0lUX0xERkxBR1MkKFdLX0lPU18x
MykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCmluZGV4IDE2OGQ0NmZmMzJmYy4uZTM1MTRkYjZmNTFmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCkBAIC01Miw5ICs1Miw2IEBAIHN0YXRpYyBib29sIGFsZXJ0UmVjZWl2ZWQgPSBmYWxz
ZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29y
a2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRpYyBS
ZXRhaW5QdHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRpb24oKQogewogICAgIHJldHVy
biBbY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJ3ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpAQCAtODMsNyArODAsMTEgQEAgc3RhdGlj
IFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQdXNoRGFlbW9uUExpc3QoTlNVUkwgKnN0
b3JhZ2VMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8gcHJvZ3JhbUFyZ3VtZW50cyA9IGFk
b3B0TlMoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CiAgICAgICAgIGF1dG8gZXhlY3V0
YWJsZUxvY2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpOworI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQo
KSwgWFBDX0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxvY2F0aW9uLmdldCgpLmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhwcm9n
cmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9EYWVtb25zL3dlYnB1c2hkIik7CisjZW5kaWYKICAg
ICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FS
UkFZX0FQUEVORCwgIi0tbWFjaFNlcnZpY2VOYW1lIik7CiAgICAgICAgIHhwY19hcnJheV9zZXRf
c3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsICJvcmcud2Vi
a2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKTsKICAgICAgICAgeHBjX2RpY3Rpb25hcnlf
c2V0X3ZhbHVlKHBsaXN0LmdldCgpLCAiUHJvZ3JhbUFyZ3VtZW50cyIsIHByb2dyYW1Bcmd1bWVu
dHMuZ2V0KCkpOwpAQCAtMTIwLDcgKzEyMSw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2Vi
UHVzaEQoKQogICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJy
b3I6JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAKLSAgICBzeXN0ZW0oImtpbGxh
bGwgd2VicHVzaGQgLTkgMj4gL2Rldi9udWxsIik7CisgICAga2lsbEZpcnN0SW5zdGFuY2VPZkRh
ZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBhdXRvIHBsaXN0ID0gdGVzdFdlYlB1c2hEYWVtb25Q
TGlzdCh0ZW1wRGlyKTsKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtMTM0LDcgKzEzNSw3
IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2ViUHVzaEQoKQogCiBzdGF0aWMgdm9pZCBjbGVh
blVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGlyKQogewotICAgIHN5c3RlbSgia2lsbGFsbCB3
ZWJwdXNoZCAtOSIpOworICAgIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oQCJ3ZWJwdXNoZCIp
OwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOwogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwpA
QCAtMTg2LDYgKzE4Nyw3IEBAIFRFU1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50KQog
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5j
ZXMgX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOllFU107CiAgICAgZm9yIChfV0tFeHBlcmltZW50
YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJl
c10pIHsKICAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJCdWlsdElu
Tm90aWZpY2F0aW9uc0VuYWJsZWQiXSkKICAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CkBAIC0yMzksNiAr
MjQxLDQgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAgICAgY2xlYW5V
cFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaAppbmRleCAwNmE3NjRkMDM4OTkuLmMxYjQy
YzUwMDViMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0
VXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRp
bGl0aWVzLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKElPUykKKwogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTM1LDEzICszNywxNSBAQCBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4ZWN1dGFi
bGVEaXJlY3RvcnkoKTsKIAotLy8gRklYTUU6IEdldCB0aGlzIHdvcmtpbmcgaW4gdGhlIGlPUyBz
aW11bGF0b3IuCi0jaWYgUExBVEZPUk0oTUFDKQordm9pZCBraWxsRmlyc3RJbnN0YW5jZU9mRGFl
bW9uKE5TU3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSk7CisKICNpZiBIQVZFKE9TX0xBVU5D
SERfSk9CKQogdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmpl
Y3RfdD4mJik7CiAjZWxzZQogdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4mJiwgTlNVUkwgKnRlbXBEaXIpOwogI2VuZGlmCi0jZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShJT1MpCisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFl
bW9uVGVzdFV0aWxpdGllcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVz
dFV0aWxpdGllcy5tbQppbmRleCA5NzRhNjQyYTBiNWQuLmRhYzIwMjhkYzIxYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5tbQpAQCAtMjYs
OSArMjYsMjYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRGFlbW9uVGVzdFV0aWxp
dGllcy5oIgogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisKICNpbXBvcnQg
PG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCisKKyNpZiBQTEFURk9STShJT1MpCitAaW50ZXJmYWNlIE5TVGFzayA6IE5TT2Jq
ZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdDsKKy0gKHZvaWQpbGF1bmNoOworLSAodm9pZCl3YWl0
VW50aWxFeGl0OworCitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqbGF1bmNo
UGF0aDsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmFy
Z3VtZW50czsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIHJldGFpbikgaWQgc3RhbmRhcmRPdXRwdXQ7
CitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNSdW5uaW5nKSBCT09MIHJ1bm5pbmc7CitA
ZW5kCisjZW5kaWYKKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBzdGF0aWMgUmV0YWlu
UHRyPE5TVVJMPiBjdXJyZW50RXhlY3V0YWJsZUxvY2F0aW9uKCkKQEAgLTQ4LDggKzY1LDYgQEAg
UmV0YWluUHRyPE5TVVJMPiBjdXJyZW50RXhlY3V0YWJsZURpcmVjdG9yeSgpCiAgICAgcmV0dXJu
IFtjdXJyZW50RXhlY3V0YWJsZUxvY2F0aW9uKCkgVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9u
ZW50XTsKIH0KIAotLy8gRklYTUU6IEdldCB0aGlzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IuCi0jaWYgUExBVEZPUk0oTUFDKQogI2lmIEhBVkUoT1NfTEFVTkNIRF9KT0IpCiAKIHZvaWQg
cmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYgcGxpc3Qp
CkBAIC01Nyw3ICs3MiwxMyBAQCB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5Q
dHI8eHBjX29iamVjdF90PiYmIHBsaXN0KQogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwogICAg
IGF1dG8gbGF1bmNoREpvYiA9IGFkb3B0TlMoW1tPU0xhdW5jaGRKb2IgYWxsb2NdIGluaXRXaXRo
UGxpc3Q6cGxpc3QuZ2V0KCldKTsKICAgICBbbGF1bmNoREpvYiBzdWJtaXQ6JmVycm9yXTsKKwor
ICAgIC8vIEluIHRoZSBpT1MgU2ltdWxhdG9yIHdlIG9mdGVuIHNlZSB0aGUgZm9sbG93aW5nIGVy
cm9yIGhlcmU6CisgICAgLy8gRXJyb3IgRG9tYWluPU9TTGF1bmNoZEVycm9yRG9tYWluIENvZGU9
MTcgIkZpbGUgZXhpc3RzIgorICAgIC8vIFRlc3RzIHN0aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4K
KyNpZiBQTEFURk9STShNQUMpCiAgICAgRVhQRUNUX0ZBTFNFKGVycm9yKTsKKyNlbmRpZgogfQog
CiAjZWxzZSAvLyBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtNzcsNiArOTgsNTkgQEAgdm9pZCBy
ZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4mJiBwbGlzdCwg
TlNVUkwgKnRlbXBEaXIpCiB9CiAKICNlbmRpZiAvLyBIQVZFKE9TX0xBVU5DSERfSk9CKQotI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKKworc3RhdGljIGludCBwaWRPZkZpcnN0RGFlbW9uSW5zdGFu
Y2UoTlNTdHJpbmcgKmRhZW1vbkV4ZWN1dGFibGVOYW1lKQoreworICAgIGF1dG8gdGFzayA9IGFk
b3B0TlMoW1tOU1Rhc2sgYWxsb2NdIGluaXRdKTsKKyAgICB0YXNrLmdldCgpLmxhdW5jaFBhdGgg
PSBAIi9iaW4vcHMiOworICAgIHRhc2suZ2V0KCkuYXJndW1lbnRzID0gQFsKKyAgICAgICAgQCIt
YXgiLAorICAgICAgICBAIi1vIiwKKyAgICAgICAgQCJwaWQsY29tbSIKKyAgICBdOworCisgICAg
YXV0byB0YXNrUGlwZSA9IGFkb3B0TlMoW1tOU1BpcGUgYWxsb2NdIGluaXRdKTsKKyAgICBbdGFz
ayBzZXRTdGFuZGFyZE91dHB1dDp0YXNrUGlwZS5nZXQoKV07CisgICAgW3Rhc2sgbGF1bmNoXTsK
KworICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7
CisgICAgd2hpbGUgKFt0YXNrIGlzUnVubmluZ10pCisgICAgICAgIFtkYXRhIGFwcGVuZERhdGE6
W1t0YXNrUGlwZSBmaWxlSGFuZGxlRm9yUmVhZGluZ10gcmVhZERhdGFUb0VuZE9mRmlsZV1dOwor
ICAgIFtkYXRhIGFwcGVuZERhdGE6W1t0YXNrUGlwZSBmaWxlSGFuZGxlRm9yUmVhZGluZ10gcmVh
ZERhdGFUb0VuZE9mRmlsZV1dOworCisgICAgYXV0byBwc1N0cmluZyA9IGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddKTsKKyAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpwc0VudHJpZXMgPSBbcHNTdHJp
bmcgY29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiXG4iXTsKKworICAgIGZvciAoTlNTdHJp
bmcqIGVudHJ5IGluIHBzRW50cmllcykgeworICAgICAgICBpZiAoIVtlbnRyeSBoYXNTdWZmaXg6
ZGFlbW9uRXhlY3V0YWJsZU5hbWVdKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmNvbXBvbmVudHMgPSBbZW50cnkgY29tcG9uZW50c1NlcGFyYXRl
ZEJ5U3RyaW5nOkAiICJdOworICAgICAgICBFWFBFQ1RfR0UoW2NvbXBvbmVudHMgY291bnRdLCAy
dSk7CisgICAgICAgIHJldHVybiBbW2NvbXBvbmVudHMgZmlyc3RPYmplY3RdIGludGVnZXJWYWx1
ZV07CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQga2lsbEZpcnN0SW5zdGFuY2VP
ZkRhZW1vbihOU1N0cmluZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUpCit7CisgICAgYXV0byBwaWQg
PSBwaWRPZkZpcnN0RGFlbW9uSW5zdGFuY2UoZGFlbW9uRXhlY3V0YWJsZU5hbWUpOworICAgIGlm
ICghcGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRhc2sgPSBhZG9wdE5TKFtbTlNU
YXNrIGFsbG9jXSBpbml0XSk7CisgICAgdGFzay5nZXQoKS5sYXVuY2hQYXRoID0gQCIvYmluL2tp
bGwiOworICAgIHRhc2suZ2V0KCkuYXJndW1lbnRzID0gQFsKKyAgICAgICAgQCItOSIsCisgICAg
ICAgIFtAKHBpZCkgc3RyaW5nVmFsdWVdCisgICAgXTsKKworICAgIFt0YXNrIGxhdW5jaF07Cisg
ICAgW3Rhc2sgd2FpdFVudGlsRXhpdF07Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKElPUykK
</data>
<flag name="commit-queue"
          id="468742"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443907</attachid>
            <date>2021-11-10 21:37:38 -0800</date>
            <delta_ts>2021-11-11 10:08:44 -0800</delta_ts>
            <desc>Patch for EWS v5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26225</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGU4NzIyZDgyMjRkLi40YmExOTRhNmZhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJl
bmFibGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVt
b24gZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRo
aW4gdGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTAzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQg
QVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVzdHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5k
ZXggOWJjZjdlZGFmMDZjLi42MDJlYjcxM2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTUzLDE2ICsxMTUzLDYg
QEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVo
YXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQoZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCi17Ci0gICAg
cmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLQogLSAodm9p
ZClfc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAg
IF9wcmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CkBAIC0xNTU0LDYgKzE1NDQsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2
aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJl
ZmVyZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9
CiAKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAg
ICBfcHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCist
IChCT09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMt
Pm5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2
LDYgKzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlv
bkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3Rl
bUFjY2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJ
RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxl
ZDopIEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFU
QVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVu
YWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0
Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdH
ZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5T
U3RyaW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5h
dmlnYXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2
YTFiYTNlODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3Bl
Y3RvckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4w
KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1
cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhP
TkUKIApAQCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0
KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJl
Y3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihO
U1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vidmll
dyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1
bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5T
U2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDoo
X1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09M
KWlzUmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAz
MzMwYTYzYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmpl
Y3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1
c0RpcmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0
b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5Kikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIs
NyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
RmxvYXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpP
YmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94
eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxl
KFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcg
KzIxNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91
bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlh
dGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxl
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2
LDYgKzI2Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRs
ZXIgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9k
ZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAg
dm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNl
TGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxl
U3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVk
RmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3Rv
cjopXTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlk
IDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENv
bXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
Rm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlF
CiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURl
bGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0
b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3Mp
XTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxl
Z2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
X3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpk
ZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3Jp
Z2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0
Miw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQo
KSBzYXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJM
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmln
aW46ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0
eU9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChCT09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5z
cGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsK
ICAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjOTBlNzExNDExOS4uN2EwOWI5NTIyYTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
MTczLDYgKzEzMTczLDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBG
ZWF0dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBD
aGVjayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENy
ZWF0ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywK
KwkJCQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1v
bnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZB
OEYgLyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5
OTZFIC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY2Niw2ICsxMzY2Nywy
NCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMv
cHJvY2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4
N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxp
c3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAi
Q3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlv
dXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FU
SU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUg
dGhlIE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1v
bnMsXG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRo
cyBiZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1f
TkFNRX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RV
Q1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBE
QUVNT05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVt
b25zXCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9
XCIuLi8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwi
JHtCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hk
XCIgXCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtE
QUVNT05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0
N0MwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDdjYjkwM2I5NjZkLi43
ZDJjZGFlNmU0ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0
aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdl
bWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
byBnZXQgdGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVt
b25zIHZpc2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQg
dGhlIE9TTGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5v
dCBNYWMtcmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3Rp
bmcgaW5zdGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2lt
dWxhdG9yLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4K
KyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFu
VXBUZXN0V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0Rh
ZW1vblRlc3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1v
bkluc3RhbmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZE
YWVtb24pOgorCiAyMDIxLTExLTAzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQgQVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVz
dHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMK
aW5kZXggNmFjNDVjNjhkNDMzLi4zYjQwMTE3NzM1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1Mu
ZW50aXRsZW1lbnRzCkBAIC0xMCw1ICsxMCw3IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxl
LlBhc3RlYm9hcmQucGFzdGUtdW5jaGVja2VkPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFw
cGxlLnByaXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8L2tleT4KKwk8c3RyaW5nPlRlc3RX
ZWJLaXRBUEk8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5k
ZXggNWRmYmZkM2VmODViLi4yZjY0ZWZhNjE2NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKQEAgLTQ2
LDYgKzQ2LDggQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19jb2NvYXRvdWNoID0gJChpbmhlcml0
ZWQpICQoV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xE
RkxBR1MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUp
KTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfTUFDT1NfMTIwMCkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZM
QUdTX01BQ09TX1NJTkNFXzEyMDAgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQKK1dLX0FQ
UFNFUlZFUlNVUFBPUlRfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Nf
SU9TX1NJTkNFXzE1ID0gLWZyYW1ld29yayBBcHBTZXJ2ZXJTdXBwb3J0CiAKIFdLX0FVVEhLSVRf
TERGTEFHUyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tf
QVVUSEtJVF9MREZMQUdTX2lwaG9uZW9zID0gJChXS19BVVRIS0lUX0xERkxBR1MkKFdLX0lPU18x
MykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCmluZGV4IDE2OGQ0NmZmMzJmYy4uYmIyZjc5NTgwZWYwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisKICNpbXBvcnQgIkRhZW1vblRlc3RVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCkBAIC01Miw5ICs1NCw2IEBAIHN0YXRpYyBib29sIGFsZXJ0UmVjZWl2ZWQgPSBm
YWxzZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBGSVhNRTogR2V0IHRoaXMg
d29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRpb24oKQogewogICAgIHJl
dHVybiBbY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJ3ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpAQCAtODMsNyArODIsMTEgQEAgc3Rh
dGljIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQdXNoRGFlbW9uUExpc3QoTlNVUkwg
KnN0b3JhZ2VMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8gcHJvZ3JhbUFyZ3VtZW50cyA9
IGFkb3B0TlMoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CiAgICAgICAgIGF1dG8gZXhl
Y3V0YWJsZUxvY2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpOworI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5n
ZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxvY2F0aW9uLmdldCgpLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhw
cm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9EYWVtb25zL3dlYnB1c2hkIik7CisjZW5kaWYK
ICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBD
X0FSUkFZX0FQUEVORCwgIi0tbWFjaFNlcnZpY2VOYW1lIik7CiAgICAgICAgIHhwY19hcnJheV9z
ZXRfc3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsICJvcmcu
d2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKTsKICAgICAgICAgeHBjX2RpY3Rpb25h
cnlfc2V0X3ZhbHVlKHBsaXN0LmdldCgpLCAiUHJvZ3JhbUFyZ3VtZW50cyIsIHByb2dyYW1Bcmd1
bWVudHMuZ2V0KCkpOwpAQCAtMTIwLDcgKzEyMyw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0
V2ViUHVzaEQoKQogICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIg
ZXJyb3I6JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAKLSAgICBzeXN0ZW0oImtp
bGxhbGwgd2VicHVzaGQgLTkgMj4gL2Rldi9udWxsIik7CisgICAga2lsbEZpcnN0SW5zdGFuY2VP
ZkRhZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBhdXRvIHBsaXN0ID0gdGVzdFdlYlB1c2hEYWVt
b25QTGlzdCh0ZW1wRGlyKTsKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtMTM0LDcgKzEz
Nyw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2ViUHVzaEQoKQogCiBzdGF0aWMgdm9pZCBj
bGVhblVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGlyKQogewotICAgIHN5c3RlbSgia2lsbGFs
bCB3ZWJwdXNoZCAtOSIpOworICAgIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oQCJ3ZWJwdXNo
ZCIpOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOwogICAgIE5TRXJyb3IgKmVycm9yID0gbmls
OwpAQCAtMTg2LDYgKzE4OSw3IEBAIFRFU1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50
KQogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRh
U3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVy
ZW5jZXMgX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOllFU107CiAgICAgZm9yIChfV0tFeHBlcmlt
ZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0
dXJlc10pIHsKICAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJCdWls
dEluTm90aWZpY2F0aW9uc0VuYWJsZWQiXSkKICAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CkBAIC0yMzks
NiArMjQzLDYgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAgICAgY2xl
YW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
RGFlbW9uVGVzdFV0aWxpdGllcy5oCmluZGV4IDA2YTc2NGQwMzg5OS4uYzFiNDJjNTAwNWIyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaApA
QCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TKQorCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYv
c3BpL2Rhcndpbi9YUENTUEkuaD4KIApAQCAtMzUsMTMgKzM3LDE1IEBAIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogUmV0YWluUHRyPE5TVVJMPiBjdXJyZW50RXhlY3V0YWJsZURpcmVjdG9y
eSgpOwogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4K
LSNpZiBQTEFURk9STShNQUMpCit2b2lkIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oTlNTdHJp
bmcgKmRhZW1vbkV4ZWN1dGFibGVOYW1lKTsKKwogI2lmIEhBVkUoT1NfTEFVTkNIRF9KT0IpCiB2
b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8eHBjX29iamVjdF90PiYmKTsK
ICNlbHNlCiB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9u
YXJ5PiYmLCBOU1VSTCAqdGVtcERpcik7CiAjZW5kaWYKLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
UykKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRp
bGl0aWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVz
Lm1tCmluZGV4IDk3NGE2NDJhMGI1ZC4uZGFjMjAyOGRjMjFhIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1tCkBAIC0yNiw5ICsyNiwyNiBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEYWVtb25UZXN0VXRpbGl0aWVzLmgiCiAK
KyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKwogI2ltcG9ydCA8bWFjaC1vL2R5
bGQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworI2lmIFBMQVRGT1JNKElPUykKK0BpbnRlcmZhY2UgTlNUYXNrIDogTlNPYmplY3QKKy0gKGlu
c3RhbmNldHlwZSlpbml0OworLSAodm9pZClsYXVuY2g7CistICh2b2lkKXdhaXRVbnRpbEV4aXQ7
CisKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpsYXVuY2hQYXRoOworQHBy
b3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqYXJndW1lbnRzOwor
QHByb3BlcnR5IChudWxsYWJsZSwgcmV0YWluKSBpZCBzdGFuZGFyZE91dHB1dDsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIGdldHRlcj1pc1J1bm5pbmcpIEJPT0wgcnVubmluZzsKK0BlbmQKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+
IGN1cnJlbnRFeGVjdXRhYmxlTG9jYXRpb24oKQpAQCAtNDgsOCArNjUsNiBAQCBSZXRhaW5QdHI8
TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gW2N1cnJlbnRF
eGVjdXRhYmxlTG9jYXRpb24oKSBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOwogfQog
Ci0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQ
TEFURk9STShNQUMpCiAjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikKIAogdm9pZCByZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4mJiBwbGlzdCkKQEAgLTU3LDcg
KzcyLDEzIEBAIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNfb2Jq
ZWN0X3Q+JiYgcGxpc3QpCiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgYXV0byBsYXVu
Y2hESm9iID0gYWRvcHROUyhbW09TTGF1bmNoZEpvYiBhbGxvY10gaW5pdFdpdGhQbGlzdDpwbGlz
dC5nZXQoKV0pOwogICAgIFtsYXVuY2hESm9iIHN1Ym1pdDomZXJyb3JdOworCisgICAgLy8gSW4g
dGhlIGlPUyBTaW11bGF0b3Igd2Ugb2Z0ZW4gc2VlIHRoZSBmb2xsb3dpbmcgZXJyb3IgaGVyZToK
KyAgICAvLyBFcnJvciBEb21haW49T1NMYXVuY2hkRXJyb3JEb21haW4gQ29kZT0xNyAiRmlsZSBl
eGlzdHMiCisgICAgLy8gVGVzdHMgc3RpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLgorI2lmIFBMQVRG
T1JNKE1BQykKICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworI2VuZGlmCiB9CiAKICNlbHNlIC8v
IEhBVkUoT1NfTEFVTkNIRF9KT0IpCkBAIC03Nyw2ICs5OCw1OSBAQCB2b2lkIHJlZ2lzdGVyUGxp
c3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiYmIHBsaXN0LCBOU1VSTCAqdGVt
cERpcikKIH0KIAogI2VuZGlmIC8vIEhBVkUoT1NfTEFVTkNIRF9KT0IpCi0jZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQorCitzdGF0aWMgaW50IHBpZE9mRmlyc3REYWVtb25JbnN0YW5jZShOU1N0cmlu
ZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUpCit7CisgICAgYXV0byB0YXNrID0gYWRvcHROUyhbW05T
VGFzayBhbGxvY10gaW5pdF0pOworICAgIHRhc2suZ2V0KCkubGF1bmNoUGF0aCA9IEAiL2Jpbi9w
cyI7CisgICAgdGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAgICAgICBAIi1heCIsCisgICAg
ICAgIEAiLW8iLAorICAgICAgICBAInBpZCxjb21tIgorICAgIF07CisKKyAgICBhdXRvIHRhc2tQ
aXBlID0gYWRvcHROUyhbW05TUGlwZSBhbGxvY10gaW5pdF0pOworICAgIFt0YXNrIHNldFN0YW5k
YXJkT3V0cHV0OnRhc2tQaXBlLmdldCgpXTsKKyAgICBbdGFzayBsYXVuY2hdOworCisgICAgYXV0
byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICB3aGls
ZSAoW3Rhc2sgaXNSdW5uaW5nXSkKKyAgICAgICAgW2RhdGEgYXBwZW5kRGF0YTpbW3Rhc2tQaXBl
IGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5kT2ZGaWxlXV07CisgICAgW2RhdGEg
YXBwZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5k
T2ZGaWxlXV07CisKKyAgICBhdXRvIHBzU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6ZGF0YS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
OworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBzRW50cmllcyA9IFtwc1N0cmluZyBjb21wb25l
bnRzU2VwYXJhdGVkQnlTdHJpbmc6QCJcbiJdOworCisgICAgZm9yIChOU1N0cmluZyogZW50cnkg
aW4gcHNFbnRyaWVzKSB7CisgICAgICAgIGlmICghW2VudHJ5IGhhc1N1ZmZpeDpkYWVtb25FeGVj
dXRhYmxlTmFtZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgTlNBcnJheTxOU1N0
cmluZyAqPiAqY29tcG9uZW50cyA9IFtlbnRyeSBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6
QCIgIl07CisgICAgICAgIEVYUEVDVF9HRShbY29tcG9uZW50cyBjb3VudF0sIDJ1KTsKKyAgICAg
ICAgcmV0dXJuIFtbY29tcG9uZW50cyBmaXJzdE9iamVjdF0gaW50ZWdlclZhbHVlXTsKKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBraWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKE5T
U3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSkKK3sKKyAgICBhdXRvIHBpZCA9IHBpZE9mRmly
c3REYWVtb25JbnN0YW5jZShkYWVtb25FeGVjdXRhYmxlTmFtZSk7CisgICAgaWYgKCFwaWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tOU1Rhc2sgYWxsb2Nd
IGluaXRdKTsKKyAgICB0YXNrLmdldCgpLmxhdW5jaFBhdGggPSBAIi9iaW4va2lsbCI7CisgICAg
dGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAgICAgICBAIi05IiwKKyAgICAgICAgW0AocGlk
KSBzdHJpbmdWYWx1ZV0KKyAgICBdOworCisgICAgW3Rhc2sgbGF1bmNoXTsKKyAgICBbdGFzayB3
YWl0VW50aWxFeGl0XTsKK30KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
SU9TKQo=
</data>
<flag name="commit-queue"
          id="468745"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443964</attachid>
            <date>2021-11-11 10:08:44 -0800</date>
            <delta_ts>2021-11-11 13:46:56 -0800</delta_ts>
            <desc>Patch for EWS v6</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27477</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGU4NzIyZDgyMjRkLi43ZmVlYzJhNTJlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJl
bmFibGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVt
b24gZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRo
aW4gdGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTAzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQg
QVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVzdHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5k
ZXggOWJjZjdlZGFmMDZjLi42MDJlYjcxM2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTUzLDE2ICsxMTUzLDYg
QEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVo
YXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQoZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCi17Ci0gICAg
cmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLQogLSAodm9p
ZClfc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAg
IF9wcmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CkBAIC0xNTU0LDYgKzE1NDQsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2
aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJl
ZmVyZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9
CiAKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAg
ICBfcHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCist
IChCT09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMt
Pm5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2
LDYgKzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlv
bkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3Rl
bUFjY2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJ
RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxl
ZDopIEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFU
QVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVu
YWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0
Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdH
ZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5T
U3RyaW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5h
dmlnYXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2
YTFiYTNlODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3Bl
Y3RvckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4w
KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1
cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhP
TkUKIApAQCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0
KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJl
Y3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihO
U1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vidmll
dyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1
bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5T
U2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDoo
X1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09M
KWlzUmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAz
MzMwYTYzYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmpl
Y3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1
c0RpcmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0
b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5Kikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIs
NyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
RmxvYXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpP
YmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94
eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxl
KFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcg
KzIxNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91
bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlh
dGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxl
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2
LDYgKzI2Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRs
ZXIgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9k
ZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAg
dm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNl
TGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxl
U3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVk
RmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3Rv
cjopXTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlk
IDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENv
bXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
Rm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlF
CiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURl
bGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0
b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3Mp
XTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxl
Z2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
X3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpk
ZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3Jp
Z2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0
Miw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQo
KSBzYXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJM
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmln
aW46ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0
eU9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChCT09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5z
cGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsK
ICAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjOTBlNzExNDExOS4uN2EwOWI5NTIyYTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
MTczLDYgKzEzMTczLDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBG
ZWF0dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBD
aGVjayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENy
ZWF0ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywK
KwkJCQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1v
bnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZB
OEYgLyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5
OTZFIC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY2Niw2ICsxMzY2Nywy
NCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMv
cHJvY2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4
N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxp
c3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAi
Q3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlv
dXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FU
SU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUg
dGhlIE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1v
bnMsXG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRo
cyBiZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1f
TkFNRX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RV
Q1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBE
QUVNT05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVt
b25zXCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9
XCIuLi8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwi
JHtCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hk
XCIgXCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtE
QUVNT05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0
N0MwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDdjYjkwM2I5NjZkLi4z
MDhlZWQ4NDk3Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0
aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdl
bWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
byBnZXQgdGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVt
b25zIHZpc2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQg
dGhlIE9TTGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5v
dCBNYWMtcmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3Rp
bmcgaW5zdGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2lt
dWxhdG9yLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4K
KyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFu
VXBUZXN0V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0Rh
ZW1vblRlc3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1v
bkluc3RhbmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZE
YWVtb24pOgorCiAyMDIxLTExLTAzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQgQVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVz
dHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMK
aW5kZXggNmFjNDVjNjhkNDMzLi4zYjQwMTE3NzM1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1Mu
ZW50aXRsZW1lbnRzCkBAIC0xMCw1ICsxMCw3IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxl
LlBhc3RlYm9hcmQucGFzdGUtdW5jaGVja2VkPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFw
cGxlLnByaXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8L2tleT4KKwk8c3RyaW5nPlRlc3RX
ZWJLaXRBUEk8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5k
ZXggNWRmYmZkM2VmODViLi4yZjY0ZWZhNjE2NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKQEAgLTQ2
LDYgKzQ2LDggQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19jb2NvYXRvdWNoID0gJChpbmhlcml0
ZWQpICQoV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xE
RkxBR1MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUp
KTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfTUFDT1NfMTIwMCkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZM
QUdTX01BQ09TX1NJTkNFXzEyMDAgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQKK1dLX0FQ
UFNFUlZFUlNVUFBPUlRfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Nf
SU9TX1NJTkNFXzE1ID0gLWZyYW1ld29yayBBcHBTZXJ2ZXJTdXBwb3J0CiAKIFdLX0FVVEhLSVRf
TERGTEFHUyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tf
QVVUSEtJVF9MREZMQUdTX2lwaG9uZW9zID0gJChXS19BVVRIS0lUX0xERkxBR1MkKFdLX0lPU18x
MykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCmluZGV4IDE2OGQ0NmZmMzJmYy4uYmIyZjc5NTgwZWYwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisKICNpbXBvcnQgIkRhZW1vblRlc3RVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCkBAIC01Miw5ICs1NCw2IEBAIHN0YXRpYyBib29sIGFsZXJ0UmVjZWl2ZWQgPSBm
YWxzZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBGSVhNRTogR2V0IHRoaXMg
d29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRpb24oKQogewogICAgIHJl
dHVybiBbY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJ3ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpAQCAtODMsNyArODIsMTEgQEAgc3Rh
dGljIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQdXNoRGFlbW9uUExpc3QoTlNVUkwg
KnN0b3JhZ2VMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8gcHJvZ3JhbUFyZ3VtZW50cyA9
IGFkb3B0TlMoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CiAgICAgICAgIGF1dG8gZXhl
Y3V0YWJsZUxvY2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpOworI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5n
ZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxvY2F0aW9uLmdldCgpLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhw
cm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9EYWVtb25zL3dlYnB1c2hkIik7CisjZW5kaWYK
ICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBD
X0FSUkFZX0FQUEVORCwgIi0tbWFjaFNlcnZpY2VOYW1lIik7CiAgICAgICAgIHhwY19hcnJheV9z
ZXRfc3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsICJvcmcu
d2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKTsKICAgICAgICAgeHBjX2RpY3Rpb25h
cnlfc2V0X3ZhbHVlKHBsaXN0LmdldCgpLCAiUHJvZ3JhbUFyZ3VtZW50cyIsIHByb2dyYW1Bcmd1
bWVudHMuZ2V0KCkpOwpAQCAtMTIwLDcgKzEyMyw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0
V2ViUHVzaEQoKQogICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIg
ZXJyb3I6JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAKLSAgICBzeXN0ZW0oImtp
bGxhbGwgd2VicHVzaGQgLTkgMj4gL2Rldi9udWxsIik7CisgICAga2lsbEZpcnN0SW5zdGFuY2VP
ZkRhZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBhdXRvIHBsaXN0ID0gdGVzdFdlYlB1c2hEYWVt
b25QTGlzdCh0ZW1wRGlyKTsKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtMTM0LDcgKzEz
Nyw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2ViUHVzaEQoKQogCiBzdGF0aWMgdm9pZCBj
bGVhblVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGlyKQogewotICAgIHN5c3RlbSgia2lsbGFs
bCB3ZWJwdXNoZCAtOSIpOworICAgIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oQCJ3ZWJwdXNo
ZCIpOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOwogICAgIE5TRXJyb3IgKmVycm9yID0gbmls
OwpAQCAtMTg2LDYgKzE4OSw3IEBAIFRFU1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50
KQogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRh
U3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVy
ZW5jZXMgX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOllFU107CiAgICAgZm9yIChfV0tFeHBlcmlt
ZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0
dXJlc10pIHsKICAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJCdWls
dEluTm90aWZpY2F0aW9uc0VuYWJsZWQiXSkKICAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CkBAIC0yMzks
NiArMjQzLDYgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAgICAgY2xl
YW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
RGFlbW9uVGVzdFV0aWxpdGllcy5oCmluZGV4IDA2YTc2NGQwMzg5OS4uYzFiNDJjNTAwNWIyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaApA
QCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TKQorCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYv
c3BpL2Rhcndpbi9YUENTUEkuaD4KIApAQCAtMzUsMTMgKzM3LDE1IEBAIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogUmV0YWluUHRyPE5TVVJMPiBjdXJyZW50RXhlY3V0YWJsZURpcmVjdG9y
eSgpOwogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4K
LSNpZiBQTEFURk9STShNQUMpCit2b2lkIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oTlNTdHJp
bmcgKmRhZW1vbkV4ZWN1dGFibGVOYW1lKTsKKwogI2lmIEhBVkUoT1NfTEFVTkNIRF9KT0IpCiB2
b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8eHBjX29iamVjdF90PiYmKTsK
ICNlbHNlCiB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9u
YXJ5PiYmLCBOU1VSTCAqdGVtcERpcik7CiAjZW5kaWYKLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
UykKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRp
bGl0aWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVz
Lm1tCmluZGV4IDk3NGE2NDJhMGI1ZC4uZGFjMjAyOGRjMjFhIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1tCkBAIC0yNiw5ICsyNiwyNiBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEYWVtb25UZXN0VXRpbGl0aWVzLmgiCiAK
KyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKwogI2ltcG9ydCA8bWFjaC1vL2R5
bGQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworI2lmIFBMQVRGT1JNKElPUykKK0BpbnRlcmZhY2UgTlNUYXNrIDogTlNPYmplY3QKKy0gKGlu
c3RhbmNldHlwZSlpbml0OworLSAodm9pZClsYXVuY2g7CistICh2b2lkKXdhaXRVbnRpbEV4aXQ7
CisKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpsYXVuY2hQYXRoOworQHBy
b3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqYXJndW1lbnRzOwor
QHByb3BlcnR5IChudWxsYWJsZSwgcmV0YWluKSBpZCBzdGFuZGFyZE91dHB1dDsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIGdldHRlcj1pc1J1bm5pbmcpIEJPT0wgcnVubmluZzsKK0BlbmQKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+
IGN1cnJlbnRFeGVjdXRhYmxlTG9jYXRpb24oKQpAQCAtNDgsOCArNjUsNiBAQCBSZXRhaW5QdHI8
TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gW2N1cnJlbnRF
eGVjdXRhYmxlTG9jYXRpb24oKSBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOwogfQog
Ci0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQ
TEFURk9STShNQUMpCiAjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikKIAogdm9pZCByZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4mJiBwbGlzdCkKQEAgLTU3LDcg
KzcyLDEzIEBAIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNfb2Jq
ZWN0X3Q+JiYgcGxpc3QpCiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgYXV0byBsYXVu
Y2hESm9iID0gYWRvcHROUyhbW09TTGF1bmNoZEpvYiBhbGxvY10gaW5pdFdpdGhQbGlzdDpwbGlz
dC5nZXQoKV0pOwogICAgIFtsYXVuY2hESm9iIHN1Ym1pdDomZXJyb3JdOworCisgICAgLy8gSW4g
dGhlIGlPUyBTaW11bGF0b3Igd2Ugb2Z0ZW4gc2VlIHRoZSBmb2xsb3dpbmcgZXJyb3IgaGVyZToK
KyAgICAvLyBFcnJvciBEb21haW49T1NMYXVuY2hkRXJyb3JEb21haW4gQ29kZT0xNyAiRmlsZSBl
eGlzdHMiCisgICAgLy8gVGVzdHMgc3RpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLgorI2lmIFBMQVRG
T1JNKE1BQykKICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworI2VuZGlmCiB9CiAKICNlbHNlIC8v
IEhBVkUoT1NfTEFVTkNIRF9KT0IpCkBAIC03Nyw2ICs5OCw1OSBAQCB2b2lkIHJlZ2lzdGVyUGxp
c3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiYmIHBsaXN0LCBOU1VSTCAqdGVt
cERpcikKIH0KIAogI2VuZGlmIC8vIEhBVkUoT1NfTEFVTkNIRF9KT0IpCi0jZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQorCitzdGF0aWMgaW50IHBpZE9mRmlyc3REYWVtb25JbnN0YW5jZShOU1N0cmlu
ZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUpCit7CisgICAgYXV0byB0YXNrID0gYWRvcHROUyhbW05T
VGFzayBhbGxvY10gaW5pdF0pOworICAgIHRhc2suZ2V0KCkubGF1bmNoUGF0aCA9IEAiL2Jpbi9w
cyI7CisgICAgdGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAgICAgICBAIi1heCIsCisgICAg
ICAgIEAiLW8iLAorICAgICAgICBAInBpZCxjb21tIgorICAgIF07CisKKyAgICBhdXRvIHRhc2tQ
aXBlID0gYWRvcHROUyhbW05TUGlwZSBhbGxvY10gaW5pdF0pOworICAgIFt0YXNrIHNldFN0YW5k
YXJkT3V0cHV0OnRhc2tQaXBlLmdldCgpXTsKKyAgICBbdGFzayBsYXVuY2hdOworCisgICAgYXV0
byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICB3aGls
ZSAoW3Rhc2sgaXNSdW5uaW5nXSkKKyAgICAgICAgW2RhdGEgYXBwZW5kRGF0YTpbW3Rhc2tQaXBl
IGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5kT2ZGaWxlXV07CisgICAgW2RhdGEg
YXBwZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5k
T2ZGaWxlXV07CisKKyAgICBhdXRvIHBzU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6ZGF0YS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
OworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBzRW50cmllcyA9IFtwc1N0cmluZyBjb21wb25l
bnRzU2VwYXJhdGVkQnlTdHJpbmc6QCJcbiJdOworCisgICAgZm9yIChOU1N0cmluZyogZW50cnkg
aW4gcHNFbnRyaWVzKSB7CisgICAgICAgIGlmICghW2VudHJ5IGhhc1N1ZmZpeDpkYWVtb25FeGVj
dXRhYmxlTmFtZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgTlNBcnJheTxOU1N0
cmluZyAqPiAqY29tcG9uZW50cyA9IFtlbnRyeSBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6
QCIgIl07CisgICAgICAgIEVYUEVDVF9HRShbY29tcG9uZW50cyBjb3VudF0sIDJ1KTsKKyAgICAg
ICAgcmV0dXJuIFtbY29tcG9uZW50cyBmaXJzdE9iamVjdF0gaW50ZWdlclZhbHVlXTsKKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBraWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKE5T
U3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSkKK3sKKyAgICBhdXRvIHBpZCA9IHBpZE9mRmly
c3REYWVtb25JbnN0YW5jZShkYWVtb25FeGVjdXRhYmxlTmFtZSk7CisgICAgaWYgKCFwaWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tOU1Rhc2sgYWxsb2Nd
IGluaXRdKTsKKyAgICB0YXNrLmdldCgpLmxhdW5jaFBhdGggPSBAIi9iaW4va2lsbCI7CisgICAg
dGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAgICAgICBAIi05IiwKKyAgICAgICAgW0AocGlk
KSBzdHJpbmdWYWx1ZV0KKyAgICBdOworCisgICAgW3Rhc2sgbGF1bmNoXTsKKyAgICBbdGFzayB3
YWl0VW50aWxFeGl0XTsKK30KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
SU9TKQpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJh
cmllcy9DaGFuZ2VMb2cKaW5kZXggOWUyOTRhMzA0MzM2Li4wMzgyMzMxMjE5ZGEgMTAwNjQ0Ci0t
LSBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTExLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgZGFlbW9uIEFQSSB0ZXN0cyB3b3JraW5nIGluIHRo
ZSBpT1Mgc2ltdWxhdG9yIChzdGFydGluZyB3aXRoIFdlYlB1c2hELlBlcm1pc3Npb25NYW5hZ2Vt
ZW50KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
Mjk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xNS9BcHBTZXJ2ZXJTdXBwb3J0LmZyYW1l
d29yay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZDogQWRkZWQuCisKIDIwMjEtMDktMjQgIEpvbmF0aGFu
IEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTVdIFN1cHBvcnQg
YnVpbGRpbmcgV2ViS2l0IChQYXJ0IDMpCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvV2Vi
S2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xNS9BcHBTZXJ2ZXJTdXBwb3J0LmZyYW1ld29y
ay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZCBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJh
bWV3b3JrU3R1YnMvaU9TLzE1L0FwcFNlcnZlclN1cHBvcnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1
cHBvcnQudGJkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWM5ZDQ2
YTcxNmY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVG
cmFtZXdvcmtTdHVicy9pT1MvMTUvQXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVy
U3VwcG9ydC50YmQKQEAgLTAsMCArMSw2IEBACistLS0gIXRhcGktdGJkLXYzCithcmNoczogICAg
ICAgICAgIFsgeDg2XzY0LCBhcm02NCwgYXJtNjRlIF0KK2luc3RhbGwtbmFtZTogICAgJy9TeXN0
ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9BcHBTZXJ2ZXJTdXBwb3J0LmZyYW1ld29yay9B
cHBTZXJ2ZXJTdXBwb3J0Jworb2JqYy1jb25zdHJhaW50OiBub25lCitwbGF0Zm9ybTogaW9zCisu
Li4K
</data>
<flag name="commit-queue"
          id="468859"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443998</attachid>
            <date>2021-11-11 13:46:56 -0800</date>
            <delta_ts>2021-11-11 15:21:53 -0800</delta_ts>
            <desc>Patch for EWS v7</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27382</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZTZhYTBmMjg2YmIwLi41YWI0NTY0ZWY4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJl
bmFibGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVt
b24gZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRo
aW4gdGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTA0ICBKb2huIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBhZGQvcmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvciBmb3IgdHJhbnNwb3J0PWludGVybmFs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tCmluZGV4IDliY2Y3ZWRhZjA2Yy4uNjAyZWI3MTNlODgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpAQCAtMTE1MywxNiAr
MTE1Myw2IEBAIC0gKE5TU3RyaW5nICopX3N0YW5kYXJkRm9udEZhbWlseQogICAgIHJldHVybiBf
cHJlZmVyZW5jZXMtPnN0YW5kYXJkRm9udEZhbWlseSgpOwogfQogCi0tICh2b2lkKV9zZXROb3Rp
ZmljYXRpb25zRW5hYmxlZDooQk9PTCllbmFibGVkCi17Ci0gICAgX3ByZWZlcmVuY2VzLT5zZXRO
b3RpZmljYXRpb25zRW5hYmxlZChlbmFibGVkKTsKLX0KLQotLSAoQk9PTClfbm90aWZpY2F0aW9u
c0VuYWJsZWQKLXsKLSAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5ub3RpZmljYXRpb25zRW5hYmxl
ZCgpOwotfQotCiAtICh2b2lkKV9zZXRCYWNrc3BhY2VLZXlOYXZpZ2F0aW9uRW5hYmxlZDooQk9P
TCllbmFibGVkCiB7CiAgICAgX3ByZWZlcmVuY2VzLT5zZXRCYWNrc3BhY2VLZXlOYXZpZ2F0aW9u
RW5hYmxlZChlbmFibGVkKTsKQEAgLTE1NTQsNiArMTU0NCwxNiBAQCAtICh2b2lkKV9zZXRBY2Nl
c3NIYW5kbGVFbmFibGVkOihCT09MKWFjY2Vzc0hhbmRsZUVuYWJsZWQKICAgICBfcHJlZmVyZW5j
ZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9CiAKKy0g
KHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBfcHJl
ZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCistIChCT09M
KV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPm5vdGlm
aWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IGY5
MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2LDYgKzE3
Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlvbkFsZ29y
aXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3RlbUFjY2Vz
c0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJRW5hYmxl
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxlZDopIEJP
T0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE5v
dGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFUQVJHRVRf
T1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVuYWJsZWQ6
KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CkBA
IC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0Y2hDb3Jy
ZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBz
ZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdHZXN0dXJl
RGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5TU3RyaW5n
ICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwot
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6KSBC
T09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5hdmlnYXRp
b25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVkaWFQbGF5
YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2YTFiYTNl
ODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3IEBAIHN0
cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3BlY3RvckJy
b3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
Mi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7Cist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9y
aWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIApA
QCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0KV93ZWJW
aWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkcmF3
SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmluZyAqKXRp
dGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAt
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJlY3Q6KENH
UmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihOU1VSTCAq
KXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1
cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2VidmlldyBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1bHQgd2l0
aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5TU2VjdXJl
Q29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDooX1dLUmVz
b3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09MKWlzUmVz
aXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAzMzMwYTYz
YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0x
MDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1dEVsZW1l
bnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBm
aW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1c0RpcmVj
dGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJv
eHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlF
dmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5KikgZmluYWw7
CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIsNyArMTI0
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94eSYsIFdl
YkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRS
ZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAgICAgIHZv
aWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViSGl0VGVz
dFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpPYmplY3Qq
KTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94eSYsIEFQ
STo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBh
Z2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcgKzIxNSw2
IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91bmRSZXNv
dXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdTYXZl
RGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlG
cmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2LDYgKzI2
Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXIgOiAx
OwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNz
aW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9kZWxlZ2F0
ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAgdm9pZCBV
SURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRX
aGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91
bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxlU3VnZ2Vz
dGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVkRmlsZW5h
bWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25I
YW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpy
dW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5k
bGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9u
UGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBl
cm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25G
b3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQXR0
YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3RvcjopXTsK
QEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJ
RGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENvbXBsZXRp
b25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYKKyAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JT
ZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2Vj
dXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6Omhh
bmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFCiAgICAg
WyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRl
LT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0b3BsYXlF
dmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3MpXTsKIH0K
IAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbG93ZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3VpRGVsZWdh
dGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lv
bkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS0+
bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZp
ZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lv
bkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dl
YlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3JpZ2luKSBk
ZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0
KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0Miw2IEBA
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQoKSBzYXZl
RGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVu
YW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJMXTsKIH0K
IAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbG93ZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3VpRGVsZWdh
dGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lv
bkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdh
dGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93
ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVj
aXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRl
IF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVlc3ROb3Rp
ZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0eU9yaWdp
bikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09M
IHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxl
ckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
c3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9y
KFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsKICAgICBp
ZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGI1ZDY3YWE4OTc0OS4uMGIyYjI4NDJlNWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMjA2LDYg
KzEzMjA2LDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBGZWF0dXJl
IEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBDaGVjayAu
eGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENyZWF0ZSBz
eW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKKwkJCQk1
MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9y
IGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZBOEYgLyog
Q29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5OTZFIC8q
IENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY5OSw2ICsxMzcwMCwyNCBAQAog
CQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMvcHJvY2Vz
cy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4N0Q0OSAv
KiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRzICovID0g
eworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRo
cyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ3JlYXRl
IHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlvdXRwdXRG
aWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jp
bi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FUSU9OfVwi
ID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUgdGhlIE1h
YyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1vbnMsXG4j
IGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRocyBiZWxv
dyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1fTkFNRX0g
IT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRfUFJPRFVD
VFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RVQ1RTX0RJ
Ul9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBEQUVNT05T
X1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVtb25zXCJc
biAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9XCIuLi8u
LlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwiJHtCVUlM
VF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hkXCIgXCIk
e0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVDVFNfRElS
X1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtEQUVNT05T
X1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0N0MwMEEw
REVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTJmZTlkMDNkMmEyLi5mZTc2MTA3
MzExMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0aGUgaU9T
IHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdlbWVudCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5ODIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBnZXQg
dGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVtb25zIHZp
c2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQgdGhlIE9T
TGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5vdCBNYWMt
cmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3RpbmcgaW5z
dGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2ltdWxhdG9y
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4KKyAgICAg
ICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
LWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFuVXBUZXN0
V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1v
blRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRl
c3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBsaXN0V2l0
aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1vbkluc3Rh
bmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24p
OgorCiAyMDIxLTExLTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGxhbmQgY29tbWFuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVu
dHMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9T
LmVudGl0bGVtZW50cwppbmRleCA2YWM0NWM2OGQ0MzMuLjNiNDAxMTc3MzU3OSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5l
bnRpdGxlbWVudHMKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMKQEAgLTEwLDUgKzEwLDcgQEAKIAk8dHJ1ZS8+CiAJ
PGtleT5jb20uYXBwbGUuUGFzdGVib2FyZC5wYXN0ZS11bmNoZWNrZWQ8L2tleT4KIAk8dHJ1ZS8+
CisJPGtleT5jb20uYXBwbGUucHJpdmF0ZS54cGMubGF1bmNoZC5qb2ItbWFuYWdlcjwva2V5Pgor
CTxzdHJpbmc+VGVzdFdlYktpdEFQSTwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54
Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SS54Y2NvbmZpZwppbmRleCA1ZGZiZmQzZWY4NWIuLjJmNjRlZmE2MTY1NyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmln
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54
Y2NvbmZpZwpAQCAtNDYsNiArNDYsOCBAQCBGUkFNRVdPUktfU0VBUkNIX1BBVEhTX2NvY29hdG91
Y2ggPSAkKGluaGVyaXRlZCkgJChXS19QUklWQVRFX0ZSQU1FV09SS1NfRElSKTsKIFdLX0FQUFNF
UlZFUlNVUFBPUlRfTERGTEFHUyA9ICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTXyQoV0tf
UExBVEZPUk1fTkFNRSkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTX21hY29zeCA9ICQo
V0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTJChXS19NQUNPU18xMjAwKSk7CiBXS19BUFBTRVJW
RVJTVVBQT1JUX0xERkxBR1NfTUFDT1NfU0lOQ0VfMTIwMCA9IC1mcmFtZXdvcmsgQXBwU2VydmVy
U3VwcG9ydAorV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9ICQo
V0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTJChXS19JT1NfMTUpKTsKK1dLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHU19JT1NfU0lOQ0VfMTUgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQK
IAogV0tfQVVUSEtJVF9MREZMQUdTID0gJChXS19BVVRIS0lUX0xERkxBR1NfJChXS19QTEFURk9S
TV9OQU1FKSk7CiBXS19BVVRIS0lUX0xERkxBR1NfaXBob25lb3MgPSAkKFdLX0FVVEhLSVRfTERG
TEFHUyQoV0tfSU9TXzEzKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggMTY4ZDQ2ZmYzMmZjLi5iYjJmNzk1
ODBlZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2ViUHVzaERhZW1vbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYlB1c2hEYWVtb24ubW0KQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCAiY29uZmln
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKwogI2ltcG9ydCAiRGFl
bW9uVGVzdFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKQEAgLTUyLDkgKzU0LDYgQEAgQGVuZAogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKLS8vIEZJWE1FOiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBp
T1Mgc2ltdWxhdG9yLgotI2lmIFBMQVRGT1JNKE1BQykKLQogc3RhdGljIFJldGFpblB0cjxOU1VS
TD4gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpCiB7CiAgICAgcmV0dXJuIFtjdXJyZW50RXhl
Y3V0YWJsZURpcmVjdG9yeSgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIndlYnB1c2hk
IiBpc0RpcmVjdG9yeTpOT107CkBAIC04Myw3ICs4MiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPHhw
Y19vYmplY3RfdD4gdGVzdFdlYlB1c2hEYWVtb25QTGlzdChOU1VSTCAqc3RvcmFnZUxvY2F0aW9u
KQogICAgIHsKICAgICAgICAgYXV0byBwcm9ncmFtQXJndW1lbnRzID0gYWRvcHROUyh4cGNfYXJy
YXlfY3JlYXRlKG51bGxwdHIsIDApKTsKICAgICAgICAgYXV0byBleGVjdXRhYmxlTG9jYXRpb24g
PSB0ZXN0V2ViUHVzaERhZW1vbkxvY2F0aW9uKCk7CisjaWYgUExBVEZPUk0oTUFDKQogICAgICAg
ICB4cGNfYXJyYXlfc2V0X3N0cmluZyhwcm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlf
QVBQRU5ELCBleGVjdXRhYmxlTG9jYXRpb24uZ2V0KCkuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KTsKKyNlbHNlCisgICAgICAgIHhwY19hcnJheV9zZXRfc3RyaW5nKHByb2dyYW1Bcmd1bWVudHMu
Z2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9XZWJL
aXQuZnJhbWV3b3JrL0RhZW1vbnMvd2VicHVzaGQiKTsKKyNlbmRpZgogICAgICAgICB4cGNfYXJy
YXlfc2V0X3N0cmluZyhwcm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAi
LS1tYWNoU2VydmljZU5hbWUiKTsKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3Jh
bUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgIm9yZy53ZWJraXQud2VicHVzaHRl
c3RkYWVtb24uc2VydmljZSIpOwogICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUocGxp
c3QuZ2V0KCksICJQcm9ncmFtQXJndW1lbnRzIiwgcHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSk7CkBA
IC0xMjAsNyArMTIzLDcgQEAgc3RhdGljIE5TVVJMICpzZXRVcFRlc3RXZWJQdXNoRCgpCiAgICAg
ICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjomZXJyb3JdOwog
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKIAotICAgIHN5c3RlbSgia2lsbGFsbCB3ZWJwdXNoZCAt
OSAyPiAvZGV2L251bGwiKTsKKyAgICBraWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKEAid2VicHVz
aGQiKTsKIAogICAgIGF1dG8gcGxpc3QgPSB0ZXN0V2ViUHVzaERhZW1vblBMaXN0KHRlbXBEaXIp
OwogI2lmIEhBVkUoT1NfTEFVTkNIRF9KT0IpCkBAIC0xMzQsNyArMTM3LDcgQEAgc3RhdGljIE5T
VVJMICpzZXRVcFRlc3RXZWJQdXNoRCgpCiAKIHN0YXRpYyB2b2lkIGNsZWFuVXBUZXN0V2ViUHVz
aEQoTlNVUkwgKnRlbXBEaXIpCiB7Ci0gICAgc3lzdGVtKCJraWxsYWxsIHdlYnB1c2hkIC05Iik7
CisgICAga2lsbEZpcnN0SW5zdGFuY2VPZkRhZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBFWFBF
Q1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
dGVtcERpci5wYXRoXSk7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CkBAIC0xODYsNiArMTg5
LDcgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAKICAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9y
ZS5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcyBfc2V0Tm90aWZp
Y2F0aW9uc0VuYWJsZWQ6WUVTXTsKICAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZl
YXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkgewogICAgICAg
ICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIkJ1aWx0SW5Ob3RpZmljYXRpb25z
RW5hYmxlZCJdKQogICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0
RW5hYmxlZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsKQEAgLTIzOSw2ICsyNDMsNiBAQCBURVNU
KFdlYlB1c2hELCBQZXJtaXNzaW9uTWFuYWdlbWVudCkKICAgICBjbGVhblVwVGVzdFdlYlB1c2hE
KHRlbXBEaXJlY3RvcnkpOwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVz
dFV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0
aWVzLmgKaW5kZXggMDZhNzY0ZDAzODk5Li5jMWI0MmM1MDA1YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5oCkBAIC0yNSw2ICsyNSw4IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisK
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQ
SS5oPgogCkBAIC0zNSwxMyArMzcsMTUgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBS
ZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCk7CiAKLS8vIEZJWE1F
OiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBpT1Mgc2ltdWxhdG9yLgotI2lmIFBMQVRGT1JNKE1B
QykKK3ZvaWQga2lsbEZpcnN0SW5zdGFuY2VPZkRhZW1vbihOU1N0cmluZyAqZGFlbW9uRXhlY3V0
YWJsZU5hbWUpOworCiAjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikKIHZvaWQgcmVnaXN0ZXJQbGlz
dFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYpOwogI2Vsc2UKIHZvaWQgcmVn
aXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+JiYsIE5TVVJMICp0
ZW1wRGlyKTsKICNlbmRpZgotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
KworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQorCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0KaW5kZXggOTc0YTY0
MmEwYjVkLi5kYWMyMDI4ZGMyMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvRGFlbW9uVGVzdFV0aWxpdGllcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMubW0KQEAgLTI2LDkgKzI2LDI2IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIkRhZW1vblRlc3RVdGlsaXRpZXMuaCIKIAorI2lmIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oSU9TKQorCiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8
d3RmL1ZlY3Rvci5oPgogCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCisjaWYgUExBVEZPUk0o
SU9TKQorQGludGVyZmFjZSBOU1Rhc2sgOiBOU09iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXQ7
CistICh2b2lkKWxhdW5jaDsKKy0gKHZvaWQpd2FpdFVudGlsRXhpdDsKKworQHByb3BlcnR5IChu
dWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmxhdW5jaFBhdGg7CitAcHJvcGVydHkgKG51bGxhYmxl
LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICphcmd1bWVudHM7CitAcHJvcGVydHkgKG51bGxh
YmxlLCByZXRhaW4pIGlkIHN0YW5kYXJkT3V0cHV0OworQHByb3BlcnR5IChyZWFkb25seSwgZ2V0
dGVyPWlzUnVubmluZykgQk9PTCBydW5uaW5nOworQGVuZAorI2VuZGlmCisKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4ZWN1dGFi
bGVMb2NhdGlvbigpCkBAIC00OCw4ICs2NSw2IEBAIFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4
ZWN1dGFibGVEaXJlY3RvcnkoKQogICAgIHJldHVybiBbY3VycmVudEV4ZWN1dGFibGVMb2NhdGlv
bigpIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07CiB9CiAKLS8vIEZJWE1FOiBHZXQg
dGhpcyB3b3JraW5nIGluIHRoZSBpT1Mgc2ltdWxhdG9yLgotI2lmIFBMQVRGT1JNKE1BQykKICNp
ZiBIQVZFKE9TX0xBVU5DSERfSk9CKQogCiB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChS
ZXRhaW5QdHI8eHBjX29iamVjdF90PiYmIHBsaXN0KQpAQCAtNTcsNyArNzIsMTMgQEAgdm9pZCBy
ZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4mJiBwbGlzdCkK
ICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICBhdXRvIGxhdW5jaERKb2IgPSBhZG9wdE5T
KFtbT1NMYXVuY2hkSm9iIGFsbG9jXSBpbml0V2l0aFBsaXN0OnBsaXN0LmdldCgpXSk7CiAgICAg
W2xhdW5jaERKb2Igc3VibWl0OiZlcnJvcl07CisKKyAgICAvLyBJbiB0aGUgaU9TIFNpbXVsYXRv
ciB3ZSBvZnRlbiBzZWUgdGhlIGZvbGxvd2luZyBlcnJvciBoZXJlOgorICAgIC8vIEVycm9yIERv
bWFpbj1PU0xhdW5jaGRFcnJvckRvbWFpbiBDb2RlPTE3ICJGaWxlIGV4aXN0cyIKKyAgICAvLyBU
ZXN0cyBzdGlsbCBiZWhhdmUgYXMgZXhwZWN0ZWQuCisjaWYgUExBVEZPUk0oTUFDKQogICAgIEVY
UEVDVF9GQUxTRShlcnJvcik7CisjZW5kaWYKIH0KIAogI2Vsc2UgLy8gSEFWRShPU19MQVVOQ0hE
X0pPQikKQEAgLTc3LDYgKzk4LDU5IEBAIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJl
dGFpblB0cjxOU0RpY3Rpb25hcnk+JiYgcGxpc3QsIE5TVVJMICp0ZW1wRGlyKQogfQogCiAjZW5k
aWYgLy8gSEFWRShPU19MQVVOQ0hEX0pPQikKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKK3N0
YXRpYyBpbnQgcGlkT2ZGaXJzdERhZW1vbkluc3RhbmNlKE5TU3RyaW5nICpkYWVtb25FeGVjdXRh
YmxlTmFtZSkKK3sKKyAgICBhdXRvIHRhc2sgPSBhZG9wdE5TKFtbTlNUYXNrIGFsbG9jXSBpbml0
XSk7CisgICAgdGFzay5nZXQoKS5sYXVuY2hQYXRoID0gQCIvYmluL3BzIjsKKyAgICB0YXNrLmdl
dCgpLmFyZ3VtZW50cyA9IEBbCisgICAgICAgIEAiLWF4IiwKKyAgICAgICAgQCItbyIsCisgICAg
ICAgIEAicGlkLGNvbW0iCisgICAgXTsKKworICAgIGF1dG8gdGFza1BpcGUgPSBhZG9wdE5TKFtb
TlNQaXBlIGFsbG9jXSBpbml0XSk7CisgICAgW3Rhc2sgc2V0U3RhbmRhcmRPdXRwdXQ6dGFza1Bp
cGUuZ2V0KCldOworICAgIFt0YXNrIGxhdW5jaF07CisKKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOworICAgIHdoaWxlIChbdGFzayBpc1J1bm5p
bmddKQorICAgICAgICBbZGF0YSBhcHBlbmREYXRhOltbdGFza1BpcGUgZmlsZUhhbmRsZUZvclJl
YWRpbmddIHJlYWREYXRhVG9FbmRPZkZpbGVdXTsKKyAgICBbZGF0YSBhcHBlbmREYXRhOltbdGFz
a1BpcGUgZmlsZUhhbmRsZUZvclJlYWRpbmddIHJlYWREYXRhVG9FbmRPZkZpbGVdXTsKKworICAg
IGF1dG8gcHNTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpk
YXRhLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgTlNBcnJheTxO
U1N0cmluZyAqPiAqcHNFbnRyaWVzID0gW3BzU3RyaW5nIGNvbXBvbmVudHNTZXBhcmF0ZWRCeVN0
cmluZzpAIlxuIl07CisKKyAgICBmb3IgKE5TU3RyaW5nKiBlbnRyeSBpbiBwc0VudHJpZXMpIHsK
KyAgICAgICAgaWYgKCFbZW50cnkgaGFzU3VmZml4OmRhZW1vbkV4ZWN1dGFibGVOYW1lXSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpjb21wb25l
bnRzID0gW2VudHJ5IGNvbXBvbmVudHNTZXBhcmF0ZWRCeVN0cmluZzpAIiAiXTsKKyAgICAgICAg
RVhQRUNUX0dFKFtjb21wb25lbnRzIGNvdW50XSwgMnUpOworICAgICAgICByZXR1cm4gW1tjb21w
b25lbnRzIGZpcnN0T2JqZWN0XSBpbnRlZ2VyVmFsdWVdOworICAgIH0KKworICAgIHJldHVybiAw
OworfQorCit2b2lkIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oTlNTdHJpbmcgKmRhZW1vbkV4
ZWN1dGFibGVOYW1lKQoreworICAgIGF1dG8gcGlkID0gcGlkT2ZGaXJzdERhZW1vbkluc3RhbmNl
KGRhZW1vbkV4ZWN1dGFibGVOYW1lKTsKKyAgICBpZiAoIXBpZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byB0YXNrID0gYWRvcHROUyhbW05TVGFzayBhbGxvY10gaW5pdF0pOworICAgIHRh
c2suZ2V0KCkubGF1bmNoUGF0aCA9IEAiL2Jpbi9raWxsIjsKKyAgICB0YXNrLmdldCgpLmFyZ3Vt
ZW50cyA9IEBbCisgICAgICAgIEAiLTkiLAorICAgICAgICBbQChwaWQpIHN0cmluZ1ZhbHVlXQor
ICAgIF07CisKKyAgICBbdGFzayBsYXVuY2hdOworICAgIFt0YXNrIHdhaXRVbnRpbEV4aXRdOwor
fQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKK05TX0FTU1VNRV9OT05OVUxMX0VO
RAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpp
bmRleCA5ZTI5NGEzMDQzMzYuLjAzODIzMzEyMTlkYSAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFy
aWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMjEtMTEtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0b3Ig
KHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRQcml2YXRlRnJh
bWV3b3JrU3R1YnMvaU9TLzE1L0FwcFNlcnZlclN1cHBvcnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1
cHBvcnQudGJkOiBBZGRlZC4KKwogMjAyMS0wOS0yNCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyAxNV0gU3VwcG9ydCBidWlsZGluZyBXZWJLaXQg
KFBhcnQgMykKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3
b3JrU3R1YnMvaU9TLzE1L0FwcFNlcnZlclN1cHBvcnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1cHBv
cnQudGJkIGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1Mv
MTUvQXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydC50YmQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYmI4NjIzOGU1OGYKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lP
Uy8xNS9BcHBTZXJ2ZXJTdXBwb3J0LmZyYW1ld29yay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZApAQCAt
MCwwICsxLDcgQEAKKy0tLSAhdGFwaS10YmQtdjMKK2FyY2hzOiAgICAgICAgICAgWyB4ODZfNjQs
IGFybTY0LCBhcm02NGUgXQorb2JqYy1jbGFzc2VzOiAgICBbIE9TTGF1bmNoZEpvYiBdCitpbnN0
YWxsLW5hbWU6ICAgICcvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQXBwU2VydmVy
U3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydCcKK29iamMtY29uc3RyYWludDogbm9u
ZQorcGxhdGZvcm06IGlvcworLi4uCg==
</data>
<flag name="commit-queue"
          id="468896"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444004</attachid>
            <date>2021-11-11 14:35:16 -0800</date>
            <delta_ts>2021-11-11 15:52:49 -0800</delta_ts>
            <desc>Patch for EWS v8</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27449</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZTZhYTBmMjg2YmIwLi41YWI0NTY0ZWY4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJl
bmFibGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVt
b24gZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRo
aW4gdGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTA0ICBKb2huIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVu
dCBhZGQvcmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvciBmb3IgdHJhbnNwb3J0PWludGVybmFs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tCmluZGV4IDliY2Y3ZWRhZjA2Yy4uNjAyZWI3MTNlODgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpAQCAtMTE1MywxNiAr
MTE1Myw2IEBAIC0gKE5TU3RyaW5nICopX3N0YW5kYXJkRm9udEZhbWlseQogICAgIHJldHVybiBf
cHJlZmVyZW5jZXMtPnN0YW5kYXJkRm9udEZhbWlseSgpOwogfQogCi0tICh2b2lkKV9zZXROb3Rp
ZmljYXRpb25zRW5hYmxlZDooQk9PTCllbmFibGVkCi17Ci0gICAgX3ByZWZlcmVuY2VzLT5zZXRO
b3RpZmljYXRpb25zRW5hYmxlZChlbmFibGVkKTsKLX0KLQotLSAoQk9PTClfbm90aWZpY2F0aW9u
c0VuYWJsZWQKLXsKLSAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5ub3RpZmljYXRpb25zRW5hYmxl
ZCgpOwotfQotCiAtICh2b2lkKV9zZXRCYWNrc3BhY2VLZXlOYXZpZ2F0aW9uRW5hYmxlZDooQk9P
TCllbmFibGVkCiB7CiAgICAgX3ByZWZlcmVuY2VzLT5zZXRCYWNrc3BhY2VLZXlOYXZpZ2F0aW9u
RW5hYmxlZChlbmFibGVkKTsKQEAgLTE1NTQsNiArMTU0NCwxNiBAQCAtICh2b2lkKV9zZXRBY2Nl
c3NIYW5kbGVFbmFibGVkOihCT09MKWFjY2Vzc0hhbmRsZUVuYWJsZWQKICAgICBfcHJlZmVyZW5j
ZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9CiAKKy0g
KHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBfcHJl
ZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCistIChCT09M
KV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPm5vdGlm
aWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IGY5
MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2LDYgKzE3
Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlvbkFsZ29y
aXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3RlbUFjY2Vz
c0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJRW5hYmxl
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxlZDopIEJP
T0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE5v
dGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFUQVJHRVRf
T1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVuYWJsZWQ6
KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CkBA
IC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0Y2hDb3Jy
ZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQbHVn
SW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBz
ZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdHZXN0dXJl
RGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5TU3RyaW5n
ICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwot
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6KSBC
T09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5hdmlnYXRp
b25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVkaWFQbGF5
YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2YTFiYTNl
ODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3IEBAIHN0
cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3BlY3RvckJy
b3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
Mi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7Cist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9y
aWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIApA
QCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0KV93ZWJW
aWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkcmF3
SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmluZyAqKXRp
dGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAt
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJlY3Q6KENH
UmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihOU1VSTCAq
KXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1
cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2VidmlldyBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1bHQgd2l0
aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5TU2VjdXJl
Q29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDooX1dLUmVz
b3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09MKWlzUmVz
aXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAzMzMwYTYz
YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0x
MDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1dEVsZW1l
bnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBm
aW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1c0RpcmVj
dGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJv
eHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlF
dmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5KikgZmluYWw7
CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIsNyArMTI0
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94eSYsIFdl
YkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRS
ZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAgICAgIHZv
aWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViSGl0VGVz
dFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpPYmplY3Qq
KTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94eSYsIEFQ
STo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBh
Z2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcgKzIxNSw2
IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91bmRSZXNv
dXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdTYXZl
RGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlG
cmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2LDYgKzI2
Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXIgOiAx
OwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNz
aW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9kZWxlZ2F0
ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAgdm9pZCBV
SURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRX
aGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91
bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxlU3VnZ2Vz
dGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVkRmlsZW5h
bWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25I
YW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpy
dW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5k
bGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9u
UGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBl
cm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25G
b3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQXR0
YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3RvcjopXTsK
QEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJ
RGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENvbXBsZXRp
b25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYKKyAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JT
ZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2Vj
dXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6Omhh
bmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFCiAgICAg
WyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRl
LT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0b3BsYXlF
dmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3MpXTsKIH0K
IAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbG93ZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3VpRGVsZWdh
dGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lv
bkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS0+
bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZp
ZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lv
bkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dl
YlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3JpZ2luKSBk
ZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0
KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0Miw2IEBA
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQoKSBzYXZl
RGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVu
YW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJMXTsKIH0K
IAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbG93ZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3VpRGVsZWdh
dGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lv
bkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdh
dGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93
ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVj
aXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRl
IF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVlc3ROb3Rp
ZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0eU9yaWdp
bikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09M
IHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxl
ckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
c3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9y
KFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsKICAgICBp
ZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGI1ZDY3YWE4OTc0OS4uMGIyYjI4NDJlNWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMjA2LDYg
KzEzMjA2LDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBGZWF0dXJl
IEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBDaGVjayAu
eGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENyZWF0ZSBz
eW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKKwkJCQk1
MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9y
IGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZBOEYgLyog
Q29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5OTZFIC8q
IENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY5OSw2ICsxMzcwMCwyNCBAQAog
CQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMvcHJvY2Vz
cy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4N0Q0OSAv
KiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRzICovID0g
eworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRo
cyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ3JlYXRl
IHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlvdXRwdXRG
aWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jp
bi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FUSU9OfVwi
ID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUgdGhlIE1h
YyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1vbnMsXG4j
IGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRocyBiZWxv
dyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1fTkFNRX0g
IT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRfUFJPRFVD
VFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RVQ1RTX0RJ
Ul9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBEQUVNT05T
X1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVtb25zXCJc
biAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9XCIuLi8u
LlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwiJHtCVUlM
VF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hkXCIgXCIk
e0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVDVFNfRElS
X1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtEQUVNT05T
X1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0N0MwMEEw
REVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTJmZTlkMDNkMmEyLi5mZTc2MTA3
MzExMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0aGUgaU9T
IHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdlbWVudCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5ODIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBnZXQg
dGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVtb25zIHZp
c2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQgdGhlIE9T
TGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5vdCBNYWMt
cmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3RpbmcgaW5z
dGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2ltdWxhdG9y
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4KKyAgICAg
ICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
LWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFuVXBUZXN0
V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1v
blRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRl
c3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBsaXN0V2l0
aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1vbkluc3Rh
bmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24p
OgorCiAyMDIxLTExLTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGxhbmQgY29tbWFuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVu
dHMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9T
LmVudGl0bGVtZW50cwppbmRleCA2YWM0NWM2OGQ0MzMuLjNiNDAxMTc3MzU3OSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5l
bnRpdGxlbWVudHMKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMKQEAgLTEwLDUgKzEwLDcgQEAKIAk8dHJ1ZS8+CiAJ
PGtleT5jb20uYXBwbGUuUGFzdGVib2FyZC5wYXN0ZS11bmNoZWNrZWQ8L2tleT4KIAk8dHJ1ZS8+
CisJPGtleT5jb20uYXBwbGUucHJpdmF0ZS54cGMubGF1bmNoZC5qb2ItbWFuYWdlcjwva2V5Pgor
CTxzdHJpbmc+VGVzdFdlYktpdEFQSTwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54
Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SS54Y2NvbmZpZwppbmRleCA1ZGZiZmQzZWY4NWIuLjJmNjRlZmE2MTY1NyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmln
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54
Y2NvbmZpZwpAQCAtNDYsNiArNDYsOCBAQCBGUkFNRVdPUktfU0VBUkNIX1BBVEhTX2NvY29hdG91
Y2ggPSAkKGluaGVyaXRlZCkgJChXS19QUklWQVRFX0ZSQU1FV09SS1NfRElSKTsKIFdLX0FQUFNF
UlZFUlNVUFBPUlRfTERGTEFHUyA9ICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTXyQoV0tf
UExBVEZPUk1fTkFNRSkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTX21hY29zeCA9ICQo
V0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTJChXS19NQUNPU18xMjAwKSk7CiBXS19BUFBTRVJW
RVJTVVBQT1JUX0xERkxBR1NfTUFDT1NfU0lOQ0VfMTIwMCA9IC1mcmFtZXdvcmsgQXBwU2VydmVy
U3VwcG9ydAorV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9ICQo
V0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTJChXS19JT1NfMTUpKTsKK1dLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHU19JT1NfU0lOQ0VfMTUgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQK
IAogV0tfQVVUSEtJVF9MREZMQUdTID0gJChXS19BVVRIS0lUX0xERkxBR1NfJChXS19QTEFURk9S
TV9OQU1FKSk7CiBXS19BVVRIS0lUX0xERkxBR1NfaXBob25lb3MgPSAkKFdLX0FVVEhLSVRfTERG
TEFHUyQoV0tfSU9TXzEzKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggMTY4ZDQ2ZmYzMmZjLi5iYjJmNzk1
ODBlZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2ViUHVzaERhZW1vbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYlB1c2hEYWVtb24ubW0KQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCAiY29uZmln
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKwogI2ltcG9ydCAiRGFl
bW9uVGVzdFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKQEAgLTUyLDkgKzU0LDYgQEAgQGVuZAogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKLS8vIEZJWE1FOiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBp
T1Mgc2ltdWxhdG9yLgotI2lmIFBMQVRGT1JNKE1BQykKLQogc3RhdGljIFJldGFpblB0cjxOU1VS
TD4gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpCiB7CiAgICAgcmV0dXJuIFtjdXJyZW50RXhl
Y3V0YWJsZURpcmVjdG9yeSgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIndlYnB1c2hk
IiBpc0RpcmVjdG9yeTpOT107CkBAIC04Myw3ICs4MiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPHhw
Y19vYmplY3RfdD4gdGVzdFdlYlB1c2hEYWVtb25QTGlzdChOU1VSTCAqc3RvcmFnZUxvY2F0aW9u
KQogICAgIHsKICAgICAgICAgYXV0byBwcm9ncmFtQXJndW1lbnRzID0gYWRvcHROUyh4cGNfYXJy
YXlfY3JlYXRlKG51bGxwdHIsIDApKTsKICAgICAgICAgYXV0byBleGVjdXRhYmxlTG9jYXRpb24g
PSB0ZXN0V2ViUHVzaERhZW1vbkxvY2F0aW9uKCk7CisjaWYgUExBVEZPUk0oTUFDKQogICAgICAg
ICB4cGNfYXJyYXlfc2V0X3N0cmluZyhwcm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlf
QVBQRU5ELCBleGVjdXRhYmxlTG9jYXRpb24uZ2V0KCkuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KTsKKyNlbHNlCisgICAgICAgIHhwY19hcnJheV9zZXRfc3RyaW5nKHByb2dyYW1Bcmd1bWVudHMu
Z2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9XZWJL
aXQuZnJhbWV3b3JrL0RhZW1vbnMvd2VicHVzaGQiKTsKKyNlbmRpZgogICAgICAgICB4cGNfYXJy
YXlfc2V0X3N0cmluZyhwcm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAi
LS1tYWNoU2VydmljZU5hbWUiKTsKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3Jh
bUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgIm9yZy53ZWJraXQud2VicHVzaHRl
c3RkYWVtb24uc2VydmljZSIpOwogICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUocGxp
c3QuZ2V0KCksICJQcm9ncmFtQXJndW1lbnRzIiwgcHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSk7CkBA
IC0xMjAsNyArMTIzLDcgQEAgc3RhdGljIE5TVVJMICpzZXRVcFRlc3RXZWJQdXNoRCgpCiAgICAg
ICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjomZXJyb3JdOwog
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKIAotICAgIHN5c3RlbSgia2lsbGFsbCB3ZWJwdXNoZCAt
OSAyPiAvZGV2L251bGwiKTsKKyAgICBraWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKEAid2VicHVz
aGQiKTsKIAogICAgIGF1dG8gcGxpc3QgPSB0ZXN0V2ViUHVzaERhZW1vblBMaXN0KHRlbXBEaXIp
OwogI2lmIEhBVkUoT1NfTEFVTkNIRF9KT0IpCkBAIC0xMzQsNyArMTM3LDcgQEAgc3RhdGljIE5T
VVJMICpzZXRVcFRlc3RXZWJQdXNoRCgpCiAKIHN0YXRpYyB2b2lkIGNsZWFuVXBUZXN0V2ViUHVz
aEQoTlNVUkwgKnRlbXBEaXIpCiB7Ci0gICAgc3lzdGVtKCJraWxsYWxsIHdlYnB1c2hkIC05Iik7
CisgICAga2lsbEZpcnN0SW5zdGFuY2VPZkRhZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBFWFBF
Q1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
dGVtcERpci5wYXRoXSk7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CkBAIC0xODYsNiArMTg5
LDcgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAKICAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9y
ZS5nZXQoKTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcyBfc2V0Tm90aWZp
Y2F0aW9uc0VuYWJsZWQ6WUVTXTsKICAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZl
YXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkgewogICAgICAg
ICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIkJ1aWx0SW5Ob3RpZmljYXRpb25z
RW5hYmxlZCJdKQogICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0
RW5hYmxlZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsKQEAgLTIzOSw2ICsyNDMsNiBAQCBURVNU
KFdlYlB1c2hELCBQZXJtaXNzaW9uTWFuYWdlbWVudCkKICAgICBjbGVhblVwVGVzdFdlYlB1c2hE
KHRlbXBEaXJlY3RvcnkpOwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVz
dFV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0
aWVzLmgKaW5kZXggMDZhNzY0ZDAzODk5Li5jMWI0MmM1MDA1YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5oCkBAIC0yNSw2ICsyNSw4IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisK
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQ
SS5oPgogCkBAIC0zNSwxMyArMzcsMTUgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBS
ZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCk7CiAKLS8vIEZJWE1F
OiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBpT1Mgc2ltdWxhdG9yLgotI2lmIFBMQVRGT1JNKE1B
QykKK3ZvaWQga2lsbEZpcnN0SW5zdGFuY2VPZkRhZW1vbihOU1N0cmluZyAqZGFlbW9uRXhlY3V0
YWJsZU5hbWUpOworCiAjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikKIHZvaWQgcmVnaXN0ZXJQbGlz
dFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYpOwogI2Vsc2UKIHZvaWQgcmVn
aXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+JiYsIE5TVVJMICp0
ZW1wRGlyKTsKICNlbmRpZgotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
KworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQorCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0KaW5kZXggOTc0YTY0
MmEwYjVkLi5kYWMyMDI4ZGMyMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvRGFlbW9uVGVzdFV0aWxpdGllcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMubW0KQEAgLTI2LDkgKzI2LDI2IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIkRhZW1vblRlc3RVdGlsaXRpZXMuaCIKIAorI2lmIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oSU9TKQorCiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8
d3RmL1ZlY3Rvci5oPgogCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCisjaWYgUExBVEZPUk0o
SU9TKQorQGludGVyZmFjZSBOU1Rhc2sgOiBOU09iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXQ7
CistICh2b2lkKWxhdW5jaDsKKy0gKHZvaWQpd2FpdFVudGlsRXhpdDsKKworQHByb3BlcnR5IChu
dWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmxhdW5jaFBhdGg7CitAcHJvcGVydHkgKG51bGxhYmxl
LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICphcmd1bWVudHM7CitAcHJvcGVydHkgKG51bGxh
YmxlLCByZXRhaW4pIGlkIHN0YW5kYXJkT3V0cHV0OworQHByb3BlcnR5IChyZWFkb25seSwgZ2V0
dGVyPWlzUnVubmluZykgQk9PTCBydW5uaW5nOworQGVuZAorI2VuZGlmCisKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4ZWN1dGFi
bGVMb2NhdGlvbigpCkBAIC00OCw4ICs2NSw2IEBAIFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4
ZWN1dGFibGVEaXJlY3RvcnkoKQogICAgIHJldHVybiBbY3VycmVudEV4ZWN1dGFibGVMb2NhdGlv
bigpIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07CiB9CiAKLS8vIEZJWE1FOiBHZXQg
dGhpcyB3b3JraW5nIGluIHRoZSBpT1Mgc2ltdWxhdG9yLgotI2lmIFBMQVRGT1JNKE1BQykKICNp
ZiBIQVZFKE9TX0xBVU5DSERfSk9CKQogCiB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChS
ZXRhaW5QdHI8eHBjX29iamVjdF90PiYmIHBsaXN0KQpAQCAtNTcsNyArNzIsMTMgQEAgdm9pZCBy
ZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4mJiBwbGlzdCkK
ICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICBhdXRvIGxhdW5jaERKb2IgPSBhZG9wdE5T
KFtbT1NMYXVuY2hkSm9iIGFsbG9jXSBpbml0V2l0aFBsaXN0OnBsaXN0LmdldCgpXSk7CiAgICAg
W2xhdW5jaERKb2Igc3VibWl0OiZlcnJvcl07CisKKyAgICAvLyBJbiB0aGUgaU9TIFNpbXVsYXRv
ciB3ZSBvZnRlbiBzZWUgdGhlIGZvbGxvd2luZyBlcnJvciBoZXJlOgorICAgIC8vIEVycm9yIERv
bWFpbj1PU0xhdW5jaGRFcnJvckRvbWFpbiBDb2RlPTE3ICJGaWxlIGV4aXN0cyIKKyAgICAvLyBU
ZXN0cyBzdGlsbCBiZWhhdmUgYXMgZXhwZWN0ZWQuCisjaWYgUExBVEZPUk0oTUFDKQogICAgIEVY
UEVDVF9GQUxTRShlcnJvcik7CisjZW5kaWYKIH0KIAogI2Vsc2UgLy8gSEFWRShPU19MQVVOQ0hE
X0pPQikKQEAgLTc3LDYgKzk4LDU5IEBAIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJl
dGFpblB0cjxOU0RpY3Rpb25hcnk+JiYgcGxpc3QsIE5TVVJMICp0ZW1wRGlyKQogfQogCiAjZW5k
aWYgLy8gSEFWRShPU19MQVVOQ0hEX0pPQikKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKK3N0
YXRpYyBpbnQgcGlkT2ZGaXJzdERhZW1vbkluc3RhbmNlKE5TU3RyaW5nICpkYWVtb25FeGVjdXRh
YmxlTmFtZSkKK3sKKyAgICBhdXRvIHRhc2sgPSBhZG9wdE5TKFtbTlNUYXNrIGFsbG9jXSBpbml0
XSk7CisgICAgdGFzay5nZXQoKS5sYXVuY2hQYXRoID0gQCIvYmluL3BzIjsKKyAgICB0YXNrLmdl
dCgpLmFyZ3VtZW50cyA9IEBbCisgICAgICAgIEAiLWF4IiwKKyAgICAgICAgQCItbyIsCisgICAg
ICAgIEAicGlkLGNvbW0iCisgICAgXTsKKworICAgIGF1dG8gdGFza1BpcGUgPSBhZG9wdE5TKFtb
TlNQaXBlIGFsbG9jXSBpbml0XSk7CisgICAgW3Rhc2sgc2V0U3RhbmRhcmRPdXRwdXQ6dGFza1Bp
cGUuZ2V0KCldOworICAgIFt0YXNrIGxhdW5jaF07CisKKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOworICAgIHdoaWxlIChbdGFzayBpc1J1bm5p
bmddKQorICAgICAgICBbZGF0YSBhcHBlbmREYXRhOltbdGFza1BpcGUgZmlsZUhhbmRsZUZvclJl
YWRpbmddIHJlYWREYXRhVG9FbmRPZkZpbGVdXTsKKyAgICBbZGF0YSBhcHBlbmREYXRhOltbdGFz
a1BpcGUgZmlsZUhhbmRsZUZvclJlYWRpbmddIHJlYWREYXRhVG9FbmRPZkZpbGVdXTsKKworICAg
IGF1dG8gcHNTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpk
YXRhLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgTlNBcnJheTxO
U1N0cmluZyAqPiAqcHNFbnRyaWVzID0gW3BzU3RyaW5nIGNvbXBvbmVudHNTZXBhcmF0ZWRCeVN0
cmluZzpAIlxuIl07CisKKyAgICBmb3IgKE5TU3RyaW5nKiBlbnRyeSBpbiBwc0VudHJpZXMpIHsK
KyAgICAgICAgaWYgKCFbZW50cnkgaGFzU3VmZml4OmRhZW1vbkV4ZWN1dGFibGVOYW1lXSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpjb21wb25l
bnRzID0gW2VudHJ5IGNvbXBvbmVudHNTZXBhcmF0ZWRCeVN0cmluZzpAIiAiXTsKKyAgICAgICAg
RVhQRUNUX0dFKFtjb21wb25lbnRzIGNvdW50XSwgMnUpOworICAgICAgICByZXR1cm4gW1tjb21w
b25lbnRzIGZpcnN0T2JqZWN0XSBpbnRlZ2VyVmFsdWVdOworICAgIH0KKworICAgIHJldHVybiAw
OworfQorCit2b2lkIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oTlNTdHJpbmcgKmRhZW1vbkV4
ZWN1dGFibGVOYW1lKQoreworICAgIGF1dG8gcGlkID0gcGlkT2ZGaXJzdERhZW1vbkluc3RhbmNl
KGRhZW1vbkV4ZWN1dGFibGVOYW1lKTsKKyAgICBpZiAoIXBpZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byB0YXNrID0gYWRvcHROUyhbW05TVGFzayBhbGxvY10gaW5pdF0pOworICAgIHRh
c2suZ2V0KCkubGF1bmNoUGF0aCA9IEAiL2Jpbi9raWxsIjsKKyAgICB0YXNrLmdldCgpLmFyZ3Vt
ZW50cyA9IEBbCisgICAgICAgIEAiLTkiLAorICAgICAgICBbQChwaWQpIHN0cmluZ1ZhbHVlXQor
ICAgIF07CisKKyAgICBbdGFzayBsYXVuY2hdOworICAgIFt0YXNrIHdhaXRVbnRpbEV4aXRdOwor
fQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKK05TX0FTU1VNRV9OT05OVUxMX0VO
RAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpp
bmRleCA5ZTI5NGEzMDQzMzYuLjAzODIzMzEyMTlkYSAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFy
aWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMjEtMTEtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0b3Ig
KHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRQcml2YXRlRnJh
bWV3b3JrU3R1YnMvaU9TLzE1L0FwcFNlcnZlclN1cHBvcnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1
cHBvcnQudGJkOiBBZGRlZC4KKwogMjAyMS0wOS0yNCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyAxNV0gU3VwcG9ydCBidWlsZGluZyBXZWJLaXQg
KFBhcnQgMykKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3
b3JrU3R1YnMvaU9TLzE1L0FwcFNlcnZlclN1cHBvcnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1cHBv
cnQudGJkIGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1Mv
MTUvQXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydC50YmQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YTAxZDg0ODUwNmIKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lP
Uy8xNS9BcHBTZXJ2ZXJTdXBwb3J0LmZyYW1ld29yay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZApAQCAt
MCwwICsxLDggQEAKKy0tLSAhdGFwaS10YmQtdjMKK2FyY2hzOiAgICAgICAgICAgWyB4ODZfNjQs
IGFybTY0LCBhcm02NGUgXQoraW5zdGFsbC1uYW1lOiAgICAnL1N5c3RlbS9MaWJyYXJ5L1ByaXZh
dGVGcmFtZXdvcmtzL0FwcFNlcnZlclN1cHBvcnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1cHBvcnQn
CitwbGF0Zm9ybTogaW9zCitleHBvcnRzOgorICAtIGFyY2hzOiAgICAgICAgICAgWyB4ODZfNjQs
IGFybTY0LCBhcm02NGUgXQorICAgIG9iamMtY2xhc3NlczogICAgWyBPU0xhdW5jaGRKb2IgXQor
Li4uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="468908"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444013</attachid>
            <date>2021-11-11 15:44:20 -0800</date>
            <delta_ts>2021-11-11 18:50:28 -0800</delta_ts>
            <desc>Patch for EWS v9</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27551</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGU4NzIyZDgyMjRkLi43ZmVlYzJhNTJlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJl
bmFibGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVt
b24gZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRo
aW4gdGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTAzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQg
QVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVzdHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5k
ZXggOWJjZjdlZGFmMDZjLi42MDJlYjcxM2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTUzLDE2ICsxMTUzLDYg
QEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVo
YXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQoZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCi17Ci0gICAg
cmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLQogLSAodm9p
ZClfc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAg
IF9wcmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CkBAIC0xNTU0LDYgKzE1NDQsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2
aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJl
ZmVyZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9
CiAKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAg
ICBfcHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCist
IChCT09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMt
Pm5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2
LDYgKzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlv
bkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3Rl
bUFjY2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJ
RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxl
ZDopIEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFU
QVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVu
YWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0
Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdH
ZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5T
U3RyaW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5h
dmlnYXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2
YTFiYTNlODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3Bl
Y3RvckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4w
KSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1
cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhP
TkUKIApAQCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0
KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJl
Y3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihO
U1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vidmll
dyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1
bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5T
U2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDoo
X1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09M
KWlzUmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAz
MzMwYTYzYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmpl
Y3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1
c0RpcmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0
b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5Kikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIs
NyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
RmxvYXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpP
YmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94
eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxl
KFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcg
KzIxNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91
bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlh
dGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxl
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
ciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2
LDYgKzI2Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRs
ZXIgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9k
ZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAg
dm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNl
TGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxl
U3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVk
RmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3Rv
cjopXTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlk
IDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENv
bXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
Rm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlF
CiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURl
bGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0
b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3Mp
XTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxl
Z2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
X3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpk
ZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3Jp
Z2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJP
T0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0
Miw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQo
KSBzYXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJM
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFs
bG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Vp
RGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmln
aW46ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0
eU9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChCT09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5z
cGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsK
ICAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjOTBlNzExNDExOS4uN2EwOWI5NTIyYTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
MTczLDYgKzEzMTczLDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBG
ZWF0dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBD
aGVjayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENy
ZWF0ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywK
KwkJCQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1v
bnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZB
OEYgLyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5
OTZFIC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY2Niw2ICsxMzY2Nywy
NCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMv
cHJvY2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4
N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxp
c3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAi
Q3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlv
dXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FU
SU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUg
dGhlIE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1v
bnMsXG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRo
cyBiZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1f
TkFNRX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RV
Q1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBE
QUVNT05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVt
b25zXCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9
XCIuLi8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwi
JHtCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hk
XCIgXCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtE
QUVNT05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0
N0MwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDdjYjkwM2I5NjZkLi4z
MDhlZWQ4NDk3Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0
aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdl
bWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
byBnZXQgdGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVt
b25zIHZpc2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQg
dGhlIE9TTGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5v
dCBNYWMtcmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3Rp
bmcgaW5zdGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2lt
dWxhdG9yLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4K
KyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFu
VXBUZXN0V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0Rh
ZW1vblRlc3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1v
bkluc3RhbmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZE
YWVtb24pOgorCiAyMDIxLTExLTAzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQgQVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVz
dHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMK
aW5kZXggNmFjNDVjNjhkNDMzLi4zYjQwMTE3NzM1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1Mu
ZW50aXRsZW1lbnRzCkBAIC0xMCw1ICsxMCw3IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxl
LlBhc3RlYm9hcmQucGFzdGUtdW5jaGVja2VkPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFw
cGxlLnByaXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8L2tleT4KKwk8c3RyaW5nPlRlc3RX
ZWJLaXRBUEk8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5k
ZXggNWRmYmZkM2VmODViLi4yZjY0ZWZhNjE2NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKQEAgLTQ2
LDYgKzQ2LDggQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19jb2NvYXRvdWNoID0gJChpbmhlcml0
ZWQpICQoV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xE
RkxBR1MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUp
KTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfTUFDT1NfMTIwMCkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZM
QUdTX01BQ09TX1NJTkNFXzEyMDAgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQKK1dLX0FQ
UFNFUlZFUlNVUFBPUlRfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Nf
SU9TX1NJTkNFXzE1ID0gLWZyYW1ld29yayBBcHBTZXJ2ZXJTdXBwb3J0CiAKIFdLX0FVVEhLSVRf
TERGTEFHUyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tf
QVVUSEtJVF9MREZMQUdTX2lwaG9uZW9zID0gJChXS19BVVRIS0lUX0xERkxBR1MkKFdLX0lPU18x
MykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCmluZGV4IDE2OGQ0NmZmMzJmYy4uYmIyZjc5NTgwZWYwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisKICNpbXBvcnQgIkRhZW1vblRlc3RVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCkBAIC01Miw5ICs1NCw2IEBAIHN0YXRpYyBib29sIGFsZXJ0UmVjZWl2ZWQgPSBm
YWxzZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBGSVhNRTogR2V0IHRoaXMg
d29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRpb24oKQogewogICAgIHJl
dHVybiBbY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJ3ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpAQCAtODMsNyArODIsMTEgQEAgc3Rh
dGljIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQdXNoRGFlbW9uUExpc3QoTlNVUkwg
KnN0b3JhZ2VMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8gcHJvZ3JhbUFyZ3VtZW50cyA9
IGFkb3B0TlMoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CiAgICAgICAgIGF1dG8gZXhl
Y3V0YWJsZUxvY2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpOworI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5n
ZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxvY2F0aW9uLmdldCgpLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhw
cm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9EYWVtb25zL3dlYnB1c2hkIik7CisjZW5kaWYK
ICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBD
X0FSUkFZX0FQUEVORCwgIi0tbWFjaFNlcnZpY2VOYW1lIik7CiAgICAgICAgIHhwY19hcnJheV9z
ZXRfc3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsICJvcmcu
d2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKTsKICAgICAgICAgeHBjX2RpY3Rpb25h
cnlfc2V0X3ZhbHVlKHBsaXN0LmdldCgpLCAiUHJvZ3JhbUFyZ3VtZW50cyIsIHByb2dyYW1Bcmd1
bWVudHMuZ2V0KCkpOwpAQCAtMTIwLDcgKzEyMyw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0
V2ViUHVzaEQoKQogICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIg
ZXJyb3I6JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAKLSAgICBzeXN0ZW0oImtp
bGxhbGwgd2VicHVzaGQgLTkgMj4gL2Rldi9udWxsIik7CisgICAga2lsbEZpcnN0SW5zdGFuY2VP
ZkRhZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBhdXRvIHBsaXN0ID0gdGVzdFdlYlB1c2hEYWVt
b25QTGlzdCh0ZW1wRGlyKTsKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtMTM0LDcgKzEz
Nyw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2ViUHVzaEQoKQogCiBzdGF0aWMgdm9pZCBj
bGVhblVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGlyKQogewotICAgIHN5c3RlbSgia2lsbGFs
bCB3ZWJwdXNoZCAtOSIpOworICAgIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oQCJ3ZWJwdXNo
ZCIpOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOwogICAgIE5TRXJyb3IgKmVycm9yID0gbmls
OwpAQCAtMTg2LDYgKzE4OSw3IEBAIFRFU1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50
KQogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRh
U3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVy
ZW5jZXMgX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOllFU107CiAgICAgZm9yIChfV0tFeHBlcmlt
ZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0
dXJlc10pIHsKICAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJCdWls
dEluTm90aWZpY2F0aW9uc0VuYWJsZWQiXSkKICAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CkBAIC0yMzks
NiArMjQzLDYgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAgICAgY2xl
YW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
RGFlbW9uVGVzdFV0aWxpdGllcy5oCmluZGV4IDA2YTc2NGQwMzg5OS4uYzFiNDJjNTAwNWIyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaApA
QCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TKQorCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYv
c3BpL2Rhcndpbi9YUENTUEkuaD4KIApAQCAtMzUsMTMgKzM3LDE1IEBAIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogUmV0YWluUHRyPE5TVVJMPiBjdXJyZW50RXhlY3V0YWJsZURpcmVjdG9y
eSgpOwogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4K
LSNpZiBQTEFURk9STShNQUMpCit2b2lkIGtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24oTlNTdHJp
bmcgKmRhZW1vbkV4ZWN1dGFibGVOYW1lKTsKKwogI2lmIEhBVkUoT1NfTEFVTkNIRF9KT0IpCiB2
b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8eHBjX29iamVjdF90PiYmKTsK
ICNlbHNlCiB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9u
YXJ5PiYmLCBOU1VSTCAqdGVtcERpcik7CiAjZW5kaWYKLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
UykKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRp
bGl0aWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVz
Lm1tCmluZGV4IDk3NGE2NDJhMGI1ZC4uZGFjMjAyOGRjMjFhIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1tCkBAIC0yNiw5ICsyNiwyNiBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEYWVtb25UZXN0VXRpbGl0aWVzLmgiCiAK
KyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKwogI2ltcG9ydCA8bWFjaC1vL2R5
bGQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworI2lmIFBMQVRGT1JNKElPUykKK0BpbnRlcmZhY2UgTlNUYXNrIDogTlNPYmplY3QKKy0gKGlu
c3RhbmNldHlwZSlpbml0OworLSAodm9pZClsYXVuY2g7CistICh2b2lkKXdhaXRVbnRpbEV4aXQ7
CisKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpsYXVuY2hQYXRoOworQHBy
b3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqYXJndW1lbnRzOwor
QHByb3BlcnR5IChudWxsYWJsZSwgcmV0YWluKSBpZCBzdGFuZGFyZE91dHB1dDsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIGdldHRlcj1pc1J1bm5pbmcpIEJPT0wgcnVubmluZzsKK0BlbmQKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+
IGN1cnJlbnRFeGVjdXRhYmxlTG9jYXRpb24oKQpAQCAtNDgsOCArNjUsNiBAQCBSZXRhaW5QdHI8
TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gW2N1cnJlbnRF
eGVjdXRhYmxlTG9jYXRpb24oKSBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOwogfQog
Ci0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQ
TEFURk9STShNQUMpCiAjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikKIAogdm9pZCByZWdpc3RlclBs
aXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3RfdD4mJiBwbGlzdCkKQEAgLTU3LDcg
KzcyLDEzIEBAIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNfb2Jq
ZWN0X3Q+JiYgcGxpc3QpCiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgYXV0byBsYXVu
Y2hESm9iID0gYWRvcHROUyhbW09TTGF1bmNoZEpvYiBhbGxvY10gaW5pdFdpdGhQbGlzdDpwbGlz
dC5nZXQoKV0pOwogICAgIFtsYXVuY2hESm9iIHN1Ym1pdDomZXJyb3JdOworCisgICAgLy8gSW4g
dGhlIGlPUyBTaW11bGF0b3Igd2Ugb2Z0ZW4gc2VlIHRoZSBmb2xsb3dpbmcgZXJyb3IgaGVyZToK
KyAgICAvLyBFcnJvciBEb21haW49T1NMYXVuY2hkRXJyb3JEb21haW4gQ29kZT0xNyAiRmlsZSBl
eGlzdHMiCisgICAgLy8gVGVzdHMgc3RpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLgorI2lmIFBMQVRG
T1JNKE1BQykKICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworI2VuZGlmCiB9CiAKICNlbHNlIC8v
IEhBVkUoT1NfTEFVTkNIRF9KT0IpCkBAIC03Nyw2ICs5OCw1OSBAQCB2b2lkIHJlZ2lzdGVyUGxp
c3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiYmIHBsaXN0LCBOU1VSTCAqdGVt
cERpcikKIH0KIAogI2VuZGlmIC8vIEhBVkUoT1NfTEFVTkNIRF9KT0IpCi0jZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQorCitzdGF0aWMgaW50IHBpZE9mRmlyc3REYWVtb25JbnN0YW5jZShOU1N0cmlu
ZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUpCit7CisgICAgYXV0byB0YXNrID0gYWRvcHROUyhbW05T
VGFzayBhbGxvY10gaW5pdF0pOworICAgIHRhc2suZ2V0KCkubGF1bmNoUGF0aCA9IEAiL2Jpbi9w
cyI7CisgICAgdGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAgICAgICBAIi1heCIsCisgICAg
ICAgIEAiLW8iLAorICAgICAgICBAInBpZCxjb21tIgorICAgIF07CisKKyAgICBhdXRvIHRhc2tQ
aXBlID0gYWRvcHROUyhbW05TUGlwZSBhbGxvY10gaW5pdF0pOworICAgIFt0YXNrIHNldFN0YW5k
YXJkT3V0cHV0OnRhc2tQaXBlLmdldCgpXTsKKyAgICBbdGFzayBsYXVuY2hdOworCisgICAgYXV0
byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICB3aGls
ZSAoW3Rhc2sgaXNSdW5uaW5nXSkKKyAgICAgICAgW2RhdGEgYXBwZW5kRGF0YTpbW3Rhc2tQaXBl
IGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5kT2ZGaWxlXV07CisgICAgW2RhdGEg
YXBwZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5k
T2ZGaWxlXV07CisKKyAgICBhdXRvIHBzU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6ZGF0YS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
OworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBzRW50cmllcyA9IFtwc1N0cmluZyBjb21wb25l
bnRzU2VwYXJhdGVkQnlTdHJpbmc6QCJcbiJdOworCisgICAgZm9yIChOU1N0cmluZyogZW50cnkg
aW4gcHNFbnRyaWVzKSB7CisgICAgICAgIGlmICghW2VudHJ5IGhhc1N1ZmZpeDpkYWVtb25FeGVj
dXRhYmxlTmFtZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgTlNBcnJheTxOU1N0
cmluZyAqPiAqY29tcG9uZW50cyA9IFtlbnRyeSBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6
QCIgIl07CisgICAgICAgIEVYUEVDVF9HRShbY29tcG9uZW50cyBjb3VudF0sIDJ1KTsKKyAgICAg
ICAgcmV0dXJuIFtbY29tcG9uZW50cyBmaXJzdE9iamVjdF0gaW50ZWdlclZhbHVlXTsKKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBraWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKE5T
U3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSkKK3sKKyAgICBhdXRvIHBpZCA9IHBpZE9mRmly
c3REYWVtb25JbnN0YW5jZShkYWVtb25FeGVjdXRhYmxlTmFtZSk7CisgICAgaWYgKCFwaWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tOU1Rhc2sgYWxsb2Nd
IGluaXRdKTsKKyAgICB0YXNrLmdldCgpLmxhdW5jaFBhdGggPSBAIi9iaW4va2lsbCI7CisgICAg
dGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAgICAgICBAIi05IiwKKyAgICAgICAgW0AocGlk
KSBzdHJpbmdWYWx1ZV0KKyAgICBdOworCisgICAgW3Rhc2sgbGF1bmNoXTsKKyAgICBbdGFzayB3
YWl0VW50aWxFeGl0XTsKK30KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
SU9TKQpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJh
cmllcy9DaGFuZ2VMb2cKaW5kZXggOWUyOTRhMzA0MzM2Li4wMzgyMzMxMjE5ZGEgMTAwNjQ0Ci0t
LSBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTExLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgZGFlbW9uIEFQSSB0ZXN0cyB3b3JraW5nIGluIHRo
ZSBpT1Mgc2ltdWxhdG9yIChzdGFydGluZyB3aXRoIFdlYlB1c2hELlBlcm1pc3Npb25NYW5hZ2Vt
ZW50KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
Mjk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xNS9BcHBTZXJ2ZXJTdXBwb3J0LmZyYW1l
d29yay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZDogQWRkZWQuCisKIDIwMjEtMDktMjQgIEpvbmF0aGFu
IEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTVdIFN1cHBvcnQg
YnVpbGRpbmcgV2ViS2l0IChQYXJ0IDMpCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvV2Vi
S2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xNS9BcHBTZXJ2ZXJTdXBwb3J0LmZyYW1ld29y
ay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZCBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJh
bWV3b3JrU3R1YnMvaU9TLzE1L0FwcFNlcnZlclN1cHBvcnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1
cHBvcnQudGJkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTM3NWVk
YjRlNTQyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVG
cmFtZXdvcmtTdHVicy9pT1MvMTUvQXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVy
U3VwcG9ydC50YmQKQEAgLTAsMCArMSw4IEBACistLS0gIXRhcGktdGJkLXYzCithcmNoczogICAg
ICAgICAgIFsgeDg2XzY0LCBhcm02NCwgYXJtNjRlIF0KK2luc3RhbGwtbmFtZTogICAgJy9TeXN0
ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9BcHBTZXJ2ZXJTdXBwb3J0LmZyYW1ld29yay9B
cHBTZXJ2ZXJTdXBwb3J0JworcGxhdGZvcm06IGlvcworZXhwb3J0czoKKyAgLSBhcmNoczogICAg
ICAgICAgIFsgeDg2XzY0LCBhcm02NCwgYXJtNjRlIF0KKyAgICBvYmpjLWNsYXNzZXM6ICAgIFsg
T1NMYXVuY2hkSm9iIF0KKy4uLgo=
</data>
<flag name="review"
          id="468903"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="468929"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444033</attachid>
            <date>2021-11-11 18:44:57 -0800</date>
            <delta_ts>2021-11-12 20:58:02 -0800</delta_ts>
            <desc>Patch for landing v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27626</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGU4NzIyZDgyMjRkLi5lY2RkY2FjYmZlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJlbmFi
bGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAo
LVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAgKC1b
V0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAgICAo
V2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVtb24g
ZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRoaW4g
dGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAgICAg
ICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTAzICBLYXRlIENoZW5l
eSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE5lZWQgQVBJ
IGZvciBtYXJraW5nIGZpbGUgcmVxdWVzdHMgYXMgbm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5kZXgg
OWJjZjdlZGFmMDZjLi42MDJlYjcxM2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTUzLDE2ICsxMTUzLDYgQEAg
c3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZp
b3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zdGFuZGFy
ZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6KEJP
T0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQo
ZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCi17Ci0gICAgcmV0
dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLQogLSAodm9pZClf
c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAgIF9w
cmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoZW5hYmxlZCk7CkBA
IC0xNTU0LDYgKzE1NDQsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9y
IHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICBfcHJlZmVy
ZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxlZCk7CiB9CiAK
Ky0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBf
cHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOworfQorCistIChC
T09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPm5v
dGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4
IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTc2LDYg
KzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlvbkFs
Z29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RmlsZVN5c3RlbUFj
Y2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQVBJRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxlRW5hYmxlZDop
IEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJsZWQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFUQVJH
RVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVuYWJs
ZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7
CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0Y2hD
b3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQ
bHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0aW5nRW5hYmxl
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wgX3ZpZXdHZXN0
dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWlseTopIE5TU3Ry
aW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkp
OwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6
KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFjZUtleU5hdmln
YXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5saW5lTWVkaWFQ
bGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBheUVuYWJsZWQg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjY2YTFi
YTNlODkyLi45OTY1OWQ0Yjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYgKzE1OSw3IEBA
IHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJsZUluc3BlY3Rv
ckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7
CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRp
b25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0
eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUK
IApAQCAtMjQyLDcgKzI0Myw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChDR0Zsb2F0KV93
ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
cmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmluZyAq
KXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7
CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJblJlY3Q6
KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihOU1VS
TCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JT
ZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9u
SGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2VidmlldyBt
b3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1bHQg
d2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzooaWQgPE5TU2Vj
dXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDooX1dL
UmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09MKWlz
UmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDVjYmNhNzdhMTAwZi4uMjAzMzMw
YTYzYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBA
IC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1dEVs
ZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3Qq
KSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1c0Rp
cmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdl
UHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3Bs
YXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CisKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5KikgZmlu
YWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBAIC0xMjIsNyAr
MTI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAgIHZv
aWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6Rmxv
YXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7CiAgICAgICAg
IHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViSGl0
VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJOjpPYmpl
Y3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94eSYs
IEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVWaXNpYmxlKFdl
YlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMjE0LDcgKzIx
NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJhY2tncm91bmRS
ZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdT
YXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVk
QnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3UmVxdWVz
dE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yIDogMTsKICAg
ICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpAQCAtMjY2LDYg
KzI2Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXIg
OiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgIH0gbV9kZWxl
Z2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbQppbmRleCBhMDA0YTE1ZGI5NzEuLjliN2JkOTMzZTZlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4LDYgQEAgdm9p
ZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGlt
aXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVn
cm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxlU3Vn
Z2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVkRmls
ZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRp
b25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmll
dzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25I
YW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlv
blBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvciA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpZ3VyYXRp
b25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlk
QXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbEluc3BlY3Rvcjop
XTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxX
S1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09D
T0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9uV2l0aENvbXBs
ZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYKKyAg
ICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9y
U2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFCiAg
ICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVn
YXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0b3Bs
YXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3MpXTsK
IH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbG93
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlKQorICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYgKCFtX3VpRGVs
ZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlz
c2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0
ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dl
YlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNp
c2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUg
X3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE5vdGlm
aWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5T3JpZ2lu
KSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVy
SGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVz
dWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBib29sIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEsMjcgKzk0Miw2
IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNG
b2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRl
PilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQoKSBz
YXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZp
bGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJMXTsK
IH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbG93
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVnYXRlKQotICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYgKCFtX3VpRGVs
ZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlz
c2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVs
ZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tlciA9IENvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9y
KF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46
ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVn
YXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVlc3RO
b3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihzZWN1cml0eU9y
aWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChC
T09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFu
ZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hlY2tl
ci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1
cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVj
dG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikKIHsKICAg
ICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDRjOTBlNzExNDExOS4uN2EwOWI5NTIyYTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMTcz
LDYgKzEzMTczLDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyogQ29weSBGZWF0
dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThGNiAvKiBDaGVj
ayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0IC8qIENyZWF0
ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKKwkJ
CQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMg
Zm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3MDA5MjZBOEYg
LyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1NzAwMUE5OTZF
IC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzY2Niw2ICsxMzY2NywyNCBA
QAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4N0Q0
OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRzICov
ID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQ
YXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ3Jl
YXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7CisJCQlvdXRw
dXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0g
L2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FUSU9O
fVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdlIG1vdmUgdGhl
IE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0RhZW1vbnMs
XG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1hYyBwYXRocyBi
ZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExBVEZPUk1fTkFN
RX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7QlVJTFRfUFJP
RFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxUX1BST0RVQ1RT
X0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2VcbiAgICBEQUVN
T05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29yay9EYWVtb25z
XCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlM9XCIu
Li8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAtc0ZoIFwiJHtC
VUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dlYnB1c2hkXCIg
XCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRfUFJPRFVDVFNf
RElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwiIFwiJHtEQUVN
T05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQyMjFERkY0N0Mw
MEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDdjYjkwM2I5NjZkLi44Mzhm
NWE4YWEwZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0aGUg
aU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdlbWVu
dCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBUbyBnZXQg
dGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAgICAgLSBIYXZlIHRoZSBEYWVtb25zIHZp
c2libGUgaW4gYSBzaW11bGF0b3ItdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQgdGhlIE9T
TGF1bmNoREpvYiBwbGlzdCB0byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5vdCBNYWMt
cmVsYXRpdmUKKyAgICAgICAgLSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3RpbmcgaW5z
dGFuY2VzIHRvIHJ1biBhIGNsZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2ltdWxhdG9y
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4KKyAgICAg
ICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
LWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp0ZXN0V2ViUHVzaERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNldFVwVGVzdFdlYlB1c2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFuVXBUZXN0
V2ViUHVzaEQpOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1v
blRlc3RVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRl
c3RVdGlsaXRpZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBsaXN0V2l0
aExhdW5jaEQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1vbkluc3Rh
bmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24p
OgorCiAyMDIxLTExLTAzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIE5lZWQgQVBJIGZvciBtYXJraW5nIGZpbGUgcmVxdWVzdHMgYXMg
bm9uLWFwcC1pbml0aWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMKaW5kZXgg
NmFjNDVjNjhkNDMzLi4zYjQwMTE3NzM1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRs
ZW1lbnRzCkBAIC0xMCw1ICsxMCw3IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLlBhc3Rl
Ym9hcmQucGFzdGUtdW5jaGVja2VkPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnBy
aXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8L2tleT4KKwk8c3RyaW5nPlRlc3RXZWJLaXRB
UEk8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKaW5kZXggNWRm
YmZkM2VmODViLi5mYzg4NzY5MmY0Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKQEAgLTQ2LDYgKzQ2
LDkgQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19jb2NvYXRvdWNoID0gJChpbmhlcml0ZWQpICQo
V0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Mg
PSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdL
X0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRf
TERGTEFHUyQoV0tfTUFDT1NfMTIwMCkpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTX01B
Q09TX1NJTkNFXzEyMDAgPSAtZnJhbWV3b3JrIEFwcFNlcnZlclN1cHBvcnQKK1dLX0FQUFNFUlZF
UlNVUFBPUlRfTERGTEFHU19pcGhvbmVvcyA9ICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdT
JChXS19JT1NfMTUpKTsKK1dLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19pcGhvbmVzaW11bGF0
b3IgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBT
RVJWRVJTVVBQT1JUX0xERkxBR1NfSU9TX1NJTkNFXzE1ID0gLWZyYW1ld29yayBBcHBTZXJ2ZXJT
dXBwb3J0CiAKIFdLX0FVVEhLSVRfTERGTEFHUyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTXyQoV0tf
UExBVEZPUk1fTkFNRSkpOwogV0tfQVVUSEtJVF9MREZMQUdTX2lwaG9uZW9zID0gJChXS19BVVRI
S0lUX0xERkxBR1MkKFdLX0lPU18xMykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IDE2OGQ0NmZmMzJmYy4u
YmIyZjc5NTgwZWYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQg
ImNvbmZpZy5oIgogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisKICNpbXBv
cnQgIkRhZW1vblRlc3RVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVy
LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCkBAIC01Miw5ICs1NCw2IEBAIHN0YXRpYyBi
b29sIGFsZXJ0UmVjZWl2ZWQgPSBmYWxzZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
Ci0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQ
TEFURk9STShNQUMpCi0KIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9u
TG9jYXRpb24oKQogewogICAgIHJldHVybiBbY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ3ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpA
QCAtODMsNyArODIsMTEgQEAgc3RhdGljIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQ
dXNoRGFlbW9uUExpc3QoTlNVUkwgKnN0b3JhZ2VMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1
dG8gcHJvZ3JhbUFyZ3VtZW50cyA9IGFkb3B0TlMoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAw
KSk7CiAgICAgICAgIGF1dG8gZXhlY3V0YWJsZUxvY2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25M
b2NhdGlvbigpOworI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJp
bmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxv
Y2F0aW9uLmdldCgpLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgICAgICB4
cGNfYXJyYXlfc2V0X3N0cmluZyhwcm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQ
RU5ELCAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9EYWVtb25z
L3dlYnB1c2hkIik7CisjZW5kaWYKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3Jh
bUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgIi0tbWFjaFNlcnZpY2VOYW1lIik7
CiAgICAgICAgIHhwY19hcnJheV9zZXRfc3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0KCksIFhQ
Q19BUlJBWV9BUFBFTkQsICJvcmcud2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKTsK
ICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKHBsaXN0LmdldCgpLCAiUHJvZ3JhbUFy
Z3VtZW50cyIsIHByb2dyYW1Bcmd1bWVudHMuZ2V0KCkpOwpAQCAtMTIwLDcgKzEyMyw3IEBAIHN0
YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2ViUHVzaEQoKQogICAgICAgICBbZmlsZU1hbmFnZXIgcmVt
b3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CiAKLSAgICBzeXN0ZW0oImtpbGxhbGwgd2VicHVzaGQgLTkgMj4gL2Rldi9udWxsIik7Cisg
ICAga2lsbEZpcnN0SW5zdGFuY2VPZkRhZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBhdXRvIHBs
aXN0ID0gdGVzdFdlYlB1c2hEYWVtb25QTGlzdCh0ZW1wRGlyKTsKICNpZiBIQVZFKE9TX0xBVU5D
SERfSk9CKQpAQCAtMTM0LDcgKzEzNyw3IEBAIHN0YXRpYyBOU1VSTCAqc2V0VXBUZXN0V2ViUHVz
aEQoKQogCiBzdGF0aWMgdm9pZCBjbGVhblVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGlyKQog
ewotICAgIHN5c3RlbSgia2lsbGFsbCB3ZWJwdXNoZCAtOSIpOworICAgIGtpbGxGaXJzdEluc3Rh
bmNlT2ZEYWVtb24oQCJ3ZWJwdXNoZCIpOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOwogICAg
IE5TRXJyb3IgKmVycm9yID0gbmlsOwpAQCAtMTg2LDYgKzE4OSw3IEBAIFRFU1QoV2ViUHVzaEQs
IFBlcm1pc3Npb25NYW5hZ2VtZW50KQogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0
aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgW2NvbmZp
Z3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMgX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOllFU107
CiAgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVu
Y2VzIF9leHBlcmltZW50YWxGZWF0dXJlc10pIHsKICAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBp
c0VxdWFsVG9TdHJpbmc6QCJCdWlsdEluTm90aWZpY2F0aW9uc0VuYWJsZWQiXSkKICAgICAgICAg
ICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1
cmU6ZmVhdHVyZV07CkBAIC0yMzksNiArMjQzLDYgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lv
bk1hbmFnZW1lbnQpCiAgICAgY2xlYW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0K
IAotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5oCmluZGV4IDA2YTc2NGQw
Mzg5OS4uYzFiNDJjNTAwNWIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0Rh
ZW1vblRlc3RVdGlsaXRpZXMuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQorCiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KIApAQCAtMzUsMTMgKzM3
LDE1IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogUmV0YWluUHRyPE5TVVJMPiBjdXJy
ZW50RXhlY3V0YWJsZURpcmVjdG9yeSgpOwogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBp
biB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCit2b2lkIGtpbGxGaXJzdElu
c3RhbmNlT2ZEYWVtb24oTlNTdHJpbmcgKmRhZW1vbkV4ZWN1dGFibGVOYW1lKTsKKwogI2lmIEhB
VkUoT1NfTEFVTkNIRF9KT0IpCiB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5Q
dHI8eHBjX29iamVjdF90PiYmKTsKICNlbHNlCiB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNo
RChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiYmLCBOU1VSTCAqdGVtcERpcik7CiAjZW5kaWYKLSNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKElPUykKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9EYWVtb25UZXN0VXRpbGl0aWVzLm1tCmluZGV4IDk3NGE2NDJhMGI1ZC4uZGFjMjAyOGRjMjFh
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRp
ZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVz
Lm1tCkBAIC0yNiw5ICsyNiwyNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEYWVt
b25UZXN0VXRpbGl0aWVzLmgiCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykK
KwogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAorTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworI2lmIFBMQVRGT1JNKElPUykKK0BpbnRlcmZhY2UgTlNU
YXNrIDogTlNPYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0OworLSAodm9pZClsYXVuY2g7Cist
ICh2b2lkKXdhaXRVbnRpbEV4aXQ7CisKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TU3Ry
aW5nICpsYXVuY2hQYXRoOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNBcnJheTxOU1N0
cmluZyAqPiAqYXJndW1lbnRzOworQHByb3BlcnR5IChudWxsYWJsZSwgcmV0YWluKSBpZCBzdGFu
ZGFyZE91dHB1dDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRlcj1pc1J1bm5pbmcpIEJPT0wg
cnVubmluZzsKK0BlbmQKKyNlbmRpZgorCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0
YXRpYyBSZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlTG9jYXRpb24oKQpAQCAtNDgs
OCArNjUsNiBAQCBSZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCkK
ICAgICByZXR1cm4gW2N1cnJlbnRFeGVjdXRhYmxlTG9jYXRpb24oKSBVUkxCeURlbGV0aW5nTGFz
dFBhdGhDb21wb25lbnRdOwogfQogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUg
aU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCiAjaWYgSEFWRShPU19MQVVOQ0hEX0pP
QikKIAogdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPHhwY19vYmplY3Rf
dD4mJiBwbGlzdCkKQEAgLTU3LDcgKzcyLDEzIEBAIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVu
Y2hEKFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYgcGxpc3QpCiAgICAgTlNFcnJvciAqZXJyb3Ig
PSBuaWw7CiAgICAgYXV0byBsYXVuY2hESm9iID0gYWRvcHROUyhbW09TTGF1bmNoZEpvYiBhbGxv
Y10gaW5pdFdpdGhQbGlzdDpwbGlzdC5nZXQoKV0pOwogICAgIFtsYXVuY2hESm9iIHN1Ym1pdDom
ZXJyb3JdOworCisgICAgLy8gSW4gdGhlIGlPUyBTaW11bGF0b3Igd2Ugb2Z0ZW4gc2VlIHRoZSBm
b2xsb3dpbmcgZXJyb3IgaGVyZToKKyAgICAvLyBFcnJvciBEb21haW49T1NMYXVuY2hkRXJyb3JE
b21haW4gQ29kZT0xNyAiRmlsZSBleGlzdHMiCisgICAgLy8gVGVzdHMgc3RpbGwgYmVoYXZlIGFz
IGV4cGVjdGVkLgorI2lmIFBMQVRGT1JNKE1BQykKICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOwor
I2VuZGlmCiB9CiAKICNlbHNlIC8vIEhBVkUoT1NfTEFVTkNIRF9KT0IpCkBAIC03Nyw2ICs5OCw1
OSBAQCB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5
PiYmIHBsaXN0LCBOU1VSTCAqdGVtcERpcikKIH0KIAogI2VuZGlmIC8vIEhBVkUoT1NfTEFVTkNI
RF9KT0IpCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCitzdGF0aWMgaW50IHBpZE9mRmlyc3RE
YWVtb25JbnN0YW5jZShOU1N0cmluZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUpCit7CisgICAgYXV0
byB0YXNrID0gYWRvcHROUyhbW05TVGFzayBhbGxvY10gaW5pdF0pOworICAgIHRhc2suZ2V0KCku
bGF1bmNoUGF0aCA9IEAiL2Jpbi9wcyI7CisgICAgdGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWwor
ICAgICAgICBAIi1heCIsCisgICAgICAgIEAiLW8iLAorICAgICAgICBAInBpZCxjb21tIgorICAg
IF07CisKKyAgICBhdXRvIHRhc2tQaXBlID0gYWRvcHROUyhbW05TUGlwZSBhbGxvY10gaW5pdF0p
OworICAgIFt0YXNrIHNldFN0YW5kYXJkT3V0cHV0OnRhc2tQaXBlLmdldCgpXTsKKyAgICBbdGFz
ayBsYXVuY2hdOworCisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxs
b2NdIGluaXRdKTsKKyAgICB3aGlsZSAoW3Rhc2sgaXNSdW5uaW5nXSkKKyAgICAgICAgW2RhdGEg
YXBwZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JSZWFkaW5nXSByZWFkRGF0YVRvRW5k
T2ZGaWxlXV07CisgICAgW2RhdGEgYXBwZW5kRGF0YTpbW3Rhc2tQaXBlIGZpbGVIYW5kbGVGb3JS
ZWFkaW5nXSByZWFkRGF0YVRvRW5kT2ZGaWxlXV07CisKKyAgICBhdXRvIHBzU3RyaW5nID0gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YS5nZXQoKSBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBzRW50cmll
cyA9IFtwc1N0cmluZyBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6QCJcbiJdOworCisgICAg
Zm9yIChOU1N0cmluZyogZW50cnkgaW4gcHNFbnRyaWVzKSB7CisgICAgICAgIGlmICghW2VudHJ5
IGhhc1N1ZmZpeDpkYWVtb25FeGVjdXRhYmxlTmFtZV0pCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqY29tcG9uZW50cyA9IFtlbnRyeSBjb21wb25l
bnRzU2VwYXJhdGVkQnlTdHJpbmc6QCIgIl07CisgICAgICAgIEVYUEVDVF9HRShbY29tcG9uZW50
cyBjb3VudF0sIDJ1KTsKKyAgICAgICAgcmV0dXJuIFtbY29tcG9uZW50cyBmaXJzdE9iamVjdF0g
aW50ZWdlclZhbHVlXTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBraWxsRmly
c3RJbnN0YW5jZU9mRGFlbW9uKE5TU3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSkKK3sKKyAg
ICBhdXRvIHBpZCA9IHBpZE9mRmlyc3REYWVtb25JbnN0YW5jZShkYWVtb25FeGVjdXRhYmxlTmFt
ZSk7CisgICAgaWYgKCFwaWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFzayA9IGFk
b3B0TlMoW1tOU1Rhc2sgYWxsb2NdIGluaXRdKTsKKyAgICB0YXNrLmdldCgpLmxhdW5jaFBhdGgg
PSBAIi9iaW4va2lsbCI7CisgICAgdGFzay5nZXQoKS5hcmd1bWVudHMgPSBAWworICAgICAgICBA
Ii05IiwKKyAgICAgICAgW0AocGlkKSBzdHJpbmdWYWx1ZV0KKyAgICBdOworCisgICAgW3Rhc2sg
bGF1bmNoXTsKKyAgICBbdGFzayB3YWl0VW50aWxFeGl0XTsKK30KIAogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0No
YW5nZUxvZyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggOWUyOTRhMzA0MzM2Li42
ZWUzNzJmZWUyZmIgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTExLTExICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgZGFlbW9uIEFQ
SSB0ZXN0cyB3b3JraW5nIGluIHRoZSBpT1Mgc2ltdWxhdG9yIChzdGFydGluZyB3aXRoIFdlYlB1
c2hELlBlcm1pc3Npb25NYW5hZ2VtZW50KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdh
cmVuLgorCisgICAgICAgICogV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xNS9BcHBT
ZXJ2ZXJTdXBwb3J0LmZyYW1ld29yay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZDogQWRkZWQuCisKIDIw
MjEtMDktMjQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1MgMTVdIFN1cHBvcnQgYnVpbGRpbmcgV2ViS2l0IChQYXJ0IDMpCmRpZmYgLS1naXQgYS9X
ZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xNS9BcHBTZXJ2
ZXJTdXBwb3J0LmZyYW1ld29yay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZCBiL1dlYktpdExpYnJhcmll
cy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvaU9TLzE1L0FwcFNlcnZlclN1cHBvcnQuZnJh
bWV3b3JrL0FwcFNlcnZlclN1cHBvcnQudGJkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uYTM3NWVkYjRlNTQyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0TGlicmFy
aWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1MvMTUvQXBwU2VydmVyU3VwcG9ydC5m
cmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydC50YmQKQEAgLTAsMCArMSw4IEBACistLS0gIXRhcGkt
dGJkLXYzCithcmNoczogICAgICAgICAgIFsgeDg2XzY0LCBhcm02NCwgYXJtNjRlIF0KK2luc3Rh
bGwtbmFtZTogICAgJy9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9BcHBTZXJ2ZXJT
dXBwb3J0LmZyYW1ld29yay9BcHBTZXJ2ZXJTdXBwb3J0JworcGxhdGZvcm06IGlvcworZXhwb3J0
czoKKyAgLSBhcmNoczogICAgICAgICAgIFsgeDg2XzY0LCBhcm02NCwgYXJtNjRlIF0KKyAgICBv
YmpjLWNsYXNzZXM6ICAgIFsgT1NMYXVuY2hkSm9iIF0KKy4uLgo=
</data>
<flag name="commit-queue"
          id="468949"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444078</attachid>
            <date>2021-11-12 10:12:29 -0800</date>
            <delta_ts>2021-11-12 20:58:02 -0800</delta_ts>
            <desc>Patch for landing v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25866</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMu
bW0KaW5kZXggOWJjZjdlZGFmMDZjLi42MDJlYjcxM2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0xMTUzLDE2ICsx
MTUzLDYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVM
aW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4gX3ByZWZlcmVuY2Vz
LT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0Vu
YWJsZWQ6KEJPT0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9u
c0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCi17
Ci0gICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKLX0KLQog
LSAodm9pZClfc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAog
ewogICAgIF9wcmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoZW5h
YmxlZCk7CkBAIC0xNTU0LDYgKzE1NDQsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlu
a0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAg
ICBfcHJlZmVyZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNjZXNzSGFuZGxlRW5hYmxl
ZCk7CiB9CiAKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOihCT09MKWVuYWJsZWQK
K3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQpOwor
fQorCistIChCT09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVy
ZW5jZXMtPm5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oCmluZGV4IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApA
QCAtMTc2LDYgKzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29y
cmVjdGlvbkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Rmls
ZVN5c3RlbUFjY2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJsZWQ6KSBCT09MIF9zdG9y
YWdlQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWNjZXNzSGFuZGxl
RW5hYmxlZDopIEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBz
ZXR0ZXI9X3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90aWZpY2F0aW9uc0VuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAog
I2lmICFUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRX
ZWJHTEVuYWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMy40KSk7CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLUGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBfcGx1Z0luU25hcHNob3R0
aW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZDopIEJPT0wg
X3ZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYXJkRm9udEZhbWls
eTopIE5TU3RyaW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Tm90aWZpY2F0aW9u
c0VuYWJsZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tzcGFj
ZUtleU5hdmlnYXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikgQk9PTCBfYWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6KSBCT09MIF9hcHBsZVBh
eUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5k
ZXggYzczNjlmMzcwYTBlLi40NDM3OGY2NjI2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTU5LDYg
KzE1OSw3IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkRGlzYWJs
ZUluc3BlY3RvckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlv
cygxNS4wKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RO
b3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4g
KilzZWN1cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogI2lmIFRBUkdFVF9P
U19JUEhPTkUKIApAQCAtMjQ0LDcgKzI0NSw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtIChD
R0Zsb2F0KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihO
U1N0cmluZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290
ZXJJblJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUg
VVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1p
c3Npb25Gb3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2lu
IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2VidmlldyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVzdFJlc3VsdCAqKWhpdFRl
c3RSZXN1bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB1c2VySW5mbzoo
aWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdy
b3VuZDooX1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxl
OihCT09MKWlzUmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDlkNWVmMjg0MzQz
NS4uMjY2NmE5MWIyMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5oCkBAIC0xMDUsNiArMTA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRSZXNp
Z25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJ
OjpPYmplY3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5Kiwg
V0tGb2N1c0RpcmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVu
dChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29y
ZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1
cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmlu
YWw7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVBy
b3h5KikgZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7CkBA
IC0xMjMsNyArMTI1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBh
Z2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CiAg
ICAgICAgIHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2Vi
Q29yZTo6RmxvYXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0
eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxvd2VkKT4mJikgZmluYWw7
CiAgICAgICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29u
c3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwg
QVBJOjpPYmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBh
Z2VQcm94eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgdG9vbGJhcnNBcmVW
aXNpYmxlKFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAt
MjE1LDcgKzIxNiw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEV4Y2VlZEJh
Y2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAxOwogICAgICAgICBib29s
IHdlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGlu
Z1VSTCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJz
SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJW
aWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9u
SGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbElu
c3BlY3RvciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9y
IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgOiAxOwpA
QCAtMjY3LDYgKzI2Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9S
TShDT0NPQSkKICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlv
bkhhbmRsZXIgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwogICAg
IH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAxY2Q1ZDBjYzliMzguLmZkOWQ0YThiMjllMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzgsNyArMTM4
LDYgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxl
Z2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3VuZFJl
c291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hp
bGVJbkZvcmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRh
VG9GaWxlU3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3Vn
Z2VzdGVkRmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFt
ZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNv
bXBsZXRpb25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07
CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3Bl
Y3RvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNv
bmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbElu
c3BlY3RvcjopXTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVn
YXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJMRShXRUJYUikgJiYgUExB
VEZPUk0oQ09DT0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1N0YXJ0WFJTZXNzaW9u
V2l0aENvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07CiAj
ZW5kaWYKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBl
cm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwogfQogCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0
b3BsYXlFCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6
bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxlQXV0b3BsYXlFdmVudDp0
b1dLQXV0b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3Mo
ZmxhZ3MpXTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIGFsbG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVn
YXRlKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgaWYg
KCFtX3VpRGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQorICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1f
dWlEZWxlZ2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjaGVja2VyID0g
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2Vs
ZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9y
aWdpbjpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4p
ZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3Vy
aXR5T3JpZ2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRp
b25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBj
aGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBi
b29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC05MjEs
MjcgKzk0Miw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBbKGlkIDxXS1VJRGVsZWdh
dGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQo
KS5nZXQoKSBzYXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1
Z2dlc3RlZEZpbGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0
aW5nVVJMXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIGFsbG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV91aURlbGVn
YXRlKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgaWYg
KCFtX3VpRGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyKQotICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUg
PSBtX3VpRGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQotICAgIGF1dG8gY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwg
QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJp
dHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgp
IHJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46d3JhcHBlcihz
ZWN1cml0eU9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hl
Y2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChjaGVja2VyLT5jb21w
bGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBSZWY8QVBJOjpJbnNwZWN0
b3JDb25maWd1cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxv
Y2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3Rv
cikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ1MTNlMjg4ZWZmYi4uM2JhNWQ0NDQ3NmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEzMjM4LDYgKzEzMjM4LDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQyNjUzMDBGREEwQTMgLyog
Q29weSBGZWF0dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FDMjFFNTI4ODUwMEU0QThG
NiAvKiBDaGVjayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcyMjM0Njc0NTAwQjMyNTU0
IC8qIENyZWF0ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxk
cyAqLywKKwkJCQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3JlYXRlIHN5bWxpbmtzIHRv
IERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkwRkI5NDgzNjIzOUYzMUI3
MDA5MjZBOEYgLyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJREZEMDNBMjkyNzBENUY1
NzAwMUE5OTZFIC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7CkBAIC0xMzczMSw2ICsx
MzczMiwyNCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlNj
cmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJCTUxMkI4MUNBMjczQ0FG
QkUwMEQ4N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcg
YnVpbGRzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0
RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5h
bWUgPSAiQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyI7
CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtbIFwiJHtERVBMT1lNRU5U
X0xPQ0FUSU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG4jIElmIHdl
IG1vdmUgdGhlIE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9B
L0RhZW1vbnMsXG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmljIHBsaXN0cywgdGhlIE1h
YyBwYXRocyBiZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbmlmIFtbICR7V0tfUExB
VEZPUk1fTkFNRX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERBRU1PTlNfUEFUSD1cIiR7
QlVJTFRfUFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1vbnNcIlxuICAgIEJVSUxU
X1BST0RVQ1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1cIi4uLy4uXCJcbmVsc2Vc
biAgICBEQUVNT05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViS2l0LmZyYW1ld29y
ay9EYWVtb25zXCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RB
RU1PTlM9XCIuLi8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9OU19QQVRIfVwiXG5sbiAt
c0ZoIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L3dl
YnB1c2hkXCIgXCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4gLXNGaCBcIiR7QlVJTFRf
UFJPRFVDVFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9hZGF0dHJpYnV0aW9uZFwi
IFwiJHtEQUVNT05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJCX07CiAJCTUzMjVCREQy
MjFERkY0N0MwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkt
aU9TLmVudGl0bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCmluZGV4IDZhYzQ1YzY4ZDQzMy4uM2I0MDExNzcz
NTc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RX
ZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cwpAQCAtMTAsNSArMTAsNyBA
QAogCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5QYXN0ZWJvYXJkLnBhc3RlLXVuY2hlY2tlZDwv
a2V5PgogCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLnhwYy5sYXVuY2hkLmpvYi1t
YW5hZ2VyPC9rZXk+CisJPHN0cmluZz5UZXN0V2ViS2l0QVBJPC9zdHJpbmc+CiA8L2RpY3Q+CiA8
L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9U
ZXN0V2ViS2l0QVBJLnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCmluZGV4IDVkZmJmZDNlZjg1Yi4uZmM4ODc2OTJmNGNm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJL
aXRBUEkueGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9U
ZXN0V2ViS2l0QVBJLnhjY29uZmlnCkBAIC00Niw2ICs0Niw5IEBAIEZSQU1FV09SS19TRUFSQ0hf
UEFUSFNfY29jb2F0b3VjaCA9ICQoaW5oZXJpdGVkKSAkKFdLX1BSSVZBVEVfRlJBTUVXT1JLU19E
SVIpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTID0gJChXS19BUFBTRVJWRVJTVVBQT1JU
X0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxB
R1NfbWFjb3N4ID0gJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MkKFdLX01BQ09TXzEyMDAp
KTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19NQUNPU19TSU5DRV8xMjAwID0gLWZyYW1l
d29yayBBcHBTZXJ2ZXJTdXBwb3J0CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1NfaXBob25l
b3MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBT
RVJWRVJTVVBQT1JUX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gJChXS19BUFBTRVJWRVJTVVBQ
T1JUX0xERkxBR1MkKFdLX0lPU18xNSkpOworV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTX0lP
U19TSU5DRV8xNSA9IC1mcmFtZXdvcmsgQXBwU2VydmVyU3VwcG9ydAogCiBXS19BVVRIS0lUX0xE
RkxBR1MgPSAkKFdLX0FVVEhLSVRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX0FV
VEhLSVRfTERGTEFHU19pcGhvbmVvcyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTJChXS19JT1NfMTMp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
UHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
UHVzaERhZW1vbi5tbQppbmRleCA1ZTIzM2M1YmExMjMuLmUwYjc1NTYwNWZhYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1v
bi5tbQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQorCiAjaW1wb3J0ICJEYWVtb25UZXN0VXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgpAQCAtNTMsOSArNTUsNiBAQCBzdGF0aWMgYm9vbCBhbGVydFJlY2VpdmVkID0gZmFs
c2U7CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotLy8gRklYTUU6IEdldCB0aGlzIHdv
cmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0b3IuCi0jaWYgUExBVEZPUk0oTUFDKQotCiBzdGF0aWMg
UmV0YWluUHRyPE5TVVJMPiB0ZXN0V2ViUHVzaERhZW1vbkxvY2F0aW9uKCkKIHsKICAgICByZXR1
cm4gW2N1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAid2VicHVzaGQiIGlzRGlyZWN0b3J5Ok5PXTsKQEAgLTg0LDcgKzgzLDExIEBAIHN0YXRp
YyBSZXRhaW5QdHI8eHBjX29iamVjdF90PiB0ZXN0V2ViUHVzaERhZW1vblBMaXN0KE5TVVJMICpz
dG9yYWdlTG9jYXRpb24pCiAgICAgewogICAgICAgICBhdXRvIHByb2dyYW1Bcmd1bWVudHMgPSBh
ZG9wdE5TKHhwY19hcnJheV9jcmVhdGUobnVsbHB0ciwgMCkpOwogICAgICAgICBhdXRvIGV4ZWN1
dGFibGVMb2NhdGlvbiA9IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRpb24oKTsKKyNpZiBQTEFURk9S
TShNQUMpCiAgICAgICAgIHhwY19hcnJheV9zZXRfc3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0
KCksIFhQQ19BUlJBWV9BUFBFTkQsIGV4ZWN1dGFibGVMb2NhdGlvbi5nZXQoKS5maWxlU3lzdGVt
UmVwcmVzZW50YXRpb24pOworI2Vsc2UKKyAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJv
Z3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgIi9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1dlYktpdC5mcmFtZXdvcmsvRGFlbW9ucy93ZWJwdXNoZCIpOworI2VuZGlmCiAg
ICAgICAgIHhwY19hcnJheV9zZXRfc3RyaW5nKHByb2dyYW1Bcmd1bWVudHMuZ2V0KCksIFhQQ19B
UlJBWV9BUFBFTkQsICItLW1hY2hTZXJ2aWNlTmFtZSIpOwogICAgICAgICB4cGNfYXJyYXlfc2V0
X3N0cmluZyhwcm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAib3JnLndl
YmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlIik7CiAgICAgICAgIHhwY19kaWN0aW9uYXJ5
X3NldF92YWx1ZShwbGlzdC5nZXQoKSwgIlByb2dyYW1Bcmd1bWVudHMiLCBwcm9ncmFtQXJndW1l
bnRzLmdldCgpKTsKQEAgLTEyMSw3ICsxMjQsNyBAQCBzdGF0aWMgTlNVUkwgKnNldFVwVGVzdFdl
YlB1c2hEKCkKICAgICAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVy
cm9yOiZlcnJvcl07CiAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogCi0gICAgc3lzdGVtKCJraWxs
YWxsIHdlYnB1c2hkIC05IDI+IC9kZXYvbnVsbCIpOworICAgIGtpbGxGaXJzdEluc3RhbmNlT2ZE
YWVtb24oQCJ3ZWJwdXNoZCIpOwogCiAgICAgYXV0byBwbGlzdCA9IHRlc3RXZWJQdXNoRGFlbW9u
UExpc3QodGVtcERpcik7CiAjaWYgSEFWRShPU19MQVVOQ0hEX0pPQikKQEAgLTEzNSw3ICsxMzgs
NyBAQCBzdGF0aWMgTlNVUkwgKnNldFVwVGVzdFdlYlB1c2hEKCkKIAogc3RhdGljIHZvaWQgY2xl
YW5VcFRlc3RXZWJQdXNoRChOU1VSTCAqdGVtcERpcikKIHsKLSAgICBzeXN0ZW0oImtpbGxhbGwg
d2VicHVzaGQgLTkiKTsKKyAgICBraWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKEAid2VicHVzaGQi
KTsKIAogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDp0ZW1wRGlyLnBhdGhdKTsKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsK
QEAgLTE1OSw2ICsxNjIsMTIgQEAgVEVTVChXZWJQdXNoRCwgQmFzaWNDb21tdW5pY2F0aW9uKQog
ICAgIAogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlX3dpdGhfcmVwbHkoY29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeS5nZXQo
KSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXih4cGNfb2JqZWN0X3QgcmVwbHkpIHsKKyAg
ICAgICAgaWYgKHhwY19nZXRfdHlwZShyZXBseSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewor
ICAgICAgICAgICAgTlNMb2coQCJVbmV4cGVjdGVkIG5vbi1kaWN0aW9uYXJ5OiAlQCIsIHJlcGx5
KTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKEZBTFNFKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCiAgICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IDA7CiAgICAgICAgIGNvbnN0
IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXBseSwgImVuY29kZWQgbWVz
c2FnZSIsICZkYXRhU2l6ZSk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhU2l6ZSwgMTV1KTsKQEAg
LTE4Nyw2ICsxOTYsNyBAQCBURVNUKFdlYlB1c2hELCBQZXJtaXNzaW9uTWFuYWdlbWVudCkKIAog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3Jl
ID0gZGF0YVN0b3JlLmdldCgpOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2Vz
IF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpZRVNdOwogICAgIGZvciAoX1dLRXhwZXJpbWVudGFs
RmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFsRmVhdHVyZXNd
KSB7CiAgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiQnVpbHRJbk5v
dGlmaWNhdGlvbnNFbmFibGVkIl0pCiAgICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJlOmZlYXR1cmVdOwpAQCAtMjIyLDYgKzIz
MiwxMiBAQCBURVNUKFdlYlB1c2hELCBQZXJtaXNzaW9uTWFuYWdlbWVudCkKICAgICBFWFBFQ1Rf
VFJVRShbb3JpZ2luLmdldCgpLnByb3RvY29sIGlzRXF1YWxUb1N0cmluZzpAInRlc3RpbmciXSk7
CiAgICAgRVhQRUNUX1RSVUUoW29yaWdpbi5nZXQoKS5ob3N0IGlzRXF1YWxUb1N0cmluZzpAIm1h
aW4iXSk7CiAKKyAgICAvLyBJZiB3ZSBmYWlsZWQgdG8gcmV0cmlldmUgYW4gZXhwZWN0ZWQgb3Jp
Z2luLCB3ZSB3aWxsIGhhdmUgZmFpbGVkIHRoZSBhYm92ZSBjaGVja3MKKyAgICBpZiAoIW9yaWdp
bikgeworICAgICAgICBjbGVhblVwVGVzdFdlYlB1c2hEKHRlbXBEaXJlY3RvcnkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgb3JpZ2luT3BlcmF0aW9uRG9uZSA9IGZhbHNlOwogICAg
IFtkYXRhU3RvcmUgX2RlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246b3JpZ2lu
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQ
RUNUX0ZBTFNFKCEhZXJyb3IpOwpAQCAtMjQwLDYgKzI1Niw2IEBAIFRFU1QoV2ViUHVzaEQsIFBl
cm1pc3Npb25NYW5hZ2VtZW50KQogICAgIGNsZWFuVXBUZXN0V2ViUHVzaEQodGVtcERpcmVjdG9y
eSk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0KIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmgg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaAppbmRleCAw
NmE3NjRkMDM4OTkuLmMxYjQyYzUwMDViMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKwogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTM1
LDEzICszNywxNSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFJldGFpblB0cjxOU1VS
TD4gY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKIAotLy8gRklYTUU6IEdldCB0aGlzIHdv
cmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0b3IuCi0jaWYgUExBVEZPUk0oTUFDKQordm9pZCBraWxs
Rmlyc3RJbnN0YW5jZU9mRGFlbW9uKE5TU3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSk7CisK
ICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQogdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQo
UmV0YWluUHRyPHhwY19vYmplY3RfdD4mJik7CiAjZWxzZQogdm9pZCByZWdpc3RlclBsaXN0V2l0
aExhdW5jaEQoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4mJiwgTlNVUkwgKnRlbXBEaXIpOwogI2Vu
ZGlmCi0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5tbQppbmRleCA5NzRhNjQyYTBiNWQuLmRhYzIw
MjhkYzIxYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0
VXRpbGl0aWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0
aWxpdGllcy5tbQpAQCAtMjYsOSArMjYsMjYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiRGFlbW9uVGVzdFV0aWxpdGllcy5oIgogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1MpCisKICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+
CiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKyNpZiBQTEFURk9STShJT1MpCitAaW50ZXJm
YWNlIE5TVGFzayA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdDsKKy0gKHZvaWQpbGF1
bmNoOworLSAodm9pZCl3YWl0VW50aWxFeGl0OworCitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5
KSBOU1N0cmluZyAqbGF1bmNoUGF0aDsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKmFyZ3VtZW50czsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIHJldGFpbikg
aWQgc3RhbmRhcmRPdXRwdXQ7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNSdW5uaW5n
KSBCT09MIHJ1bm5pbmc7CitAZW5kCisjZW5kaWYKKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiBjdXJyZW50RXhlY3V0YWJsZUxvY2F0aW9uKCkK
QEAgLTQ4LDggKzY1LDYgQEAgUmV0YWluUHRyPE5TVVJMPiBjdXJyZW50RXhlY3V0YWJsZURpcmVj
dG9yeSgpCiAgICAgcmV0dXJuIFtjdXJyZW50RXhlY3V0YWJsZUxvY2F0aW9uKCkgVVJMQnlEZWxl
dGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKIH0KIAotLy8gRklYTUU6IEdldCB0aGlzIHdvcmtpbmcg
aW4gdGhlIGlPUyBzaW11bGF0b3IuCi0jaWYgUExBVEZPUk0oTUFDKQogI2lmIEhBVkUoT1NfTEFV
TkNIRF9KT0IpCiAKIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNf
b2JqZWN0X3Q+JiYgcGxpc3QpCkBAIC01Nyw3ICs3MiwxMyBAQCB2b2lkIHJlZ2lzdGVyUGxpc3RX
aXRoTGF1bmNoRChSZXRhaW5QdHI8eHBjX29iamVjdF90PiYmIHBsaXN0KQogICAgIE5TRXJyb3Ig
KmVycm9yID0gbmlsOwogICAgIGF1dG8gbGF1bmNoREpvYiA9IGFkb3B0TlMoW1tPU0xhdW5jaGRK
b2IgYWxsb2NdIGluaXRXaXRoUGxpc3Q6cGxpc3QuZ2V0KCldKTsKICAgICBbbGF1bmNoREpvYiBz
dWJtaXQ6JmVycm9yXTsKKworICAgIC8vIEluIHRoZSBpT1MgU2ltdWxhdG9yIHdlIG9mdGVuIHNl
ZSB0aGUgZm9sbG93aW5nIGVycm9yIGhlcmU6CisgICAgLy8gRXJyb3IgRG9tYWluPU9TTGF1bmNo
ZEVycm9yRG9tYWluIENvZGU9MTcgIkZpbGUgZXhpc3RzIgorICAgIC8vIFRlc3RzIHN0aWxsIGJl
aGF2ZSBhcyBleHBlY3RlZC4KKyNpZiBQTEFURk9STShNQUMpCiAgICAgRVhQRUNUX0ZBTFNFKGVy
cm9yKTsKKyNlbmRpZgogfQogCiAjZWxzZSAvLyBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtNzcs
NiArOTgsNTkgQEAgdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4mJiBwbGlzdCwgTlNVUkwgKnRlbXBEaXIpCiB9CiAKICNlbmRpZiAvLyBIQVZFKE9T
X0xBVU5DSERfSk9CKQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworc3RhdGljIGludCBwaWRP
ZkZpcnN0RGFlbW9uSW5zdGFuY2UoTlNTdHJpbmcgKmRhZW1vbkV4ZWN1dGFibGVOYW1lKQorewor
ICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tOU1Rhc2sgYWxsb2NdIGluaXRdKTsKKyAgICB0YXNr
LmdldCgpLmxhdW5jaFBhdGggPSBAIi9iaW4vcHMiOworICAgIHRhc2suZ2V0KCkuYXJndW1lbnRz
ID0gQFsKKyAgICAgICAgQCItYXgiLAorICAgICAgICBAIi1vIiwKKyAgICAgICAgQCJwaWQsY29t
bSIKKyAgICBdOworCisgICAgYXV0byB0YXNrUGlwZSA9IGFkb3B0TlMoW1tOU1BpcGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbdGFzayBzZXRTdGFuZGFyZE91dHB1dDp0YXNrUGlwZS5nZXQoKV07Cisg
ICAgW3Rhc2sgbGF1bmNoXTsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7CisgICAgd2hpbGUgKFt0YXNrIGlzUnVubmluZ10pCisgICAgICAg
IFtkYXRhIGFwcGVuZERhdGE6W1t0YXNrUGlwZSBmaWxlSGFuZGxlRm9yUmVhZGluZ10gcmVhZERh
dGFUb0VuZE9mRmlsZV1dOworICAgIFtkYXRhIGFwcGVuZERhdGE6W1t0YXNrUGlwZSBmaWxlSGFu
ZGxlRm9yUmVhZGluZ10gcmVhZERhdGFUb0VuZE9mRmlsZV1dOworCisgICAgYXV0byBwc1N0cmlu
ZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEuZ2V0KCkgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpw
c0VudHJpZXMgPSBbcHNTdHJpbmcgY29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiXG4iXTsK
KworICAgIGZvciAoTlNTdHJpbmcqIGVudHJ5IGluIHBzRW50cmllcykgeworICAgICAgICBpZiAo
IVtlbnRyeSBoYXNTdWZmaXg6ZGFlbW9uRXhlY3V0YWJsZU5hbWVdKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmNvbXBvbmVudHMgPSBbZW50cnkg
Y29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiICJdOworICAgICAgICBFWFBFQ1RfR0UoW2Nv
bXBvbmVudHMgY291bnRdLCAydSk7CisgICAgICAgIHJldHVybiBbW2NvbXBvbmVudHMgZmlyc3RP
YmplY3RdIGludGVnZXJWYWx1ZV07CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
a2lsbEZpcnN0SW5zdGFuY2VPZkRhZW1vbihOU1N0cmluZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUp
Cit7CisgICAgYXV0byBwaWQgPSBwaWRPZkZpcnN0RGFlbW9uSW5zdGFuY2UoZGFlbW9uRXhlY3V0
YWJsZU5hbWUpOworICAgIGlmICghcGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRh
c2sgPSBhZG9wdE5TKFtbTlNUYXNrIGFsbG9jXSBpbml0XSk7CisgICAgdGFzay5nZXQoKS5sYXVu
Y2hQYXRoID0gQCIvYmluL2tpbGwiOworICAgIHRhc2suZ2V0KCkuYXJndW1lbnRzID0gQFsKKyAg
ICAgICAgQCItOSIsCisgICAgICAgIFtAKHBpZCkgc3RyaW5nVmFsdWVdCisgICAgXTsKKworICAg
IFt0YXNrIGxhdW5jaF07CisgICAgW3Rhc2sgd2FpdFVudGlsRXhpdF07Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAv
LyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJh
cmllcy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IDllMjk0YTMw
NDMzNi4uNmVlMzcyZmVlMmZiIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0x
MS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRh
ZW1vbiBBUEkgdGVzdHMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0
aCBXZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdlbWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBH
ZW9mZiBHYXJlbi4KKworICAgICAgICAqIFdlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1Mv
MTUvQXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydC50YmQ6IEFkZGVk
LgorCiAyMDIxLTA5LTI0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TIDE1XSBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCAoUGFydCAzKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1MvMTUv
QXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydC50YmQgYi9XZWJLaXRM
aWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xNS9BcHBTZXJ2ZXJTdXBw
b3J0LmZyYW1ld29yay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmEzNzVlZGI0ZTU0MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvaU9TLzE1L0FwcFNlcnZlclN1
cHBvcnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1cHBvcnQudGJkCkBAIC0wLDAgKzEsOCBAQAorLS0t
ICF0YXBpLXRiZC12MworYXJjaHM6ICAgICAgICAgICBbIHg4Nl82NCwgYXJtNjQsIGFybTY0ZSBd
CitpbnN0YWxsLW5hbWU6ICAgICcvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQXBw
U2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydCcKK3BsYXRmb3JtOiBpb3MK
K2V4cG9ydHM6CisgIC0gYXJjaHM6ICAgICAgICAgICBbIHg4Nl82NCwgYXJtNjQsIGFybTY0ZSBd
CisgICAgb2JqYy1jbGFzc2VzOiAgICBbIE9TTGF1bmNoZEpvYiBdCisuLi4K
</data>
<flag name="commit-queue"
          id="469015"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444133</attachid>
            <date>2021-11-12 20:58:02 -0800</date>
            <delta_ts>2021-11-14 19:55:41 -0800</delta_ts>
            <desc>Patch for landing v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>28713</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYTZjMTY0OTA4MjI4Li4yYTcwOGIzMWUxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHRlc3RzIHdvcmtpbmcgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQuUGVybWlzc2lvbk1hbmFnZW1lbnQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgTW92ZSBhbGwgdGhlICJlbmFi
bGUgTm90aWZpY2F0aW9ucyIgU1BJIGZyb20gTWFjLW9ubHkgdG8gY3Jvc3MgcGxhdGZvcm06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAo
LVtXS1ByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpdKToKKyAgICAgICAgKC1b
V0tQcmVmZXJlbmNlcyBfbm90aWZpY2F0aW9uc0VuYWJsZWRdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAgICAo
V2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBhIGJ1aWxkIHBoYXNlIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBkYWVtb24g
ZXhlY3V0YWJsZXMKKyAgICAgICAgICBpbnNpZGUgYSBEYWVtb25zIGRpcmVjdG9yeSB3aXRoaW4g
dGhlIGJ1aWx0IFdlYktpdC5mcmFtZXdvcmsgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4KKyAgICAg
ICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIxLTExLTEyICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvcnQtWGNvZGUtcHJvamVjdC1m
aWxlIGlkZW1wb3RlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJlZmVyZW5jZXMubW0KaW5kZXggODllMWExYWJmN2I5Li42ZWVlOThkNjI3YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
CkBAIC0xMTYzLDE2ICsxMTYzLDYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2
aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1
cm4gX3ByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKIH0KIAotLSAodm9pZClfc2V0
Tm90aWZpY2F0aW9uc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAotewotICAgIF9wcmVmZXJlbmNlcy0+
c2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLS0gKEJPT0wpX25vdGlmaWNh
dGlvbnNFbmFibGVkCi17Ci0gICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0Vu
YWJsZWQoKTsKLX0KLQogLSAodm9pZClfc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQ6
KEJPT0wpZW5hYmxlZAogewogICAgIF9wcmVmZXJlbmNlcy0+c2V0QmFja3NwYWNlS2V5TmF2aWdh
dGlvbkVuYWJsZWQoZW5hYmxlZCk7CkBAIC0xNTY0LDYgKzE1NTQsMTYgQEAgc3RhdGljIFdlYkNv
cmU6OkVkaXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFi
bGVMaW5rQmVoYXYKICAgICBfcHJlZmVyZW5jZXMtPnNldEFjY2Vzc0hhbmRsZUVuYWJsZWQoYWNj
ZXNzSGFuZGxlRW5hYmxlZCk7CiB9CiAKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvbnNFbmFibGVk
OihCT09MKWVuYWJsZWQKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldE5vdGlmaWNhdGlvbnNFbmFi
bGVkKGVuYWJsZWQpOworfQorCistIChCT09MKV9ub3RpZmljYXRpb25zRW5hYmxlZAoreworICAg
IHJldHVybiBfcHJlZmVyZW5jZXMtPm5vdGlmaWNhdGlvbnNFbmFibGVkKCk7Cit9CisKIEBlbmQK
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
ZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IGY5MjNlZTBiOTRiNi4uYzFjNzIzYTFmZjQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaApAQCAtMTc2LDYgKzE3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIF9XS1BpdGNoQ29ycmVjdGlvbkFsZ29yaXRobSkgewogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0RmlsZVN5c3RlbUFjY2Vzc0VuYWJsZWQ6KSBCT09MIF9maWxlU3lzdGVtQWNj
ZXNzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U3RvcmFnZUFQSUVuYWJs
ZWQ6KSBCT09MIF9zdG9yYWdlQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0QWNjZXNzSGFuZGxlRW5hYmxlZDopIEJPT0wgX2FjY2Vzc0hhbmRsZUVuYWJsZWQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE5vdGlmaWNhdGlvbnNFbmFibGVkOikgQk9PTCBfbm90
aWZpY2F0aW9uc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdL
X0lPU19UQkEpKTsKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRXZWJHTEVuYWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSk7CkBAIC0yMDAsNyArMjAxLDYgQEAgdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgX1dLUGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc2V0dGVyPV9zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOikgQk9PTCBf
cGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFZpZXdHZXN0dXJlRGVidWdnaW5n
RW5hYmxlZDopIEJPT0wgX3ZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0
YW5kYXJkRm9udEZhbWlseTopIE5TU3RyaW5nICpfc3RhbmRhcmRGb250RmFtaWx5IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldEJhY2tzcGFjZUtleU5hdmlnYXRpb25FbmFibGVkOikgQk9PTCBfYmFja3NwYWNlS2V5
TmF2aWdhdGlvbkVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOikg
Qk9PTCBfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjE0KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBcHBsZVBheUVuYWJsZWQ6
KSBCT09MIF9hcHBsZVBheUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGVQcml2YXRlLmgKaW5kZXggYzczNjlmMzcwYTBlLi40NDM3OGY2NjI2NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaApAQCAtMTU5LDYgKzE1OSw3IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93
ZWJWaWV3RGlkRGlzYWJsZUluc3BlY3RvckJyb3dzZXJEb21haW46KFdLV2ViVmlldyAqKXdlYlZp
ZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdL
U2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4p
KEJPT0wpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
IAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIApAQCAtMjQ0LDcgKzI0NSw2IEBAIHN0cnVjdCBVSUVk
Z2VJbnNldHM7CiAtIChDR0Zsb2F0KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3
ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQ
YWdlV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRyYXdGb290ZXJJblJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5T
U3RyaW5nICopdGl0bGUgVVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAq
KXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2VidmlldyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooX1dLSGl0VGVz
dFJlc3VsdCAqKWhpdFRlc3RSZXN1bHQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylm
bGFncyB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbzsKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGlt
aXRXaGlsZUluRm9yZWdyb3VuZDooX1dLUmVzb3VyY2VMaW1pdClsaW1pdCBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc2V0UmVzaXphYmxlOihCT09MKWlzUmVzaXphYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmlu
ZGV4IDlkNWVmMjg0MzQzNS4uMjY2NmE5MWIyMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xMDUsNiArMTA1LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2Vi
UGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMo
V2ViUGFnZVByb3h5KiwgV0tGb2N1c0RpcmVjdGlvbikgZmluYWw7CiAgICAgICAgIHZvaWQgaGFu
ZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBP
cHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAgICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVBy
b3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBh
bGxvd2VkKT4mJikgZmluYWw7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hv
d1BhZ2UoV2ViUGFnZVByb3h5KikgZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVBy
b3h5KikgZmluYWw7CkBAIC0xMjMsNyArMTI1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBk
cmF3SGVhZGVyKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJl
Y3QmJikgZmluYWw7CiAgICAgICAgIHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJG
cmFtZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRSZWN0JiYpIGZpbmFsOwogCi0gICAgICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5
JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxv
d2VkKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2Vi
UGFnZVByb3h5JiwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZl
bnQ6Ok1vZGlmaWVyPiwgQVBJOjpPYmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9G
aWxsQnV0dG9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIHZv
aWQgdG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYpIGZpbmFsOwpAQCAtMjE1LDcgKzIxNiw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2Vi
Vmlld0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWlt
ZVR5cGVPcmlnaW5hdGluZ1VSTCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5l
bFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAg
ICAgICAgYm9vbCB3ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0
eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFj
aExvY2FsSW5zcGVjdG9yIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJ
bnNwZWN0b3IgOiAxOwpAQCAtMjY3LDYgKzI2Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdF
QlhSKSAmJiBQTEFURk9STShDT0NPQSkKICAgICAgICAgYm9vbCB3ZWJWaWV3U3RhcnRYUlNlc3Np
b25XaXRoQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgd2ViVmll
d1JlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhh
bmRsZXIgOiAxOwogICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAxY2Q1ZDBjYzliMzguLmZkOWQ0
YThiMjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CkBAIC0xMzgsNyArMTM4LDYgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tV
SURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhj
ZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRS
ZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1NhdmVEYXRhVG9GaWxlU3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5n
VVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2
ZURhdGFUb0ZpbGU6c3VnZ2VzdGVkRmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07
CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJz
SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0
aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOildOwotICAgIG1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVj
aXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNp
c2lvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRp
b25Gb3JMb2NhbEluc3BlY3RvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2Rl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3Bl
Y3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNw
ZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3
aWxsQ2xvc2VMb2NhbEluc3BlY3RvcjopXTsKQEAgLTE5Niw2ICsxOTUsNyBAQCB2b2lkIFVJRGVs
ZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogI2lmIEVOQUJM
RShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1N0YXJ0WFJTZXNzaW9uV2l0aENvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RhcnRYUlNlc3Npb25XaXRoQ29tcGxldGlv
bkhhbmRsZXI6KV07CiAjZW5kaWYKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVz
dE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RO
b3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOild
OwogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC02MTksNiArNjE5LDI3IEBAIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5
JiwgV2ViQ29yZTo6QXV0b3BsYXlFCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVs
ZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgaGFuZGxl
QXV0b3BsYXlFdmVudDp0b1dLQXV0b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRv
cGxheUV2ZW50RmxhZ3MoZmxhZ3MpXTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGFsbG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGlmICghbV91aURlbGVnYXRlKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOworCisgICAgaWYgKCFtX3VpRGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdS
ZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5k
bGVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0
byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRl
bGVnYXRlKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAg
YXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVn
YXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tVSURl
bGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcu
Z2V0KCkuZ2V0KCkgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdp
bjp3cmFwcGVyKHNlY3VyaXR5T3JpZ2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNo
ZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBQ
TEFURk9STShNQUMpCiBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNv
bnN0CiB7CkBAIC05MjEsMjcgKzk0Miw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNh
dmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QKICAgICBb
KGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUt
Pm1fd2ViVmlldy5nZXQoKS5nZXQoKSBzYXZlRGF0YVRvRmlsZTp3cmFwcGVyKGRhdGEpIHN1Z2dl
c3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lIG1pbWVUeXBlOm1pbWVUeXBlIG9yaWdpbmF0
aW5nVVJMOm9yaWdpbmF0aW5nVVJMXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGFsbG93ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAg
IGlmICghbV91aURlbGVnYXRlKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwotCi0gICAgaWYgKCFtX3VpRGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdS
ZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5k
bGVyKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotICAg
IGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUtPm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYg
KCFkZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLQot
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJW
aWV3LmdldCgpLmdldCgpIHJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlP
cmlnaW46d3JhcHBlcihzZWN1cml0eU9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlm
IChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7Ci0gICAgfSkuZ2V0KCldOwotfQotCiBS
ZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29u
ZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclVJ
UHJveHkmIGluc3BlY3RvcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3ZGI3MGE1YzA0
Zi4uNjQzMWQ0MGIwNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEzMjM4LDYgKzEzMjM4LDcgQEAKIAkJCQkxRDEyQ0M0RTI0MTQy
NjUzMDBGREEwQTMgLyogQ29weSBGZWF0dXJlIEZsYWdzIFBsaXN0ICovLAogCQkJCTUzNzlDN0FD
MjFFNTI4ODUwMEU0QThGNiAvKiBDaGVjayAueGNmaWxlbGlzdHMgKi8sCiAJCQkJOTMzMTcwMDcy
MjM0Njc0NTAwQjMyNTU0IC8qIENyZWF0ZSBzeW1saW5rcyB0byBYUEMgc2VydmljZXMgZm9yIGVu
Z2luZWVyaW5nIGJ1aWxkcyAqLywKKwkJCQk1MTJCODFDQTI3M0NBRkJFMDBEODdENDkgLyogQ3Jl
YXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcyAqLywKIAkJCQkw
RkI5NDgzNjIzOUYzMUI3MDA5MjZBOEYgLyogQ29weSBUZXN0aW5nIEhlYWRlcnMgKi8sCiAJCQkJ
REZEMDNBMjkyNzBENUY1NzAwMUE5OTZFIC8qIENvcHkgRGFlbW9uIFBsaXN0cyAqLywKIAkJCSk7
CkBAIC0xMzczMSw2ICsxMzczMiwyNCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNo
ZWxsU2NyaXB0ID0gIlNjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CiAJCX07CisJ
CTUxMkI4MUNBMjczQ0FGQkUwMEQ4N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBm
b3IgZW5naW5lZXJpbmcgYnVpbGRzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0g
KAorCQkJKTsKKwkJCW5hbWUgPSAiQ3JlYXRlIHN5bWxpbmtzIHRvIERhZW1vbnMgZm9yIGVuZ2lu
ZWVyaW5nIGJ1aWxkcyI7CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91
dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFtb
IFwiJHtERVBMT1lNRU5UX0xPQ0FUSU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBleGl0
XG5maVxuXG4jIElmIHdlIG1vdmUgdGhlIE1hYyBEYWVtb25zIHBhdGggdG8gV2ViS2l0LmZyYW1l
d29yay9WZXJzaW9ucy9BL0RhZW1vbnMsXG4jIGluIGFkZGl0aW9uIHRvIGEgTWFjLXNwZWNpZmlj
IHBsaXN0cywgdGhlIE1hYyBwYXRocyBiZWxvdyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5c
bmlmIFtbICR7V0tfUExBVEZPUk1fTkFNRX0gIT0gXCJtYWNvc3hcIiBdXTsgdGhlblxuICAgIERB
RU1PTlNfUEFUSD1cIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1v
bnNcIlxuICAgIEJVSUxUX1BST0RVQ1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1c
Ii4uLy4uXCJcbmVsc2VcbiAgICBEQUVNT05TX1BBVEg9XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
V2ViS2l0LmZyYW1ld29yay9EYWVtb25zXCJcbiAgICBCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJ
VkVfUEFUSF9GUk9NX0RBRU1PTlM9XCIuLi8uLlwiXG5maVxuXG5ta2RpciAtcCBcIiR7REFFTU9O
U19QQVRIfVwiXG5sbiAtc0ZoIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJfUkVMQVRJVkVfUEFUSF9G
Uk9NX0RBRU1PTlN9L3dlYnB1c2hkXCIgXCIke0RBRU1PTlNfUEFUSH0vd2VicHVzaGRcIlxubG4g
LXNGaCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TfS9h
ZGF0dHJpYnV0aW9uZFwiIFwiJHtEQUVNT05TX1BBVEh9L2FkYXR0cmlidXRpb25kXCJcbiI7CisJ
CX07CiAJCTUzMjVCREQyMjFERkY0N0MwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggOTMzNGMyMTE4ZGVjLi4wYzRjZTI2ZGRhNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0xMiAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1vbiBB
UEkgdGVzdHMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBXZWJQ
dXNoRC5QZXJtaXNzaW9uTWFuYWdlbWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBH
YXJlbi4KKworICAgICAgICBUbyBnZXQgdGhpcyB3b3JraW5nIHdlIG5lZWRlZCB0bzoKKyAgICAg
ICAgLSBIYXZlIHRoZSBEYWVtb25zIGluc3RhbGxlZCBpbiBhIHNpbXVsYXRvci1ydW50aW1lLXJv
b3QtdmlzaWJsZSBwYXRoCisgICAgICAgIC0gUG9pbnQgdGhlIE9TTGF1bmNoREpvYiBwbGlzdCB0
byB0aGUgc2ltdWxhdG9yLXJlbGF0aXZlIHBhdGgsIG5vdCBNYWMtcmVsYXRpdmUKKyAgICAgICAg
LSBTb2x2ZSB0aGUgIkhvdyBkbyBJIGtpbGwgZXhpc3RpbmcgaW5zdGFuY2VzIHRvIHJ1biBhIGNs
ZWFuIHRlc3Q/IiBwcm9ibGVtIHdpdGhpbiB0aGUgc2ltdWxhdG9yLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBwYXRjaCBkb2VzIHRob3NlIHRoaW5ncy4KKyAgICAgICAgCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhj
Y29uZmlnOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0V2ViUHVz
aERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFVwVGVzdFdlYlB1c2hE
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFuVXBUZXN0V2ViUHVzaEQpOgorICAgICAg
ICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWdpc3RlclBsaXN0V2l0aExhdW5jaEQpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6cGlkT2ZGaXJzdERhZW1vbkluc3RhbmNlKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmtpbGxGaXJzdEluc3RhbmNlT2ZEYWVtb24pOgorCiAyMDIxLTExLTEyICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0cHld
IFN5bWxpbmsgZGFlbW9ucyBpbnRvIHNpbXVsYXRvciBydW50aW1lIHJvb3QKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50
aXRsZW1lbnRzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0
QVBJLWlPUy5lbnRpdGxlbWVudHMKaW5kZXggNmFjNDVjNjhkNDMzLi4zYjQwMTE3NzM1NzkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SS1pT1MuZW50aXRsZW1lbnRzCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCkBAIC0xMCw1ICsxMCw3IEBACiAJPHRy
dWUvPgogCTxrZXk+Y29tLmFwcGxlLlBhc3RlYm9hcmQucGFzdGUtdW5jaGVja2VkPC9rZXk+CiAJ
PHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8
L2tleT4KKwk8c3RyaW5nPlRlc3RXZWJLaXRBUEk8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJL
aXRBUEkueGNjb25maWcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RX
ZWJLaXRBUEkueGNjb25maWcKaW5kZXggNWRmYmZkM2VmODViLi5mYzg4NzY5MmY0Y2YgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54
Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJL
aXRBUEkueGNjb25maWcKQEAgLTQ2LDYgKzQ2LDkgQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19j
b2NvYXRvdWNoID0gJChpbmhlcml0ZWQpICQoV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiBX
S19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFH
U18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19tYWNv
c3ggPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUyQoV0tfTUFDT1NfMTIwMCkpOwogV0tf
QVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTX01BQ09TX1NJTkNFXzEyMDAgPSAtZnJhbWV3b3JrIEFw
cFNlcnZlclN1cHBvcnQKK1dLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19pcGhvbmVvcyA9ICQo
V0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTJChXS19JT1NfMTUpKTsKK1dLX0FQUFNFUlZFUlNV
UFBPUlRfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERG
TEFHUyQoV0tfSU9TXzE1KSk7CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1NfSU9TX1NJTkNF
XzE1ID0gLWZyYW1ld29yayBBcHBTZXJ2ZXJTdXBwb3J0CiAKIFdLX0FVVEhLSVRfTERGTEFHUyA9
ICQoV0tfQVVUSEtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfQVVUSEtJVF9M
REZMQUdTX2lwaG9uZW9zID0gJChXS19BVVRIS0lUX0xERkxBR1MkKFdLX0lPU18xMykpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCmluZGV4IDVlMjMzYzViYTEyMy4uODYzOTlhNDczYjEwIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCkBA
IC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShJT1MpCisKICNpbXBvcnQgIkRhZW1vblRlc3RVdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CkBAIC01Myw5ICs1NSw2IEBAIHN0YXRpYyBib29sIGFsZXJ0UmVjZWl2ZWQgPSBmYWxzZTsKIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBGSVhNRTogR2V0IHRoaXMgd29ya2luZyBp
biB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRpYyBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRpb24oKQogewogICAgIHJldHVybiBbY3Vy
cmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ3
ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpAQCAtODQsNyArODMsMTEgQEAgc3RhdGljIFJldGFp
blB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQdXNoRGFlbW9uUExpc3QoTlNVUkwgKnN0b3JhZ2VM
b2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8gcHJvZ3JhbUFyZ3VtZW50cyA9IGFkb3B0TlMo
eHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CiAgICAgICAgIGF1dG8gZXhlY3V0YWJsZUxv
Y2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlvbigpOworI2lmIFBMQVRGT1JNKE1BQykK
ICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBD
X0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxvY2F0aW9uLmdldCgpLmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbik7CisjZWxzZQorICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhwcm9ncmFtQXJn
dW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiL3Vzci9sb2NhbC9iaW4vd2Via2l0LXRl
c3Rpbmcvd2VicHVzaGQiKTsKKyNlbmRpZgogICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhw
cm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiLS1tYWNoU2VydmljZU5h
bWUiKTsKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50cy5nZXQo
KSwgWFBDX0FSUkFZX0FQUEVORCwgIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2Vydmlj
ZSIpOwogICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUocGxpc3QuZ2V0KCksICJQcm9n
cmFtQXJndW1lbnRzIiwgcHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSk7CkBAIC0xMjEsNyArMTI0LDcg
QEAgc3RhdGljIE5TVVJMICpzZXRVcFRlc3RXZWJQdXNoRCgpCiAgICAgICAgIFtmaWxlTWFuYWdl
ciByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjomZXJyb3JdOwogICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKIAotICAgIHN5c3RlbSgia2lsbGFsbCB3ZWJwdXNoZCAtOSAyPiAvZGV2L251bGwi
KTsKKyAgICBraWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKEAid2VicHVzaGQiKTsKIAogICAgIGF1
dG8gcGxpc3QgPSB0ZXN0V2ViUHVzaERhZW1vblBMaXN0KHRlbXBEaXIpOwogI2lmIEhBVkUoT1Nf
TEFVTkNIRF9KT0IpCkBAIC0xMzUsNyArMTM4LDcgQEAgc3RhdGljIE5TVVJMICpzZXRVcFRlc3RX
ZWJQdXNoRCgpCiAKIHN0YXRpYyB2b2lkIGNsZWFuVXBUZXN0V2ViUHVzaEQoTlNVUkwgKnRlbXBE
aXIpCiB7Ci0gICAgc3lzdGVtKCJraWxsYWxsIHdlYnB1c2hkIC05Iik7CisgICAga2lsbEZpcnN0
SW5zdGFuY2VPZkRhZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBFWFBFQ1RfVFJVRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6dGVtcERpci5wYXRoXSk7
CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CkBAIC0xNTksNiArMTYyLDEzIEBAIFRFU1QoV2Vi
UHVzaEQsIEJhc2ljQ29tbXVuaWNhdGlvbikKICAgICAKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9
IGZhbHNlOwogICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5KGNvbm5l
Y3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF4oeHBjX29iamVjdF90IHJlcGx5KSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUocmVwbHkp
ICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKKyAgICAgICAgICAgIE5TTG9nKEAiVW5leHBlY3Rl
ZCBub24tZGljdGlvbmFyeTogJUAiLCByZXBseSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKEZBTFNFKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCiAgICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IDA7CiAgICAgICAgIGNvbnN0IHZv
aWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXBseSwgImVuY29kZWQgbWVzc2Fn
ZSIsICZkYXRhU2l6ZSk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhU2l6ZSwgMTV1KTsKQEAgLTE4
Nyw2ICsxOTcsNyBAQCBURVNUKFdlYlB1c2hELCBQZXJtaXNzaW9uTWFuYWdlbWVudCkKIAogICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0g
ZGF0YVN0b3JlLmdldCgpOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzIF9z
ZXROb3RpZmljYXRpb25zRW5hYmxlZDpZRVNdOwogICAgIGZvciAoX1dLRXhwZXJpbWVudGFsRmVh
dHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFsRmVhdHVyZXNdKSB7
CiAgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiQnVpbHRJbk5vdGlm
aWNhdGlvbnNFbmFibGVkIl0pCiAgICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJlOmZlYXR1cmVdOwpAQCAtMjIyLDYgKzIzMywx
MiBAQCBURVNUKFdlYlB1c2hELCBQZXJtaXNzaW9uTWFuYWdlbWVudCkKICAgICBFWFBFQ1RfVFJV
RShbb3JpZ2luLmdldCgpLnByb3RvY29sIGlzRXF1YWxUb1N0cmluZzpAInRlc3RpbmciXSk7CiAg
ICAgRVhQRUNUX1RSVUUoW29yaWdpbi5nZXQoKS5ob3N0IGlzRXF1YWxUb1N0cmluZzpAIm1haW4i
XSk7CiAKKyAgICAvLyBJZiB3ZSBmYWlsZWQgdG8gcmV0cmlldmUgYW4gZXhwZWN0ZWQgb3JpZ2lu
LCB3ZSB3aWxsIGhhdmUgZmFpbGVkIHRoZSBhYm92ZSBjaGVja3MKKyAgICBpZiAoIW9yaWdpbikg
eworICAgICAgICBjbGVhblVwVGVzdFdlYlB1c2hEKHRlbXBEaXJlY3RvcnkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgb3JpZ2luT3BlcmF0aW9uRG9uZSA9IGZhbHNlOwogICAgIFtk
YXRhU3RvcmUgX2RlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246b3JpZ2luLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNU
X0ZBTFNFKCEhZXJyb3IpOwpAQCAtMjQwLDYgKzI1Nyw2IEBAIFRFU1QoV2ViUHVzaEQsIFBlcm1p
c3Npb25NYW5hZ2VtZW50KQogICAgIGNsZWFuVXBUZXN0V2ViUHVzaEQodGVtcERpcmVjdG9yeSk7
CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0KIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMuaAppbmRleCAwNmE3
NjRkMDM4OTkuLmMxYjQyYzUwMDViMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9EYWVtb25UZXN0VXRpbGl0aWVzLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKwogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTM1LDEz
ICszNywxNSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFJldGFpblB0cjxOU1VSTD4g
Y3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKIAotLy8gRklYTUU6IEdldCB0aGlzIHdvcmtp
bmcgaW4gdGhlIGlPUyBzaW11bGF0b3IuCi0jaWYgUExBVEZPUk0oTUFDKQordm9pZCBraWxsRmly
c3RJbnN0YW5jZU9mRGFlbW9uKE5TU3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSk7CisKICNp
ZiBIQVZFKE9TX0xBVU5DSERfSk9CKQogdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0
YWluUHRyPHhwY19vYmplY3RfdD4mJik7CiAjZWxzZQogdm9pZCByZWdpc3RlclBsaXN0V2l0aExh
dW5jaEQoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4mJiwgTlNVUkwgKnRlbXBEaXIpOwogI2VuZGlm
Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5tbQppbmRleCA5NzRhNjQyYTBiNWQuLmRhYzIwMjhk
YzIxYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRp
bGl0aWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxp
dGllcy5tbQpAQCAtMjYsOSArMjYsMjYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
RGFlbW9uVGVzdFV0aWxpdGllcy5oIgogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1MpCisKICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAK
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKyNpZiBQTEFURk9STShJT1MpCitAaW50ZXJmYWNl
IE5TVGFzayA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdDsKKy0gKHZvaWQpbGF1bmNo
OworLSAodm9pZCl3YWl0VW50aWxFeGl0OworCitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5KSBO
U1N0cmluZyAqbGF1bmNoUGF0aDsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TQXJyYXk8
TlNTdHJpbmcgKj4gKmFyZ3VtZW50czsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIHJldGFpbikgaWQg
c3RhbmRhcmRPdXRwdXQ7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNSdW5uaW5nKSBC
T09MIHJ1bm5pbmc7CitAZW5kCisjZW5kaWYKKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiBjdXJyZW50RXhlY3V0YWJsZUxvY2F0aW9uKCkKQEAg
LTQ4LDggKzY1LDYgQEAgUmV0YWluUHRyPE5TVVJMPiBjdXJyZW50RXhlY3V0YWJsZURpcmVjdG9y
eSgpCiAgICAgcmV0dXJuIFtjdXJyZW50RXhlY3V0YWJsZUxvY2F0aW9uKCkgVVJMQnlEZWxldGlu
Z0xhc3RQYXRoQ29tcG9uZW50XTsKIH0KIAotLy8gRklYTUU6IEdldCB0aGlzIHdvcmtpbmcgaW4g
dGhlIGlPUyBzaW11bGF0b3IuCi0jaWYgUExBVEZPUk0oTUFDKQogI2lmIEhBVkUoT1NfTEFVTkNI
RF9KT0IpCiAKIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNfb2Jq
ZWN0X3Q+JiYgcGxpc3QpCkBAIC01Nyw3ICs3MiwxMyBAQCB2b2lkIHJlZ2lzdGVyUGxpc3RXaXRo
TGF1bmNoRChSZXRhaW5QdHI8eHBjX29iamVjdF90PiYmIHBsaXN0KQogICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOwogICAgIGF1dG8gbGF1bmNoREpvYiA9IGFkb3B0TlMoW1tPU0xhdW5jaGRKb2Ig
YWxsb2NdIGluaXRXaXRoUGxpc3Q6cGxpc3QuZ2V0KCldKTsKICAgICBbbGF1bmNoREpvYiBzdWJt
aXQ6JmVycm9yXTsKKworICAgIC8vIEluIHRoZSBpT1MgU2ltdWxhdG9yIHdlIG9mdGVuIHNlZSB0
aGUgZm9sbG93aW5nIGVycm9yIGhlcmU6CisgICAgLy8gRXJyb3IgRG9tYWluPU9TTGF1bmNoZEVy
cm9yRG9tYWluIENvZGU9MTcgIkZpbGUgZXhpc3RzIgorICAgIC8vIFRlc3RzIHN0aWxsIGJlaGF2
ZSBhcyBleHBlY3RlZC4KKyNpZiBQTEFURk9STShNQUMpCiAgICAgRVhQRUNUX0ZBTFNFKGVycm9y
KTsKKyNlbmRpZgogfQogCiAjZWxzZSAvLyBIQVZFKE9TX0xBVU5DSERfSk9CKQpAQCAtNzcsNiAr
OTgsNTkgQEAgdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0YWluUHRyPE5TRGljdGlv
bmFyeT4mJiBwbGlzdCwgTlNVUkwgKnRlbXBEaXIpCiB9CiAKICNlbmRpZiAvLyBIQVZFKE9TX0xB
VU5DSERfSk9CKQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworc3RhdGljIGludCBwaWRPZkZp
cnN0RGFlbW9uSW5zdGFuY2UoTlNTdHJpbmcgKmRhZW1vbkV4ZWN1dGFibGVOYW1lKQoreworICAg
IGF1dG8gdGFzayA9IGFkb3B0TlMoW1tOU1Rhc2sgYWxsb2NdIGluaXRdKTsKKyAgICB0YXNrLmdl
dCgpLmxhdW5jaFBhdGggPSBAIi9iaW4vcHMiOworICAgIHRhc2suZ2V0KCkuYXJndW1lbnRzID0g
QFsKKyAgICAgICAgQCItYXgiLAorICAgICAgICBAIi1vIiwKKyAgICAgICAgQCJwaWQsY29tbSIK
KyAgICBdOworCisgICAgYXV0byB0YXNrUGlwZSA9IGFkb3B0TlMoW1tOU1BpcGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBbdGFzayBzZXRTdGFuZGFyZE91dHB1dDp0YXNrUGlwZS5nZXQoKV07CisgICAg
W3Rhc2sgbGF1bmNoXTsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRh
IGFsbG9jXSBpbml0XSk7CisgICAgd2hpbGUgKFt0YXNrIGlzUnVubmluZ10pCisgICAgICAgIFtk
YXRhIGFwcGVuZERhdGE6W1t0YXNrUGlwZSBmaWxlSGFuZGxlRm9yUmVhZGluZ10gcmVhZERhdGFU
b0VuZE9mRmlsZV1dOworICAgIFtkYXRhIGFwcGVuZERhdGE6W1t0YXNrUGlwZSBmaWxlSGFuZGxl
Rm9yUmVhZGluZ10gcmVhZERhdGFUb0VuZE9mRmlsZV1dOworCisgICAgYXV0byBwc1N0cmluZyA9
IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEuZ2V0KCkgZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpwc0Vu
dHJpZXMgPSBbcHNTdHJpbmcgY29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiXG4iXTsKKwor
ICAgIGZvciAoTlNTdHJpbmcqIGVudHJ5IGluIHBzRW50cmllcykgeworICAgICAgICBpZiAoIVtl
bnRyeSBoYXNTdWZmaXg6ZGFlbW9uRXhlY3V0YWJsZU5hbWVdKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmNvbXBvbmVudHMgPSBbZW50cnkgY29t
cG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiICJdOworICAgICAgICBFWFBFQ1RfR0UoW2NvbXBv
bmVudHMgY291bnRdLCAydSk7CisgICAgICAgIHJldHVybiBbW2NvbXBvbmVudHMgZmlyc3RPYmpl
Y3RdIGludGVnZXJWYWx1ZV07CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQga2ls
bEZpcnN0SW5zdGFuY2VPZkRhZW1vbihOU1N0cmluZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUpCit7
CisgICAgYXV0byBwaWQgPSBwaWRPZkZpcnN0RGFlbW9uSW5zdGFuY2UoZGFlbW9uRXhlY3V0YWJs
ZU5hbWUpOworICAgIGlmICghcGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRhc2sg
PSBhZG9wdE5TKFtbTlNUYXNrIGFsbG9jXSBpbml0XSk7CisgICAgdGFzay5nZXQoKS5sYXVuY2hQ
YXRoID0gQCIvYmluL2tpbGwiOworICAgIHRhc2suZ2V0KCkuYXJndW1lbnRzID0gQFsKKyAgICAg
ICAgQCItOSIsCisgICAgICAgIFtAKHBpZCkgc3RyaW5nVmFsdWVdCisgICAgXTsKKworICAgIFt0
YXNrIGxhdW5jaF07CisgICAgW3Rhc2sgd2FpdFVudGlsRXhpdF07Cit9CiAKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmll
cy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IDllMjk0YTMwNDMz
Ni4uOTg4ZTdhYmU3MjllIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMS0x
MiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IGRhZW1v
biBBUEkgdGVzdHMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvciAoc3RhcnRpbmcgd2l0aCBX
ZWJQdXNoRC5QZXJtaXNzaW9uTWFuYWdlbWVudCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZiBHYXJlbi4KKworICAgICAgICAqIFdlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1MvMTUv
QXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydC50YmQ6IEFkZGVkLgor
CiAyMDIxLTA5LTI0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TIDE1XSBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCAoUGFydCAzKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1MvMTUvQXBw
U2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydC50YmQgYi9XZWJLaXRMaWJy
YXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xNS9BcHBTZXJ2ZXJTdXBwb3J0
LmZyYW1ld29yay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmEzNzVlZGI0ZTU0MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdExp
YnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvaU9TLzE1L0FwcFNlcnZlclN1cHBv
cnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1cHBvcnQudGJkCkBAIC0wLDAgKzEsOCBAQAorLS0tICF0
YXBpLXRiZC12MworYXJjaHM6ICAgICAgICAgICBbIHg4Nl82NCwgYXJtNjQsIGFybTY0ZSBdCitp
bnN0YWxsLW5hbWU6ICAgICcvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQXBwU2Vy
dmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3VwcG9ydCcKK3BsYXRmb3JtOiBpb3MKK2V4
cG9ydHM6CisgIC0gYXJjaHM6ICAgICAgICAgICBbIHg4Nl82NCwgYXJtNjQsIGFybTY0ZSBdCisg
ICAgb2JqYy1jbGFzc2VzOiAgICBbIE9TTGF1bmNoZEpvYiBdCisuLi4K
</data>
<flag name="commit-queue"
          id="469064"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444209</attachid>
            <date>2021-11-14 19:55:41 -0800</date>
            <delta_ts>2021-11-14 23:17:44 -0800</delta_ts>
            <desc>Patch for landing v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29079</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYTZjMTY0OTA4MjI4Li5hYjA5MDRmZjQxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjEtMTEtMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEdldCBkYWVtb24gQVBJIHJlYWR5IHRvIHdvcmsgaW4gdGhlIGlPUyBzaW11bGF0
b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBH
YXJlbi4KKworICAgICAgICBNb3ZlIGFsbCB0aGUgImVuYWJsZSBOb3RpZmljYXRpb25zIiBTUEkg
ZnJvbSBNYWMtb25seSB0byBjcm9zcyBwbGF0Zm9ybToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3NldE5v
dGlmaWNhdGlvbnNFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9ub3RpZmlj
YXRpb25zRW5hYmxlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIGEgYnVpbGQg
cGhhc2Ugc2NyaXB0IHRvIGluc3RhbGwgdGhlIGRhZW1vbiBleGVjdXRhYmxlcworICAgICAgICAg
IGluc2lkZSBhIERhZW1vbnMgZGlyZWN0b3J5IHdpdGhpbiB0aGUgYnVpbHQgV2ViS2l0LmZyYW1l
d29yayBmb3IgZW5naW5lZXJpbmcgYnVpbGRzLgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hE
YWVtb24ubW06CisKIDIwMjEtMTEtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2Ugc29ydC1YY29kZS1wcm9qZWN0LWZpbGUgaWRlbXBvdGVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRl
eCA4OWUxYTFhYmY3YjkuLjZlZWU5OGQ2MjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTExNjMsMTYgKzExNjMsNiBA
QCBzdGF0aWMgV2ViQ29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3IgdG9FZGl0YWJsZUxpbmtCZWhh
dmlvcihfV0tFZGl0YWJsZUxpbmtCZWhhdgogICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPnN0YW5k
YXJkRm9udEZhbWlseSgpOwogfQogCi0tICh2b2lkKV9zZXROb3RpZmljYXRpb25zRW5hYmxlZDoo
Qk9PTCllbmFibGVkCi17Ci0gICAgX3ByZWZlcmVuY2VzLT5zZXROb3RpZmljYXRpb25zRW5hYmxl
ZChlbmFibGVkKTsKLX0KLQotLSAoQk9PTClfbm90aWZpY2F0aW9uc0VuYWJsZWQKLXsKLSAgICBy
ZXR1cm4gX3ByZWZlcmVuY2VzLT5ub3RpZmljYXRpb25zRW5hYmxlZCgpOwotfQotCiAtICh2b2lk
KV9zZXRCYWNrc3BhY2VLZXlOYXZpZ2F0aW9uRW5hYmxlZDooQk9PTCllbmFibGVkCiB7CiAgICAg
X3ByZWZlcmVuY2VzLT5zZXRCYWNrc3BhY2VLZXlOYXZpZ2F0aW9uRW5hYmxlZChlbmFibGVkKTsK
QEAgLTE1NjQsNiArMTU1NCwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6RWRpdGFibGVMaW5rQmVoYXZp
b3IgdG9FZGl0YWJsZUxpbmtCZWhhdmlvcihfV0tFZGl0YWJsZUxpbmtCZWhhdgogICAgIF9wcmVm
ZXJlbmNlcy0+c2V0QWNjZXNzSGFuZGxlRW5hYmxlZChhY2Nlc3NIYW5kbGVFbmFibGVkKTsKIH0K
IAorLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAg
IF9wcmVmZXJlbmNlcy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKKy0g
KEJPT0wpX25vdGlmaWNhdGlvbnNFbmFibGVkCit7CisgICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+
bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKK30KKwogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5k
ZXggZjkyM2VlMGI5NGI2Li5jMWM3MjNhMWZmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0xNzYs
NiArMTc2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGl0Y2hDb3JyZWN0aW9u
QWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRGaWxlU3lzdGVt
QWNjZXNzRW5hYmxlZDopIEJPT0wgX2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRTdG9yYWdlQVBJRW5hYmxlZDopIEJPT0wgX3N0b3JhZ2VBUElF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBY2Nlc3NIYW5kbGVFbmFibGVk
OikgQk9PTCBfYWNjZXNzSGFuZGxlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6KSBCT09MIF9ub3RpZmljYXRpb25zRW5hYmxlZCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgIVRB
UkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFdlYkdMRW5h
YmxlZDopIEJPT0wgX3dlYkdMRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
KTsKQEAgLTIwMCw3ICsyMDEsNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQaXRj
aENvcnJlY3Rpb25BbGdvcml0aG0pIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQ6KSBCT09MIF9wbHVnSW5TbmFwc2hvdHRpbmdFbmFi
bGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkOikgQk9PTCBfdmlld0dl
c3R1cmVEZWJ1Z2dpbmdFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U3RhbmRhcmRGb250RmFtaWx5OikgTlNT
dHJpbmcgKl9zdGFuZGFyZEZvbnRGYW1pbHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXROb3RpZmljYXRpb25zRW5hYmxl
ZDopIEJPT0wgX25vdGlmaWNhdGlvbnNFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QmFja3NwYWNlS2V5TmF2
aWdhdGlvbkVuYWJsZWQ6KSBCT09MIF9iYWNrc3BhY2VLZXlOYXZpZ2F0aW9uRW5hYmxlZCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldEFsbG93c0lubGluZU1lZGlhUGxheWJhY2s6KSBCT09MIF9hbGxvd3NJbmxpbmVNZWRp
YVBsYXliYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpKTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldEFwcGxlUGF5RW5hYmxlZDopIEJPT0wgX2FwcGxlUGF5RW5hYmxl
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCBjNzM2
OWYzNzBhMGUuLjQ0Mzc4ZjY2MjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0xNTksNiArMTU5LDcg
QEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKHZvaWQpX3dlYlZpZXdEaWREaXNhYmxlSW5zcGVj
dG9yQnJvd3NlckRvbWFpbjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjApLCBpb3MoMTUuMCkpOwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHN0YXJ0WFJTZXNzaW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjAp
KTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNh
dGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3Vy
aXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9O
RQogCkBAIC0yNDQsNyArMjQ1LDYgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKENHRmxvYXQp
X3dlYlZpZXdGb290ZXJIZWlnaHQ6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRyYXdIZWFkZXJJblJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5n
ICopdGl0bGUgVVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
KTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZHJhd0Zvb3RlckluUmVj
dDooQ0dSZWN0KXJlY3QgZm9yUGFnZVdpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSBVUkw6KE5T
VVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZv
clNlY3VyaXR5T3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJ2aWV3
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OihfV0tIaXRUZXN0UmVzdWx0ICopaGl0VGVzdFJlc3Vs
dCB3aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmllckZsYWdzKWZsYWdzIHVzZXJJbmZvOihpZCA8TlNT
ZWN1cmVDb2Rpbmc+KXVzZXJJbmZvOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOihf
V0tSZXNvdXJjZUxpbWl0KWxpbWl0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwog
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzZXRSZXNpemFibGU6KEJPT0wp
aXNSZXNpemFibGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggOWQ1ZWYyODQzNDM1Li4yNjY2
YTkxYjIyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgK
QEAgLTEwNSw2ICsxMDUsOCBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZFJlc2lnbklucHV0
RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJQYWdlUHJveHkmLCBBUEk6Ok9iamVj
dCopIGZpbmFsOwogICAgICAgICBib29sIHRha2VGb2N1cyhXZWJQYWdlUHJveHkqLCBXS0ZvY3Vz
RGlyZWN0aW9uKSBmaW5hbDsKICAgICAgICAgdm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYlBh
Z2VQcm94eSYsIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRv
cGxheUV2ZW50RmxhZ3M+KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbG93ZWQpPiYmKSBmaW5hbDsKKwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgdm9pZCBzaG93UGFnZShXZWJQYWdlUHJveHkqKSBm
aW5hbDsKICAgICAgICAgdm9pZCBmb2N1cyhXZWJQYWdlUHJveHkqKSBmaW5hbDsKQEAgLTEyMyw3
ICsxMjUsNiBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRyYXdIZWFkZXIoV2ViUGFnZVByb3h5
JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCYmKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkcmF3Rm9vdGVyKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpG
bG9hdFJlY3QmJikgZmluYWw7CiAKLSAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbG93ZWQpPiYmKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJI
aXRUZXN0UmVzdWx0RGF0YSYsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+LCBBUEk6Ok9i
amVjdCopOwogICAgICAgICB2b2lkIGRpZENsaWNrQXV0b0ZpbGxCdXR0b24oV2ViUGFnZVByb3h5
JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsKICAgICAgICAgdm9pZCB0b29sYmFyc0FyZVZpc2libGUo
V2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChib29sKT4mJikgZmluYWw7CkBAIC0yMTUsNyAr
MjE2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRXhjZWVkQmFja2dyb3Vu
ZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmll
d1NhdmVEYXRhVG9GaWxlU3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMIDog
MTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0
ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwotICAgICAgICBib29sIHdlYlZpZXdSZXF1
ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVy
IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3Q29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9y
IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgOiAxOwog
ICAgICAgICBib29sIHdlYlZpZXdXaWxsQ2xvc2VMb2NhbEluc3BlY3RvciA6IDE7CkBAIC0yNjcs
NiArMjY3LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09B
KQogICAgICAgICBib29sIHdlYlZpZXdTdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxl
ciA6IDE7CiAjZW5kaWYKKyAgICAgICAgYm9vbCB3ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBl
cm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA6IDE7CiAgICAgfSBtX2Rl
bGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tCmluZGV4IDFjZDVkMGNjOWIzOC4uZmQ5ZDRhOGIyOWUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEzOCw3ICsxMzgsNiBAQCB2
b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQog
ICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VM
aW1pdFdoaWxlSW5Gb3JlZ3JvdW5kID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6ZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9y
ZWdyb3VuZDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2F2ZURhdGFUb0ZpbGVT
dWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzYXZlRGF0YVRvRmlsZTpzdWdnZXN0ZWRG
aWxlbmFtZTptaW1lVHlwZTpvcmlnaW5hdGluZ1VSTDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1lQ29tcGxl
dGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJW
aWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlv
bkhhbmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1JlcXVlc3ROb3RpZmlj
YXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXTsKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Y29uZmlndXJh
dGlvbkZvckxvY2FsSW5zcGVjdG9yOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
aWRBdHRhY2hMb2NhbEluc3BlY3RvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOildOwogICAgIG1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdXaWxsQ2xvc2VMb2NhbEluc3BlY3RvciA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndpbGxDbG9zZUxvY2FsSW5zcGVjdG9y
OildOwpAQCAtMTk2LDYgKzE5NSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQg
PFdLVUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShD
T0NPQSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U3RhcnRYUlNlc3Npb25XaXRoQ29t
cGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpzdGFydFhSU2Vzc2lvbldpdGhDb21wbGV0aW9uSGFuZGxlcjopXTsKICNlbmRpZgor
ICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lv
bkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07CiB9CiAKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKQEAgLTYxOSw2ICs2MTksMjcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6aGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUUK
ICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVs
ZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQoKSBoYW5kbGVBdXRvcGxheUV2ZW50OnRvV0tBdXRv
cGxheUV2ZW50KGV2ZW50KSB3aXRoRmxhZ3M6dG9XS0F1dG9wbGF5RXZlbnRGbGFncyhmbGFncyld
OwogfQogCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYWxs
b3dlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUpCisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBpZiAoIW1fdWlE
ZWxlZ2F0ZS0+bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVn
YXRlLT5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihf
d2ViVmlldzpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOmRl
Y2lzaW9uSGFuZGxlcjopKTsKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0
ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXF1ZXN0Tm90
aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOndyYXBwZXIoc2VjdXJpdHlPcmln
aW4pIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9P
TCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRs
ZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXIt
PmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXN1bHQpOworICAgIH0pLmdldCgpXTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIGJvb2wgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmNhblJ1bk1vZGFsKCkgY29uc3QKIHsKQEAgLTkyMSwyNyArOTQy
LDYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdAogICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgp
IHNhdmVEYXRhVG9GaWxlOndyYXBwZXIoZGF0YSkgc3VnZ2VzdGVkRmlsZW5hbWU6c3VnZ2VzdGVk
RmlsZW5hbWUgbWltZVR5cGU6bWltZVR5cGUgb3JpZ2luYXRpbmdVUkw6b3JpZ2luYXRpbmdVUkxd
OwogfQogCi12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYWxs
b3dlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX3VpRGVsZWdhdGUpCi0g
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0KLSAgICBpZiAoIW1fdWlE
ZWxlZ2F0ZS0+bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIpCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgCi0gICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlE
ZWxlZ2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIWRlbGVnYXRlKQotICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotCi0gICAgYXV0byBjaGVja2VyID0gQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0
b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdp
bjpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVs
ZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVz
dE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjp3cmFwcGVyKHNlY3VyaXR5
T3JpZ2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0g
KEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25I
YW5kbGVySGFzQmVlbkNhbGxlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjaGVj
a2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmVzdWx0KTsKLSAgICB9KS5nZXQoKV07Ci19Ci0KIFJlZjxBUEk6Okluc3BlY3RvckNvbmZp
Z3VyYXRpb24+IFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNw
ZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9yVUlQcm94eSYgaW5zcGVjdG9yKQogewog
ICAgIGlmICghbV91aURlbGVnYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzdkYjcwYTVjMDRmLi42NDMxZDQwYjA1NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMy
MzgsNiArMTMyMzgsNyBAQAogCQkJCTFEMTJDQzRFMjQxNDI2NTMwMEZEQTBBMyAvKiBDb3B5IEZl
YXR1cmUgRmxhZ3MgUGxpc3QgKi8sCiAJCQkJNTM3OUM3QUMyMUU1Mjg4NTAwRTRBOEY2IC8qIENo
ZWNrIC54Y2ZpbGVsaXN0cyAqLywKIAkJCQk5MzMxNzAwNzIyMzQ2NzQ1MDBCMzI1NTQgLyogQ3Jl
YXRlIHN5bWxpbmtzIHRvIFhQQyBzZXJ2aWNlcyBmb3IgZW5naW5lZXJpbmcgYnVpbGRzICovLAor
CQkJCTUxMkI4MUNBMjczQ0FGQkUwMEQ4N0Q0OSAvKiBDcmVhdGUgc3ltbGlua3MgdG8gRGFlbW9u
cyBmb3IgZW5naW5lZXJpbmcgYnVpbGRzICovLAogCQkJCTBGQjk0ODM2MjM5RjMxQjcwMDkyNkE4
RiAvKiBDb3B5IFRlc3RpbmcgSGVhZGVycyAqLywKIAkJCQlERkQwM0EyOTI3MEQ1RjU3MDAxQTk5
NkUgLyogQ29weSBEYWVtb24gUGxpc3RzICovLAogCQkJKTsKQEAgLTEzNzMxLDYgKzEzNzMyLDI0
IEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwogCQkJc2hlbGxTY3JpcHQgPSAiU2NyaXB0cy9w
cm9jZXNzLWVudGl0bGVtZW50cy5zaFxuIjsKIAkJfTsKKwkJNTEyQjgxQ0EyNzNDQUZCRTAwRDg3
RDQ5IC8qIENyZWF0ZSBzeW1saW5rcyB0byBEYWVtb25zIGZvciBlbmdpbmVlcmluZyBidWlsZHMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxlTGlz
dFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJD
cmVhdGUgc3ltbGlua3MgdG8gRGFlbW9ucyBmb3IgZW5naW5lZXJpbmcgYnVpbGRzIjsKKwkJCW91
dHB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiaWYgW1sgXCIke0RFUExPWU1FTlRfTE9DQVRJ
T059XCIgPT0gXCJZRVNcIiBdXTsgdGhlblxuICAgIGV4aXRcbmZpXG5cbiMgSWYgd2UgbW92ZSB0
aGUgTWFjIERhZW1vbnMgcGF0aCB0byBXZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRGFlbW9u
cyxcbiMgaW4gYWRkaXRpb24gdG8gYSBNYWMtc3BlY2lmaWMgcGxpc3RzLCB0aGUgTWFjIHBhdGhz
IGJlbG93IGhhdmUgdG8gYmUgdXBkYXRlZCBhcyB3ZWxsLlxuaWYgW1sgJHtXS19QTEFURk9STV9O
QU1FfSAhPSBcIm1hY29zeFwiIF1dOyB0aGVuXG4gICAgREFFTU9OU19QQVRIPVwiJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L1dlYktpdC5mcmFtZXdvcmsvRGFlbW9uc1wiXG4gICAgQlVJTFRfUFJPRFVD
VFNfRElSX1JFTEFUSVZFX1BBVEhfRlJPTV9EQUVNT05TPVwiLi4vLi5cIlxuZWxzZVxuICAgIERB
RU1PTlNfUEFUSD1cIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9XZWJLaXQuZnJhbWV3b3JrL0RhZW1v
bnNcIlxuICAgIEJVSUxUX1BST0RVQ1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OUz1c
Ii4uLy4uXCJcbmZpXG5cbm1rZGlyIC1wIFwiJHtEQUVNT05TX1BBVEh9XCJcbmxuIC1zRmggXCIk
e0JVSUxUX1BST0RVQ1RTX0RJUl9SRUxBVElWRV9QQVRIX0ZST01fREFFTU9OU30vd2VicHVzaGRc
IiBcIiR7REFFTU9OU19QQVRIfS93ZWJwdXNoZFwiXG5sbiAtc0ZoIFwiJHtCVUlMVF9QUk9EVUNU
U19ESVJfUkVMQVRJVkVfUEFUSF9GUk9NX0RBRU1PTlN9L2FkYXR0cmlidXRpb25kXCIgXCIke0RB
RU1PTlNfUEFUSH0vYWRhdHRyaWJ1dGlvbmRcIlxuIjsKKwkJfTsKIAkJNTMyNUJERDIyMURGRjQ3
QzAwQTBERUUxIC8qIFNoZWxsU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MzM0YzIxMThkZWMuLjA0
Zjg1MjQyZjRiMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgZGFlbW9uIEFQSSByZWFkeSB0byB3b3JrIGluIHRo
ZSBpT1Mgc2ltdWxhdG9yIChzdGFydGluZyB3aXRoIFdlYlB1c2hEKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgVG8gZ2V0IHRoaXMgd29ya2luZyB3ZSBuZWVk
ZWQgdG86CisgICAgICAgIC0gSGF2ZSB0aGUgRGFlbW9ucyBpbnN0YWxsZWQgaW4gYSBzaW11bGF0
b3ItcnVudGltZS1yb290LXZpc2libGUgcGF0aAorICAgICAgICAtIFBvaW50IHRoZSBPU0xhdW5j
aERKb2IgcGxpc3QgdG8gdGhlIHNpbXVsYXRvci1yZWxhdGl2ZSBwYXRoLCBub3QgTWFjLXJlbGF0
aXZlCisgICAgICAgIC0gU29sdmUgdGhlICJIb3cgZG8gSSBraWxsIGV4aXN0aW5nIGluc3RhbmNl
cyB0byBydW4gYSBjbGVhbiB0ZXN0PyIgcHJvYmxlbSB3aXRoaW4gdGhlIHNpbXVsYXRvci4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0aG9zZSB0aGluZ3MuCisgICAgICAgIAor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1Mu
ZW50aXRsZW1lbnRzOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSS54Y2NvbmZpZzoKKyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6dGVzdFdlYlB1c2hEYWVtb25QTGlzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRV
cFRlc3RXZWJQdXNoRCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjbGVhblVwVGVzdFdlYlB1
c2hEKToKKyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0
VXRpbGl0aWVzLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRp
bGl0aWVzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmVnaXN0ZXJQbGlzdFdpdGhMYXVu
Y2hEKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnBpZE9mRmlyc3REYWVtb25JbnN0YW5jZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpraWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKToKKwog
MjAyMS0xMS0xMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW3dlYmtpdHB5XSBTeW1saW5rIGRhZW1vbnMgaW50byBzaW11bGF0b3IgcnVudGltZSByb290
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJL
aXRBUEktaU9TLmVudGl0bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCmluZGV4IDZhYzQ1YzY4ZDQzMy4uM2I0
MDExNzczNTc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cwpAQCAtMTAsNSAr
MTAsNyBAQAogCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5QYXN0ZWJvYXJkLnBhc3RlLXVuY2hl
Y2tlZDwva2V5PgogCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLnhwYy5sYXVuY2hk
LmpvYi1tYW5hZ2VyPC9rZXk+CisJPHN0cmluZz5UZXN0V2ViS2l0QVBJPC9zdHJpbmc+CiA8L2Rp
Y3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCmluZGV4IDVkZmJmZDNlZjg1Yi4uZmM4ODc2
OTJmNGNmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rl
c3RXZWJLaXRBUEkueGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCkBAIC00Niw2ICs0Niw5IEBAIEZSQU1FV09SS19T
RUFSQ0hfUEFUSFNfY29jb2F0b3VjaCA9ICQoaW5oZXJpdGVkKSAkKFdLX1BSSVZBVEVfRlJBTUVX
T1JLU19ESVIpOwogV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTID0gJChXS19BUFBTRVJWRVJT
VVBQT1JUX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19BUFBTRVJWRVJTVVBQT1JU
X0xERkxBR1NfbWFjb3N4ID0gJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MkKFdLX01BQ09T
XzEyMDApKTsKIFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHU19NQUNPU19TSU5DRV8xMjAwID0g
LWZyYW1ld29yayBBcHBTZXJ2ZXJTdXBwb3J0CitXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Nf
aXBob25lb3MgPSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUyQoV0tfSU9TXzE1KSk7CitX
S19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gJChXS19BUFBTRVJW
RVJTVVBQT1JUX0xERkxBR1MkKFdLX0lPU18xNSkpOworV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZM
QUdTX0lPU19TSU5DRV8xNSA9IC1mcmFtZXdvcmsgQXBwU2VydmVyU3VwcG9ydAogCiBXS19BVVRI
S0lUX0xERkxBR1MgPSAkKFdLX0FVVEhLSVRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsK
IFdLX0FVVEhLSVRfTERGTEFHU19pcGhvbmVvcyA9ICQoV0tfQVVUSEtJVF9MREZMQUdTJChXS19J
T1NfMTMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCA1ZTIzM2M1YmExMjMuLmY4M2RmNTQwOWJmNiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVz
aERhZW1vbi5tbQpAQCAtMzIsNiArMzIsOSBAQAogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CiAK
Ky8vIEZJWE1FOiBUaGVzZSB0ZXN0cyBhcmUgc3RpbGwgY3VycmVudGx5IGRpc2FibGVkIG9uIGlP
UyB3aGlsZSB0b29saW5nIGlzc3VlcyB3aXRoIGBydW4tYXBpLXRlc3RzYCBhcmUgcmVzb2x2ZWQu
CisjaWYgUExBVEZPUk0oTUFDKQorCiBzdGF0aWMgYm9vbCBhbGVydFJlY2VpdmVkID0gZmFsc2U7
CiBAaW50ZXJmYWNlIE5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWxlZ2F0ZSA6IE5TT2JqZWN0PFdL
VUlEZWxlZ2F0ZVByaXZhdGU+CiBAZW5kCkBAIC01Myw5ICs1Niw2IEBAIHN0YXRpYyBib29sIGFs
ZXJ0UmVjZWl2ZWQgPSBmYWxzZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBG
SVhNRTogR2V0IHRoaXMgd29ya2luZyBpbiB0aGUgaU9TIHNpbXVsYXRvci4KLSNpZiBQTEFURk9S
TShNQUMpCi0KIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHRlc3RXZWJQdXNoRGFlbW9uTG9jYXRp
b24oKQogewogICAgIHJldHVybiBbY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKSBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ3ZWJwdXNoZCIgaXNEaXJlY3Rvcnk6Tk9dOwpAQCAtODQs
NyArODQsMTQgQEAgc3RhdGljIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RXZWJQdXNoRGFl
bW9uUExpc3QoTlNVUkwgKnN0b3JhZ2VMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8gcHJv
Z3JhbUFyZ3VtZW50cyA9IGFkb3B0TlMoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CiAg
ICAgICAgIGF1dG8gZXhlY3V0YWJsZUxvY2F0aW9uID0gdGVzdFdlYlB1c2hEYWVtb25Mb2NhdGlv
bigpOworI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJv
Z3JhbUFyZ3VtZW50cy5nZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgZXhlY3V0YWJsZUxvY2F0aW9u
LmdldCgpLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CisjZWxzZQorICAgICAgICAvLyBGSVhN
RTogVGhlc2UgdGVzdHMgYXJlIHN0aWxsIGN1cnJlbnRseSBkaXNhYmxlZCBvbiBpT1Mgd2hpbGUg
dG9vbGluZyBpc3N1ZXMgd2l0aCBgcnVuLWFwaS10ZXN0c2AgYXJlIHJlc29sdmVkLgorICAgICAg
ICAvLyBPbmNlIGVuYWJsZWQsIHRoaXMgcGF0Y2ggbXVzdCBwb2ludCB0byB0aGUgd2VicHVzaGQg
ZXhlY3V0YWJsZSBhdCBhIHBhdGggdGhhdCBleGlzdHMgd2l0aGluCisgICAgICAgIC8vIHRoZSBz
aW11bGF0b3IgcnVudGltZSByb290LgorICAgICAgICB4cGNfYXJyYXlfc2V0X3N0cmluZyhwcm9n
cmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiL3Vzci9sb2NhbC9iaW4vd2Vi
a2l0LXRlc3Rpbmcvd2VicHVzaGQiKTsKKyNlbmRpZgogICAgICAgICB4cGNfYXJyYXlfc2V0X3N0
cmluZyhwcm9ncmFtQXJndW1lbnRzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCAiLS1tYWNoU2Vy
dmljZU5hbWUiKTsKICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcocHJvZ3JhbUFyZ3VtZW50
cy5nZXQoKSwgWFBDX0FSUkFZX0FQUEVORCwgIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24u
c2VydmljZSIpOwogICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUocGxpc3QuZ2V0KCks
ICJQcm9ncmFtQXJndW1lbnRzIiwgcHJvZ3JhbUFyZ3VtZW50cy5nZXQoKSk7CkBAIC0xMjEsNyAr
MTI4LDcgQEAgc3RhdGljIE5TVVJMICpzZXRVcFRlc3RXZWJQdXNoRCgpCiAgICAgICAgIFtmaWxl
TWFuYWdlciByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjomZXJyb3JdOwogICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKIAotICAgIHN5c3RlbSgia2lsbGFsbCB3ZWJwdXNoZCAtOSAyPiAvZGV2
L251bGwiKTsKKyAgICBraWxsRmlyc3RJbnN0YW5jZU9mRGFlbW9uKEAid2VicHVzaGQiKTsKIAog
ICAgIGF1dG8gcGxpc3QgPSB0ZXN0V2ViUHVzaERhZW1vblBMaXN0KHRlbXBEaXIpOwogI2lmIEhB
VkUoT1NfTEFVTkNIRF9KT0IpCkBAIC0xMzUsNyArMTQyLDcgQEAgc3RhdGljIE5TVVJMICpzZXRV
cFRlc3RXZWJQdXNoRCgpCiAKIHN0YXRpYyB2b2lkIGNsZWFuVXBUZXN0V2ViUHVzaEQoTlNVUkwg
KnRlbXBEaXIpCiB7Ci0gICAgc3lzdGVtKCJraWxsYWxsIHdlYnB1c2hkIC05Iik7CisgICAga2ls
bEZpcnN0SW5zdGFuY2VPZkRhZW1vbihAIndlYnB1c2hkIik7CiAKICAgICBFWFBFQ1RfVFJVRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6dGVtcERpci5w
YXRoXSk7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CkBAIC0xNTksNiArMTY2LDEzIEBAIFRF
U1QoV2ViUHVzaEQsIEJhc2ljQ29tbXVuaWNhdGlvbikKICAgICAKICAgICBfX2Jsb2NrIGJvb2wg
ZG9uZSA9IGZhbHNlOwogICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5
KGNvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF4oeHBjX29iamVjdF90IHJlcGx5KSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUo
cmVwbHkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKKyAgICAgICAgICAgIE5TTG9nKEAiVW5l
eHBlY3RlZCBub24tZGljdGlvbmFyeTogJUAiLCByZXBseSk7CisgICAgICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKEZBTFNFKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCiAgICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IDA7CiAgICAgICAgIGNv
bnN0IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXBseSwgImVuY29kZWQg
bWVzc2FnZSIsICZkYXRhU2l6ZSk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhU2l6ZSwgMTV1KTsK
QEAgLTE4Nyw2ICsyMDEsNyBAQCBURVNUKFdlYlB1c2hELCBQZXJtaXNzaW9uTWFuYWdlbWVudCkK
IAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0
b3JlID0gZGF0YVN0b3JlLmdldCgpOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVu
Y2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpZRVNdOwogICAgIGZvciAoX1dLRXhwZXJpbWVu
dGFsRmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFsRmVhdHVy
ZXNdKSB7CiAgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiQnVpbHRJ
bk5vdGlmaWNhdGlvbnNFbmFibGVkIl0pCiAgICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJl
ZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJlOmZlYXR1cmVdOwpAQCAtMjIyLDYg
KzIzNywxMiBAQCBURVNUKFdlYlB1c2hELCBQZXJtaXNzaW9uTWFuYWdlbWVudCkKICAgICBFWFBF
Q1RfVFJVRShbb3JpZ2luLmdldCgpLnByb3RvY29sIGlzRXF1YWxUb1N0cmluZzpAInRlc3Rpbmci
XSk7CiAgICAgRVhQRUNUX1RSVUUoW29yaWdpbi5nZXQoKS5ob3N0IGlzRXF1YWxUb1N0cmluZzpA
Im1haW4iXSk7CiAKKyAgICAvLyBJZiB3ZSBmYWlsZWQgdG8gcmV0cmlldmUgYW4gZXhwZWN0ZWQg
b3JpZ2luLCB3ZSB3aWxsIGhhdmUgZmFpbGVkIHRoZSBhYm92ZSBjaGVja3MKKyAgICBpZiAoIW9y
aWdpbikgeworICAgICAgICBjbGVhblVwVGVzdFdlYlB1c2hEKHRlbXBEaXJlY3RvcnkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgb3JpZ2luT3BlcmF0aW9uRG9uZSA9IGZhbHNlOwog
ICAgIFtkYXRhU3RvcmUgX2RlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246b3Jp
Z2luLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAg
RVhQRUNUX0ZBTFNFKCEhZXJyb3IpOwpAQCAtMjQwLDYgKzI2MSw2IEBAIFRFU1QoV2ViUHVzaEQs
IFBlcm1pc3Npb25NYW5hZ2VtZW50KQogICAgIGNsZWFuVXBUZXN0V2ViUHVzaEQodGVtcERpcmVj
dG9yeSk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0KIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9EYWVtb25UZXN0VXRpbGl0aWVzLmgKaW5kZXggMDZhNzY0ZDAzODk5Li5j
MWI0MmM1MDA1YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9u
VGVzdFV0aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVz
dFV0aWxpdGllcy5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgogCkBAIC0zNSwxMyArMzcsMTUgQEAg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBSZXRhaW5QdHI8TlNVUkw+IGN1cnJlbnRFeGVj
dXRhYmxlRGlyZWN0b3J5KCk7CiAKLS8vIEZJWE1FOiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBp
T1Mgc2ltdWxhdG9yLgotI2lmIFBMQVRGT1JNKE1BQykKK3ZvaWQga2lsbEZpcnN0SW5zdGFuY2VP
ZkRhZW1vbihOU1N0cmluZyAqZGFlbW9uRXhlY3V0YWJsZU5hbWUpOworCiAjaWYgSEFWRShPU19M
QVVOQ0hEX0pPQikKIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjx4cGNf
b2JqZWN0X3Q+JiYpOwogI2Vsc2UKIHZvaWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFp
blB0cjxOU0RpY3Rpb25hcnk+JiYsIE5TVVJMICp0ZW1wRGlyKTsKICNlbmRpZgotI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oSU9TKQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0RhZW1vblRlc3RVdGlsaXRpZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1v
blRlc3RVdGlsaXRpZXMubW0KaW5kZXggOTc0YTY0MmEwYjVkLi5kYWMyMDI4ZGMyMWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRGFlbW9uVGVzdFV0aWxpdGllcy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RhZW1vblRlc3RVdGlsaXRpZXMubW0KQEAg
LTI2LDkgKzI2LDI2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRhZW1vblRlc3RV
dGlsaXRpZXMuaCIKIAorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQorCiAjaW1w
b3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCisjaWYgUExBVEZPUk0oSU9TKQorQGludGVyZmFjZSBOU1Rhc2sgOiBO
U09iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXQ7CistICh2b2lkKWxhdW5jaDsKKy0gKHZvaWQp
d2FpdFVudGlsRXhpdDsKKworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmxh
dW5jaFBhdGg7CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+
ICphcmd1bWVudHM7CitAcHJvcGVydHkgKG51bGxhYmxlLCByZXRhaW4pIGlkIHN0YW5kYXJkT3V0
cHV0OworQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzUnVubmluZykgQk9PTCBydW5uaW5n
OworQGVuZAorI2VuZGlmCisKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIFJl
dGFpblB0cjxOU1VSTD4gY3VycmVudEV4ZWN1dGFibGVMb2NhdGlvbigpCkBAIC00OCw4ICs2NSw2
IEBAIFJldGFpblB0cjxOU1VSTD4gY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKQogICAgIHJl
dHVybiBbY3VycmVudEV4ZWN1dGFibGVMb2NhdGlvbigpIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENv
bXBvbmVudF07CiB9CiAKLS8vIEZJWE1FOiBHZXQgdGhpcyB3b3JraW5nIGluIHRoZSBpT1Mgc2lt
dWxhdG9yLgotI2lmIFBMQVRGT1JNKE1BQykKICNpZiBIQVZFKE9TX0xBVU5DSERfSk9CKQogCiB2
b2lkIHJlZ2lzdGVyUGxpc3RXaXRoTGF1bmNoRChSZXRhaW5QdHI8eHBjX29iamVjdF90PiYmIHBs
aXN0KQpAQCAtNTcsNyArNzIsMTMgQEAgdm9pZCByZWdpc3RlclBsaXN0V2l0aExhdW5jaEQoUmV0
YWluUHRyPHhwY19vYmplY3RfdD4mJiBwbGlzdCkKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsK
ICAgICBhdXRvIGxhdW5jaERKb2IgPSBhZG9wdE5TKFtbT1NMYXVuY2hkSm9iIGFsbG9jXSBpbml0
V2l0aFBsaXN0OnBsaXN0LmdldCgpXSk7CiAgICAgW2xhdW5jaERKb2Igc3VibWl0OiZlcnJvcl07
CisKKyAgICAvLyBJbiB0aGUgaU9TIFNpbXVsYXRvciB3ZSBvZnRlbiBzZWUgdGhlIGZvbGxvd2lu
ZyBlcnJvciBoZXJlOgorICAgIC8vIEVycm9yIERvbWFpbj1PU0xhdW5jaGRFcnJvckRvbWFpbiBD
b2RlPTE3ICJGaWxlIGV4aXN0cyIKKyAgICAvLyBUZXN0cyBzdGlsbCBiZWhhdmUgYXMgZXhwZWN0
ZWQuCisjaWYgUExBVEZPUk0oTUFDKQogICAgIEVYUEVDVF9GQUxTRShlcnJvcik7CisjZW5kaWYK
IH0KIAogI2Vsc2UgLy8gSEFWRShPU19MQVVOQ0hEX0pPQikKQEAgLTc3LDYgKzk4LDU5IEBAIHZv
aWQgcmVnaXN0ZXJQbGlzdFdpdGhMYXVuY2hEKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+JiYgcGxp
c3QsIE5TVVJMICp0ZW1wRGlyKQogfQogCiAjZW5kaWYgLy8gSEFWRShPU19MQVVOQ0hEX0pPQikK
LSNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKK3N0YXRpYyBpbnQgcGlkT2ZGaXJzdERhZW1vbklu
c3RhbmNlKE5TU3RyaW5nICpkYWVtb25FeGVjdXRhYmxlTmFtZSkKK3sKKyAgICBhdXRvIHRhc2sg
PSBhZG9wdE5TKFtbTlNUYXNrIGFsbG9jXSBpbml0XSk7CisgICAgdGFzay5nZXQoKS5sYXVuY2hQ
YXRoID0gQCIvYmluL3BzIjsKKyAgICB0YXNrLmdldCgpLmFyZ3VtZW50cyA9IEBbCisgICAgICAg
IEAiLWF4IiwKKyAgICAgICAgQCItbyIsCisgICAgICAgIEAicGlkLGNvbW0iCisgICAgXTsKKwor
ICAgIGF1dG8gdGFza1BpcGUgPSBhZG9wdE5TKFtbTlNQaXBlIGFsbG9jXSBpbml0XSk7CisgICAg
W3Rhc2sgc2V0U3RhbmRhcmRPdXRwdXQ6dGFza1BpcGUuZ2V0KCldOworICAgIFt0YXNrIGxhdW5j
aF07CisKKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5p
dF0pOworICAgIHdoaWxlIChbdGFzayBpc1J1bm5pbmddKQorICAgICAgICBbZGF0YSBhcHBlbmRE
YXRhOltbdGFza1BpcGUgZmlsZUhhbmRsZUZvclJlYWRpbmddIHJlYWREYXRhVG9FbmRPZkZpbGVd
XTsKKyAgICBbZGF0YSBhcHBlbmREYXRhOltbdGFza1BpcGUgZmlsZUhhbmRsZUZvclJlYWRpbmdd
IHJlYWREYXRhVG9FbmRPZkZpbGVdXTsKKworICAgIGF1dG8gcHNTdHJpbmcgPSBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSk7CisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqcHNFbnRyaWVzID0gW3Bz
U3RyaW5nIGNvbXBvbmVudHNTZXBhcmF0ZWRCeVN0cmluZzpAIlxuIl07CisKKyAgICBmb3IgKE5T
U3RyaW5nKiBlbnRyeSBpbiBwc0VudHJpZXMpIHsKKyAgICAgICAgaWYgKCFbZW50cnkgaGFzU3Vm
Zml4OmRhZW1vbkV4ZWN1dGFibGVOYW1lXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBOU0FycmF5PE5TU3RyaW5nICo+ICpjb21wb25lbnRzID0gW2VudHJ5IGNvbXBvbmVudHNTZXBh
cmF0ZWRCeVN0cmluZzpAIiAiXTsKKyAgICAgICAgRVhQRUNUX0dFKFtjb21wb25lbnRzIGNvdW50
XSwgMnUpOworICAgICAgICByZXR1cm4gW1tjb21wb25lbnRzIGZpcnN0T2JqZWN0XSBpbnRlZ2Vy
VmFsdWVdOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIGtpbGxGaXJzdEluc3Rh
bmNlT2ZEYWVtb24oTlNTdHJpbmcgKmRhZW1vbkV4ZWN1dGFibGVOYW1lKQoreworICAgIGF1dG8g
cGlkID0gcGlkT2ZGaXJzdERhZW1vbkluc3RhbmNlKGRhZW1vbkV4ZWN1dGFibGVOYW1lKTsKKyAg
ICBpZiAoIXBpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0YXNrID0gYWRvcHROUyhb
W05TVGFzayBhbGxvY10gaW5pdF0pOworICAgIHRhc2suZ2V0KCkubGF1bmNoUGF0aCA9IEAiL2Jp
bi9raWxsIjsKKyAgICB0YXNrLmdldCgpLmFyZ3VtZW50cyA9IEBbCisgICAgICAgIEAiLTkiLAor
ICAgICAgICBbQChwaWQpIHN0cmluZ1ZhbHVlXQorICAgIF07CisKKyAgICBbdGFzayBsYXVuY2hd
OworICAgIFt0YXNrIHdhaXRVbnRpbEV4aXRdOworfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9n
IGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwppbmRleCA5ZTI5NGEzMDQzMzYuLjBiZjZlNGNl
M2Y2OCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRM
aWJyYXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMTQgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdldCBkYWVtb24gQVBJIHJlYWR5
IHRvIHdvcmsgaW4gdGhlIGlPUyBzaW11bGF0b3IgKHN0YXJ0aW5nIHdpdGggV2ViUHVzaEQpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5ODIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICAqIFdlYktpdFByaXZh
dGVGcmFtZXdvcmtTdHVicy9pT1MvMTUvQXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2Vy
dmVyU3VwcG9ydC50YmQ6IEFkZGVkLgorCiAyMDIxLTA5LTI0ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDE1XSBTdXBwb3J0IGJ1aWxkaW5nIFdl
YktpdCAoUGFydCAzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVG
cmFtZXdvcmtTdHVicy9pT1MvMTUvQXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVy
U3VwcG9ydC50YmQgYi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJz
L2lPUy8xNS9BcHBTZXJ2ZXJTdXBwb3J0LmZyYW1ld29yay9BcHBTZXJ2ZXJTdXBwb3J0LnRiZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEzNzVlZGI0ZTU0MgotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1
YnMvaU9TLzE1L0FwcFNlcnZlclN1cHBvcnQuZnJhbWV3b3JrL0FwcFNlcnZlclN1cHBvcnQudGJk
CkBAIC0wLDAgKzEsOCBAQAorLS0tICF0YXBpLXRiZC12MworYXJjaHM6ICAgICAgICAgICBbIHg4
Nl82NCwgYXJtNjQsIGFybTY0ZSBdCitpbnN0YWxsLW5hbWU6ICAgICcvU3lzdGVtL0xpYnJhcnkv
UHJpdmF0ZUZyYW1ld29ya3MvQXBwU2VydmVyU3VwcG9ydC5mcmFtZXdvcmsvQXBwU2VydmVyU3Vw
cG9ydCcKK3BsYXRmb3JtOiBpb3MKK2V4cG9ydHM6CisgIC0gYXJjaHM6ICAgICAgICAgICBbIHg4
Nl82NCwgYXJtNjQsIGFybTY0ZSBdCisgICAgb2JqYy1jbGFzc2VzOiAgICBbIE9TTGF1bmNoZEpv
YiBdCisuLi4K
</data>

          </attachment>
      

    </bug>

</bugzilla>