<?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>206398</bug_id>
          
          <creation_ts>2020-01-16 22:05:29 -0800</creation_ts>
          <short_desc>Add WKScriptMessageHandler API that asynchronously responds with a promise</short_desc>
          <delta_ts>2020-04-19 22:55:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>210700</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1607870</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-16 22:05:29 -0800</bug_when>
    <thetext>Add WKScriptMessageHandler API that asynchronously responds with a promise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607871</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-16 22:05:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/58671599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643058</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-18 14:40:09 -0700</bug_when>
    <thetext>(This is actually at rdar://problem/57243492)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643093</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-18 16:24:20 -0700</bug_when>
    <thetext>Blocked on https://bugs.webkit.org/show_bug.cgi?id=210700 as we&apos;ll be adding new actual *API* that uses WKContentWorld, and therefore the bug described over in will become very real for more people</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643169</commentid>
    <comment_count>4</comment_count>
      <attachid>396895</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-18 23:53:22 -0700</bug_when>
    <thetext>Created attachment 396895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643174</commentid>
    <comment_count>5</comment_count>
      <attachid>396898</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-19 01:17:23 -0700</bug_when>
    <thetext>Created attachment 396898
Patch

While I whittle away at the GTK/etc build failures, Mac and iOS are good to go.

Let&apos;s review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643175</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-04-19 01:18:10 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643214</commentid>
    <comment_count>7</comment_count>
      <attachid>396914</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-19 09:27:40 -0700</bug_when>
    <thetext>Created attachment 396914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643215</commentid>
    <comment_count>8</comment_count>
      <attachid>396915</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-19 09:45:57 -0700</bug_when>
    <thetext>Created attachment 396915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643231</commentid>
    <comment_count>9</comment_count>
      <attachid>396918</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-19 11:05:31 -0700</bug_when>
    <thetext>Created attachment 396918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643235</commentid>
    <comment_count>10</comment_count>
      <attachid>396919</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-19 11:40:45 -0700</bug_when>
    <thetext>Created attachment 396919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643238</commentid>
    <comment_count>11</comment_count>
      <attachid>396921</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-19 12:01:44 -0700</bug_when>
    <thetext>Created attachment 396921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643241</commentid>
    <comment_count>12</comment_count>
      <attachid>396923</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-19 12:15:54 -0700</bug_when>
    <thetext>Created attachment 396923
Patch (omg maybe this is the one)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643245</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-19 13:22:56 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #12)
&gt; Created attachment 396923 [details]
&gt; Patch (omg maybe this is the one)

It was. Updating ChangeLogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643246</commentid>
    <comment_count>14</comment_count>
      <attachid>396925</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-19 13:28:15 -0700</bug_when>
    <thetext>Created attachment 396925
PFR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643334</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-19 22:55:17 -0700</bug_when>
    <thetext>Committed r260350: &lt;https://trac.webkit.org/changeset/260350&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396925.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396895</attachid>
            <date>2020-04-18 23:53:22 -0700</date>
            <delta_ts>2020-04-19 01:17:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>73712</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGJmMTk3OGI1YjMuLjMxMmNiODJkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3
aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KTog
QWRkIGEgdmFyaWFudCBvZiBDb21wbGV0aW9uSGFuZGxlciB0aGF0IGFsbG93cyBmb3IgYSBGaW5h
bGl6ZXIgZnVuY3Rpb24KKyAgICAgICAgICB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENvbXBs
ZXRpb24gZnVuY3Rpb24gaGFzbid0IGJlZW4gY2FsbGVkIGF0IGRlc3RydWN0aW9uIHRpbWUuCisK
IDIwMjAtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV1RGXSBNb3ZlIERhdGFSZWYuaCBmcm9tIFdlYkNvcmUgdG8gV1RGIHRvIHV0aWxpemUgaXQg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oIGIv
U291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAppbmRleCA5MzhiNDk2NmYwOC4uOGM5
OGRmZTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtNjksNiArNjksNDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gV3JhcHMgYSBGdW5jdGlvbiB0byBtYWtlIHN1
cmUgaXQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKy8vIElmIHRoZSBDb21wbGV0aW9uSGFuZGxl
cldpdGhGaW5hbGl6ZXIgaXMgZGVzdHJveWVkIGFuZCB0aGUgZnVuY3Rpb24gaGFzbid0IHlldCBi
ZWVuIGNhbGxlZCwKKy8vIHRoZSBmaW5hbGl6ZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlv
biBhcyBpdHMgYXJndW1lbnQuCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhh
bmRsZXJXaXRoRmluYWxpemVyOwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4g
SW4+CitjbGFzcyBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KEluLi4uKT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29t
cGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlLCBGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPE91dChJbi4uLik+Jik+JiYgZmluYWxpemVyKQorICAgICAgICA6
IG1fZnVuY3Rpb24oV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgICwgbV9maW5hbGl6ZXIoV1RG
TW92ZShmaW5hbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXIoQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyJiYpID0gZGVmYXVsdDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXImIG9wZXJhdG9yPShDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25IYW5k
bGVyV2l0aEZpbmFsaXplcigpCisgICAgeworICAgICAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9maW5hbGl6ZXIobV9mdW5jdGlvbik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5j
dGlvbjsgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBB
U1NFUlQobV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZCA9PSBpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxl
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Z1bmN0aW9uLCBudWxscHRyKShzdGQ6OmZvcndhcmQ8SW4+KGluKS4u
Lik7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjxPdXQoSW4uLi4pPiYpPiBtX2ZpbmFsaXpl
cjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRo
cmVhZCB7IGlzTWFpblRocmVhZCgpIH07CisjZW5kaWYKK307CisKIG5hbWVzcGFjZSBEZXRhaWwg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgpAQCAtMTE1LDMgKzE1
OCw0IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlOwordXNpbmcgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q1YjNlOTVhNDYuLjFiNGZjZWZj
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdl
SGFuZGxlcjo6cG9zdE1lc3NhZ2UpOiBSZXR1cm4gYSBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBi
eSB0aGUgQVBJIGNsaWVudC4KKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKwogMjAyMC0wNC0xOCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZHVjZSBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
RnJhbWVMb2FkUmVxdWVzdCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuY3BwCmluZGV4IGIwN2RiOGI2YjE0Li5jZjgyYWYzYjY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMjksNyArMjksOSBAQAog
I2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE0ICs0MywyOSBAQCBVc2VyTWVzc2FnZUhhbmRs
ZXI6OlVzZXJNZXNzYWdlSGFuZGxlcihGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0bwogCiBVc2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRl
ZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3Nh
Z2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiB2YWx1ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVzY3JpcHRvciBoYXMgYmVlbiByZW1vdmVkLiBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaGFzCiAgICAgLy8gcmVtb3ZlZCB0
aGUgbmFtZWQgbWVzc2FnZSBoYW5kbGVyIGF0IHRoZSBXZWJLaXQyIEFQSSBsZXZlbC4KLSAgICBp
ZiAoIW1fZGVzY3JpcHRvcikKKyAgICBpZiAoIW1fZGVzY3JpcHRvcikgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH0pOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgfQogCi0gICAgbV9k
ZXNjcmlwdG9yLT5kaWRQb3N0TWVzc2FnZSgqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgIG1fZGVz
Y3JpcHRvci0+ZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdldCgpLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwcm9taXNl
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KEpTQzo6Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBl
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChyZXN1bHQpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4ocmVzdWx0
LT5kZXNlcmlhbGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKKyAgICB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aAppbmRleCA5NGFmZmI1MGM5Yy4uOTEyMjc5YWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKKwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVc2VyTWVzc2FnZUhh
bmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0KICAgICB2b2lkIGludmFs
aWRhdGVEZXNjcmlwdG9yKCkgeyBtX2Rlc2NyaXB0b3IgPSBudWxscHRyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKaW5kZXggNzc2YzE4MjRiNmEuLjMyZGIy
OGVjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCkBA
IC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJT
CiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNj
cmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggNDVlMTU1N2UwNmIuLmQyZjY1MzU3MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShVc2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlNTQ5MDJhZjc5Ny4uNGMyMDc1MDBhMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJv
bm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAgICAgICByZGFyOi8vcHJvYmxlbS81
NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgQ2hhbmdlIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBvc3RNZXNzYWdlKCkgdG8g
cmV0dXJuIGEgcHJvbWlzZSBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4KKyAgICAgICAgCisgICAgICAg
IEFsbG93IGZvciB0aGF0IHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgYnkgYW4gYXN5bmNocm9ub3Vz
IHJlcGx5IGJsb2NrIHVwIGluIHRoZSBBUEkgY2xpZW50LgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBsaWtlIHRoZSBvcHBvc2l0ZSB2ZXJzaW9uIG9mIFtXS1dlYlZpZXcgY2FsbEFzeW5jRnVu
Y3Rpb246XQorICAgICAgICAKKyAgICAgICAgQW5kIHdoaWxlIHdlJ3JlIGFkZGluZyBhIG5ldyBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVyIHZhcmlhbnQsIHdlJ3JlIGFkZGluZyBpdCBzYW5kYm94ZWQg
YnkgV0tDb250ZW50V29ybGQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ29jb2EubW06CisgICAgICAgIChBUEk6OnZhbGlkYXRlT2JqZWN0KToKKyAg
ICAgICAgKEFQSTo6Y29yZVZhbHVlRnJvbU5TT2JqZWN0KToKKyAgICAgICAgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tTlNPYmplY3QpOgorICAgICAgICAoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oOiBOb3cgdGhhdCBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVycyBjYW4gYmUgcGVyLXdvcmxkLCBtZXNzYWdlcworICAgICAg
ICAgIGRlY2xhcmUgd2hpY2ggd29ybGQgdGhleSB3ZXJlIHBvc3RlZCBmcm9tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tOgorICAgICAgICAoLVtXS1Nj
cmlwdE1lc3NhZ2UgX2luaXRXaXRoQm9keTp3ZWJWaWV3OmZyYW1lSW5mbzpuYW1lOndvcmxkOl0p
OgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2Ugd29ybGRdKToKKyAgICAgICAgKC1bV0tTY3Jp
cHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpmcmFtZUluZm86bmFtZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFs
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRs
ZXJXaXRoUmVwbHkuaDogQWRkZWQuCisgICAgICAgICAgRGVjbGFyZSB0aGUgbmV3IHByb3RvY29s
IGZvciBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgdGhhdCBjYW4gcmVwbHkgdG8gbWVzc2FnZXMg
YXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
X2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpjb250ZW50V29ybGQ6
bmFtZTpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHk6Y29udGVudFdvcmxkOm5hbWU6XSk6CisgICAgICAgICgtW1dL
VXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpj
b250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92
ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6XSk6CisgICAgICAgICgt
W1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJ
bnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3lu
Y0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZyYW1lOmluV29ybGQ6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICAgVXBkYXRlIGZvciBuZXcgc2hhcmVkIEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxs
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxk
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNC0xOCAgUGFibG8gU2FhdmVkcmEgIDxw
c2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJlcGxhY2UgZXZpbCBz
dHJ0b2soKSBjYWxscyB3aXRoIGZzY2FuZigpIGluIE1lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCAxZjQzZTYzYzYxMS4uNmZlODU3NmFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JK
Q19fKQogICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IHdpcmVCeXRlc0Zyb21OU09iamVjdChpZCk7CisgICAgc3RhdGljIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21OU09iamVjdChpZCk7CiAjZW5kaWYK
IAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNvY29hLm1tCmluZGV4IDY2ZThiMjdhMDlhLi43MzEwZjVlMWYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJp
YWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAtODAsMjAgKzgwLDY0IEBAIGlkIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkCiAgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0OwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2Jq
ZWN0KGlkIG9iamVjdCkKK3N0YXRpYyBib29sIHZhbGlkYXRlT2JqZWN0KGlkIGFyZ3VtZW50KQog
eworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCBb
YXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNL
aW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
TnVsbCBjbGFzc11dKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChbYXJndW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7CisgICAgICAgIF9fYmxvY2sgQk9PTCB2
YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1lcmF0ZU9iamVjdHNVc2luZ0Js
b2NrOl4oaWQgb2JqZWN0LCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7CisgICAgICAgICAgICBp
ZiAoIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZh
bHNlOworICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAg
ICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgaWYgKFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2Nr
IGJvb2wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVLZXlzQW5k
T2JqZWN0c1VzaW5nQmxvY2s6XihpZCBrZXksIGlkIHZhbHVlLCBCT09MICpzdG9wKSB7CisgICAg
ICAgICAgICBpZiAoIXZhbGlkYXRlT2JqZWN0KGtleSkgfHwgIXZhbGlkYXRlT2JqZWN0KHZhbHVl
KSkgeworICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgKnN0
b3AgPSBZRVM7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworCisgICAgICAgIHJldHVybiB2
YWxpZDsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjb3JlVmFsdWVGcm9tTlNPYmplY3QoaWQgb2Jq
ZWN0KQoreworICAgIGlmIChvYmplY3QgJiYgIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwog
ICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0Om9iamVjdCBpbkNv
bnRleHQ6Y29udGV4dF07CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGdsb2JhbE9iamVjdCA9
IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAgICAgQVNTRVJUKGdsb2JhbE9i
amVjdCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCi0gICAg
YXV0byBjb3JlVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgq
Z2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKSk7Ci0g
ICAgcmV0dXJuIGNvcmVWYWx1ZS0+dG9XaXJlQnl0ZXMoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxP
YmplY3QsIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOworfQorCitSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChpZCBvYmpl
Y3QpCit7CisgICAgYXV0byBjb3JlVmFsdWUgPSBjb3JlVmFsdWVGcm9tTlNPYmplY3Qob2JqZWN0
KTsKKyAgICBpZiAoIWNvcmVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIGNyZWF0ZShjb3JlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIH0gLy8gQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNz
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdl
LmgKaW5kZXggOTdiZWI2ZTgxMzkuLjYzYTFlOWVhMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsK
IEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKQEAgLTU0LDYgKzU1LDkg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAgKi8KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CiAKKy8qISBA
YWJzdHJhY3QgVGhlIGNvbnRlbnQgd29ybGQgZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB3YXMgc2Vu
dC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tDb250ZW50V29ybGQgKndv
cmxkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQppbmRleCBjOTNlN2E5OWRh
Yi4uYmQ1ZGQ0NmI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQpAQCAtMzUsOSArMzUsMTAgQEAgQGltcGxlbWVudGF0
aW9uIFdLU2NyaXB0TWVzc2FnZSB7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmll
dzsKICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IF9mcmFtZUluZm87CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfbmFtZTsKKyAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IF93b3JsZDsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6
KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkg
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJh
bWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFtZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3Js
ZAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtNDYsNiArNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQm9keTooaWQpYm9k
eSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzooVwogICAgIF93ZWJWaWV3
ID0gd2ViVmlldzsKICAgICBfZnJhbWVJbmZvID0gZnJhbWVJbmZvOwogICAgIF9uYW1lID0gYWRv
cHROUyhbbmFtZSBjb3B5XSk7CisgICAgX3dvcmxkID0gd29ybGQ7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KQEAgLTcwLDQgKzcyLDkgQEAgLSAoTlNTdHJpbmcgKiluYW1lCiAgICAgcmV0dXJuIF9u
YW1lLmdldCgpOwogfQogCistIChXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCit7CisgICAgcmV0dXJu
IF93b3JsZC5nZXQoKTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgyM2RmMWU4YjUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaApAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIFdL
U2NyaXB0TWVzc2FnZTsKK0BjbGFzcyBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKKworLyohIEEg
Y2xhc3MgY29uZm9ybWluZyB0byAgdGhlIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkg
cHJvdG9jb2wgcHJvdmlkZXMgYQorbWV0aG9kIGZvciByZWNlaXZpbmcgbWVzc2FnZXMgZnJvbSBK
YXZhU2NyaXB0IHJ1bm5pbmcgaW4gYSB3ZWJwYWdlIGFuZCByZXBseWluZyB0byB0aGVtIGFzeW5j
aHJvbm91c2x5LgorKi8KK0Bwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5
IDxOU09iamVjdD4KKworLyohIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gYSBzY3JpcHQgbWVzc2Fn
ZSBpcyByZWNlaXZlZCBmcm9tIGEgd2VicGFnZS4KKyBAcGFyYW0gdXNlckNvbnRlbnRDb250cm9s
bGVyIFRoZSB1c2VyIGNvbnRlbnQgY29udHJvbGxlciBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0
aG9kLgorIEBwYXJhbSBtZXNzYWdlIFRoZSBzY3JpcHQgbWVzc2FnZSByZWNlaXZlZC4KKyBAcGFy
YW0gcmVwbHlIYW5kbGVyIEEgYmxvY2sgdG8gYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiBw
cm9jZXNzaW5nIHRoZSBtZXNzYWdlLgorIEBkaXNjdXNzaW9uIFdoZW4gdGhlIEphdmFTY3JpcHQg
cnVubmluZyBpbiB5b3VyIGFwcGxpY2F0aW9uJ3Mgd2ViIGNvbnRlbnQgY2FsbGVkIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVzc2FnZUJvZHk+KSwK
KyBhIEphdmFTY3JpcHQgUHJvbWlzZSBvYmplY3Qgd2FzIHJldHVybmVkLiBUaGUgdmFsdWVzIHBh
c3NlZCB0byB0aGUgcmVwbHlIYW5kbGVyIGFyZSB1c2VkIHRvIHJlc29sdmUgdGhhdCBQcm9taXNl
LgorCisgUGFzc2luZyBhIG5vbi1uaWwgTlNTdHJpbmcgdmFsdWUgdG8gdGhlIHNlY29uZCBwYXJh
bWV0ZXIgb2YgdGhlIHJlcGx5SGFuZGxlciBzaWduYWxzIGFuIGVycm9yLgorIE5vIG1hdHRlciB3
aGF0IHZhbHVlIHlvdSBwYXNzIHRvIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHJlcGx5SGFu
ZGxlciwKKyB0aGUgUHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGggYSBKYXZhU2NyaXB0IGVy
cm9yIG9iamVjdCB3aG9zZSBtZXNzYWdlIHByb3BlcnR5IGlzIHNldCB0byB0aGF0IGVycm9yTWVz
c2FnZSBzdHJpbmcuCisKKyBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB0aGUgcmVwbHlIYW5k
bGVyIGlzIG5pbCwgdGhlIGZpcnN0IGFyZ3VtZW50IHdpbGwgYmUgc2VyaWFsaXplZCBpbnRvIGl0
cyBKYXZhU2NyaXB0IGVxdWl2YWxlbnQgYW5kIHRoZSBQcm9taXNlIHdpbGwgYmUgZnVsZmlsbGVk
IHdpdGggdGhlIHJlc3VsdGluZyB2YWx1ZS4KKyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbmls
IHRoZW4gdGhlIFByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCB3aXRoIGEgSmF2YVNjcmlwdCB2YWx1
ZSBvZiAidW5kZWZpbmVkIgorCisgQWxsb3dlZCBub24tbmlsIHJlc3VsdCB0eXBlcyBhcmU6Cisg
TlNOdW1iZXIsIE5TTnVsbCwgTlNTdHJpbmcsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlv
bmFyeS4KKyBBbnkgTlNBcnJheSBvciBOU0RpY3Rpb25hcnkgY29udGFpbmVycyBjYW4gb25seSBj
b250YWluIG9iamVjdHMgb2YgdGhvc2UgdHlwZXMuCisKKyBUaGUgcmVwbHlIYW5kbGVyIGNhbiBi
ZSBjYWxsZWQgYXQgbW9zdCBvbmNlLgorIElmIHRoZSByZXBseUhhbmRsZXIgaXMgZGVhbGxvY2F0
ZWQgYmVmb3JlIGl0IGlzIGNhbGxlZCwgdGhlIFByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3aXRo
IGEgSmF2YVNjcmlwdCBFcnJvciBvYmplY3QKKyB3aXRoIGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2Ug
aW5kaWNhdGluZyB0aGUgaGFuZGxlciB3YXMgbmV2ZXIgY2FsbGVkLgorCisgRXhhbXBsZToKKwor
IFdpdGggYSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IG9iamVjdCBpbnN0YWxsZWQg
d2l0aCB0aGUgbmFtZSAidGVzdEhhbmRsZXIiLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIEphdmFT
Y3JpcHQ6CisgQHRleHRibG9jaworICAgICB2YXIgcHJvbWlzZSA9IHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJGdWxmaWxsIG1lIHdpdGggNDIi
KTsKKyAgICAgYXdhaXQgcDsKKyAgICAgcmV0dXJuIHA7CisgQC90ZXh0YmxvY2sKKworIEFuZCBj
b25zaWRlciB0aGUgZm9sbG93aW5nIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgaW1w
bGVtZW50YXRpb246CisgQHRleHRibG9jaworICAgICAtICh2b2lkKXVzZXJDb250ZW50Q29udHJv
bGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlk
UmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UgcmVwbHlIYW5k
bGVyOih2b2lkICheKShpZCwgTlNTdHJpbmcgKikpcmVwbHlIYW5kbGVyCisgICAgIHsKKyAgICAg
ICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbDpAIkZ1bGZpbGwgbWUgd2l0aCA0MiJdKQorICAg
ICAgICAgICAgcmVwbHlIYW5kbGVyKEA0MiwgbmlsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmVwbHlIYW5kbGVyKG5pbCwgQCJVbmV4cGVjdGVkIG1lc3NhZ2UgcmVjZWl2ZWQiKTsKKyAg
ICAgfQorIEAvdGV4dGJsb2NrCisKKyBJbiB0aGlzIGV4YW1wbGU6CisgICAtIFRoZSBKYXZhU2Ny
aXB0IGNvZGUgc2VuZHMgYSBtZXNzYWdlIHRvIHlvdXIgYXBwbGljYXRpb24gY29kZSB3aXRoIHRo
ZSBib2R5IEAiRnVsZmlsbCBtZSB3aXRoIDQyIgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBp
cyBzdXNwZW5kZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHJlc3VsdGluZyBwcm9taXNlIHRvIHJl
c29sdmUuCisgICAtIFlvdXIgbWVzc2FnZSBoYW5kbGVyIGlzIGludm9rZWQgd2l0aCB0aGF0IG1l
c3NhZ2UgYW5kIGEgYmxvY2sgdG8gY2FsbCB3aXRoIHRoZSByZXBseSB3aGVuIHJlYWR5LgorICAg
LSBZb3VyIG1lc3NhZ2UgaGFuZGxlciBzZW5kcyB0aGUgdmFsdWUgQDQyIGFzIGEgcmVwbHkuCisg
ICAtIFRoZSBKYXZhU2NyaXB0IHByb21pc2UgaXMgZnVsZmlsbGVkIHdpdGggdGhlIHZhbHVlIDQy
LgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250aW51ZXMgYW5kIHRoZSB2YWx1ZSA0MiBp
cyByZXR1cm5lZC4KKyAqLworLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNv
bnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRN
ZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXiko
aWQgcmVwbHksIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpKXJlcGx5SGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQGVuZAorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKaW5kZXggMjYzNzg4MDA1Njcu
Ljg5YmM1MThkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaApAQCAtMjcsNiArMjcsNiBAQAog
CiBAaW50ZXJmYWNlIFdLU2NyaXB0TWVzc2FnZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoQm9keTooaWQpYm9keSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzoo
V0tGcmFtZUluZm8gKilmcmFtZUluZm8gbmFtZTooTlNTdHJpbmcgKiluYW1lOworLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFt
ZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIuaAppbmRleCA4MjlhMDU3MzM3ZC4uZjQzZjJlNjJmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5oCkBAIC0zMCw4ICszMCwxMCBAQAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNz
IFdLQ29udGVudFJ1bGVMaXN0OworQGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLVXNl
clNjcmlwdDsKIEBwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyOworQHByb3RvY29sIFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk7CiAKIC8qISBBIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyIG9iamVjdCBwcm92aWRlcyBhIHdheSBmb3IgSmF2YVNjcmlwdCB0byBwb3N0CiAgbWVz
c2FnZXMgdG8gYSB3ZWIgdmlldy4KQEAgLTU2LDE5ICs1OCw3NSBAQCBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclNjcmlwdHM7
CiAKIC8qISBAYWJzdHJhY3QgQWRkcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCi0gQHBhcmFt
IHNjcmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBtZXNzYWdlIGhhbmRsZXIgdG8gYWRkLgorIEBwYXJh
bSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQu
CisgQHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRk
IHRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgogIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRo
ZSBtZXNzYWdlIGhhbmRsZXIuCi0gQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0TWVzc2FnZUhh
bmRsZXIgYWRkcyBhIGZ1bmN0aW9uCi0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5h
bWU+LnBvc3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIGZvciBhbGwKLSBmcmFtZXMuCisgQGRpc2N1
c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFtZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VC
b2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGluIHRoZSBnaXZlbiBXS0NvbnRlbnRXb3Js
ZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLgorCisg
RWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkgbnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1ZSBuYW1lLgorCisgT25jZSBhbnkgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRlZCB0byBhIFdLQ29udGVudFdvcmxkIGZv
ciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRvIGFkZCBhbm90aGVyCisgc2NyaXB0IG1l
c3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdvcmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3
aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVy
LgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxpZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0
IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIgYW5kIFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHkKKyBvYmplY3RzIHdpbGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90
aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhlIHNhbWUgV0tDb250ZW50V29ybGQgd2l0
aCB0aGUgc2FtZSBuYW1lLgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdv
cmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFi
c3RyYWN0IEFkZHMgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBzY3JpcHRNZXNz
YWdlSGFuZGxlcldpdGhSZXBseSBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQuCisg
QHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRkIHRo
ZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBt
ZXNzYWdlIGhhbmRsZXIuCisgQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFt
ZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VCb2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGlu
IHRoZSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUg
YSBub24tZW1wdHkgc3RyaW5nLgorCisgRWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkg
bnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1
ZSBuYW1lLgorCisgT25jZSBhbnkgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRl
ZCB0byBhIFdLQ29udGVudFdvcmxkIGZvciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRv
IGFkZCBhbm90aGVyCisgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdv
cmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91
cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxp
ZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHkgYW5kIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIKKyBvYmplY3RzIHdp
bGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhl
IHNhbWUgV0tDb250ZW50V29ybGQgd2l0aCB0aGUgc2FtZSBuYW1lLgorCisgUmVmZXIgdG8gdGhl
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgZG9jdW1lbnRhdGlvbiBmb3IgZXhhbXBs
ZXMgb2YgaG93IGl0IGlzIG1vcmUgZmxleGlibGUgdGhhbiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
LgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OihpZCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4pc2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVw
bHkgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBBZGRzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0
byB0aGUgbWFpbiB3b3JsZCB1c2VkIGJ5IHBhZ2UgY29udGVudCBpdHNlbGYuCisgQHBhcmFtIHNj
cmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRvIGFkZC4KKyBA
cGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgorIEBkaXNjdXNzaW9u
IENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOmNvbnRlbnRXb3JsZDpuYW1lOgorIHdpdGggW1dLQ29udGVudFdvcmxkIHBh
Z2VXb3JsZF0gYXMgdGhlIGNvbnRlbnRXb3JsZCBhcmd1bWVudC4KICAqLwogLSAodm9pZClhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1l
c3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZTsKIAogLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KICBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0
aGUgbWVzc2FnZSBoYW5kbGVyIHRvIHJlbW92ZS4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBX
S0NvbnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlci4KKyAqLworLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5T
U3RyaW5nICopbmFtZSBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
Ky8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCisgQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlciB0byByZW1vdmUuCisgQGRpc2N1
c3Npb24gQ2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgcmVtb3Zl
U2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOmNvbnRlbnRXb3JsZDoKKyAgd2l0aCBbV0tDb250
ZW50V29ybGQgcGFnZVdvcmxkXSBhcyB0aGUgY29udGVudFdvcmxkIGFyZ3VtZW50LgogICovCiAt
ICh2b2lkKXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1l
OwogCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYWxsIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzIGZy
b20gYSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBXS0Nv
bnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSBhbGwgc2NyaXB0IG1lc3NhZ2UgaGFuZGxl
cnMuCisgKi8KKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRl
bnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGFsbCBhc3NvY2lhdGVkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLgorICovCistICh2b2lk
KXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVycyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IEFkZHMgYSBjb250
ZW50IHJ1bGUgbGlzdC4KICBAcGFyYW0gY29udGVudFJ1bGVMaXN0IFRoZSBjb250ZW50IHJ1bGUg
bGlzdCB0byBhZGQuCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA2ODI3YzkxNDFj
MC4uN2Y5NGE0MDU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5o
IgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgorI2ltcG9ydCAiV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oIgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLVXNlclNjcmlwdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgpAQCAtMTI1LDMxICsxMjYsOTQgQEAgcHVibGljOgogICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQogICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQogICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseShmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAotICAgIHZvaWQgZGlkUG9zdE1l
c3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorCisgICAgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZShXS1VzZXJDb250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQgPFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHk+IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQorICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQorICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQorICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdl
KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBmaW5hbAogICAgIHsKICAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZy
YW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5m
b0RhdGEpLCAmcGFnZSkpOwogICAgICAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUsIDApOwotICAgICAg
ICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2lu
aXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBmcmFtZUluZm86
ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIG1l
c3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJv
ZHkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0
KCkgbmFtZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsKICAgICAgICAgCi0g
ICAgICAgICAgICBbbV9oYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIu
Z2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKV07CisgICAgICAgICAg
ICBbKGlkPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KW1faGFuZGxlci5nZXQoKSB1c2VyQ29udGVu
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOm1l
c3NhZ2UuZ2V0KCldOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNBc3luY1JlcGx5
OworICAgIH0KKworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgRnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5SGFuZGxlcikgZmluYWwKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3N1cHBvcnRzQXN5bmNSZXBseSk7CisKKyAgICAgICAgYXV0byBm
aW5hbGl6ZXIgPSBbXShGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
Y29uc3QgU3RyaW5nJik+JiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24obnVsbHB0
ciwgIldLV2ViVmlldyBBUEkgY2xpZW50IGRpZCBub3QgcmVzcG9uZCB0byB0aGlzIHBvc3RNZXNz
YWdlIl9zKTsKKyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBhdXRvIGhhbmRsZXIgPSBDb21w
bGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPihXVEZNb3ZlKHJlcGx5SGFuZGxlciksIFdURk1vdmUoZmluYWxp
emVyKSk7CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBSZXRhaW5Q
dHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCAmcGFnZSkpOworICAgICAgICAgICAgaWQgYm9keSA9
IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIDApOworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0
TWVzc2FnZSBhbGxvY10gX2luaXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94
eShwYWdlKSBmcmFtZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxk
OndyYXBwZXIod29ybGQpXSk7CisKKyAgICAgICAgICAgIFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseT4pbV9oYW5kbGVyLmdldCgpIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2Nv
bnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKSByZXBs
eUhhbmRsZXI6XihpZCByZXN1bHQsIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIo
bnVsbHB0ciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0g
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChyZXN1bHQpOwor
ICAgICAgICAgICAgICAgIGlmICghc2VyaWFsaXplZFZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZXIobnVsbHB0ciwgIlRoZSByZXN1bHQgdmFsdWUgcGFzc2VkIGJhY2sgZnJvbSB0
aGUgV0tXZWJWaWV3IEFQSSBjbGllbnQgd2FzIHVuYWJsZSB0byBiZSBzZXJpYWxpemVkIl9zKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGhhbmRsZXIoc2VyaWFsaXplZFZhbHVlLmdldCgpLCB7IH0pOworICAgICAgICAg
ICAgfV07CiAgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPGlkIDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9oYW5kbGVyOworICAgIFJldGFpblB0cjxpZD4gbV9oYW5k
bGVyOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9uYW1lOworICAgIGJvb2wgbV9zdXBwb3J0
c0FzeW5jUmVwbHk7CiB9OwogCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXIKK3sKKyAg
ICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKHNjcmlwdE1lc3NhZ2VIYW5kbGVyKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMu
IiwgKE5TU3RyaW5nICopc2NyaXB0TWVzc2FnZUhhbmRsZXIubmFtZSgpXTsKK30KKwogLSAodm9p
ZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNj
cmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewogICAgIGF1dG8gaGFu
ZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVl
PFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVy
LCBuYW1lKSwgbmFtZSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7Ci0g
ICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKSkKLSAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNz
YWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFt
ZV07CisgICAgW3NlbGYgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCldOwor
fQorCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3Js
ZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIGF1dG8gaGFuZGxlciA9IFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwg
bmFtZSwgKndvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBbc2VsZiBfYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKV07Cit9CisKKy0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHk6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PilzY3Jp
cHRNZXNzYWdlSGFuZGxlciBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQgbmFt
ZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJE
ZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqd29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5k
bGVyLmdldCgpXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5h
bWU6KE5TU3RyaW5nICopbmFtZQpAQCAtMTU3LDYgKzIyMSwyMSBAQCAtICh2b2lkKXJlbW92ZVNj
cmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lCiAgICAgX3VzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKG5hbWUs
IEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogfQogCistICh2b2lkKXJl
bW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHktPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUobmFtZSwgKmNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0
TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50
V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJN
ZXNzYWdlSGFuZGxlcnMoKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZv
aWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzCit7CisgICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCk7Cit9CisKICNwcmFn
bWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAtIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgKaW5kZXgg
MTA4YmVlMTUzODIuLjQ3ZjdkZTAxOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlcklu
dGVybmFsLmgKQEAgLTI5LDE1ICsyOSwxOCBAQAogI2ltcG9ydCAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0KIHRlbXBsYXRlPD4gc3RydWN0
IFdyYXBwZXJUcmFpdHM8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKICAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKIH07CiAKK2NsYXNzIFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyOwogfQogCiBAaW50ZXJmYWNlIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gX3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OwogfQorCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXI7CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAppbmRleCBhYTM1MWU3N2NjZC4uZTVm
ODk2ZDliMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CiAK
K0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBXS1VzZXJTY3JpcHQ7CiBAY2xhc3MgX1dL
VXNlckNvbnRlbnRGaWx0ZXI7CiBAY2xhc3MgX1dLVXNlckNvbnRlbnRXb3JsZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAwMzQxNThi
YTIxLi42YjExYjM4NDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC04OTgsMTUgKzg5OCwxMyBAQCAtICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJP
T0wpYQogCiAgICAgZm9yIChpZCBrZXkgaW4gYXJndW1lbnRzKSB7CiAgICAgICAgIGlkIHZhbHVl
ID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZUFy
Z3VtZW50KHZhbHVlKSkgewotICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlvbiBh
cmd1bWVudCB2YWx1ZXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlcywgb3IgY29u
dGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdHlwZXM6IE5TU3RyaW5nLCBOU051bWJlciwgTlNEYXRl
LCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsKKyAgICAgICAgYXV0byBzZXJpYWxpemVkVmFs
dWUgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KHZhbHVl
KTsKKyAgICAgICAgaWYgKCFzZXJpYWxpemVkVmFsdWUpIHsKKyAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xs
b3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU051bWJl
ciwgTlNOdWxsLCBOU0RhdGUsIE5TU3RyaW5nLCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgCi0gICAgICAgIGF1dG8gd2lyZUJ5
dGVzID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCh2
YWx1ZSk7Ci0gICAgICAgIC8vIFNpbmNlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgaW5wdXQgZGljdGlv
bmFyeSBhYm92ZSwgd2Ugc2hvdWxkIG5ldmVyIGZhaWwgdG8gc2VyaWFsaXplIGl0IGludG8gd2ly
ZSBieXRlcy4KLSAgICAgICAgQVNTRVJUKHdpcmVCeXRlcyk7Ci0gICAgICAgIGFyZ3VtZW50c01h
cC0+c2V0KGtleSwgKndpcmVCeXRlcyk7CisKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5
LCBzZXJpYWxpemVkVmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygp
KTsKICAgICB9CiAKICAgICBpZiAoZXJyb3JNZXNzYWdlICYmIGhhbmRsZXIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlci5oCmluZGV4IGFmYWNiYjA3MWYxLi4yZjYxNGIyM2EyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBDb250ZW50V29ybGQ7CitjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTIsNyAr
NTMsOSBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgfkNsaWVudCgpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3Nh
Z2UoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQ
YWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJikgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNBc3luY1JlcGx5KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2VX
aXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVu
dFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpGdW5jdGlvbjx2
b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYpID0gMDsK
ICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRl
KHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29udGVu
dFdvcmxkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXgg
N2RkOGViOTkzMTcuLmI2MjBmYTA2NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcK
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdl
SGFuZGxlcnMoQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7
IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcnNGb3JXb3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50
aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCBudW1iZXJSZW1vdmVkID0gMDsKICAgICBtX3Njcmlw
dE1lc3NhZ2VIYW5kbGVycy5yZW1vdmVJZihbJl0oYXV0byYgZW50cnkpIHsKQEAgLTMyOCw3ICsz
MjgsMTMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNl
ck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycygpCit7CisgICAgZm9y
IChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzKCksIGlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVBy
b3h5SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFu
ZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2U6OkFzeW5jUmVw
bHkmJiByZXBseSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2UocGFnZVByb3h5SUQpOwogICAgIGlmICghcGFnZSkKQEAgLTM0MSw3ICszNDcsMjEg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgIGlmICghaGFuZGxlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsIFdURk1v
dmUoZnJhbWVJbmZvRGF0YSksIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
ZGF0YVJlZmVyZW5jZS52ZWN0b3IoKSkpOworICAgIGlmICghaGFuZGxlci0+Y2xpZW50KCkuc3Vw
cG9ydHNBc3luY1JlcGx5KCkpIHsKKyAgICAgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1l
c3NhZ2UoKnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFSZWZlcmVuY2UudmVjdG9y
KCkpKTsKKyAgICAgICAgcmVwbHkoeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseSgqcGFn
ZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVyZW5jZS52ZWN0b3IoKSksIFtyZXBs
eSA9IFdURk1vdmUocmVwbHkpXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yTWVz
c2FnZS5pc051bGwoKSkgeworICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgICAg
IHJlcGx5KHsgdmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygpIH0s
IHsgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICByZXBseSh7
IH0sIGVycm9yTWVzc2FnZSk7CisgICAgfSk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggMmMwOTQy
ODUwYjQuLjEyOWEzNDBmMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KQEAg
LTk4LDYgKzk5LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyJik7CiAgICAgdm9pZCByZW1vdmVVc2VyTWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYsIEFQSTo6Q29udGVudFdvcmxkJik7CiAgICAg
dm9pZCByZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29udGVudFdvcmxkJik7Cisg
ICAgdm9pZCByZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCk7CiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQogICAgIHZvaWQgYWRkTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nl
c3NQcm94eSYpOwpAQCAtMTE4LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCB1
aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAg
ICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEZyYW1lSW5mb0Rh
dGEmJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2Fn
ZTo6QXN5bmNSZXBseSYmKTsKIAogICAgIHZvaWQgYWRkQ29udGVudFdvcmxkKEFQSTo6Q29udGVu
dFdvcmxkJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggOGQyMDBhMWU2ZTkuLmZkOTVmMmY1ZDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSAr
MjQsNSBAQAogICovCiAKIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
IHsKLURpZFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVz
c2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29ubmVjdGlv
bgorRGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNz
YWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgLT4gKElQQzo6RGF0YVJl
ZmVyZW5jZSByZXN1bHRWYWx1ZSwgU3RyaW5nIGVycm9yTWVzc2FnZSkgQXN5bmMKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZlNDdi
NmU5MmYwLi5lM2RiNTQwOWFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NzMsNiArOTczLDcgQEAKIAkJNTEwNTIzNzQxQzczRDM4
QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1MjM3MzFDNzNEMzdCMDA3
OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTEw
NTIzNzUxQzczRDM4RjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTA1MjM3MjFDNzNEMzdCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTEwNkQ3QzQxOEJEQkU3MzAwMEFCMTY2IC8qIENv
bnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRl
eHREYXRhLmggKi87IH07CisJCTUxMDkwOTk3MjNEQUNCRjIwMDNCMUU0QyAvKiBXS1NjcmlwdE1l
c3NhZ2VIYW5kbGVyV2l0aFJlcGx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTA5MDk5NDIzRDQxRjEzMDAzQjFFNEMgLyogV0tTY3JpcHRNZXNzYWdl
SGFuZGxlcldpdGhSZXBseS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJNTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBRkZC
ODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCAqLzsgfTsKIAkJNTEwRjU5
MTAxRERFMjk2OTAwNDEyRkY1IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDNCMjVFMUREQ0RGRDEwMDE0
RkFDNiAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRjU5MTExRERFMjk3MDAwNDEyRkY1IC8qIF9X
S0xpbmtJY29uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFDMEM5NzkxRERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1l
dGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zNTk3LDYgKzM1OTgsNyBAQAogCQk1MTA1QjBGMzE2MzA4NzJFMDBFMjc3MDkgLyogTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA2RDdCRjE4QkRCRTczMDAw
QUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51
Q29udGV4dERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1l
bnVDb250ZXh0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA5MDk5NDIz
RDQxRjEzMDAzQjFFNEMgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEFGRkI3MTY1NDIwNDgwMDFC
QTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRlci5jcHA7IHBhdGggPSBOZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQUZGQjgxNjU0
MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyLmg7IHBhdGggPSBOZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEFGRkNFMTY1NDJD
QkQwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzkyLDYgKzczOTQs
NyBAQAogCQkJCTFBN0UzNzc3MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCAq
LywKIAkJCQkxQTdFMzc3NjE4RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLm1tICov
LAogCQkJCTFBN0UzNzc0MThFNEEzM0EwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
LmggKi8sCisJCQkJNTEwOTA5OTQyM0Q0MUYxMzAwM0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHkuaCAqLywKIAkJCQk3Q0M5OUEzNTE4RUY3Q0JDMDA0OEM4QjQgLyogV0tT
Y3JpcHRNZXNzYWdlSW50ZXJuYWwuaCAqLywKIAkJCQk1MUNEMUM1RjFCMzRCOUM5MDAxNDJDQTUg
LyogV0tTZWN1cml0eU9yaWdpbi5oICovLAogCQkJCTUxQ0QxQzYwMUIzNEI5QzkwMDE0MkNBNSAv
KiBXS1NlY3VyaXR5T3JpZ2luLm1tICovLApAQCAtMTEzMTgsNiArMTEzMjEsNyBAQAogCQkJCUJD
RUU3QUQxMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFMEU0MjUxNjhCN0EyODAwNTdFNjZBIC8qIFdlYlByb2Nlc3NTdXBw
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFFMDkzNDE4ODYxRDM4MDBEMkRDNDkgLyog
V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA5MDk5NzIz
REFDQkYyMDAzQjFFNEMgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEyRjU4OUQxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYlByb3RlY3Rpb25T
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk0ODQwNDE1MEMz
NTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBmNWM4N2MwMmJkNi4uMDQyOWRhZDZhZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICAvLyBXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXIm
IGhhbmRsZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpIG92ZXJyaWRl
CisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXImIGhh
bmRsZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFdURjo6RnVuY3Rp
b248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFt
ZSA9IGhhbmRsZXIuZnJhbWUoKTsKICAgICAgICAgaWYgKCFmcmFtZSkKQEAgLTI2OCw3ICsyNjgs
MTcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQ
b3N0TWVzc2FnZSh3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIHdlYkZyYW1lLT5p
bmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwg
bV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOworICAgICAgICBhdXRvIG1lc3NhZ2VSZXBseUhh
bmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGlmICghZXJyb3JNZXNzYWdlLmlzTnVsbCgpKSB7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1
dG8gdmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMocmVz
dWx0VmFsdWUudmVjdG9yKCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodmFsdWUu
cHRyKCksIHsgfSk7CisgICAgICAgIH07CisKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+
d2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIFdURk1vdmUobWVzc2FnZVJlcGx5
SGFuZGxlciksIG1fY29udHJvbGxlci0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQ
dHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CkBAIC0zMDksNyArMzE5
LDE4IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoQ29udGVudFdvcmxkSWRlbnRpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29u
c3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+JiB3b3JsZElkZW50aWZpZXJzKQordm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcnMoKQoreworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisgICAgaWYgKG1f
dXNlck1lc3NhZ2VIYW5kbGVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
dXNlck1lc3NhZ2VIYW5kbGVycy5jbGVhcigpOworICAgIGludmFsaWRhdGVBbGxSZWdpc3RlcmVk
VXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9uQ2xpZW50cygpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhh
bmRsZXJzRm9yV29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYgd29y
bGRJZGVudGlmaWVycykKIHsKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogICAg
IGJvb2wgdXNlck1lc3NhZ2VIYW5kbGVyc0NoYW5nZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuaAppbmRleCBlOTAyNjA3N2U5My4uY2U5MGE5ZDkzZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTEwMCw3ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVu
dGlmaWVyPiYpOwogCiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoQ29u
dGVudFdvcmxkSWRlbnRpZmllciwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIpOwotICAg
IHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8Q29u
dGVudFdvcmxkSWRlbnRpZmllcj4mKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnNGb3JXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+
Jik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKCk7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIHZvaWQgcmVtb3ZlQ29udGVudFJ1bGVM
aXN0KGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5tZXNzYWdlcy5pbgppbmRleCA1YWRjZDA4MGU5MS4uMmFiMjMyNGJiNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMzcsNyArMzcs
OCBAQCBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgewogCiAgICAgQWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVycyhWZWN0b3I8c3RydWN0IFdlYktpdDo6V2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXJEYXRhPiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOwogICAgIFJlbW92ZVVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJ
ZGVudGlmaWVyLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKLSAgICBSZW1vdmVBbGxVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKFZlY3RvcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdv
cmxkSWRlbnRpZmllcnMpOworICAgIFJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnNG
b3JXb3JsZHMoVmVjdG9yPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRJZGVu
dGlmaWVycyk7CisgICAgUmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycygpOwogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBBZGRDb250ZW50UnVsZUxpc3RzKFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0
RGF0YT4+IGNvbnRlbnRGaWx0ZXJzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA1YjhjNDI1ZGJlYy4uZmNmNzZjNzQ4YmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMC0wNC0xOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIgQVBJIHRoYXQgYXN5bmNocm9ub3VzbHkgcmVzcG9u
ZHMgd2l0aCBhIHByb21pc2UuCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzU3MjQzNDkyIGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2Mzk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKFRFU1Qp
OgorICAgICAgICAod2ViVmlld0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVy
UmVtb3ZhbFRlc3QpOgorICAgICAgICAoLVtBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIHVzZXJD
b250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpyZXBseUhhbmRsZXI6XSk6
CisKIDIwMjAtMDQtMTcgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgRW5hYmxlIHNlcnZpY2Ugd29ya2VycyBmb3IgYXBwLWJvdW5kIGRvbWFpbnMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXggNGFiOTk0MzJhODcuLjY3YmZiZDUzYzk2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJD
b250ZW50Q29udHJvbGxlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtMzAsNyArMzAsMTAgQEAKICNpbXBv
cnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RVSURlbGVnYXRlLmgi
CiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50V29y
bGQuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLU2NyaXB0TWVzc2FnZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHkuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJv
bGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJTY3JpcHQuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1VzZXJTY3JpcHRQcml2YXRlLmg+CkBAIC03NCw2ICs3Nyw5IEBAIEBlbmQKIAog
VEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Bv
c3QpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFu
ZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5k
bGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwpAQCAtOTUsNiArMTAxLDkgQEAgVEVTVChX
S1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Bvc3QpCiAK
IFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQ
b3N0SXNvbGF0ZWRXb3JsZCkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOworICAgIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPF9XS1VzZXJDb250
ZW50V29ybGQ+IHdvcmxkID0gW19XS1VzZXJDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRl
c3RXb3JsZCJdOwogCiAgICAgUmV0YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVy
ID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CkBAIC0xNDQs
NiArMTUzLDkgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhh
bmRsZXJCYXNpY1Bvc3RJc29sYXRlZFdvcmxkKQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9s
bGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUmVtb3ZlKQogeworICAgIHNjcmlwdE1lc3Nh
Z2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBS
ZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29u
ZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLVXNlckNvbnRlbnRDb250cm9sbGVy
PiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdOwpAQCAtMTg4LDYgKzIwMCw4IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIs
IFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNSZW1vdmUpCiAKIFRFU1QoV0tVc2VyQ29udGVudENv
bnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQ2FsbFJlbW92ZWRIYW5kbGVyKQogeworICAg
IHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNjcmlwdE1l
c3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gdXNlckNvbnRlbnRDb250
cm9sbGVyID0gW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXTsKQEAgLTIwNSwy
MiArMjE5LDIzIEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VI
YW5kbGVyQ2FsbFJlbW92ZWRIYW5kbGVyKQogCiAgICAgW3VzZXJDb250ZW50Q29udHJvbGxlciBy
ZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6QCJoYW5kbGVyVG9SZW1vdmUiXTsKIAor
ICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgLy8gVGVzdCB0aGF0IHdlIHRocm93
IGFuIGV4Y2VwdGlvbiBpZiB5b3UgdHJ5IHRvIHVzZSBhIG1lc3NhZ2UgaGFuZGxlciB0aGF0IGhh
cyBiZWVuIHJlbW92ZWQuCi0gICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OgotICAgICAg
ICBAInRyeSB7IgotICAgICAgICAgIiAgICBoYW5kbGVyVG9SZW1vdmUucG9zdE1lc3NhZ2UoJ0ZB
SUwnKTsiCi0gICAgICAgICAifSBjYXRjaCAoZSkgeyIKLSAgICAgICAgICIgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMuaGFuZGxlclRvUG9zdC5wb3N0TWVzc2FnZSgnUEFTUycpOyIK
LSAgICAgICAgICJ9IiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFt3ZWJWaWV3IGNhbGxB
c3luY0phdmFTY3JpcHQ6QCJyZXR1cm4gaGFuZGxlclRvUmVtb3ZlLnBvc3RNZXNzYWdlKCdGQUlM
JykiIGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6W1dLQ29udGVudFdvcmxkIHBhZ2VXb3Js
ZF0gY29tcGxldGlvbkhhbmRsZXI6XiAoaWQgdmFsdWUsIE5TRXJyb3IgKiBlcnJvcikgeworICAg
ICAgICBFWFBFQ1RfTlVMTCh2YWx1ZSk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7
CisgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5n
OkAiSW52YWxpZEFjY2Vzc0Vycm9yIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
IAotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZSA9IGZhbHNlOwotCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIChOU1N0cmlu
ZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1v
dmFsVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKQogeworICAgIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb25Db3B5ID0gYWRvcHROUyhbY29uZmlndXJhdGlvbiBjb3B5XSk7CiAgICAgW2NvbmZpZ3Vy
YXRpb25Db3B5IHNldFVzZXJDb250ZW50Q29udHJvbGxlcjpbW1tXS1VzZXJDb250ZW50Q29udHJv
bGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKQEAgLTIzNiw2ICsyNTEsOSBAQCBzdGF0
aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlld0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVs
dGlwbGVIYW5kbGVyUmVtb3ZhbAogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3Jp
cHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWwpCiB7CisgICAgc2NyaXB0TWVz
c2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
W2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6W1tbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9y
ZWxlYXNlXV07CkBAIC0yNjIsNiArMjgwLDkgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxl
ciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsKQogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKSAvLyBGSVhNRTogaGFuZ3MgaW4gdGhlIGlPUyBzaW11bGF0b3IKIFRF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aE5hdmln
YXRpb24pCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlw
dE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4g
aGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpo
YW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwpAQCAtMjkzLDYgKzMxNCw5IEBAIFRF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aE5hdmln
YXRpb24pCiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5k
bGVyUmVwbGFjZVdpdGhTYW1lTmFtZSkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOwor
ICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNjcmlw
dE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gdXNlckNvbnRlbnRD
b250cm9sbGVyID0gW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXTsKQEAgLTgz
Myw2ICs4NTcsOSBAQCBzdGF0aWMgdm9pZCBjb21wYXJlTWVzc2FnZXMoVmVjdG9yPGNvbnN0IGNo
YXIqPiYmIGV4cGVjdGVkTWVzc2FnZXMpCiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIs
IEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVh
cigpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgYXV0byBoYW5k
bGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAg
YXV0byBzdGFydEFsbEZyYW1lcyA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRX
aXRoU291cmNlOkAid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9z
dE1lc3NhZ2UoJ3N0YXJ0IGFsbCcpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlv
blRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpOT10pOwogICAgIGF1dG8gZW5k
TWFpbkZyYW1lT25seSA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291
cmNlOkAid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3Nh
Z2UoJ2VuZCBtYWluJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0
RG9jdW1lbnRFbmQgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKQEAgLTkwMiwzICs5MjksMjc0IEBA
IFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3JpcHROb3RpZmljYXRpb24pCiAg
ICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZvciBu
b3RpZmljYXRpb24iKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVy
dF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7CiB9CisKK0BpbnRlcmZhY2UgQXN5bmNTY3Jp
cHRNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5PgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlcgor
CistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
Kil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0
TWVzc2FnZSAqKW1lc3NhZ2UgcmVwbHlIYW5kbGVyOih2b2lkICheKShpZCwgTlNTdHJpbmcgKmVy
cm9yTWVzc2FnZSkpcmVwbHlIYW5kbGVyCit7CisgICAgaWYgKFttZXNzYWdlLm5hbWUgaXNFcXVh
bFRvU3RyaW5nOkAib3RoZXJXb3JsZEhhbmRsZXIiXSkKKyAgICAgICAgRVhQRUNUX1RSVUUobWVz
c2FnZS53b3JsZCAhPSBuaWwpOworICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRv
U3RyaW5nOkAiRnVsZmlsbCJdKSB7CisgICAgICAgICAgICByZXBseUhhbmRsZXIoQCJGdWxmaWxs
ZWQhIiwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
W21lc3NhZ2UuYm9keSBpc0VxdWFsVG9TdHJpbmc6QCJSZWplY3QiXSkgeworICAgICAgICAgICAg
cmVwbHlIYW5kbGVyKG5pbCwgQCJSZWplY3RlZCEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0VxdWFsVG9TdHJpbmc6QCJVbmRl
ZmluZWQiXSkgeworICAgICAgICAgICAgcmVwbHlIYW5kbGVyKG5pbCwgbmlsKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0VxdWFs
VG9TdHJpbmc6QCJEbyBub3RoaW5nIl0pIHsKKyAgICAgICAgICAgIC8vIERyb3AgdGhlIHJlcGx5
IGhhbmRsZXIgd2l0aG91dCByZXNwb25kaW5nIHRvIHNlZSB3aGF0IGhhcHBlbnMKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0VxdWFs
VG9TdHJpbmc6QCJJbnZhbGlkIHJlcGx5Il0pIHsKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihb
W1tOU0RhdGEgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXSwgbmlsKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFsbCBvdGhlciBpbnB1dHMgc2hvdWxk
IGp1c3QgYmUgcm91bmQgdHJpcHBlZCBiYWNrIHRvIHRoZSBtZXNzYWdlIGhhbmRsZXIKKyAgICBy
ZXBseUhhbmRsZXIobWVzc2FnZS5ib2R5LCBuaWwpOworfQorCitAZW5kCisKK1RFU1QoV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIsIE1lc3NhZ2VIYW5kbGVyQVBJKQoreworICAgIFJldGFpblB0cjxX
S1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtbQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0
aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3Js
ZCBuYW1lOkAidGVzdEhhbmRsZXIxIl07CisKKyAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNl
OworICAgIEB0cnkgeworICAgICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRl
bnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgbmFtZTpAInRlc3RIYW5kbGVyMSJdOwor
ICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIGhhZEV4Y2Vw
dGlvbiA9IHRydWU7CisgICAgfQorCisgICAgRVhQRUNUX1RSVUUoaGFkRXhjZXB0aW9uKTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3Js
ZC5kZWZhdWx0Q2xpZW50V29ybGQgbmFtZTpAInRlc3RIYW5kbGVyMiJdOworCisgICAgYXV0byAq
d29ybGQgPSBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIm90aGVyV29ybGQiXTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDp3b3JsZCBuYW1lOkAi
dGVzdEhhbmRsZXIzIl07CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50
V29ybGQ6d29ybGQgbmFtZTpAInRlc3RIYW5kbGVyNCJdOworICAgIFtbY29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Omhh
bmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOndvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjUiXTsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworCisgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgTlNTdHJpbmcgKmZ1
bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVyc1toYW5k
bGVyXS5wb3N0TWVzc2FnZShhcmcpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworCisgICAgLy8gcGFn
ZVdvcmxkIGlzIHdoZXJlIHRlc3RoYW5kbGVyMSBsaXZlcworICAgIFt3ZWJWaWV3IGNhbGxBc3lu
Y0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0
SGFuZGxlcjEiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBh
Z2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVz
dWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsK
KworICAgIC8vIFRyeWluZyB0byBmaW5kIHRlc3RIYW5kbGVyMSBpbiB0aGUgZGVmYXVsdENsaWVu
dFdvcmxkIHNob3VsZCBmYWlsCisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5j
dGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMSIsIEAiYXJn
IiA6IEAxIH0gaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3Ip
OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIGRlZmF1bHRDbGllbnRX
b3JsZCBpcyB3aGVyZSB0ZXN0aGFuZGxlcjIgbGl2ZXMKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNK
YXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhh
bmRsZXIyIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZh
dWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0g
ZmFsc2U7CisKKyAgICAvLyBCdXQgaWYgd2UgcmVtdm9lIGl0LCBpdCBzaG91bGQgbm8gbG9uZ2Vy
IGxpdmUgdGhlcmUsIGFuZCB1c2luZyBpdCBzaG91bGQgY2F1c2UgYW4gZXJyb3IuCisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gcmVtb3ZlU2NyaXB0TWVzc2FnZUhh
bmRsZXJGb3JOYW1lOkAidGVzdEhhbmRsZXIyIiBjb250ZW50V29ybGQ6V0tDb250ZW50V29ybGQu
ZGVmYXVsdENsaWVudFdvcmxkXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1
bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXIyIiwgQCJh
cmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJv
cik7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IGhhbmRs
ZXJzIDMsIDQsIGFuZCA1IGFyZSBhbGwgaW4gdGhlIGN1c3RvbSB3b3JsZC4KKyAgICBbd2ViVmll
dyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVy
IiA6IEAidGVzdEhhbmRsZXIzIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBj
b21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1
YWxUb051bWJlcjpAMV0pOworICAgIH1dOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3Jp
cHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjQi
LCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsm
XSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7Cisg
ICAgfV07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJn
dW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyNSIsIEAiYXJnIiA6IEAxIH0gaW5D
b250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJy
b3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25l
ID0gZmFsc2U7CisKKyAgICAvLyBSZW1vdmUgMyBmcm9tIHRoZSB3cm9uZyB3b3JsZCwgdmVyaWZ5
IGl0IGlzIHN0aWxsIHRoZXJlIGluIHRoZSBjdXN0b20gd29ybGQuCisgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gcmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JO
YW1lOkAidGVzdEhhbmRsZXIzIiBjb250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENs
aWVudFdvcmxkXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9k
eSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXIzIiwgQCJhcmciIDogQDEg
fSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSAzIGZyb20gdGhlIGNvcnJlY3Qgd29ybGQs
IHZlcmlmeSBpdCBpcyBnb25lLCBidXQgNCBhbmQgNSBhcmUgc3RpbGwgdGhlcmUuCisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gcmVtb3ZlU2NyaXB0TWVzc2FnZUhh
bmRsZXJGb3JOYW1lOkAidGVzdEhhbmRsZXIzIiBjb250ZW50V29ybGQ6d29ybGRdOworICAgIFt3
ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhh
bmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjMiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndv
cmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJy
b3IpOworICAgIH1dOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25C
b2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjQiLCBAImFyZyIgOiBA
MSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgfV07CisgICAg
W3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAi
aGFuZGxlciIgOiBAInRlc3RIYW5kbGVyNSIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6
d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3Vs
dCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisK
KyAgICAvLyBSZW1vdmUgImFsbCIgaW4gdGhlIGN1c3RvbSB3b3JsZCwgdmVyaWZ5IDQgYW5kIDUg
YXJlIG5vdyBnb25lLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJd
IHJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6d29ybGRdOwor
ICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpA
eyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjQiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdv
cmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJv
cikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05V
TEwoZXJyb3IpOworICAgIH1dOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVu
Y3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjUiLCBAImFy
ZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQg
cmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOwor
ICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBm
YWxzZTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgQXN5bmNTY3JpcHRNZXNz
YWdlSGFuZGxlckJhc2ljUG9zdCkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0FzeW5jU2NyaXB0TWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdl
dCgpIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgbmFtZTpAInRlc3RIYW5k
bGVyIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5T
U3RyaW5nICpmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0Z1bGZpbGwnKTsgYXdhaXQgcDsgcmV0dXJu
IHA7IjsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1
bWVudHM6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0
aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1
YWxUb1N0cmluZzpAIkZ1bGZpbGxlZCEiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBm
YWxzZTsKKyAgICBmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ1JlamVjdCcpOyBhd2FpdCBwOyByZXR1
cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFy
Z3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBs
ZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29udGFpbnNTdHJpbmc6QCJSZWpl
Y3RlZCEiXSk7CisgICAgICAgIAorICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdVbmRlZmluZWQnKTsgdmFyIHJlc3VsdCA9IGF3YWl0
IHA7IHJldHVybiByZXN1bHQgPT0gdW5kZWZpbmVkID8gJ1llcycgOiAnTm8nIjsKKyAgICBbd2Vi
VmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluQ29u
dGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0g
KGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIlll
cyJdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgZnVuY3Rpb25C
b2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKCdEbyBub3RoaW5nJyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dl
YlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNv
bnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZd
IChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7CisgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShb
W2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAImRpZCBub3QgcmVzcG9uZCB0byB0
aGlzIHBvc3RNZXNzYWdlIl0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsK
KyAgICBmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxl
cnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0ludmFsaWQgcmVwbHknKTsgYXdhaXQgcDsgcmV0
dXJuIHA7IjsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBh
cmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAidW5h
YmxlIHRvIGJlIHNlcmlhbGl6ZWQiXSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLCBXb3JsZExpZmV0aW1lKQoreworICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtb
QXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworCisgICAgUmV0YWluUHRy
PFdLQ29udGVudFdvcmxkPiB3b3JsZCA9IFtXS0NvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAi
b3RoZXJXb3JsZCJdOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJd
IGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdv
cmxkOndvcmxkLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisg
ICAgLy8gU2V0IGEgdmFyaWFibGUgaW4gdGhlIHdvcmxkLgorICAgIGJvb2wgZG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInZhciBmb28gPSAnYmFyJyIgaW5D
b250ZW50V29ybGQ6d29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBIYXZlIHRoZSBtZXNzYWdlIGhhbmRsZXIg
Ym91bmNlIGJhY2sgdGhhdCB2YWx1ZS4KKyAgICBOU1N0cmluZyAqZnVuY3Rpb25Cb2R5ID0gQCJ2
YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNz
YWdlKGZvbyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2
YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDp3b3JsZC5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsK
KyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJhciJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0g
ZmFsc2U7CisKKyAgICAvLyBSZW1vdmUgdGhlIG1lc3NhZ2UgaGFuZGxlciwgd2hpY2ggdXNlZCB0
byBjYXVzZSB0aGUgd29ybGQgdG8gYmUgZGVzdHJveWVkIGluIHRoZSB3ZWIgcHJvY2Vzcy4KKyAg
ICAvLyBCdXQgYnkgZXZhbHVhdGluZyBKUyBtYWtlIHN1cmUgdGhlIHZhbHVlIGlzIHN0aWxsIHRo
ZXJlLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIHJlbW92ZUFs
bFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6d29ybGQuZ2V0KCldOworICAg
IFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImZvbyIgaW5Db250ZW50V29ybGQ6d29ybGQu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3Vs
dCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
W3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJiYXIiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9
IGZhbHNlOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396898</attachid>
            <date>2020-04-19 01:17:23 -0700</date>
            <delta_ts>2020-04-19 09:27:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>74949</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGJmMTk3OGI1YjMuLjMxMmNiODJkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3
aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KTog
QWRkIGEgdmFyaWFudCBvZiBDb21wbGV0aW9uSGFuZGxlciB0aGF0IGFsbG93cyBmb3IgYSBGaW5h
bGl6ZXIgZnVuY3Rpb24KKyAgICAgICAgICB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENvbXBs
ZXRpb24gZnVuY3Rpb24gaGFzbid0IGJlZW4gY2FsbGVkIGF0IGRlc3RydWN0aW9uIHRpbWUuCisK
IDIwMjAtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV1RGXSBNb3ZlIERhdGFSZWYuaCBmcm9tIFdlYkNvcmUgdG8gV1RGIHRvIHV0aWxpemUgaXQg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oIGIv
U291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAppbmRleCA5MzhiNDk2NmYwOC4uOGM5
OGRmZTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtNjksNiArNjksNDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gV3JhcHMgYSBGdW5jdGlvbiB0byBtYWtlIHN1
cmUgaXQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKy8vIElmIHRoZSBDb21wbGV0aW9uSGFuZGxl
cldpdGhGaW5hbGl6ZXIgaXMgZGVzdHJveWVkIGFuZCB0aGUgZnVuY3Rpb24gaGFzbid0IHlldCBi
ZWVuIGNhbGxlZCwKKy8vIHRoZSBmaW5hbGl6ZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlv
biBhcyBpdHMgYXJndW1lbnQuCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhh
bmRsZXJXaXRoRmluYWxpemVyOwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4g
SW4+CitjbGFzcyBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KEluLi4uKT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29t
cGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlLCBGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPE91dChJbi4uLik+Jik+JiYgZmluYWxpemVyKQorICAgICAgICA6
IG1fZnVuY3Rpb24oV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgICwgbV9maW5hbGl6ZXIoV1RG
TW92ZShmaW5hbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXIoQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyJiYpID0gZGVmYXVsdDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXImIG9wZXJhdG9yPShDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25IYW5k
bGVyV2l0aEZpbmFsaXplcigpCisgICAgeworICAgICAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9maW5hbGl6ZXIobV9mdW5jdGlvbik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5j
dGlvbjsgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBB
U1NFUlQobV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZCA9PSBpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxl
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Z1bmN0aW9uLCBudWxscHRyKShzdGQ6OmZvcndhcmQ8SW4+KGluKS4u
Lik7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjxPdXQoSW4uLi4pPiYpPiBtX2ZpbmFsaXpl
cjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRo
cmVhZCB7IGlzTWFpblRocmVhZCgpIH07CisjZW5kaWYKK307CisKIG5hbWVzcGFjZSBEZXRhaWwg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgpAQCAtMTE1LDMgKzE1
OCw0IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlOwordXNpbmcgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q1YjNlOTVhNDYuLjFiNGZjZWZj
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdl
SGFuZGxlcjo6cG9zdE1lc3NhZ2UpOiBSZXR1cm4gYSBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBi
eSB0aGUgQVBJIGNsaWVudC4KKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKwogMjAyMC0wNC0xOCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZHVjZSBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
RnJhbWVMb2FkUmVxdWVzdCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuY3BwCmluZGV4IGIwN2RiOGI2YjE0Li5jZjgyYWYzYjY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMjksNyArMjksOSBAQAog
I2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE0ICs0MywyOSBAQCBVc2VyTWVzc2FnZUhhbmRs
ZXI6OlVzZXJNZXNzYWdlSGFuZGxlcihGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0bwogCiBVc2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRl
ZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3Nh
Z2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiB2YWx1ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVzY3JpcHRvciBoYXMgYmVlbiByZW1vdmVkLiBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaGFzCiAgICAgLy8gcmVtb3ZlZCB0
aGUgbmFtZWQgbWVzc2FnZSBoYW5kbGVyIGF0IHRoZSBXZWJLaXQyIEFQSSBsZXZlbC4KLSAgICBp
ZiAoIW1fZGVzY3JpcHRvcikKKyAgICBpZiAoIW1fZGVzY3JpcHRvcikgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH0pOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgfQogCi0gICAgbV9k
ZXNjcmlwdG9yLT5kaWRQb3N0TWVzc2FnZSgqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgIG1fZGVz
Y3JpcHRvci0+ZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdldCgpLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwcm9taXNl
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KEpTQzo6Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBl
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChyZXN1bHQpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4ocmVzdWx0
LT5kZXNlcmlhbGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKKyAgICB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aAppbmRleCA5NGFmZmI1MGM5Yy4uOTEyMjc5YWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKKwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVc2VyTWVzc2FnZUhh
bmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0KICAgICB2b2lkIGludmFs
aWRhdGVEZXNjcmlwdG9yKCkgeyBtX2Rlc2NyaXB0b3IgPSBudWxscHRyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKaW5kZXggNzc2YzE4MjRiNmEuLjMyZGIy
OGVjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCkBA
IC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJT
CiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNj
cmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggNDVlMTU1N2UwNmIuLmQyZjY1MzU3MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShVc2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlNTQ5MDJhZjc5Ny4uNGMyMDc1MDBhMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJv
bm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAgICAgICByZGFyOi8vcHJvYmxlbS81
NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgQ2hhbmdlIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBvc3RNZXNzYWdlKCkgdG8g
cmV0dXJuIGEgcHJvbWlzZSBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4KKyAgICAgICAgCisgICAgICAg
IEFsbG93IGZvciB0aGF0IHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgYnkgYW4gYXN5bmNocm9ub3Vz
IHJlcGx5IGJsb2NrIHVwIGluIHRoZSBBUEkgY2xpZW50LgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBsaWtlIHRoZSBvcHBvc2l0ZSB2ZXJzaW9uIG9mIFtXS1dlYlZpZXcgY2FsbEFzeW5jRnVu
Y3Rpb246XQorICAgICAgICAKKyAgICAgICAgQW5kIHdoaWxlIHdlJ3JlIGFkZGluZyBhIG5ldyBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVyIHZhcmlhbnQsIHdlJ3JlIGFkZGluZyBpdCBzYW5kYm94ZWQg
YnkgV0tDb250ZW50V29ybGQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ29jb2EubW06CisgICAgICAgIChBUEk6OnZhbGlkYXRlT2JqZWN0KToKKyAg
ICAgICAgKEFQSTo6Y29yZVZhbHVlRnJvbU5TT2JqZWN0KToKKyAgICAgICAgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tTlNPYmplY3QpOgorICAgICAgICAoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oOiBOb3cgdGhhdCBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVycyBjYW4gYmUgcGVyLXdvcmxkLCBtZXNzYWdlcworICAgICAg
ICAgIGRlY2xhcmUgd2hpY2ggd29ybGQgdGhleSB3ZXJlIHBvc3RlZCBmcm9tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tOgorICAgICAgICAoLVtXS1Nj
cmlwdE1lc3NhZ2UgX2luaXRXaXRoQm9keTp3ZWJWaWV3OmZyYW1lSW5mbzpuYW1lOndvcmxkOl0p
OgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2Ugd29ybGRdKToKKyAgICAgICAgKC1bV0tTY3Jp
cHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpmcmFtZUluZm86bmFtZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFs
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRs
ZXJXaXRoUmVwbHkuaDogQWRkZWQuCisgICAgICAgICAgRGVjbGFyZSB0aGUgbmV3IHByb3RvY29s
IGZvciBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgdGhhdCBjYW4gcmVwbHkgdG8gbWVzc2FnZXMg
YXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
X2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpjb250ZW50V29ybGQ6
bmFtZTpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHk6Y29udGVudFdvcmxkOm5hbWU6XSk6CisgICAgICAgICgtW1dL
VXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpj
b250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92
ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6XSk6CisgICAgICAgICgt
W1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJ
bnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3lu
Y0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZyYW1lOmluV29ybGQ6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICAgVXBkYXRlIGZvciBuZXcgc2hhcmVkIEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxs
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxk
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNC0xOCAgUGFibG8gU2FhdmVkcmEgIDxw
c2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJlcGxhY2UgZXZpbCBz
dHJ0b2soKSBjYWxscyB3aXRoIGZzY2FuZigpIGluIE1lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCAxZjQzZTYzYzYxMS4uNmZlODU3NmFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JK
Q19fKQogICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IHdpcmVCeXRlc0Zyb21OU09iamVjdChpZCk7CisgICAgc3RhdGljIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21OU09iamVjdChpZCk7CiAjZW5kaWYK
IAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNvY29hLm1tCmluZGV4IDY2ZThiMjdhMDlhLi43MzEwZjVlMWYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJp
YWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAtODAsMjAgKzgwLDY0IEBAIGlkIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkCiAgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0OwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2Jq
ZWN0KGlkIG9iamVjdCkKK3N0YXRpYyBib29sIHZhbGlkYXRlT2JqZWN0KGlkIGFyZ3VtZW50KQog
eworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCBb
YXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNL
aW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
TnVsbCBjbGFzc11dKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChbYXJndW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7CisgICAgICAgIF9fYmxvY2sgQk9PTCB2
YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1lcmF0ZU9iamVjdHNVc2luZ0Js
b2NrOl4oaWQgb2JqZWN0LCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7CisgICAgICAgICAgICBp
ZiAoIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZh
bHNlOworICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAg
ICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgaWYgKFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2Nr
IGJvb2wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVLZXlzQW5k
T2JqZWN0c1VzaW5nQmxvY2s6XihpZCBrZXksIGlkIHZhbHVlLCBCT09MICpzdG9wKSB7CisgICAg
ICAgICAgICBpZiAoIXZhbGlkYXRlT2JqZWN0KGtleSkgfHwgIXZhbGlkYXRlT2JqZWN0KHZhbHVl
KSkgeworICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgKnN0
b3AgPSBZRVM7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworCisgICAgICAgIHJldHVybiB2
YWxpZDsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjb3JlVmFsdWVGcm9tTlNPYmplY3QoaWQgb2Jq
ZWN0KQoreworICAgIGlmIChvYmplY3QgJiYgIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwog
ICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0Om9iamVjdCBpbkNv
bnRleHQ6Y29udGV4dF07CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGdsb2JhbE9iamVjdCA9
IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAgICAgQVNTRVJUKGdsb2JhbE9i
amVjdCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCi0gICAg
YXV0byBjb3JlVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgq
Z2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKSk7Ci0g
ICAgcmV0dXJuIGNvcmVWYWx1ZS0+dG9XaXJlQnl0ZXMoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxP
YmplY3QsIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOworfQorCitSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChpZCBvYmpl
Y3QpCit7CisgICAgYXV0byBjb3JlVmFsdWUgPSBjb3JlVmFsdWVGcm9tTlNPYmplY3Qob2JqZWN0
KTsKKyAgICBpZiAoIWNvcmVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIGNyZWF0ZShjb3JlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIH0gLy8gQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNz
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdl
LmgKaW5kZXggOTdiZWI2ZTgxMzkuLjYzYTFlOWVhMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsK
IEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKQEAgLTU0LDYgKzU1LDkg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAgKi8KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CiAKKy8qISBA
YWJzdHJhY3QgVGhlIGNvbnRlbnQgd29ybGQgZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB3YXMgc2Vu
dC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tDb250ZW50V29ybGQgKndv
cmxkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQppbmRleCBjOTNlN2E5OWRh
Yi4uYmQ1ZGQ0NmI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQpAQCAtMzUsOSArMzUsMTAgQEAgQGltcGxlbWVudGF0
aW9uIFdLU2NyaXB0TWVzc2FnZSB7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmll
dzsKICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IF9mcmFtZUluZm87CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfbmFtZTsKKyAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IF93b3JsZDsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6
KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkg
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJh
bWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFtZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3Js
ZAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtNDYsNiArNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQm9keTooaWQpYm9k
eSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzooVwogICAgIF93ZWJWaWV3
ID0gd2ViVmlldzsKICAgICBfZnJhbWVJbmZvID0gZnJhbWVJbmZvOwogICAgIF9uYW1lID0gYWRv
cHROUyhbbmFtZSBjb3B5XSk7CisgICAgX3dvcmxkID0gd29ybGQ7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KQEAgLTcwLDQgKzcyLDkgQEAgLSAoTlNTdHJpbmcgKiluYW1lCiAgICAgcmV0dXJuIF9u
YW1lLmdldCgpOwogfQogCistIChXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCit7CisgICAgcmV0dXJu
IF93b3JsZC5nZXQoKTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgyM2RmMWU4YjUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaApAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIFdL
U2NyaXB0TWVzc2FnZTsKK0BjbGFzcyBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKKworLyohIEEg
Y2xhc3MgY29uZm9ybWluZyB0byAgdGhlIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkg
cHJvdG9jb2wgcHJvdmlkZXMgYQorbWV0aG9kIGZvciByZWNlaXZpbmcgbWVzc2FnZXMgZnJvbSBK
YXZhU2NyaXB0IHJ1bm5pbmcgaW4gYSB3ZWJwYWdlIGFuZCByZXBseWluZyB0byB0aGVtIGFzeW5j
aHJvbm91c2x5LgorKi8KK0Bwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5
IDxOU09iamVjdD4KKworLyohIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gYSBzY3JpcHQgbWVzc2Fn
ZSBpcyByZWNlaXZlZCBmcm9tIGEgd2VicGFnZS4KKyBAcGFyYW0gdXNlckNvbnRlbnRDb250cm9s
bGVyIFRoZSB1c2VyIGNvbnRlbnQgY29udHJvbGxlciBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0
aG9kLgorIEBwYXJhbSBtZXNzYWdlIFRoZSBzY3JpcHQgbWVzc2FnZSByZWNlaXZlZC4KKyBAcGFy
YW0gcmVwbHlIYW5kbGVyIEEgYmxvY2sgdG8gYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiBw
cm9jZXNzaW5nIHRoZSBtZXNzYWdlLgorIEBkaXNjdXNzaW9uIFdoZW4gdGhlIEphdmFTY3JpcHQg
cnVubmluZyBpbiB5b3VyIGFwcGxpY2F0aW9uJ3Mgd2ViIGNvbnRlbnQgY2FsbGVkIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVzc2FnZUJvZHk+KSwK
KyBhIEphdmFTY3JpcHQgUHJvbWlzZSBvYmplY3Qgd2FzIHJldHVybmVkLiBUaGUgdmFsdWVzIHBh
c3NlZCB0byB0aGUgcmVwbHlIYW5kbGVyIGFyZSB1c2VkIHRvIHJlc29sdmUgdGhhdCBQcm9taXNl
LgorCisgUGFzc2luZyBhIG5vbi1uaWwgTlNTdHJpbmcgdmFsdWUgdG8gdGhlIHNlY29uZCBwYXJh
bWV0ZXIgb2YgdGhlIHJlcGx5SGFuZGxlciBzaWduYWxzIGFuIGVycm9yLgorIE5vIG1hdHRlciB3
aGF0IHZhbHVlIHlvdSBwYXNzIHRvIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHJlcGx5SGFu
ZGxlciwKKyB0aGUgUHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGggYSBKYXZhU2NyaXB0IGVy
cm9yIG9iamVjdCB3aG9zZSBtZXNzYWdlIHByb3BlcnR5IGlzIHNldCB0byB0aGF0IGVycm9yTWVz
c2FnZSBzdHJpbmcuCisKKyBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB0aGUgcmVwbHlIYW5k
bGVyIGlzIG5pbCwgdGhlIGZpcnN0IGFyZ3VtZW50IHdpbGwgYmUgc2VyaWFsaXplZCBpbnRvIGl0
cyBKYXZhU2NyaXB0IGVxdWl2YWxlbnQgYW5kIHRoZSBQcm9taXNlIHdpbGwgYmUgZnVsZmlsbGVk
IHdpdGggdGhlIHJlc3VsdGluZyB2YWx1ZS4KKyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbmls
IHRoZW4gdGhlIFByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCB3aXRoIGEgSmF2YVNjcmlwdCB2YWx1
ZSBvZiAidW5kZWZpbmVkIgorCisgQWxsb3dlZCBub24tbmlsIHJlc3VsdCB0eXBlcyBhcmU6Cisg
TlNOdW1iZXIsIE5TTnVsbCwgTlNTdHJpbmcsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlv
bmFyeS4KKyBBbnkgTlNBcnJheSBvciBOU0RpY3Rpb25hcnkgY29udGFpbmVycyBjYW4gb25seSBj
b250YWluIG9iamVjdHMgb2YgdGhvc2UgdHlwZXMuCisKKyBUaGUgcmVwbHlIYW5kbGVyIGNhbiBi
ZSBjYWxsZWQgYXQgbW9zdCBvbmNlLgorIElmIHRoZSByZXBseUhhbmRsZXIgaXMgZGVhbGxvY2F0
ZWQgYmVmb3JlIGl0IGlzIGNhbGxlZCwgdGhlIFByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3aXRo
IGEgSmF2YVNjcmlwdCBFcnJvciBvYmplY3QKKyB3aXRoIGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2Ug
aW5kaWNhdGluZyB0aGUgaGFuZGxlciB3YXMgbmV2ZXIgY2FsbGVkLgorCisgRXhhbXBsZToKKwor
IFdpdGggYSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IG9iamVjdCBpbnN0YWxsZWQg
d2l0aCB0aGUgbmFtZSAidGVzdEhhbmRsZXIiLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIEphdmFT
Y3JpcHQ6CisgQHRleHRibG9jaworICAgICB2YXIgcHJvbWlzZSA9IHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJGdWxmaWxsIG1lIHdpdGggNDIi
KTsKKyAgICAgYXdhaXQgcDsKKyAgICAgcmV0dXJuIHA7CisgQC90ZXh0YmxvY2sKKworIEFuZCBj
b25zaWRlciB0aGUgZm9sbG93aW5nIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgaW1w
bGVtZW50YXRpb246CisgQHRleHRibG9jaworICAgICAtICh2b2lkKXVzZXJDb250ZW50Q29udHJv
bGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlk
UmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UgcmVwbHlIYW5k
bGVyOih2b2lkICheKShpZCwgTlNTdHJpbmcgKikpcmVwbHlIYW5kbGVyCisgICAgIHsKKyAgICAg
ICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbDpAIkZ1bGZpbGwgbWUgd2l0aCA0MiJdKQorICAg
ICAgICAgICAgcmVwbHlIYW5kbGVyKEA0MiwgbmlsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmVwbHlIYW5kbGVyKG5pbCwgQCJVbmV4cGVjdGVkIG1lc3NhZ2UgcmVjZWl2ZWQiKTsKKyAg
ICAgfQorIEAvdGV4dGJsb2NrCisKKyBJbiB0aGlzIGV4YW1wbGU6CisgICAtIFRoZSBKYXZhU2Ny
aXB0IGNvZGUgc2VuZHMgYSBtZXNzYWdlIHRvIHlvdXIgYXBwbGljYXRpb24gY29kZSB3aXRoIHRo
ZSBib2R5IEAiRnVsZmlsbCBtZSB3aXRoIDQyIgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBp
cyBzdXNwZW5kZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHJlc3VsdGluZyBwcm9taXNlIHRvIHJl
c29sdmUuCisgICAtIFlvdXIgbWVzc2FnZSBoYW5kbGVyIGlzIGludm9rZWQgd2l0aCB0aGF0IG1l
c3NhZ2UgYW5kIGEgYmxvY2sgdG8gY2FsbCB3aXRoIHRoZSByZXBseSB3aGVuIHJlYWR5LgorICAg
LSBZb3VyIG1lc3NhZ2UgaGFuZGxlciBzZW5kcyB0aGUgdmFsdWUgQDQyIGFzIGEgcmVwbHkuCisg
ICAtIFRoZSBKYXZhU2NyaXB0IHByb21pc2UgaXMgZnVsZmlsbGVkIHdpdGggdGhlIHZhbHVlIDQy
LgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250aW51ZXMgYW5kIHRoZSB2YWx1ZSA0MiBp
cyByZXR1cm5lZC4KKyAqLworLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNv
bnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRN
ZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXiko
aWQgcmVwbHksIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpKXJlcGx5SGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQGVuZAorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKaW5kZXggMjYzNzg4MDA1Njcu
Ljg5YmM1MThkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaApAQCAtMjcsNiArMjcsNiBAQAog
CiBAaW50ZXJmYWNlIFdLU2NyaXB0TWVzc2FnZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoQm9keTooaWQpYm9keSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzoo
V0tGcmFtZUluZm8gKilmcmFtZUluZm8gbmFtZTooTlNTdHJpbmcgKiluYW1lOworLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFt
ZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIuaAppbmRleCA4MjlhMDU3MzM3ZC4uZjQzZjJlNjJmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5oCkBAIC0zMCw4ICszMCwxMCBAQAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNz
IFdLQ29udGVudFJ1bGVMaXN0OworQGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLVXNl
clNjcmlwdDsKIEBwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyOworQHByb3RvY29sIFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk7CiAKIC8qISBBIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyIG9iamVjdCBwcm92aWRlcyBhIHdheSBmb3IgSmF2YVNjcmlwdCB0byBwb3N0CiAgbWVz
c2FnZXMgdG8gYSB3ZWIgdmlldy4KQEAgLTU2LDE5ICs1OCw3NSBAQCBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclNjcmlwdHM7
CiAKIC8qISBAYWJzdHJhY3QgQWRkcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCi0gQHBhcmFt
IHNjcmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBtZXNzYWdlIGhhbmRsZXIgdG8gYWRkLgorIEBwYXJh
bSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQu
CisgQHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRk
IHRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgogIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRo
ZSBtZXNzYWdlIGhhbmRsZXIuCi0gQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0TWVzc2FnZUhh
bmRsZXIgYWRkcyBhIGZ1bmN0aW9uCi0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5h
bWU+LnBvc3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIGZvciBhbGwKLSBmcmFtZXMuCisgQGRpc2N1
c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFtZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VC
b2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGluIHRoZSBnaXZlbiBXS0NvbnRlbnRXb3Js
ZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLgorCisg
RWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkgbnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1ZSBuYW1lLgorCisgT25jZSBhbnkgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRlZCB0byBhIFdLQ29udGVudFdvcmxkIGZv
ciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRvIGFkZCBhbm90aGVyCisgc2NyaXB0IG1l
c3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdvcmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3
aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVy
LgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxpZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0
IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIgYW5kIFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHkKKyBvYmplY3RzIHdpbGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90
aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhlIHNhbWUgV0tDb250ZW50V29ybGQgd2l0
aCB0aGUgc2FtZSBuYW1lLgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdv
cmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFi
c3RyYWN0IEFkZHMgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBzY3JpcHRNZXNz
YWdlSGFuZGxlcldpdGhSZXBseSBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQuCisg
QHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRkIHRo
ZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBt
ZXNzYWdlIGhhbmRsZXIuCisgQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFt
ZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VCb2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGlu
IHRoZSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUg
YSBub24tZW1wdHkgc3RyaW5nLgorCisgRWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkg
bnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1
ZSBuYW1lLgorCisgT25jZSBhbnkgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRl
ZCB0byBhIFdLQ29udGVudFdvcmxkIGZvciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRv
IGFkZCBhbm90aGVyCisgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdv
cmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91
cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxp
ZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHkgYW5kIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIKKyBvYmplY3RzIHdp
bGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhl
IHNhbWUgV0tDb250ZW50V29ybGQgd2l0aCB0aGUgc2FtZSBuYW1lLgorCisgUmVmZXIgdG8gdGhl
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgZG9jdW1lbnRhdGlvbiBmb3IgZXhhbXBs
ZXMgb2YgaG93IGl0IGlzIG1vcmUgZmxleGlibGUgdGhhbiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
LgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OihpZCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4pc2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVw
bHkgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBBZGRzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0
byB0aGUgbWFpbiB3b3JsZCB1c2VkIGJ5IHBhZ2UgY29udGVudCBpdHNlbGYuCisgQHBhcmFtIHNj
cmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRvIGFkZC4KKyBA
cGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgorIEBkaXNjdXNzaW9u
IENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOmNvbnRlbnRXb3JsZDpuYW1lOgorIHdpdGggW1dLQ29udGVudFdvcmxkIHBh
Z2VXb3JsZF0gYXMgdGhlIGNvbnRlbnRXb3JsZCBhcmd1bWVudC4KICAqLwogLSAodm9pZClhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1l
c3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZTsKIAogLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KICBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0
aGUgbWVzc2FnZSBoYW5kbGVyIHRvIHJlbW92ZS4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBX
S0NvbnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlci4KKyAqLworLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5T
U3RyaW5nICopbmFtZSBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
Ky8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCisgQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlciB0byByZW1vdmUuCisgQGRpc2N1
c3Npb24gQ2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgcmVtb3Zl
U2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOmNvbnRlbnRXb3JsZDoKKyAgd2l0aCBbV0tDb250
ZW50V29ybGQgcGFnZVdvcmxkXSBhcyB0aGUgY29udGVudFdvcmxkIGFyZ3VtZW50LgogICovCiAt
ICh2b2lkKXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1l
OwogCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYWxsIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzIGZy
b20gYSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBXS0Nv
bnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSBhbGwgc2NyaXB0IG1lc3NhZ2UgaGFuZGxl
cnMuCisgKi8KKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRl
bnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGFsbCBhc3NvY2lhdGVkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLgorICovCistICh2b2lk
KXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVycyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IEFkZHMgYSBjb250
ZW50IHJ1bGUgbGlzdC4KICBAcGFyYW0gY29udGVudFJ1bGVMaXN0IFRoZSBjb250ZW50IHJ1bGUg
bGlzdCB0byBhZGQuCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA2ODI3YzkxNDFj
MC4uN2Y5NGE0MDU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5o
IgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgorI2ltcG9ydCAiV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oIgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLVXNlclNjcmlwdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgpAQCAtMTI1LDMxICsxMjYsOTQgQEAgcHVibGljOgogICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQogICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQogICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseShmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAotICAgIHZvaWQgZGlkUG9zdE1l
c3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorCisgICAgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZShXS1VzZXJDb250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQgPFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHk+IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQorICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQorICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQorICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdl
KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBmaW5hbAogICAgIHsKICAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZy
YW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5m
b0RhdGEpLCAmcGFnZSkpOwogICAgICAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUsIDApOwotICAgICAg
ICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2lu
aXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBmcmFtZUluZm86
ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIG1l
c3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJv
ZHkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0
KCkgbmFtZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsKICAgICAgICAgCi0g
ICAgICAgICAgICBbbV9oYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIu
Z2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKV07CisgICAgICAgICAg
ICBbKGlkPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KW1faGFuZGxlci5nZXQoKSB1c2VyQ29udGVu
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOm1l
c3NhZ2UuZ2V0KCldOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNBc3luY1JlcGx5
OworICAgIH0KKworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgRnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5SGFuZGxlcikgZmluYWwKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3N1cHBvcnRzQXN5bmNSZXBseSk7CisKKyAgICAgICAgYXV0byBm
aW5hbGl6ZXIgPSBbXShGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
Y29uc3QgU3RyaW5nJik+JiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24obnVsbHB0
ciwgIldLV2ViVmlldyBBUEkgY2xpZW50IGRpZCBub3QgcmVzcG9uZCB0byB0aGlzIHBvc3RNZXNz
YWdlIl9zKTsKKyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBhdXRvIGhhbmRsZXIgPSBDb21w
bGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPihXVEZNb3ZlKHJlcGx5SGFuZGxlciksIFdURk1vdmUoZmluYWxp
emVyKSk7CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBSZXRhaW5Q
dHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCAmcGFnZSkpOworICAgICAgICAgICAgaWQgYm9keSA9
IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIDApOworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0
TWVzc2FnZSBhbGxvY10gX2luaXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94
eShwYWdlKSBmcmFtZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxk
OndyYXBwZXIod29ybGQpXSk7CisKKyAgICAgICAgICAgIFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseT4pbV9oYW5kbGVyLmdldCgpIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2Nv
bnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKSByZXBs
eUhhbmRsZXI6XihpZCByZXN1bHQsIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIo
bnVsbHB0ciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0g
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChyZXN1bHQpOwor
ICAgICAgICAgICAgICAgIGlmICghc2VyaWFsaXplZFZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZXIobnVsbHB0ciwgIlRoZSByZXN1bHQgdmFsdWUgcGFzc2VkIGJhY2sgZnJvbSB0
aGUgV0tXZWJWaWV3IEFQSSBjbGllbnQgd2FzIHVuYWJsZSB0byBiZSBzZXJpYWxpemVkIl9zKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGhhbmRsZXIoc2VyaWFsaXplZFZhbHVlLmdldCgpLCB7IH0pOworICAgICAgICAg
ICAgfV07CiAgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPGlkIDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9oYW5kbGVyOworICAgIFJldGFpblB0cjxpZD4gbV9oYW5k
bGVyOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9uYW1lOworICAgIGJvb2wgbV9zdXBwb3J0
c0FzeW5jUmVwbHk7CiB9OwogCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXIKK3sKKyAg
ICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKHNjcmlwdE1lc3NhZ2VIYW5kbGVyKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMu
IiwgKE5TU3RyaW5nICopc2NyaXB0TWVzc2FnZUhhbmRsZXIubmFtZSgpXTsKK30KKwogLSAodm9p
ZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNj
cmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewogICAgIGF1dG8gaGFu
ZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVl
PFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVy
LCBuYW1lKSwgbmFtZSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7Ci0g
ICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKSkKLSAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNz
YWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFt
ZV07CisgICAgW3NlbGYgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCldOwor
fQorCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3Js
ZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIGF1dG8gaGFuZGxlciA9IFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwg
bmFtZSwgKndvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBbc2VsZiBfYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKV07Cit9CisKKy0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHk6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PilzY3Jp
cHRNZXNzYWdlSGFuZGxlciBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQgbmFt
ZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJE
ZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqd29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5k
bGVyLmdldCgpXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5h
bWU6KE5TU3RyaW5nICopbmFtZQpAQCAtMTU3LDYgKzIyMSwyMSBAQCAtICh2b2lkKXJlbW92ZVNj
cmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lCiAgICAgX3VzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKG5hbWUs
IEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogfQogCistICh2b2lkKXJl
bW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHktPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUobmFtZSwgKmNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0
TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50
V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJN
ZXNzYWdlSGFuZGxlcnMoKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZv
aWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzCit7CisgICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCk7Cit9CisKICNwcmFn
bWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAtIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgKaW5kZXgg
MTA4YmVlMTUzODIuLjQ3ZjdkZTAxOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlcklu
dGVybmFsLmgKQEAgLTI5LDE1ICsyOSwxOCBAQAogI2ltcG9ydCAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0KIHRlbXBsYXRlPD4gc3RydWN0
IFdyYXBwZXJUcmFpdHM8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKICAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKIH07CiAKK2NsYXNzIFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyOwogfQogCiBAaW50ZXJmYWNlIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gX3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OwogfQorCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXI7CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAppbmRleCBhYTM1MWU3N2NjZC4uZTVm
ODk2ZDliMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CiAK
K0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBXS1VzZXJTY3JpcHQ7CiBAY2xhc3MgX1dL
VXNlckNvbnRlbnRGaWx0ZXI7CiBAY2xhc3MgX1dLVXNlckNvbnRlbnRXb3JsZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAwMzQxNThi
YTIxLi42YjExYjM4NDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC04OTgsMTUgKzg5OCwxMyBAQCAtICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJP
T0wpYQogCiAgICAgZm9yIChpZCBrZXkgaW4gYXJndW1lbnRzKSB7CiAgICAgICAgIGlkIHZhbHVl
ID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZUFy
Z3VtZW50KHZhbHVlKSkgewotICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlvbiBh
cmd1bWVudCB2YWx1ZXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlcywgb3IgY29u
dGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdHlwZXM6IE5TU3RyaW5nLCBOU051bWJlciwgTlNEYXRl
LCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsKKyAgICAgICAgYXV0byBzZXJpYWxpemVkVmFs
dWUgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KHZhbHVl
KTsKKyAgICAgICAgaWYgKCFzZXJpYWxpemVkVmFsdWUpIHsKKyAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xs
b3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU051bWJl
ciwgTlNOdWxsLCBOU0RhdGUsIE5TU3RyaW5nLCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgCi0gICAgICAgIGF1dG8gd2lyZUJ5
dGVzID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCh2
YWx1ZSk7Ci0gICAgICAgIC8vIFNpbmNlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgaW5wdXQgZGljdGlv
bmFyeSBhYm92ZSwgd2Ugc2hvdWxkIG5ldmVyIGZhaWwgdG8gc2VyaWFsaXplIGl0IGludG8gd2ly
ZSBieXRlcy4KLSAgICAgICAgQVNTRVJUKHdpcmVCeXRlcyk7Ci0gICAgICAgIGFyZ3VtZW50c01h
cC0+c2V0KGtleSwgKndpcmVCeXRlcyk7CisKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5
LCBzZXJpYWxpemVkVmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygp
KTsKICAgICB9CiAKICAgICBpZiAoZXJyb3JNZXNzYWdlICYmIGhhbmRsZXIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwCmluZGV4IDdjNDMyMzA0ZjUyLi5kYTEyOWUzYjhiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuY3BwCkBAIC0xOTAsMTMgKzE5MCwyMiBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZy
YW1lSW5mb0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGpzUmVzdWx0ID0gd2Via2l0SmF2YXNjcmlwdFJlc3Vs
dENyZWF0ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgICAgICBnX3NpZ25hbF9lbWl0KG1f
bWFuYWdlciwgc2lnbmFsc1tTQ1JJUFRfTUVTU0FHRV9SRUNFSVZFRF0sIG1faGFuZGxlck5hbWUs
IGpzUmVzdWx0KTsKICAgICAgICAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKGpzUmVz
dWx0KTsKICAgICB9CiAKKyAgICBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQ
STo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+
JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KKyAgICAKICAgICB2aXJ0dWFsIH5TY3JpcHRNZXNz
YWdlQ2xpZW50R3RrKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaApp
bmRleCBhZmFjYmIwNzFmMS4uMmY2MTRiMjNhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIu
aApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgQ29udGVudFdvcmxkOworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUyLDcgKzUzLDkgQEAgcHVibGljOgog
ICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQo
KSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYs
IEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiwgRnJhbWVJ
bmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoV2Vi
UGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHN0
YXRpYyBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8
Q2xpZW50PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDdkZDhlYjk5MzE3Li5iNjIw
ZmEwNjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAt
MzE2LDcgKzMxNiw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nCiB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29u
dGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVy
KCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJz
Rm9yV29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAg
dW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMu
cmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7CkBAIC0zMjgsNyArMzI4LDEzIEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMo
QVBJOjpDb250ZW50V29yCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKQoreworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycygpLCBpZGVu
dGlmaWVyKCkpOworfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQ
b3N0TWVzc2FnZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlOjpBc3luY1JlcGx5JiYgcmVwbHkpCiB7CiAg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VQcm94
eUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNDEsNyArMzQ3LDIxIEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwKICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhhbmRs
ZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpwYWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEp
LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFSZWZlcmVuY2UudmVj
dG9yKCkpKTsKKyAgICBpZiAoIWhhbmRsZXItPmNsaWVudCgpLnN1cHBvcnRzQXN5bmNSZXBseSgp
KSB7CisgICAgICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpwYWdlLCBXVEZN
b3ZlKGZyYW1lSW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAgV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3RvcigpKSk7CisgICAgICAgIHJl
cGx5KHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGhhbmRsZXItPmNs
aWVudCgpLmRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoKnBhZ2UsIFdURk1vdmUoZnJhbWVJ
bmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmFkb3B0KGRhdGFSZWZlcmVuY2UudmVjdG9yKCkpLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgICAgICAgICByZXBseSh7IHZhbHVlLT5p
bnRlcm5hbFJlcHJlc2VudGF0aW9uKCkudG9XaXJlQnl0ZXMoKSB9LCB7IH0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcmVwbHkoeyB9LCBlcnJvck1lc3NhZ2Up
OworICAgIH0pOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDJjMDk0Mjg1MGI0Li4xMjlhMzQwZjA4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC05OCw2ICs5OSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlciYpOwogICAgIHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShj
b25zdCBTdHJpbmcmLCBBUEk6OkNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNl
ck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3JsZCYpOworICAgIHZvaWQgcmVtb3ZlQWxs
VXNlck1lc3NhZ2VIYW5kbGVycygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ICAgICB2b2lkIGFkZE5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKQEAgLTEx
OCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3QgbWVzc2FnZUhh
bmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRQb3N0TWVz
c2FnZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG1l
c3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2U6OkFzeW5jUmVwbHkmJik7
CiAKICAgICB2b2lkIGFkZENvbnRlbnRXb3JsZChBUEk6OkNvbnRlbnRXb3JsZCYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDhkMjAwYTFlNmU5Li5mZDk1ZjJmNWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDUgKzI0LDUgQEAKICAqLwogCiBt
ZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB7Ci1EaWRQb3N0TWVzc2Fn
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIElQ
Qzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rpb24KK0RpZFBvc3RNZXNzYWdl
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBD
OjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0VmFs
dWUsIFN0cmluZyBlcnJvck1lc3NhZ2UpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZTQ3YjZlOTJmMC4uZTNkYjU0MDlh
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTczLDYgKzk3Myw3IEBACiAJCTUxMDUyMzc0MUM3M0QzOEIwMDc5OTNDQiAvKiBXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNTIzNzMxQzczRDM3QjAwNzk5M0NCIC8qIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmggKi87IH07CiAJCTUxMDUyMzc1MUM3M0QzOEYwMDc5
OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNTIzNzIxQzczRDM3
QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTUxMDZEN0M0MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2
RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oICovOyB9Owor
CQk1MTA5MDk5NzIzREFDQkYyMDAzQjFFNEMgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhS
ZXBseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
OTA5OTQyM0Q0MUYxMzAwM0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTUxMEFG
RkJBMTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQUZGQjgxNjU0MjA0ODAwMUJBMDVF
IC8qIFdlYlJlc291cmNlTG9hZGVyLmggKi87IH07CiAJCTUxMEY1OTEwMURERTI5NjkwMDQxMkZG
NSAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQzQjI1RTFERENERkQxMDAxNEZBQzYgLyogX1dLSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxMEY1OTExMURERTI5NzAwMDQxMkZGNSAvKiBfV0tMaW5rSWNvblBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBD
OTc5MURERDc4NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzU5Nyw2ICszNTk4LDcg
QEAKIAkJNTEwNUIwRjMxNjMwODcyRTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNkQ3QkYxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRN
ZW51Q29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4dERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwOTA5OTQyM0Q0MUYxMzAwM0IxRTRDIC8q
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTBBRkZCNzE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUmVz
b3VyY2VMb2FkZXIuY3BwOyBwYXRoID0gTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEFGRkI4MTY1NDIwNDgwMDFCQTA1RSAvKiBX
ZWJSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJS
ZXNvdXJjZUxvYWRlci5oOyBwYXRoID0gTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBRkZDRTE2NTQyQ0JEMDAxQkEwNUUgLyogV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkZXIubWVzc2Fn
ZXMuaW47IHBhdGggPSBOZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM5Miw2ICs3Mzk0LDcgQEAKIAkJCQkxQTdFMzc3
NzE4RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLmggKi8sCiAJCQkJMUE3RTM3NzYx
OEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5tbSAqLywKIAkJCQkxQTdFMzc3NDE4
RTRBMzNBMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oICovLAorCQkJCTUxMDkw
OTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Lmgg
Ki8sCiAJCQkJN0NDOTlBMzUxOEVGN0NCQzAwNDhDOEI0IC8qIFdLU2NyaXB0TWVzc2FnZUludGVy
bmFsLmggKi8sCiAJCQkJNTFDRDFDNUYxQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmln
aW4uaCAqLywKIAkJCQk1MUNEMUM2MDFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdp
bi5tbSAqLywKQEAgLTExMzE4LDYgKzExMzIxLDcgQEAKIAkJCQlCQ0VFN0FEMTEyODE3OTg4MDA5
ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RTBFNDI1MTY4QjdBMjgwMDU3RTY2QSAvKiBXZWJQcm9jZXNzU3VwcGxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUExRTA5MzQxODg2MUQzODAwRDJEQzQ5IC8qIFdlYlByb2dyZXNzVHJhY2tl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwOTA5OTcyM0RBQ0JGMjAwM0IxRTRDIC8q
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
MkY1ODlEMTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2MUNDQ0E2MjMxNDg1QUEwMEI2NTlCOSAvKiBXZWJSZW1vdGVPYmplY3RSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDQxNTBDMzUwNjAwRTUyQ0U5IC8qIFdl
YlJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAKaW5kZXggZjVjODdjMDJiZDYuLjA0MjlkYWQ2YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgLy8gV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcgotICAgIHZvaWQgZGlk
UG9zdE1lc3NhZ2UoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyLCBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2UoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyLCBXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJy
aWRlCiAgICAgewogICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBoYW5kbGVyLmZyYW1l
KCk7CiAgICAgICAgIGlmICghZnJhbWUpCkBAIC0yNjgsNyArMjY4LDE3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFn
ZS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lkZW50aWZp
ZXIsIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJvbGxlci0+aWRl
bnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZXNzYWdlUmVwbHlIYW5kbGVyID0gW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdWx0VmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CisgICAg
ICAgICAgICBpZiAoIWVycm9yTWVzc2FnZS5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIHZhbHVlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHJlc3VsdFZhbHVlLnZlY3Rvcigp
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHZhbHVlLnB0cigpLCB7IH0pOworICAg
ICAgICB9OworCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50
aWZpZXIoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UodmFsdWUtPmRhdGEoKSkpLCBXVEZNb3ZlKG1lc3NhZ2VSZXBseUhhbmRsZXIpLCBtX2NvbnRy
b2xsZXItPmlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwpAQCAtMzA5LDcgKzMxOSwxOCBAQCB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKENvbnRl
bnRXb3JsZElkZW50aQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpyZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3RvcjxDb250ZW50
V29ybGRJZGVudGlmaWVyPiYgd29ybGRJZGVudGlmaWVycykKK3ZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKCkKK3sKKyNpZiBF
TkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorICAgIGlmIChtX3VzZXJNZXNzYWdlSGFuZGxl
cnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3VzZXJNZXNzYWdlSGFuZGxl
cnMuY2xlYXIoKTsKKyAgICBpbnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFVzZXJNZXNzYWdlSGFuZGxl
ckludmFsaWRhdGlvbkNsaWVudHMoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxkcyhj
b25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mIHdvcmxkSWRlbnRpZmllcnMpCiB7
CiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICAgICBib29sIHVzZXJNZXNzYWdl
SGFuZGxlcnNDaGFuZ2VkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5k
ZXggZTkwMjYwNzdlOTMuLmNlOTBhOWQ5M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5oCkBAIC0xMDAsNyArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mKTsKIAogICAg
IHZvaWQgcmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKENvbnRlbnRXb3JsZElkZW50aWZp
ZXIsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlbW92ZUFsbFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZp
ZXI+Jik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzRm9yV29y
bGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYpOworICAgIHZvaWQgcmVt
b3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKICAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcm
IG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4K
aW5kZXggNWFkY2QwODBlOTEuLjJhYjIzMjRiYjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3LDggQEAgbWVzc2FnZXMgLT4g
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyIHsKIAogICAgIEFkZFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcnMoVmVjdG9yPHN0cnVjdCBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4g
c2NyaXB0TWVzc2FnZUhhbmRsZXJzKTsKICAgICBSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllciwgdWludDY0
X3QgaWRlbnRpZmllcik7Ci0gICAgUmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhW
ZWN0b3I8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXJzKTsK
KyAgICBSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzRm9yV29ybGRzKFZlY3RvcjxX
ZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcnMpOworICAgIFJl
bW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoKTsKIAogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCiAgICAgQWRkQ29udGVudFJ1bGVMaXN0cyhWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50Rmls
dGVycyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNWI4YzQyNWRiZWMuLmZjZjc2Yzc0OGJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDQtMTggIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNl
LgorICAgICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9V
c2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKHdlYlZp
ZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KToKKyAg
ICAgICAgKC1bQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6
ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6cmVwbHlIYW5kbGVyOl0pOgorCiAyMDIwLTA0LTE3ICBL
YXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJs
ZSBzZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCmluZGV4IDRhYjk5NDMyYTg3Li42N2JmYmQ1M2M5NiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVu
dENvbnRyb2xsZXIubW0KQEAgLTMwLDcgKzMwLDEwIEBACiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1NjcmlwdE1l
c3NhZ2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tVc2VyU2NyaXB0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyU2Ny
aXB0UHJpdmF0ZS5oPgpAQCAtNzQsNiArNzcsOSBAQCBAZW5kCiAKIFRFU1QoV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQogeworICAgIHNjcmlw
dE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisK
ICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtb
U2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAi
dGVzdEhhbmRsZXIiXTsKQEAgLTk1LDYgKzEwMSw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRy
b2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQogCiBURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVkV29ybGQp
CiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9
IFtfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKIAogICAg
IFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3Jp
cHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwpAQCAtMTQ0LDYgKzE1Myw5IEBAIFRFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0SXNv
bGF0ZWRXb3JsZCkKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJCYXNpY1JlbW92ZSkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOworICAg
IHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNjcmlwdE1l
c3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gdXNlckNvbnRlbnRDb250
cm9sbGVyID0gW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXTsKQEAgLTE4OCw2
ICsyMDAsOCBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFu
ZGxlckJhc2ljUmVtb3ZlKQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRN
ZXNzYWdlSGFuZGxlckNhbGxSZW1vdmVkSGFuZGxlcikKIHsKKyAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFu
ZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8
V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IFtjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC0yMDUsMjIgKzIxOSwyMyBAQCBURVNU
KFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckNhbGxSZW1vdmVk
SGFuZGxlcikKIAogICAgIFt1c2VyQ29udGVudENvbnRyb2xsZXIgcmVtb3ZlU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CiAKKyAgICBfX2Jsb2NrIGJvb2wg
ZG9uZSA9IGZhbHNlOwogICAgIC8vIFRlc3QgdGhhdCB3ZSB0aHJvdyBhbiBleGNlcHRpb24gaWYg
eW91IHRyeSB0byB1c2UgYSBtZXNzYWdlIGhhbmRsZXIgdGhhdCBoYXMgYmVlbiByZW1vdmVkLgot
ICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDoKLSAgICAgICAgQCJ0cnkgeyIKLSAgICAg
ICAgICIgICAgaGFuZGxlclRvUmVtb3ZlLnBvc3RNZXNzYWdlKCdGQUlMJyk7IgotICAgICAgICAg
In0gY2F0Y2ggKGUpIHsiCi0gICAgICAgICAiICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLmhhbmRsZXJUb1Bvc3QucG9zdE1lc3NhZ2UoJ1BBU1MnKTsiCi0gICAgICAgICAifSIgY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAi
cmV0dXJuIGhhbmRsZXJUb1JlbW92ZS5wb3N0TWVzc2FnZSgnRkFJTCcpIiBhcmd1bWVudHM6bmls
IGluQ29udGVudFdvcmxkOltXS0NvbnRlbnRXb3JsZCBwYWdlV29ybGRdIGNvbXBsZXRpb25IYW5k
bGVyOl4gKGlkIHZhbHVlLCBOU0Vycm9yICogZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
dmFsdWUpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1Rf
VFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIkludmFsaWRBY2Nlc3NF
cnJvciJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CiAKLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsK
LQotICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2Fn
ZXNbMF0gYm9keV0pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlld0Zv
clNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbFRlc3QoV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKIHsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxl
ciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFJl
dGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uQ29weSA9IGFkb3B0
TlMoW2NvbmZpZ3VyYXRpb24gY29weV0pOwogICAgIFtjb25maWd1cmF0aW9uQ29weSBzZXRVc2Vy
Q29udGVudENvbnRyb2xsZXI6W1tbV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXV07CkBAIC0yMzYsNiArMjUxLDkgQEAgc3RhdGljIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92
YWwKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJN
dWx0aXBsZUhhbmRsZXJSZW1vdmFsKQogeworICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7Cisg
ICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPF9XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNl
dFByb2Nlc3NQb29sOltbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOwpAQCAtMjYy
LDYgKzI4MCw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VI
YW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbCkKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkg
Ly8gRklYTUU6IGhhbmdzIGluIHRoZSBpT1Mgc2ltdWxhdG9yCiBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQogeworICAgIHNj
cmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
CisKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1l
OkAidGVzdEhhbmRsZXIiXTsKQEAgLTI5Myw2ICszMTQsOSBAQCBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQogCiBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlclJlcGxhY2VXaXRoU2Ft
ZU5hbWUpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlw
dE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4g
aGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5Q
dHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IFtjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC04MzMsNiArODU3LDkgQEAgc3Rh
dGljIHZvaWQgY29tcGFyZU1lc3NhZ2VzKFZlY3Rvcjxjb25zdCBjaGFyKj4mJiBleHBlY3RlZE1l
c3NhZ2VzKQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBJbmplY3RVc2VyU2NyaXB0
SW1tZWRpYXRlbHkpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tT
Y3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gc3RhcnRBbGxGcmFt
ZXMgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdzdGFydCBh
bGwnKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0
YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKICAgICBhdXRvIGVuZE1haW5GcmFtZU9ubHkgPSBh
ZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlbmQgbWFpbicpIiBp
bmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1h
aW5GcmFtZU9ubHk6WUVTXSk7CkBAIC05MDIsMyArOTI5LDI3NCBAQCBURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQogICAgIEVYUEVDVF9XS19TVFJF
UShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndhaXRlZCBmb3Igbm90aWZpY2F0aW9uIik7CiAg
ICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAiZG9jdW1lbnQgcGFy
c2luZyBlbmRlZCIpOwogfQorCitAaW50ZXJmYWNlIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIg
OiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4KK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIKKworLSAodm9pZCl1c2VyQ29u
dGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250
cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdl
IHJlcGx5SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpKXJlcGx5
SGFuZGxlcgoreworICAgIGlmIChbbWVzc2FnZS5uYW1lIGlzRXF1YWxUb1N0cmluZzpAIm90aGVy
V29ybGRIYW5kbGVyIl0pCisgICAgICAgIEVYUEVDVF9UUlVFKG1lc3NhZ2Uud29ybGQgIT0gbmls
KTsKKyAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KSB7CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIkZ1bGZpbGwi
XSkgeworICAgICAgICAgICAgcmVwbHlIYW5kbGVyKEAiRnVsZmlsbGVkISIsIG5pbCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNF
cXVhbFRvU3RyaW5nOkAiUmVqZWN0Il0pIHsKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihuaWws
IEAiUmVqZWN0ZWQhIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
aWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiVW5kZWZpbmVkIl0pIHsKKyAgICAg
ICAgICAgIHJlcGx5SGFuZGxlcihuaWwsIG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiRG8gbm90
aGluZyJdKSB7CisgICAgICAgICAgICAvLyBEcm9wIHRoZSByZXBseSBoYW5kbGVyIHdpdGhvdXQg
cmVzcG9uZGluZyB0byBzZWUgd2hhdCBoYXBwZW5zCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiSW52YWxp
ZCByZXBseSJdKSB7CisgICAgICAgICAgICByZXBseUhhbmRsZXIoW1tbTlNEYXRhIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV0sIG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBBbGwgb3RoZXIgaW5wdXRzIHNob3VsZCBqdXN0IGJlIHJvdW5kIHRy
aXBwZWQgYmFjayB0byB0aGUgbWVzc2FnZSBoYW5kbGVyCisgICAgcmVwbHlIYW5kbGVyKG1lc3Nh
Z2UuYm9keSwgbmlsKTsKK30KKworQGVuZAorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVy
LCBNZXNzYWdlSGFuZGxlckFQSSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0FzeW5jU2NyaXB0TWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdl
dCgpIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgbmFtZTpAInRlc3RIYW5k
bGVyMSJdOworCisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBAdHJ5IHsKKyAg
ICAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250ZW50
V29ybGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjEiXTsKKyAgICB9IEBjYXRjaCAoTlNF
eGNlcHRpb24gKmV4Y2VwdGlvbikgeworICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOworICAg
IH0KKworICAgIEVYUEVDVF9UUlVFKGhhZEV4Y2VwdGlvbik7CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6
aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdv
cmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjIiXTsKKworICAgIGF1dG8gKndvcmxkID0gW1dLQ29udGVu
dFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJvdGhlcldvcmxkIl07CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6
aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29ybGQgbmFtZTpAInRlc3RIYW5kbGVyMyJdOwor
ICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOndvcmxkIG5hbWU6
QCJ0ZXN0SGFuZGxlcjQiXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRl
bnRXb3JsZDp3b3JsZCBuYW1lOkAidGVzdEhhbmRsZXI1Il07CisKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKwor
ICAgIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TU3RyaW5nICpmdW5jdGlvbkJvZHkgPSBAInZh
ciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbaGFuZGxlcl0ucG9zdE1lc3NhZ2Uo
YXJnKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKworICAgIC8vIHBhZ2VXb3JsZCBpcyB3aGVyZSB0
ZXN0aGFuZGxlcjEgbGl2ZXMKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0
aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXIxIiwgQCJhcmci
IDogQDEgfSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlv
bkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1i
ZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBUcnlpbmcg
dG8gZmluZCB0ZXN0SGFuZGxlcjEgaW4gdGhlIGRlZmF1bHRDbGllbnRXb3JsZCBzaG91bGQgZmFp
bAorICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50
czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjEiLCBAImFyZyIgOiBAMSB9IGluQ29udGVu
dFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
cmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAg
ICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBkZWZhdWx0Q2xpZW50V29ybGQgaXMgd2hlcmUgdGVz
dGhhbmRsZXIyIGxpdmVzCisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlv
bkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMiIsIEAiYXJnIiA6
IEAxIH0gaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVh
bFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8g
QnV0IGlmIHdlIHJlbXZvZSBpdCwgaXQgc2hvdWxkIG5vIGxvbmdlciBsaXZlIHRoZXJlLCBhbmQg
dXNpbmcgaXQgc2hvdWxkIGNhdXNlIGFuIGVycm9yLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAInRl
c3RIYW5kbGVyMiIgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3Js
ZF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1l
bnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMiIsIEAiYXJnIiA6IEAxIH0gaW5Db250
ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlmeSBoYW5kbGVycyAzLCA0LCBhbmQgNSBh
cmUgYWxsIGluIHRoZSBjdXN0b20gd29ybGQuCisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNj
cmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVy
MyIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6
WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsK
KyAgICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBh
cmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBp
bkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgIH1dOworICAgIFt3ZWJW
aWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRs
ZXIiIDogQCJ0ZXN0SGFuZGxlcjUiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNF
cXVhbFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAg
Ly8gUmVtb3ZlIDMgZnJvbSB0aGUgd3Jvbmcgd29ybGQsIHZlcmlmeSBpdCBpcyBzdGlsbCB0aGVy
ZSBpbiB0aGUgY3VzdG9tIHdvcmxkLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAInRlc3RIYW5kbGVy
MyIgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZF07CisgICAg
W3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAi
aGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMyIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6
d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3Vs
dCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisK
KyAgICAvLyBSZW1vdmUgMyBmcm9tIHRoZSBjb3JyZWN0IHdvcmxkLCB2ZXJpZnkgaXQgaXMgZ29u
ZSwgYnV0IDQgYW5kIDUgYXJlIHN0aWxsIHRoZXJlLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAInRl
c3RIYW5kbGVyMyIgY29udGVudFdvcmxkOndvcmxkXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNK
YXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhh
bmRsZXIzIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICB9XTsKKyAg
ICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsg
QCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3Js
ZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVz
dWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgIH1dOworICAgIFt3ZWJWaWV3IGNhbGxBc3lu
Y0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0
SGFuZGxlcjUiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVy
OkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gUmVtb3ZlICJh
bGwiIGluIHRoZSBjdXN0b20gd29ybGQsIHZlcmlmeSA0IGFuZCA1IGFyZSBub3cgZ29uZS4KKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVBbGxTY3JpcHRN
ZXNzYWdlSGFuZGxlcnNGcm9tQ29udGVudFdvcmxkOndvcmxkXTsKKyAgICBbd2ViVmlldyBjYWxs
QXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAi
dGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0
aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICB9
XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVu
dHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI1IiwgQCJhcmciIDogQDEgfSBpbkNvbnRl
bnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05P
VF9OVUxMKGVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7Cit9CisKK1RFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Bv
c3QpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6
V0tDb250ZW50V29ybGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBOU1N0cmluZyAqZnVuY3Rpb25C
b2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKCdGdWxmaWxsJyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dlYlZp
ZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRl
bnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChp
ZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJGdWxm
aWxsZWQhIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgZnVuY3Rp
b25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5k
bGVyLnBvc3RNZXNzYWdlKCdSZWplY3QnKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKyAgICBbd2Vi
VmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluQ29u
dGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0g
KGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtb
ZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAiUmVqZWN0ZWQhIl0pOworICAgICAg
ICAKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9
IEAidmFyIHAgPSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZSgnVW5kZWZpbmVkJyk7IHZhciByZXN1bHQgPSBhd2FpdCBwOyByZXR1cm4gcmVzdWx0
ID09IHVuZGVmaW5lZCA/ICdZZXMnIDogJ05vJyI7CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2
YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRl
bnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJy
b3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJZZXMiXSk7CisKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRG8g
bm90aGluZycpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0ph
dmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250
ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vy
cm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBF
Q1RfVFJVRSghIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlv
bl0gY29udGFpbnNTdHJpbmc6QCJkaWQgbm90IHJlc3BvbmQgdG8gdGhpcyBwb3N0TWVzc2FnZSJd
KTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgZnVuY3Rpb25Cb2R5
ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBv
c3RNZXNzYWdlKCdJbnZhbGlkIHJlcGx5Jyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dl
YlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNv
bnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZd
IChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7CisgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShb
W2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAInVuYWJsZSB0byBiZSBzZXJpYWxp
emVkIl0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxl
ciwgV29ybGRMaWZldGltZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0FzeW5jU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKworICAgIFJldGFpblB0cjxXS0NvbnRlbnRXb3JsZD4g
d29ybGQgPSBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIm90aGVyV29ybGQiXTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKSBu
YW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIC8vIFNldCBhIHZhcmlh
YmxlIGluIHRoZSB3b3JsZC4KKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBl
dmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZm9vID0gJ2JhciciIGluQ29udGVudFdvcmxkOndvcmxk
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZh
bHNlOworCisgICAgLy8gSGF2ZSB0aGUgbWVzc2FnZSBoYW5kbGVyIGJvdW5jZSBiYWNrIHRoYXQg
dmFsdWUuCisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShmb28pOyBhd2FpdCBw
OyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25C
b2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6d29ybGQuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9O
VUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9T
dHJpbmc6QCJiYXIiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8g
UmVtb3ZlIHRoZSBtZXNzYWdlIGhhbmRsZXIsIHdoaWNoIHVzZWQgdG8gY2F1c2UgdGhlIHdvcmxk
IHRvIGJlIGRlc3Ryb3llZCBpbiB0aGUgd2ViIHByb2Nlc3MuCisgICAgLy8gQnV0IGJ5IGV2YWx1
YXRpbmcgSlMgbWFrZSBzdXJlIHRoZSB2YWx1ZSBpcyBzdGlsbCB0aGVyZS4KKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFu
ZGxlcnNGcm9tQ29udGVudFdvcmxkOndvcmxkLmdldCgpXTsKKyAgICBbd2ViVmlldyBldmFsdWF0
ZUphdmFTY3JpcHQ6QCJmb28iIGluQ29udGVudFdvcmxkOndvcmxkLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRv
U3RyaW5nOkAiYmFyIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396914</attachid>
            <date>2020-04-19 09:27:40 -0700</date>
            <delta_ts>2020-04-19 09:45:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>77665</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGJmMTk3OGI1YjMuLjMxMmNiODJkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3
aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KTog
QWRkIGEgdmFyaWFudCBvZiBDb21wbGV0aW9uSGFuZGxlciB0aGF0IGFsbG93cyBmb3IgYSBGaW5h
bGl6ZXIgZnVuY3Rpb24KKyAgICAgICAgICB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENvbXBs
ZXRpb24gZnVuY3Rpb24gaGFzbid0IGJlZW4gY2FsbGVkIGF0IGRlc3RydWN0aW9uIHRpbWUuCisK
IDIwMjAtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV1RGXSBNb3ZlIERhdGFSZWYuaCBmcm9tIFdlYkNvcmUgdG8gV1RGIHRvIHV0aWxpemUgaXQg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oIGIv
U291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAppbmRleCA5MzhiNDk2NmYwOC4uOGM5
OGRmZTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtNjksNiArNjksNDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gV3JhcHMgYSBGdW5jdGlvbiB0byBtYWtlIHN1
cmUgaXQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKy8vIElmIHRoZSBDb21wbGV0aW9uSGFuZGxl
cldpdGhGaW5hbGl6ZXIgaXMgZGVzdHJveWVkIGFuZCB0aGUgZnVuY3Rpb24gaGFzbid0IHlldCBi
ZWVuIGNhbGxlZCwKKy8vIHRoZSBmaW5hbGl6ZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlv
biBhcyBpdHMgYXJndW1lbnQuCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhh
bmRsZXJXaXRoRmluYWxpemVyOwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4g
SW4+CitjbGFzcyBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KEluLi4uKT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29t
cGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlLCBGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPE91dChJbi4uLik+Jik+JiYgZmluYWxpemVyKQorICAgICAgICA6
IG1fZnVuY3Rpb24oV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgICwgbV9maW5hbGl6ZXIoV1RG
TW92ZShmaW5hbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXIoQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyJiYpID0gZGVmYXVsdDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXImIG9wZXJhdG9yPShDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25IYW5k
bGVyV2l0aEZpbmFsaXplcigpCisgICAgeworICAgICAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9maW5hbGl6ZXIobV9mdW5jdGlvbik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5j
dGlvbjsgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBB
U1NFUlQobV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZCA9PSBpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxl
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Z1bmN0aW9uLCBudWxscHRyKShzdGQ6OmZvcndhcmQ8SW4+KGluKS4u
Lik7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjxPdXQoSW4uLi4pPiYpPiBtX2ZpbmFsaXpl
cjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRo
cmVhZCB7IGlzTWFpblRocmVhZCgpIH07CisjZW5kaWYKK307CisKIG5hbWVzcGFjZSBEZXRhaWwg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgpAQCAtMTE1LDMgKzE1
OCw0IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlOwordXNpbmcgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q1YjNlOTVhNDYuLjFiNGZjZWZj
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdl
SGFuZGxlcjo6cG9zdE1lc3NhZ2UpOiBSZXR1cm4gYSBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBi
eSB0aGUgQVBJIGNsaWVudC4KKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKwogMjAyMC0wNC0xOCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZHVjZSBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
RnJhbWVMb2FkUmVxdWVzdCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuY3BwCmluZGV4IGIwN2RiOGI2YjE0Li5jZjgyYWYzYjY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMjksNyArMjksOSBAQAog
I2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE0ICs0MywyOSBAQCBVc2VyTWVzc2FnZUhhbmRs
ZXI6OlVzZXJNZXNzYWdlSGFuZGxlcihGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0bwogCiBVc2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRl
ZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3Nh
Z2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiB2YWx1ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVzY3JpcHRvciBoYXMgYmVlbiByZW1vdmVkLiBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaGFzCiAgICAgLy8gcmVtb3ZlZCB0
aGUgbmFtZWQgbWVzc2FnZSBoYW5kbGVyIGF0IHRoZSBXZWJLaXQyIEFQSSBsZXZlbC4KLSAgICBp
ZiAoIW1fZGVzY3JpcHRvcikKKyAgICBpZiAoIW1fZGVzY3JpcHRvcikgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH0pOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgfQogCi0gICAgbV9k
ZXNjcmlwdG9yLT5kaWRQb3N0TWVzc2FnZSgqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgIG1fZGVz
Y3JpcHRvci0+ZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdldCgpLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwcm9taXNl
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KEpTQzo6Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBl
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChyZXN1bHQpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4ocmVzdWx0
LT5kZXNlcmlhbGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKKyAgICB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aAppbmRleCA5NGFmZmI1MGM5Yy4uOTEyMjc5YWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKKwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVc2VyTWVzc2FnZUhh
bmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0KICAgICB2b2lkIGludmFs
aWRhdGVEZXNjcmlwdG9yKCkgeyBtX2Rlc2NyaXB0b3IgPSBudWxscHRyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKaW5kZXggNzc2YzE4MjRiNmEuLjMyZGIy
OGVjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCkBA
IC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJT
CiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNj
cmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggNDVlMTU1N2UwNmIuLmQyZjY1MzU3MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShVc2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlNTQ5MDJhZjc5Ny4uNGMyMDc1MDBhMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJv
bm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAgICAgICByZGFyOi8vcHJvYmxlbS81
NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgQ2hhbmdlIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBvc3RNZXNzYWdlKCkgdG8g
cmV0dXJuIGEgcHJvbWlzZSBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4KKyAgICAgICAgCisgICAgICAg
IEFsbG93IGZvciB0aGF0IHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgYnkgYW4gYXN5bmNocm9ub3Vz
IHJlcGx5IGJsb2NrIHVwIGluIHRoZSBBUEkgY2xpZW50LgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBsaWtlIHRoZSBvcHBvc2l0ZSB2ZXJzaW9uIG9mIFtXS1dlYlZpZXcgY2FsbEFzeW5jRnVu
Y3Rpb246XQorICAgICAgICAKKyAgICAgICAgQW5kIHdoaWxlIHdlJ3JlIGFkZGluZyBhIG5ldyBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVyIHZhcmlhbnQsIHdlJ3JlIGFkZGluZyBpdCBzYW5kYm94ZWQg
YnkgV0tDb250ZW50V29ybGQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ29jb2EubW06CisgICAgICAgIChBUEk6OnZhbGlkYXRlT2JqZWN0KToKKyAg
ICAgICAgKEFQSTo6Y29yZVZhbHVlRnJvbU5TT2JqZWN0KToKKyAgICAgICAgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tTlNPYmplY3QpOgorICAgICAgICAoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oOiBOb3cgdGhhdCBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVycyBjYW4gYmUgcGVyLXdvcmxkLCBtZXNzYWdlcworICAgICAg
ICAgIGRlY2xhcmUgd2hpY2ggd29ybGQgdGhleSB3ZXJlIHBvc3RlZCBmcm9tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tOgorICAgICAgICAoLVtXS1Nj
cmlwdE1lc3NhZ2UgX2luaXRXaXRoQm9keTp3ZWJWaWV3OmZyYW1lSW5mbzpuYW1lOndvcmxkOl0p
OgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2Ugd29ybGRdKToKKyAgICAgICAgKC1bV0tTY3Jp
cHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpmcmFtZUluZm86bmFtZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFs
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRs
ZXJXaXRoUmVwbHkuaDogQWRkZWQuCisgICAgICAgICAgRGVjbGFyZSB0aGUgbmV3IHByb3RvY29s
IGZvciBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgdGhhdCBjYW4gcmVwbHkgdG8gbWVzc2FnZXMg
YXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
X2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpjb250ZW50V29ybGQ6
bmFtZTpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHk6Y29udGVudFdvcmxkOm5hbWU6XSk6CisgICAgICAgICgtW1dL
VXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpj
b250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92
ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6XSk6CisgICAgICAgICgt
W1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJ
bnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3lu
Y0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZyYW1lOmluV29ybGQ6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICAgVXBkYXRlIGZvciBuZXcgc2hhcmVkIEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxs
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxk
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNC0xOCAgUGFibG8gU2FhdmVkcmEgIDxw
c2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJlcGxhY2UgZXZpbCBz
dHJ0b2soKSBjYWxscyB3aXRoIGZzY2FuZigpIGluIE1lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCAxZjQzZTYzYzYxMS4uNmZlODU3NmFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JK
Q19fKQogICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IHdpcmVCeXRlc0Zyb21OU09iamVjdChpZCk7CisgICAgc3RhdGljIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21OU09iamVjdChpZCk7CiAjZW5kaWYK
IAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNvY29hLm1tCmluZGV4IDY2ZThiMjdhMDlhLi43MzEwZjVlMWYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJp
YWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAtODAsMjAgKzgwLDY0IEBAIGlkIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkCiAgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0OwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2Jq
ZWN0KGlkIG9iamVjdCkKK3N0YXRpYyBib29sIHZhbGlkYXRlT2JqZWN0KGlkIGFyZ3VtZW50KQog
eworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCBb
YXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNL
aW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
TnVsbCBjbGFzc11dKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChbYXJndW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7CisgICAgICAgIF9fYmxvY2sgQk9PTCB2
YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1lcmF0ZU9iamVjdHNVc2luZ0Js
b2NrOl4oaWQgb2JqZWN0LCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7CisgICAgICAgICAgICBp
ZiAoIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZh
bHNlOworICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAg
ICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgaWYgKFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2Nr
IGJvb2wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVLZXlzQW5k
T2JqZWN0c1VzaW5nQmxvY2s6XihpZCBrZXksIGlkIHZhbHVlLCBCT09MICpzdG9wKSB7CisgICAg
ICAgICAgICBpZiAoIXZhbGlkYXRlT2JqZWN0KGtleSkgfHwgIXZhbGlkYXRlT2JqZWN0KHZhbHVl
KSkgeworICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgKnN0
b3AgPSBZRVM7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworCisgICAgICAgIHJldHVybiB2
YWxpZDsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjb3JlVmFsdWVGcm9tTlNPYmplY3QoaWQgb2Jq
ZWN0KQoreworICAgIGlmIChvYmplY3QgJiYgIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwog
ICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0Om9iamVjdCBpbkNv
bnRleHQ6Y29udGV4dF07CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGdsb2JhbE9iamVjdCA9
IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAgICAgQVNTRVJUKGdsb2JhbE9i
amVjdCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCi0gICAg
YXV0byBjb3JlVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgq
Z2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKSk7Ci0g
ICAgcmV0dXJuIGNvcmVWYWx1ZS0+dG9XaXJlQnl0ZXMoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxP
YmplY3QsIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOworfQorCitSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChpZCBvYmpl
Y3QpCit7CisgICAgYXV0byBjb3JlVmFsdWUgPSBjb3JlVmFsdWVGcm9tTlNPYmplY3Qob2JqZWN0
KTsKKyAgICBpZiAoIWNvcmVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIGNyZWF0ZShjb3JlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIH0gLy8gQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNz
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdl
LmgKaW5kZXggOTdiZWI2ZTgxMzkuLjYzYTFlOWVhMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsK
IEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKQEAgLTU0LDYgKzU1LDkg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAgKi8KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CiAKKy8qISBA
YWJzdHJhY3QgVGhlIGNvbnRlbnQgd29ybGQgZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB3YXMgc2Vu
dC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tDb250ZW50V29ybGQgKndv
cmxkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQppbmRleCBjOTNlN2E5OWRh
Yi4uYmQ1ZGQ0NmI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQpAQCAtMzUsOSArMzUsMTAgQEAgQGltcGxlbWVudGF0
aW9uIFdLU2NyaXB0TWVzc2FnZSB7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmll
dzsKICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IF9mcmFtZUluZm87CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfbmFtZTsKKyAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IF93b3JsZDsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6
KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkg
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJh
bWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFtZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3Js
ZAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtNDYsNiArNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQm9keTooaWQpYm9k
eSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzooVwogICAgIF93ZWJWaWV3
ID0gd2ViVmlldzsKICAgICBfZnJhbWVJbmZvID0gZnJhbWVJbmZvOwogICAgIF9uYW1lID0gYWRv
cHROUyhbbmFtZSBjb3B5XSk7CisgICAgX3dvcmxkID0gd29ybGQ7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KQEAgLTcwLDQgKzcyLDkgQEAgLSAoTlNTdHJpbmcgKiluYW1lCiAgICAgcmV0dXJuIF9u
YW1lLmdldCgpOwogfQogCistIChXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCit7CisgICAgcmV0dXJu
IF93b3JsZC5nZXQoKTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgyM2RmMWU4YjUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaApAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIFdL
U2NyaXB0TWVzc2FnZTsKK0BjbGFzcyBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKKworLyohIEEg
Y2xhc3MgY29uZm9ybWluZyB0byAgdGhlIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkg
cHJvdG9jb2wgcHJvdmlkZXMgYQorbWV0aG9kIGZvciByZWNlaXZpbmcgbWVzc2FnZXMgZnJvbSBK
YXZhU2NyaXB0IHJ1bm5pbmcgaW4gYSB3ZWJwYWdlIGFuZCByZXBseWluZyB0byB0aGVtIGFzeW5j
aHJvbm91c2x5LgorKi8KK0Bwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5
IDxOU09iamVjdD4KKworLyohIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gYSBzY3JpcHQgbWVzc2Fn
ZSBpcyByZWNlaXZlZCBmcm9tIGEgd2VicGFnZS4KKyBAcGFyYW0gdXNlckNvbnRlbnRDb250cm9s
bGVyIFRoZSB1c2VyIGNvbnRlbnQgY29udHJvbGxlciBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0
aG9kLgorIEBwYXJhbSBtZXNzYWdlIFRoZSBzY3JpcHQgbWVzc2FnZSByZWNlaXZlZC4KKyBAcGFy
YW0gcmVwbHlIYW5kbGVyIEEgYmxvY2sgdG8gYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiBw
cm9jZXNzaW5nIHRoZSBtZXNzYWdlLgorIEBkaXNjdXNzaW9uIFdoZW4gdGhlIEphdmFTY3JpcHQg
cnVubmluZyBpbiB5b3VyIGFwcGxpY2F0aW9uJ3Mgd2ViIGNvbnRlbnQgY2FsbGVkIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVzc2FnZUJvZHk+KSwK
KyBhIEphdmFTY3JpcHQgUHJvbWlzZSBvYmplY3Qgd2FzIHJldHVybmVkLiBUaGUgdmFsdWVzIHBh
c3NlZCB0byB0aGUgcmVwbHlIYW5kbGVyIGFyZSB1c2VkIHRvIHJlc29sdmUgdGhhdCBQcm9taXNl
LgorCisgUGFzc2luZyBhIG5vbi1uaWwgTlNTdHJpbmcgdmFsdWUgdG8gdGhlIHNlY29uZCBwYXJh
bWV0ZXIgb2YgdGhlIHJlcGx5SGFuZGxlciBzaWduYWxzIGFuIGVycm9yLgorIE5vIG1hdHRlciB3
aGF0IHZhbHVlIHlvdSBwYXNzIHRvIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHJlcGx5SGFu
ZGxlciwKKyB0aGUgUHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGggYSBKYXZhU2NyaXB0IGVy
cm9yIG9iamVjdCB3aG9zZSBtZXNzYWdlIHByb3BlcnR5IGlzIHNldCB0byB0aGF0IGVycm9yTWVz
c2FnZSBzdHJpbmcuCisKKyBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB0aGUgcmVwbHlIYW5k
bGVyIGlzIG5pbCwgdGhlIGZpcnN0IGFyZ3VtZW50IHdpbGwgYmUgc2VyaWFsaXplZCBpbnRvIGl0
cyBKYXZhU2NyaXB0IGVxdWl2YWxlbnQgYW5kIHRoZSBQcm9taXNlIHdpbGwgYmUgZnVsZmlsbGVk
IHdpdGggdGhlIHJlc3VsdGluZyB2YWx1ZS4KKyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbmls
IHRoZW4gdGhlIFByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCB3aXRoIGEgSmF2YVNjcmlwdCB2YWx1
ZSBvZiAidW5kZWZpbmVkIgorCisgQWxsb3dlZCBub24tbmlsIHJlc3VsdCB0eXBlcyBhcmU6Cisg
TlNOdW1iZXIsIE5TTnVsbCwgTlNTdHJpbmcsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlv
bmFyeS4KKyBBbnkgTlNBcnJheSBvciBOU0RpY3Rpb25hcnkgY29udGFpbmVycyBjYW4gb25seSBj
b250YWluIG9iamVjdHMgb2YgdGhvc2UgdHlwZXMuCisKKyBUaGUgcmVwbHlIYW5kbGVyIGNhbiBi
ZSBjYWxsZWQgYXQgbW9zdCBvbmNlLgorIElmIHRoZSByZXBseUhhbmRsZXIgaXMgZGVhbGxvY2F0
ZWQgYmVmb3JlIGl0IGlzIGNhbGxlZCwgdGhlIFByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3aXRo
IGEgSmF2YVNjcmlwdCBFcnJvciBvYmplY3QKKyB3aXRoIGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2Ug
aW5kaWNhdGluZyB0aGUgaGFuZGxlciB3YXMgbmV2ZXIgY2FsbGVkLgorCisgRXhhbXBsZToKKwor
IFdpdGggYSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IG9iamVjdCBpbnN0YWxsZWQg
d2l0aCB0aGUgbmFtZSAidGVzdEhhbmRsZXIiLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIEphdmFT
Y3JpcHQ6CisgQHRleHRibG9jaworICAgICB2YXIgcHJvbWlzZSA9IHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJGdWxmaWxsIG1lIHdpdGggNDIi
KTsKKyAgICAgYXdhaXQgcDsKKyAgICAgcmV0dXJuIHA7CisgQC90ZXh0YmxvY2sKKworIEFuZCBj
b25zaWRlciB0aGUgZm9sbG93aW5nIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgaW1w
bGVtZW50YXRpb246CisgQHRleHRibG9jaworICAgICAtICh2b2lkKXVzZXJDb250ZW50Q29udHJv
bGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlk
UmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UgcmVwbHlIYW5k
bGVyOih2b2lkICheKShpZCwgTlNTdHJpbmcgKikpcmVwbHlIYW5kbGVyCisgICAgIHsKKyAgICAg
ICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbDpAIkZ1bGZpbGwgbWUgd2l0aCA0MiJdKQorICAg
ICAgICAgICAgcmVwbHlIYW5kbGVyKEA0MiwgbmlsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmVwbHlIYW5kbGVyKG5pbCwgQCJVbmV4cGVjdGVkIG1lc3NhZ2UgcmVjZWl2ZWQiKTsKKyAg
ICAgfQorIEAvdGV4dGJsb2NrCisKKyBJbiB0aGlzIGV4YW1wbGU6CisgICAtIFRoZSBKYXZhU2Ny
aXB0IGNvZGUgc2VuZHMgYSBtZXNzYWdlIHRvIHlvdXIgYXBwbGljYXRpb24gY29kZSB3aXRoIHRo
ZSBib2R5IEAiRnVsZmlsbCBtZSB3aXRoIDQyIgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBp
cyBzdXNwZW5kZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHJlc3VsdGluZyBwcm9taXNlIHRvIHJl
c29sdmUuCisgICAtIFlvdXIgbWVzc2FnZSBoYW5kbGVyIGlzIGludm9rZWQgd2l0aCB0aGF0IG1l
c3NhZ2UgYW5kIGEgYmxvY2sgdG8gY2FsbCB3aXRoIHRoZSByZXBseSB3aGVuIHJlYWR5LgorICAg
LSBZb3VyIG1lc3NhZ2UgaGFuZGxlciBzZW5kcyB0aGUgdmFsdWUgQDQyIGFzIGEgcmVwbHkuCisg
ICAtIFRoZSBKYXZhU2NyaXB0IHByb21pc2UgaXMgZnVsZmlsbGVkIHdpdGggdGhlIHZhbHVlIDQy
LgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250aW51ZXMgYW5kIHRoZSB2YWx1ZSA0MiBp
cyByZXR1cm5lZC4KKyAqLworLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNv
bnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRN
ZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXiko
aWQgcmVwbHksIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpKXJlcGx5SGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQGVuZAorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKaW5kZXggMjYzNzg4MDA1Njcu
Ljg5YmM1MThkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaApAQCAtMjcsNiArMjcsNiBAQAog
CiBAaW50ZXJmYWNlIFdLU2NyaXB0TWVzc2FnZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoQm9keTooaWQpYm9keSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzoo
V0tGcmFtZUluZm8gKilmcmFtZUluZm8gbmFtZTooTlNTdHJpbmcgKiluYW1lOworLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFt
ZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIuaAppbmRleCA4MjlhMDU3MzM3ZC4uZjQzZjJlNjJmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5oCkBAIC0zMCw4ICszMCwxMCBAQAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNz
IFdLQ29udGVudFJ1bGVMaXN0OworQGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLVXNl
clNjcmlwdDsKIEBwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyOworQHByb3RvY29sIFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk7CiAKIC8qISBBIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyIG9iamVjdCBwcm92aWRlcyBhIHdheSBmb3IgSmF2YVNjcmlwdCB0byBwb3N0CiAgbWVz
c2FnZXMgdG8gYSB3ZWIgdmlldy4KQEAgLTU2LDE5ICs1OCw3NSBAQCBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclNjcmlwdHM7
CiAKIC8qISBAYWJzdHJhY3QgQWRkcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCi0gQHBhcmFt
IHNjcmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBtZXNzYWdlIGhhbmRsZXIgdG8gYWRkLgorIEBwYXJh
bSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQu
CisgQHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRk
IHRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgogIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRo
ZSBtZXNzYWdlIGhhbmRsZXIuCi0gQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0TWVzc2FnZUhh
bmRsZXIgYWRkcyBhIGZ1bmN0aW9uCi0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5h
bWU+LnBvc3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIGZvciBhbGwKLSBmcmFtZXMuCisgQGRpc2N1
c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFtZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VC
b2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGluIHRoZSBnaXZlbiBXS0NvbnRlbnRXb3Js
ZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLgorCisg
RWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkgbnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1ZSBuYW1lLgorCisgT25jZSBhbnkgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRlZCB0byBhIFdLQ29udGVudFdvcmxkIGZv
ciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRvIGFkZCBhbm90aGVyCisgc2NyaXB0IG1l
c3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdvcmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3
aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVy
LgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxpZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0
IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIgYW5kIFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHkKKyBvYmplY3RzIHdpbGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90
aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhlIHNhbWUgV0tDb250ZW50V29ybGQgd2l0
aCB0aGUgc2FtZSBuYW1lLgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdv
cmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFi
c3RyYWN0IEFkZHMgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBzY3JpcHRNZXNz
YWdlSGFuZGxlcldpdGhSZXBseSBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQuCisg
QHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRkIHRo
ZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBt
ZXNzYWdlIGhhbmRsZXIuCisgQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFt
ZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VCb2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGlu
IHRoZSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUg
YSBub24tZW1wdHkgc3RyaW5nLgorCisgRWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkg
bnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1
ZSBuYW1lLgorCisgT25jZSBhbnkgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRl
ZCB0byBhIFdLQ29udGVudFdvcmxkIGZvciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRv
IGFkZCBhbm90aGVyCisgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdv
cmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91
cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxp
ZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHkgYW5kIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIKKyBvYmplY3RzIHdp
bGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhl
IHNhbWUgV0tDb250ZW50V29ybGQgd2l0aCB0aGUgc2FtZSBuYW1lLgorCisgUmVmZXIgdG8gdGhl
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgZG9jdW1lbnRhdGlvbiBmb3IgZXhhbXBs
ZXMgb2YgaG93IGl0IGlzIG1vcmUgZmxleGlibGUgdGhhbiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
LgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OihpZCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4pc2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVw
bHkgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBBZGRzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0
byB0aGUgbWFpbiB3b3JsZCB1c2VkIGJ5IHBhZ2UgY29udGVudCBpdHNlbGYuCisgQHBhcmFtIHNj
cmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRvIGFkZC4KKyBA
cGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgorIEBkaXNjdXNzaW9u
IENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOmNvbnRlbnRXb3JsZDpuYW1lOgorIHdpdGggW1dLQ29udGVudFdvcmxkIHBh
Z2VXb3JsZF0gYXMgdGhlIGNvbnRlbnRXb3JsZCBhcmd1bWVudC4KICAqLwogLSAodm9pZClhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1l
c3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZTsKIAogLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KICBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0
aGUgbWVzc2FnZSBoYW5kbGVyIHRvIHJlbW92ZS4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBX
S0NvbnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlci4KKyAqLworLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5T
U3RyaW5nICopbmFtZSBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
Ky8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCisgQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlciB0byByZW1vdmUuCisgQGRpc2N1
c3Npb24gQ2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgcmVtb3Zl
U2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOmNvbnRlbnRXb3JsZDoKKyAgd2l0aCBbV0tDb250
ZW50V29ybGQgcGFnZVdvcmxkXSBhcyB0aGUgY29udGVudFdvcmxkIGFyZ3VtZW50LgogICovCiAt
ICh2b2lkKXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1l
OwogCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYWxsIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzIGZy
b20gYSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBXS0Nv
bnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSBhbGwgc2NyaXB0IG1lc3NhZ2UgaGFuZGxl
cnMuCisgKi8KKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRl
bnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGFsbCBhc3NvY2lhdGVkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLgorICovCistICh2b2lk
KXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVycyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IEFkZHMgYSBjb250
ZW50IHJ1bGUgbGlzdC4KICBAcGFyYW0gY29udGVudFJ1bGVMaXN0IFRoZSBjb250ZW50IHJ1bGUg
bGlzdCB0byBhZGQuCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA2ODI3YzkxNDFj
MC4uN2Y5NGE0MDU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5o
IgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgorI2ltcG9ydCAiV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oIgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLVXNlclNjcmlwdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgpAQCAtMTI1LDMxICsxMjYsOTQgQEAgcHVibGljOgogICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQogICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQogICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseShmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAotICAgIHZvaWQgZGlkUG9zdE1l
c3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorCisgICAgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZShXS1VzZXJDb250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQgPFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHk+IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQorICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQorICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQorICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdl
KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBmaW5hbAogICAgIHsKICAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZy
YW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5m
b0RhdGEpLCAmcGFnZSkpOwogICAgICAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUsIDApOwotICAgICAg
ICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2lu
aXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBmcmFtZUluZm86
ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIG1l
c3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJv
ZHkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0
KCkgbmFtZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsKICAgICAgICAgCi0g
ICAgICAgICAgICBbbV9oYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIu
Z2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKV07CisgICAgICAgICAg
ICBbKGlkPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KW1faGFuZGxlci5nZXQoKSB1c2VyQ29udGVu
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOm1l
c3NhZ2UuZ2V0KCldOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNBc3luY1JlcGx5
OworICAgIH0KKworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgRnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5SGFuZGxlcikgZmluYWwKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3N1cHBvcnRzQXN5bmNSZXBseSk7CisKKyAgICAgICAgYXV0byBm
aW5hbGl6ZXIgPSBbXShGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
Y29uc3QgU3RyaW5nJik+JiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24obnVsbHB0
ciwgIldLV2ViVmlldyBBUEkgY2xpZW50IGRpZCBub3QgcmVzcG9uZCB0byB0aGlzIHBvc3RNZXNz
YWdlIl9zKTsKKyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBhdXRvIGhhbmRsZXIgPSBDb21w
bGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPihXVEZNb3ZlKHJlcGx5SGFuZGxlciksIFdURk1vdmUoZmluYWxp
emVyKSk7CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBSZXRhaW5Q
dHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCAmcGFnZSkpOworICAgICAgICAgICAgaWQgYm9keSA9
IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIDApOworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0
TWVzc2FnZSBhbGxvY10gX2luaXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94
eShwYWdlKSBmcmFtZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxk
OndyYXBwZXIod29ybGQpXSk7CisKKyAgICAgICAgICAgIFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseT4pbV9oYW5kbGVyLmdldCgpIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2Nv
bnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKSByZXBs
eUhhbmRsZXI6XihpZCByZXN1bHQsIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIo
bnVsbHB0ciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0g
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChyZXN1bHQpOwor
ICAgICAgICAgICAgICAgIGlmICghc2VyaWFsaXplZFZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZXIobnVsbHB0ciwgIlRoZSByZXN1bHQgdmFsdWUgcGFzc2VkIGJhY2sgZnJvbSB0
aGUgV0tXZWJWaWV3IEFQSSBjbGllbnQgd2FzIHVuYWJsZSB0byBiZSBzZXJpYWxpemVkIl9zKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGhhbmRsZXIoc2VyaWFsaXplZFZhbHVlLmdldCgpLCB7IH0pOworICAgICAgICAg
ICAgfV07CiAgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPGlkIDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9oYW5kbGVyOworICAgIFJldGFpblB0cjxpZD4gbV9oYW5k
bGVyOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9uYW1lOworICAgIGJvb2wgbV9zdXBwb3J0
c0FzeW5jUmVwbHk7CiB9OwogCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXIKK3sKKyAg
ICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKHNjcmlwdE1lc3NhZ2VIYW5kbGVyKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMu
IiwgKE5TU3RyaW5nICopc2NyaXB0TWVzc2FnZUhhbmRsZXIubmFtZSgpXTsKK30KKwogLSAodm9p
ZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNj
cmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewogICAgIGF1dG8gaGFu
ZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVl
PFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVy
LCBuYW1lKSwgbmFtZSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7Ci0g
ICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKSkKLSAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNz
YWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFt
ZV07CisgICAgW3NlbGYgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCldOwor
fQorCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3Js
ZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIGF1dG8gaGFuZGxlciA9IFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwg
bmFtZSwgKndvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBbc2VsZiBfYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKV07Cit9CisKKy0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHk6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PilzY3Jp
cHRNZXNzYWdlSGFuZGxlciBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQgbmFt
ZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJE
ZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqd29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5k
bGVyLmdldCgpXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5h
bWU6KE5TU3RyaW5nICopbmFtZQpAQCAtMTU3LDYgKzIyMSwyMSBAQCAtICh2b2lkKXJlbW92ZVNj
cmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lCiAgICAgX3VzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKG5hbWUs
IEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogfQogCistICh2b2lkKXJl
bW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHktPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUobmFtZSwgKmNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0
TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50
V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJN
ZXNzYWdlSGFuZGxlcnMoKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZv
aWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzCit7CisgICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCk7Cit9CisKICNwcmFn
bWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAtIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgKaW5kZXgg
MTA4YmVlMTUzODIuLjQ3ZjdkZTAxOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlcklu
dGVybmFsLmgKQEAgLTI5LDE1ICsyOSwxOCBAQAogI2ltcG9ydCAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0KIHRlbXBsYXRlPD4gc3RydWN0
IFdyYXBwZXJUcmFpdHM8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKICAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKIH07CiAKK2NsYXNzIFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyOwogfQogCiBAaW50ZXJmYWNlIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gX3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OwogfQorCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXI7CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAppbmRleCBhYTM1MWU3N2NjZC4uZTVm
ODk2ZDliMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CiAK
K0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBXS1VzZXJTY3JpcHQ7CiBAY2xhc3MgX1dL
VXNlckNvbnRlbnRGaWx0ZXI7CiBAY2xhc3MgX1dLVXNlckNvbnRlbnRXb3JsZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAwMzQxNThi
YTIxLi42YjExYjM4NDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC04OTgsMTUgKzg5OCwxMyBAQCAtICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJP
T0wpYQogCiAgICAgZm9yIChpZCBrZXkgaW4gYXJndW1lbnRzKSB7CiAgICAgICAgIGlkIHZhbHVl
ID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZUFy
Z3VtZW50KHZhbHVlKSkgewotICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlvbiBh
cmd1bWVudCB2YWx1ZXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlcywgb3IgY29u
dGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdHlwZXM6IE5TU3RyaW5nLCBOU051bWJlciwgTlNEYXRl
LCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsKKyAgICAgICAgYXV0byBzZXJpYWxpemVkVmFs
dWUgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KHZhbHVl
KTsKKyAgICAgICAgaWYgKCFzZXJpYWxpemVkVmFsdWUpIHsKKyAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xs
b3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU051bWJl
ciwgTlNOdWxsLCBOU0RhdGUsIE5TU3RyaW5nLCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgCi0gICAgICAgIGF1dG8gd2lyZUJ5
dGVzID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCh2
YWx1ZSk7Ci0gICAgICAgIC8vIFNpbmNlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgaW5wdXQgZGljdGlv
bmFyeSBhYm92ZSwgd2Ugc2hvdWxkIG5ldmVyIGZhaWwgdG8gc2VyaWFsaXplIGl0IGludG8gd2ly
ZSBieXRlcy4KLSAgICAgICAgQVNTRVJUKHdpcmVCeXRlcyk7Ci0gICAgICAgIGFyZ3VtZW50c01h
cC0+c2V0KGtleSwgKndpcmVCeXRlcyk7CisKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5
LCBzZXJpYWxpemVkVmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygp
KTsKICAgICB9CiAKICAgICBpZiAoZXJyb3JNZXNzYWdlICYmIGhhbmRsZXIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwCmluZGV4IDdjNDMyMzA0ZjUyLi5kYTEyOWUzYjhiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuY3BwCkBAIC0xOTAsMTMgKzE5MCwyMiBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZy
YW1lSW5mb0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGpzUmVzdWx0ID0gd2Via2l0SmF2YXNjcmlwdFJlc3Vs
dENyZWF0ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgICAgICBnX3NpZ25hbF9lbWl0KG1f
bWFuYWdlciwgc2lnbmFsc1tTQ1JJUFRfTUVTU0FHRV9SRUNFSVZFRF0sIG1faGFuZGxlck5hbWUs
IGpzUmVzdWx0KTsKICAgICAgICAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKGpzUmVz
dWx0KTsKICAgICB9CiAKKyAgICBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQ
STo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+
JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KKyAgICAKICAgICB2aXJ0dWFsIH5TY3JpcHRNZXNz
YWdlQ2xpZW50R3RrKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggYjY1NTFlYWJmNWMuLmUwMGMyMWUwMThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShX
ZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQ
b3N0TWVzc2FnZShXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250
ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gc2VyaWFs
aXplZFNjcmlwdFZhbHVlLnRvU3RyaW5nKCk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRva2Vu
cyA9IG1lc3NhZ2Uuc3BsaXQoJzonKTsKQEAgLTUzLDYgKzUzLDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQ
b3J0KCksIHRva2Vuc1swXS50b1VJbnQ2NCgpLCB0b2tlbnNbMV0udG9VSW50NjQoKSwgdG9rZW5z
WzJdKTsKICAgICB9CiAKKyAgICBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQ
STo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+
JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KKwogICAgIH5TY3JpcHRNZXNzYWdlQ2xpZW50KCkg
eyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAKaW5kZXggYzk1MWE1MGQzOTguLmYzZjI4YTQ3ZTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKIAogICAgIH5TY3JpcHRNZXNzYWdlQ2xpZW50KCkgeyB9CiAKLSAgICB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJp
ZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZv
RGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byB0
b2tlbnMgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUudG9TdHJpbmcoKS5zcGxpdCgiOiIpOwogICAg
ICAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAzKQpAQCAtNjEsNiArNjEsMTUgQEAgcHVibGljOgog
ICAgICAgICBVUkwgcmVxdWVzdFVSTCB7IHsgfSwgcGFnZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkg
fTsKICAgICAgICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJM
Lmhvc3RBbmRQb3J0KCksIHRva2Vuc1swXS50b1VJbnRTdHJpY3QoKSwgdG9rZW5zWzFdLnRvVUlu
dFN0cmljdCgpLCB0b2tlbnNbMl0pOwogICAgIH0KKyAgICAKKyAgICBib29sIHN1cHBvcnRzQXN5
bmNSZXBseSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkm
LCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgY29uc3QgU3RyaW5nJik+JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KIAogcHJpdmF0
ZToKICAgICBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXImIG1faW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggYWZhY2JiMDcxZjEuLjJm
NjE0YjIzYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAg
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIENv
bnRlbnRXb3JsZDsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01Miw3ICs1Myw5IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250
ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRQb3N0TWVzc2FnZVdpdGhBc3luY1JlcGx5KFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5m
b0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25z
dCBTdHJpbmcmKT4mJikgPSAwOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQVBJOjpDb250ZW50V29ybGQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAppbmRleCA3ZGQ4ZWI5OTMxNy4uYjYyMGZhMDY2YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJG
b3JOYW1lKGNvbnN0IFN0cmluZwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7
CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mu
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OworICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxkcyh7IHdvcmxkLmlk
ZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIG51bWJlclJlbW92
ZWQgPSAwOwogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBl
bnRyeSkgewpAQCAtMzI4LDcgKzMyOCwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29udGVudFdvcgogICAg
IH0pOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZVByb3h5SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNz
YWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhh
bmRsZXJzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAg
ICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoKSwgaWRlbnRpZmllcigpKTsKK30KKwordm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEs
IHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YVJlZmVyZW5jZSwgTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQ
b3N0TWVzc2FnZTo6QXN5bmNSZXBseSYmIHJlcGx5KQogewogICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJveHlJRCk7CiAgICAgaWYgKCFwYWdl
KQpAQCAtMzQxLDcgKzM0NywyMSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgaWYgKCFo
YW5kbGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0
TWVzc2FnZSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3RvcigpKSk7CisgICAgaWYgKCFo
YW5kbGVyLT5jbGllbnQoKS5zdXBwb3J0c0FzeW5jUmVwbHkoKSkgeworICAgICAgICBoYW5kbGVy
LT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwg
aGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
ZGF0YVJlZmVyZW5jZS52ZWN0b3IoKSkpOworICAgICAgICByZXBseSh7IH0sIHsgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2Fn
ZVdpdGhBc3luY1JlcGx5KCpwYWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBoYW5kbGVyLT53
b3JsZCgpLCAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVmZXJl
bmNlLnZlY3RvcigpKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgewor
ICAgICAgICBpZiAoZXJyb3JNZXNzYWdlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQo
dmFsdWUpOworICAgICAgICAgICAgcmVwbHkoeyB2YWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlv
bigpLnRvV2lyZUJ5dGVzKCkgfSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHJlcGx5KHsgfSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9KTsKIH0KIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaAppbmRleCAyYzA5NDI4NTBiNC4uMTI5YTM0MGYwODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoQ291bnRlZFNldC5oPgpAQCAtOTgsNiArOTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZGRV
c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKTsKICAgICB2
b2lkIHJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJiwgQVBJOjpD
b250ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJ
OjpDb250ZW50V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMo
KTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBhZGROZXR3b3Jr
UHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OkRpZFBvc3RNZXNzYWdlOjpBc3luY1JlcGx5JiYpOwogCiAgICAgdm9pZCBhZGRDb250
ZW50V29ybGQoQVBJOjpDb250ZW50V29ybGQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4ZDIwMGExZTZlOS4uZmQ5NWYy
ZjVkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0yNCw1ICsyNCw1IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkgewotRGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVz
c2FnZSkgV2FudHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNz
YWdlKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdFZhbHVlLCBTdHJpbmcgZXJyb3JNZXNz
YWdlKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNmU0N2I2ZTkyZjAuLmUzZGI1NDA5YWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3Myw2ICs5NzMsNyBA
QAogCQk1MTA1MjM3NDFDNzNEMzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMDUyMzczMUM3M0QzN0IwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNz
YWdlcy5oICovOyB9OwogCQk1MTA1MjM3NTFDNzNEMzhGMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDUyMzcyMUM3M0QzN0IwMDc5OTNDQiAvKiBXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTA2RDdDNDE4
QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2
IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCAqLzsgfTsKKwkJNTEwOTA5OTcyM0RBQ0JGMjAw
M0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDkwOTk0MjNENDFGMTMwMDNCMUU0
QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUg
LyogV2ViUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMEFGRkI4MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRl
ci5oICovOyB9OwogCQk1MTBGNTkxMDFEREUyOTY5MDA0MTJGRjUgLyogX1dLSWNvbkxvYWRpbmdE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0M0IyNUUxRERDREZEMTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBGNTkxMTFE
REUyOTcwMDA0MTJGRjUgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQzk3OTFEREQ3ODU0MDAzMkNBRDMg
LyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM1OTcsNiArMzU5OCw3IEBACiAJCTUxMDVCMEYzMTYzMDg3
MkUwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4dERh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA2RDdDMDE4QkRCRTczMDAw
QUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb250ZXh0TWVudUNvbnRleHREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxMDkwOTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyV2l0aFJlcGx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2NyaXB0
TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTEwQUZGQjcxNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyLmNwcDsgcGF0
aCA9IE5ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTBBRkZCODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkZXIuaDsgcGF0
aCA9IE5ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwQUZGQ0UxNjU0MkNCRDAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTczOTIsNiArNzM5NCw3IEBACiAJCQkJMUE3RTM3NzcxOEU0QTRGRTAwM0QwRkZGIC8q
IFdLU2NyaXB0TWVzc2FnZS5oICovLAogCQkJCTFBN0UzNzc2MThFNEE0RkUwMDNEMEZGRiAvKiBX
S1NjcmlwdE1lc3NhZ2UubW0gKi8sCiAJCQkJMUE3RTM3NzQxOEU0QTMzQTAwM0QwRkZGIC8qIFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXIuaCAqLywKKwkJCQk1MTA5MDk5NDIzRDQxRjEzMDAzQjFFNEMg
LyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oICovLAogCQkJCTdDQzk5QTM1MThF
RjdDQkMwMDQ4QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oICovLAogCQkJCTUxQ0Qx
QzVGMUIzNEI5QzkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luLmggKi8sCiAJCQkJNTFDRDFD
NjAxQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gKi8sCkBAIC0xMTMxOCw2
ICsxMTMyMSw3IEBACiAJCQkJQkNFRTdBRDExMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwRTQyNTE2OEI3QTI4MDA1N0U2
NkEgLyogV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUUwOTM0
MTg4NjFEMzgwMEQyREM0OSAvKiBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxMDkwOTk3MjNEQUNCRjIwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyV2l0aFJlcGx5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5RDEyQTg4Mzg4MDA2Mjk1
MzAgLyogV2ViUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjFDQ0NBNjIz
MTQ4NUFBMDBCNjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IGY1Yzg3YzAy
YmQ2Li4wNDI5ZGFkNmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAg
LTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIC8vIFdlYkNvcmU6OlVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYkNvcmU6
OlVzZXJNZXNzYWdlSGFuZGxlciYgaGFuZGxlciwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiB2YWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYkNvcmU6OlVz
ZXJNZXNzYWdlSGFuZGxlciYgaGFuZGxlciwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiB2YWx1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0
IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
V2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gaGFuZGxlci5mcmFtZSgpOwogICAgICAgICBpZiAoIWZy
YW1lKQpAQCAtMjY4LDcgKzI2OCwxNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXdlYlBhZ2Up
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50
aWZpZXIoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CisgICAgICAg
IGF1dG8gbWVzc2FnZVJlcGx5SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VsdFZhbHVl
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICAgICAgaWYgKCFlcnJvck1l
c3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlRnJvbVdpcmVCeXRlcyhyZXN1bHRWYWx1ZS52ZWN0b3IoKSk7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih2YWx1ZS5wdHIoKSwgeyB9KTsKKyAgICAgICAgfTsKKworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQ
b3N0TWVzc2FnZSh3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIHdlYkZyYW1lLT5p
bmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwg
V1RGTW92ZShtZXNzYWdlUmVwbHlIYW5kbGVyKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkp
OwogICAgIH0KIAogICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29udHJv
bGxlcjsKQEAgLTMwOSw3ICszMTksMTggQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihDb250ZW50V29ybGRJZGVudGkKICNlbmRp
ZgogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mIHdv
cmxkSWRlbnRpZmllcnMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxs
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycygpCit7CisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9I
QU5ETEVSUykKKyAgICBpZiAobV91c2VyTWVzc2FnZUhhbmRsZXJzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV91c2VyTWVzc2FnZUhhbmRsZXJzLmNsZWFyKCk7CisgICAgaW52
YWxpZGF0ZUFsbFJlZ2lzdGVyZWRVc2VyTWVzc2FnZUhhbmRsZXJJbnZhbGlkYXRpb25DbGllbnRz
KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFs
bFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnNGb3JXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRX
b3JsZElkZW50aWZpZXI+JiB3b3JsZElkZW50aWZpZXJzKQogewogI2lmIEVOQUJMRShVU0VSX01F
U1NBR0VfSEFORExFUlMpCiAgICAgYm9vbCB1c2VyTWVzc2FnZUhhbmRsZXJzQ2hhbmdlZCA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IGU5MDI2MDc3ZTkzLi5jZTkw
YTlkOTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtMTAwLDcgKzEwMCw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVj
dG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+Jik7CiAKICAgICB2b2lkIHJlbW92ZVVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihDb250ZW50V29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VyU2Ny
aXB0SWRlbnRpZmllcik7Ci0gICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXJzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYpOworICAgIHZvaWQgcmVt
b3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxkcyhjb25zdCBWZWN0b3I8Q29u
dGVudFdvcmxkSWRlbnRpZmllcj4mKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnMoKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgdm9p
ZCByZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDVhZGNkMDgwZTkxLi4y
YWIyMzI0YmI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3Nh
Z2VzLmluCkBAIC0zNyw3ICszNyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJv
bGxlciB7CiAKICAgICBBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKFZlY3RvcjxzdHJ1Y3Qg
V2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+IHNjcmlwdE1lc3NhZ2VIYW5kbGVy
cyk7CiAgICAgUmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYktpdDo6Q29udGVudFdv
cmxkSWRlbnRpZmllciB3b3JsZElkZW50aWZpZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwotICAg
IFJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoVmVjdG9yPFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVycyk7CisgICAgUmVtb3ZlQWxsVXNlclNj
cmlwdE1lc3NhZ2VIYW5kbGVyc0ZvcldvcmxkcyhWZWN0b3I8V2ViS2l0OjpDb250ZW50V29ybGRJ
ZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXJzKTsKKyAgICBSZW1vdmVBbGxVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIEFk
ZENvbnRlbnRSdWxlTGlzdHMoVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYktpdDo6V2ViQ29t
cGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudEZpbHRlcnMpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViOGM0MjVkYmVjLi5mY2Y3
NmM3NDhiZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgV0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBh
c3luY2hyb25vdXNseSByZXNwb25kcyB3aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3By
b2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDYzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICh3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhh
bmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsVGVzdCk6CisgICAgICAgICgtW0FzeW5jU2NyaXB0
TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNz
YWdlOnJlcGx5SGFuZGxlcjpdKToKKwogMjAyMC0wNC0xNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgc2VydmljZSB3b3JrZXJzIGZv
ciBhcHAtYm91bmQgZG9tYWlucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA0YWI5
OTQzMmE4Ny4uNjdiZmJkNTNjOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0z
MCw3ICszMCwxMCBAQAogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9y
dCAiVGVzdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQg
PFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNl
clNjcmlwdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlclNjcmlwdFByaXZhdGUuaD4KQEAgLTc0
LDYgKzc3LDkgQEAgQGVuZAogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRN
ZXNzYWdlSGFuZGxlckJhc2ljUG9zdCkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOwor
ICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNjcmlw
dE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CkBAIC05
NSw2ICsxMDEsOSBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdl
SGFuZGxlckJhc2ljUG9zdCkKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0
TWVzc2FnZUhhbmRsZXJCYXNpY1Bvc3RJc29sYXRlZFdvcmxkKQogeworICAgIHNjcmlwdE1lc3Nh
Z2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBS
ZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSBbX1dLVXNlckNvbnRlbnRXb3Js
ZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07CiAKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVz
c2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKQEAgLTE0NCw2ICsxNTMsOSBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9s
bGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVkV29ybGQpCiAKIFRFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNSZW1vdmUp
CiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxl
ciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFJl
dGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tV
c2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IFtjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC0xODgsNiArMjAwLDggQEAgVEVTVChXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1JlbW92ZSkKIAog
VEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJDYWxsUmVt
b3ZlZEhhbmRsZXIpCiB7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAg
ICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2Ny
aXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLVXNlckNvbnRlbnRDb250cm9s
bGVyPiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdOwpAQCAtMjA1LDIyICsyMTksMjMgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJv
bGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJDYWxsUmVtb3ZlZEhhbmRsZXIpCiAKICAgICBbdXNl
ckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAImhh
bmRsZXJUb1JlbW92ZSJdOwogCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAgICAv
LyBUZXN0IHRoYXQgd2UgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHlvdSB0cnkgdG8gdXNlIGEgbWVz
c2FnZSBoYW5kbGVyIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4KLSAgICBbd2ViVmlldyBldmFsdWF0
ZUphdmFTY3JpcHQ6Ci0gICAgICAgIEAidHJ5IHsiCi0gICAgICAgICAiICAgIGhhbmRsZXJUb1Jl
bW92ZS5wb3N0TWVzc2FnZSgnRkFJTCcpOyIKLSAgICAgICAgICJ9IGNhdGNoIChlKSB7IgotICAg
ICAgICAgIiAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5oYW5kbGVyVG9Qb3N0LnBv
c3RNZXNzYWdlKCdQQVNTJyk7IgotICAgICAgICAgIn0iIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07
CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBoYW5kbGVyVG9SZW1v
dmUucG9zdE1lc3NhZ2UoJ0ZBSUwnKSIgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpbV0tD
b250ZW50V29ybGQgcGFnZVdvcmxkXSBjb21wbGV0aW9uSGFuZGxlcjpeIChpZCB2YWx1ZSwgTlNF
cnJvciAqIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHZhbHVlKTsKKyAgICAgICAgRVhQ
RUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlw
dGlvbl0gY29udGFpbnNTdHJpbmc6QCJJbnZhbGlkQWNjZXNzRXJyb3IiXSk7CisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH1dOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0KLSAgICBFWFBFQ1RfV0tfU1RS
RVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsKIH0KIAog
c3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxl
ck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZp
Z3VyYXRpb24pCiB7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBS
ZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29u
ZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkNvcHkgPSBhZG9wdE5TKFtjb25maWd1cmF0aW9uIGNv
cHldKTsKICAgICBbY29uZmlndXJhdGlvbkNvcHkgc2V0VXNlckNvbnRlbnRDb250cm9sbGVyOltb
W1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOwpAQCAt
MjM2LDYgKzI1MSw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yU2Ny
aXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsCiAKIFRFU1QoV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3Zh
bCkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOworICAgIHJlY2VpdmVkU2NyaXB0TWVz
c2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIFJldGFpblB0cjxfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKQEAgLTI2Miw2ICsyODAsOSBAQCBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxl
clJlbW92YWwpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpIC8vIEZJWE1FOiBoYW5ncyBpbiB0
aGUgaU9TIHNpbXVsYXRvcgogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoTmF2aWdhdGlvbikKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigp
OworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNj
cmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CkBA
IC0yOTMsNiArMzE0LDkgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoTmF2aWdhdGlvbikKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxl
ciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJSZXBsYWNlV2l0aFNhbWVOYW1lKQogeworICAgIHNjcmlw
dE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisK
ICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtb
U2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLVXNlckNvbnRlbnRDb250
cm9sbGVyPiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdOwpAQCAtODMzLDYgKzg1Nyw5IEBAIHN0YXRpYyB2b2lkIGNvbXBhcmVNZXNz
YWdlcyhWZWN0b3I8Y29uc3QgY2hhcio+JiYgZXhwZWN0ZWRNZXNzYWdlcykKIAogVEVTVChXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KQogeworICAg
IHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFs
c2U7CisKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHN0YXJ0QWxsRnJhbWVzID0gYWRvcHROUyhbW1dLVXNl
clNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnc3RhcnQgYWxsJykiIGluamVjdGlvblRpbWU6
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5
Ok5PXSk7CiAgICAgYXV0byBlbmRNYWluRnJhbWVPbmx5ID0gYWRvcHROUyhbW1dLVXNlclNjcmlw
dCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZW5kIG1haW4nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwpA
QCAtOTAyLDMgKzkyOSwyNzQgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclNj
cmlwdE5vdGlmaWNhdGlvbikKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JB
bGVydF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOwogICAgIEVYUEVDVF9XS19TVFJFUShb
ZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRvY3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKIH0KKwor
QGludGVyZmFjZSBBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0
TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBc3luY1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyCisKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2Ny
aXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZSByZXBseUhhbmRsZXI6KHZvaWQg
KF4pKGlkLCBOU1N0cmluZyAqZXJyb3JNZXNzYWdlKSlyZXBseUhhbmRsZXIKK3sKKyAgICBpZiAo
W21lc3NhZ2UubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcldvcmxkSGFuZGxlciJdKQorICAg
ICAgICBFWFBFQ1RfVFJVRShtZXNzYWdlLndvcmxkICE9IG5pbCk7CisgICAgaWYgKFttZXNzYWdl
LmJvZHkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBpZiAoW21l
c3NhZ2UuYm9keSBpc0VxdWFsVG9TdHJpbmc6QCJGdWxmaWxsIl0pIHsKKyAgICAgICAgICAgIHJl
cGx5SGFuZGxlcihAIkZ1bGZpbGxlZCEiLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIlJlamVj
dCJdKSB7CisgICAgICAgICAgICByZXBseUhhbmRsZXIobmlsLCBAIlJlamVjdGVkISIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlz
RXF1YWxUb1N0cmluZzpAIlVuZGVmaW5lZCJdKSB7CisgICAgICAgICAgICByZXBseUhhbmRsZXIo
bmlsLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChb
bWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIkRvIG5vdGhpbmciXSkgeworICAgICAgICAg
ICAgLy8gRHJvcCB0aGUgcmVwbHkgaGFuZGxlciB3aXRob3V0IHJlc3BvbmRpbmcgdG8gc2VlIHdo
YXQgaGFwcGVucworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChb
bWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIkludmFsaWQgcmVwbHkiXSkgeworICAgICAg
ICAgICAgcmVwbHlIYW5kbGVyKFtbW05TRGF0YSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdLCBu
aWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQWxs
IG90aGVyIGlucHV0cyBzaG91bGQganVzdCBiZSByb3VuZCB0cmlwcGVkIGJhY2sgdG8gdGhlIG1l
c3NhZ2UgaGFuZGxlcgorICAgIHJlcGx5SGFuZGxlcihtZXNzYWdlLmJvZHksIG5pbCk7Cit9CisK
K0BlbmQKKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgTWVzc2FnZUhhbmRsZXJBUEkp
Cit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tD
b250ZW50V29ybGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjEiXTsKKworICAgIGJvb2wg
aGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5
OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBuYW1l
OkAidGVzdEhhbmRsZXIxIl07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24p
IHsKKyAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9CisKKyAgICBFWFBFQ1RfVFJV
RShoYWRFeGNlcHRpb24pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVu
dFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBuYW1lOkAidGVzdEhhbmRs
ZXIyIl07CisKKyAgICBhdXRvICp3b3JsZCA9IFtXS0NvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1l
OkAib3RoZXJXb3JsZCJdOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVu
dFdvcmxkOndvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjMiXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpo
YW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDp3b3JsZCBuYW1lOkAidGVzdEhhbmRsZXI0Il07Cisg
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29ybGQgbmFtZTpA
InRlc3RIYW5kbGVyNSJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBib29sIGRvbmUgPSBmYWxz
ZTsKKyAgICBOU1N0cmluZyAqZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzW2hhbmRsZXJdLnBvc3RNZXNzYWdlKGFyZyk7IGF3YWl0IHA7IHJldHVy
biBwOyI7CisKKyAgICAvLyBwYWdlV29ybGQgaXMgd2hlcmUgdGVzdGhhbmRsZXIxIGxpdmVzCisg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7
IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMSIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29y
bGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVz
dWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gVHJ5aW5nIHRvIGZpbmQgdGVzdEhhbmRsZXIx
IGluIHRoZSBkZWZhdWx0Q2xpZW50V29ybGQgc2hvdWxkIGZhaWwKKyAgICBbd2ViVmlldyBjYWxs
QXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAi
dGVzdEhhbmRsZXIxIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3Js
ZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVY
UEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisg
ICAgLy8gZGVmYXVsdENsaWVudFdvcmxkIGlzIHdoZXJlIHRlc3RoYW5kbGVyMiBsaXZlcworICAg
IFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBA
ImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjIiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxk
OldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0g
KGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIEJ1dCBpZiB3ZSByZW12b2UgaXQs
IGl0IHNob3VsZCBubyBsb25nZXIgbGl2ZSB0aGVyZSwgYW5kIHVzaW5nIGl0IHNob3VsZCBjYXVz
ZSBhbiBlcnJvci4KKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBy
ZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6QCJ0ZXN0SGFuZGxlcjIiIGNvbnRlbnRX
b3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGRdOworICAgIFt3ZWJWaWV3IGNh
bGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDog
QCJ0ZXN0SGFuZGxlcjIiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOldLQ29udGVudFdv
cmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAg
RVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisK
KyAgICAvLyBWZXJpZnkgaGFuZGxlcnMgMywgNCwgYW5kIDUgYXJlIGFsbCBpbiB0aGUgY3VzdG9t
IHdvcmxkLgorICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFy
Z3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjMiLCBAImFyZyIgOiBAMSB9IGlu
Q29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vy
cm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgfV07CisgICAgW3dlYlZp
ZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxl
ciIgOiBAInRlc3RIYW5kbGVyNCIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQg
Y29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0Vx
dWFsVG9OdW1iZXI6QDFdKTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2Ny
aXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI1
IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpb
Jl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJy
b3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSAzIGZyb20gdGhl
IHdyb25nIHdvcmxkLCB2ZXJpZnkgaXQgaXMgc3RpbGwgdGhlcmUgaW4gdGhlIGN1c3RvbSB3b3Js
ZC4KKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVTY3Jp
cHRNZXNzYWdlSGFuZGxlckZvck5hbWU6QCJ0ZXN0SGFuZGxlcjMiIGNvbnRlbnRXb3JsZDpXS0Nv
bnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGRdOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0ph
dmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFu
ZGxlcjMiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAx
XSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gUmVtb3ZlIDMgZnJv
bSB0aGUgY29ycmVjdCB3b3JsZCwgdmVyaWZ5IGl0IGlzIGdvbmUsIGJ1dCA0IGFuZCA1IGFyZSBz
dGlsbCB0aGVyZS4KKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBy
ZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6QCJ0ZXN0SGFuZGxlcjMiIGNvbnRlbnRX
b3JsZDp3b3JsZF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJv
ZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMyIsIEAiYXJnIiA6IEAx
IH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAg
IEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgfV07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5j
SmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RI
YW5kbGVyNCIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhh
bmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9O
VUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6
QDFdKTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9u
Qm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI1IiwgQCJhcmciIDog
QDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSAiYWxsIiBpbiB0aGUgY3VzdG9tIHdv
cmxkLCB2ZXJpZnkgNCBhbmQgNSBhcmUgbm93IGdvbmUuCisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNv
bnRlbnRXb3JsZDp3b3JsZF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5j
dGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyNCIsIEAiYXJn
IiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7Cisg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgfV07CisgICAgW3dlYlZpZXcgY2Fs
bEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBA
InRlc3RIYW5kbGVyNSIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVY
UEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworfQorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9s
bGVyLCBBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQoreworICAgIFJldGFpblB0
cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9w
dE5TKFtbQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
V2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VX
b3JsZCBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYm9vbCBk
b25lID0gZmFsc2U7CisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRnVsZmls
bCcpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3Jp
cHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29y
bGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVF
KFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiRnVsZmlsbGVkISJdKTsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnUmVq
ZWN0Jyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNj
cmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRX
b3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9U
UlVFKCEhZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBj
b250YWluc1N0cmluZzpAIlJlamVjdGVkISJdKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICBmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ1VuZGVmaW5lZCcp
OyB2YXIgcmVzdWx0ID0gYXdhaXQgcDsgcmV0dXJuIHJlc3VsdCA9PSB1bmRlZmluZWQgPyAnWWVz
JyA6ICdObyciOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5
IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQg
aXNFcXVhbFRvU3RyaW5nOkAiWWVzIl0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBm
YWxzZTsKKyAgICBmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0RvIG5vdGhpbmcnKTsgYXdhaXQgcDsg
cmV0dXJuIHA7IjsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9k
eSBhcmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBj
b21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAi
ZGlkIG5vdCByZXNwb25kIHRvIHRoaXMgcG9zdE1lc3NhZ2UiXSk7CisKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnSW52YWxpZCBy
ZXBseScpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFT
Y3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50
V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1Rf
VFJVRSghIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0g
Y29udGFpbnNTdHJpbmc6QCJ1bmFibGUgdG8gYmUgc2VyaWFsaXplZCJdKTsKKworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7Cit9CisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFdvcmxkTGlmZXRpbWUpCit7
CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8g
aGFuZGxlciA9IGFkb3B0TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CisKKyAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IHdvcmxkID0gW1dLQ29udGVudFdv
cmxkIHdvcmxkV2l0aE5hbWU6QCJvdGhlcldvcmxkIl07CisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFu
ZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29ybGQuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisKKyAgICAvLyBTZXQgYSB2YXJpYWJsZSBpbiB0aGUgd29ybGQuCisg
ICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
dmFyIGZvbyA9ICdiYXInIiBpbkNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIEhhdmUg
dGhlIG1lc3NhZ2UgaGFuZGxlciBib3VuY2UgYmFjayB0aGF0IHZhbHVlLgorICAgIE5TU3RyaW5n
ICpmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
dGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZm9vKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKyAgICBb
d2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGlu
Q29udGVudFdvcmxkOndvcmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiYmFyIl0pOworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSB0aGUgbWVzc2FnZSBo
YW5kbGVyLCB3aGljaCB1c2VkIHRvIGNhdXNlIHRoZSB3b3JsZCB0byBiZSBkZXN0cm95ZWQgaW4g
dGhlIHdlYiBwcm9jZXNzLgorICAgIC8vIEJ1dCBieSBldmFsdWF0aW5nIEpTIG1ha2Ugc3VyZSB0
aGUgdmFsdWUgaXMgc3RpbGwgdGhlcmUuCisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRlbnRXb3Js
ZDp3b3JsZC5nZXQoKV07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZm9vIiBp
bkNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOwor
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJhciJdKTsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396915</attachid>
            <date>2020-04-19 09:45:57 -0700</date>
            <delta_ts>2020-04-19 11:05:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>77865</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGJmMTk3OGI1YjMuLjMxMmNiODJkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3
aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KTog
QWRkIGEgdmFyaWFudCBvZiBDb21wbGV0aW9uSGFuZGxlciB0aGF0IGFsbG93cyBmb3IgYSBGaW5h
bGl6ZXIgZnVuY3Rpb24KKyAgICAgICAgICB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENvbXBs
ZXRpb24gZnVuY3Rpb24gaGFzbid0IGJlZW4gY2FsbGVkIGF0IGRlc3RydWN0aW9uIHRpbWUuCisK
IDIwMjAtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV1RGXSBNb3ZlIERhdGFSZWYuaCBmcm9tIFdlYkNvcmUgdG8gV1RGIHRvIHV0aWxpemUgaXQg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oIGIv
U291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAppbmRleCA5MzhiNDk2NmYwOC4uOGM5
OGRmZTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtNjksNiArNjksNDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gV3JhcHMgYSBGdW5jdGlvbiB0byBtYWtlIHN1
cmUgaXQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKy8vIElmIHRoZSBDb21wbGV0aW9uSGFuZGxl
cldpdGhGaW5hbGl6ZXIgaXMgZGVzdHJveWVkIGFuZCB0aGUgZnVuY3Rpb24gaGFzbid0IHlldCBi
ZWVuIGNhbGxlZCwKKy8vIHRoZSBmaW5hbGl6ZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlv
biBhcyBpdHMgYXJndW1lbnQuCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhh
bmRsZXJXaXRoRmluYWxpemVyOwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4g
SW4+CitjbGFzcyBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KEluLi4uKT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29t
cGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlLCBGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPE91dChJbi4uLik+Jik+JiYgZmluYWxpemVyKQorICAgICAgICA6
IG1fZnVuY3Rpb24oV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgICwgbV9maW5hbGl6ZXIoV1RG
TW92ZShmaW5hbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXIoQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyJiYpID0gZGVmYXVsdDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXImIG9wZXJhdG9yPShDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25IYW5k
bGVyV2l0aEZpbmFsaXplcigpCisgICAgeworICAgICAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9maW5hbGl6ZXIobV9mdW5jdGlvbik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5j
dGlvbjsgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBB
U1NFUlQobV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZCA9PSBpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxl
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Z1bmN0aW9uLCBudWxscHRyKShzdGQ6OmZvcndhcmQ8SW4+KGluKS4u
Lik7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjxPdXQoSW4uLi4pPiYpPiBtX2ZpbmFsaXpl
cjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRo
cmVhZCB7IGlzTWFpblRocmVhZCgpIH07CisjZW5kaWYKK307CisKIG5hbWVzcGFjZSBEZXRhaWwg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgpAQCAtMTE1LDMgKzE1
OCw0IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlOwordXNpbmcgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q1YjNlOTVhNDYuLjFiNGZjZWZj
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdl
SGFuZGxlcjo6cG9zdE1lc3NhZ2UpOiBSZXR1cm4gYSBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBi
eSB0aGUgQVBJIGNsaWVudC4KKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKwogMjAyMC0wNC0xOCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZHVjZSBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
RnJhbWVMb2FkUmVxdWVzdCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuY3BwCmluZGV4IGIwN2RiOGI2YjE0Li5jZjgyYWYzYjY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMjksNyArMjksOSBAQAog
I2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE0ICs0MywyOSBAQCBVc2VyTWVzc2FnZUhhbmRs
ZXI6OlVzZXJNZXNzYWdlSGFuZGxlcihGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0bwogCiBVc2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRl
ZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3Nh
Z2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiB2YWx1ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVzY3JpcHRvciBoYXMgYmVlbiByZW1vdmVkLiBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaGFzCiAgICAgLy8gcmVtb3ZlZCB0
aGUgbmFtZWQgbWVzc2FnZSBoYW5kbGVyIGF0IHRoZSBXZWJLaXQyIEFQSSBsZXZlbC4KLSAgICBp
ZiAoIW1fZGVzY3JpcHRvcikKKyAgICBpZiAoIW1fZGVzY3JpcHRvcikgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH0pOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgfQogCi0gICAgbV9k
ZXNjcmlwdG9yLT5kaWRQb3N0TWVzc2FnZSgqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgIG1fZGVz
Y3JpcHRvci0+ZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdldCgpLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwcm9taXNl
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KEpTQzo6Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBl
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChyZXN1bHQpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4ocmVzdWx0
LT5kZXNlcmlhbGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKKyAgICB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aAppbmRleCA5NGFmZmI1MGM5Yy4uOTEyMjc5YWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKKwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVc2VyTWVzc2FnZUhh
bmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0KICAgICB2b2lkIGludmFs
aWRhdGVEZXNjcmlwdG9yKCkgeyBtX2Rlc2NyaXB0b3IgPSBudWxscHRyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKaW5kZXggNzc2YzE4MjRiNmEuLjMyZGIy
OGVjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCkBA
IC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJT
CiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNj
cmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggNDVlMTU1N2UwNmIuLmQyZjY1MzU3MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShVc2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlNTQ5MDJhZjc5Ny4uNGMyMDc1MDBhMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJv
bm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAgICAgICByZGFyOi8vcHJvYmxlbS81
NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgQ2hhbmdlIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBvc3RNZXNzYWdlKCkgdG8g
cmV0dXJuIGEgcHJvbWlzZSBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4KKyAgICAgICAgCisgICAgICAg
IEFsbG93IGZvciB0aGF0IHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgYnkgYW4gYXN5bmNocm9ub3Vz
IHJlcGx5IGJsb2NrIHVwIGluIHRoZSBBUEkgY2xpZW50LgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBsaWtlIHRoZSBvcHBvc2l0ZSB2ZXJzaW9uIG9mIFtXS1dlYlZpZXcgY2FsbEFzeW5jRnVu
Y3Rpb246XQorICAgICAgICAKKyAgICAgICAgQW5kIHdoaWxlIHdlJ3JlIGFkZGluZyBhIG5ldyBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVyIHZhcmlhbnQsIHdlJ3JlIGFkZGluZyBpdCBzYW5kYm94ZWQg
YnkgV0tDb250ZW50V29ybGQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ29jb2EubW06CisgICAgICAgIChBUEk6OnZhbGlkYXRlT2JqZWN0KToKKyAg
ICAgICAgKEFQSTo6Y29yZVZhbHVlRnJvbU5TT2JqZWN0KToKKyAgICAgICAgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tTlNPYmplY3QpOgorICAgICAgICAoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oOiBOb3cgdGhhdCBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVycyBjYW4gYmUgcGVyLXdvcmxkLCBtZXNzYWdlcworICAgICAg
ICAgIGRlY2xhcmUgd2hpY2ggd29ybGQgdGhleSB3ZXJlIHBvc3RlZCBmcm9tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tOgorICAgICAgICAoLVtXS1Nj
cmlwdE1lc3NhZ2UgX2luaXRXaXRoQm9keTp3ZWJWaWV3OmZyYW1lSW5mbzpuYW1lOndvcmxkOl0p
OgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2Ugd29ybGRdKToKKyAgICAgICAgKC1bV0tTY3Jp
cHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpmcmFtZUluZm86bmFtZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFs
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRs
ZXJXaXRoUmVwbHkuaDogQWRkZWQuCisgICAgICAgICAgRGVjbGFyZSB0aGUgbmV3IHByb3RvY29s
IGZvciBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgdGhhdCBjYW4gcmVwbHkgdG8gbWVzc2FnZXMg
YXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
X2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpjb250ZW50V29ybGQ6
bmFtZTpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHk6Y29udGVudFdvcmxkOm5hbWU6XSk6CisgICAgICAgICgtW1dL
VXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpj
b250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92
ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6XSk6CisgICAgICAgICgt
W1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJ
bnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3lu
Y0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZyYW1lOmluV29ybGQ6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICAgVXBkYXRlIGZvciBuZXcgc2hhcmVkIEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxs
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxk
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNC0xOCAgUGFibG8gU2FhdmVkcmEgIDxw
c2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJlcGxhY2UgZXZpbCBz
dHJ0b2soKSBjYWxscyB3aXRoIGZzY2FuZigpIGluIE1lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCAxZjQzZTYzYzYxMS4uNmZlODU3NmFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JK
Q19fKQogICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IHdpcmVCeXRlc0Zyb21OU09iamVjdChpZCk7CisgICAgc3RhdGljIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21OU09iamVjdChpZCk7CiAjZW5kaWYK
IAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNvY29hLm1tCmluZGV4IDY2ZThiMjdhMDlhLi43MzEwZjVlMWYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJp
YWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAtODAsMjAgKzgwLDY0IEBAIGlkIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkCiAgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0OwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2Jq
ZWN0KGlkIG9iamVjdCkKK3N0YXRpYyBib29sIHZhbGlkYXRlT2JqZWN0KGlkIGFyZ3VtZW50KQog
eworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCBb
YXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNL
aW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
TnVsbCBjbGFzc11dKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChbYXJndW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7CisgICAgICAgIF9fYmxvY2sgQk9PTCB2
YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1lcmF0ZU9iamVjdHNVc2luZ0Js
b2NrOl4oaWQgb2JqZWN0LCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7CisgICAgICAgICAgICBp
ZiAoIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZh
bHNlOworICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAg
ICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgaWYgKFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2Nr
IGJvb2wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVLZXlzQW5k
T2JqZWN0c1VzaW5nQmxvY2s6XihpZCBrZXksIGlkIHZhbHVlLCBCT09MICpzdG9wKSB7CisgICAg
ICAgICAgICBpZiAoIXZhbGlkYXRlT2JqZWN0KGtleSkgfHwgIXZhbGlkYXRlT2JqZWN0KHZhbHVl
KSkgeworICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgKnN0
b3AgPSBZRVM7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworCisgICAgICAgIHJldHVybiB2
YWxpZDsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjb3JlVmFsdWVGcm9tTlNPYmplY3QoaWQgb2Jq
ZWN0KQoreworICAgIGlmIChvYmplY3QgJiYgIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwog
ICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0Om9iamVjdCBpbkNv
bnRleHQ6Y29udGV4dF07CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGdsb2JhbE9iamVjdCA9
IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAgICAgQVNTRVJUKGdsb2JhbE9i
amVjdCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCi0gICAg
YXV0byBjb3JlVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgq
Z2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKSk7Ci0g
ICAgcmV0dXJuIGNvcmVWYWx1ZS0+dG9XaXJlQnl0ZXMoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxP
YmplY3QsIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOworfQorCitSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChpZCBvYmpl
Y3QpCit7CisgICAgYXV0byBjb3JlVmFsdWUgPSBjb3JlVmFsdWVGcm9tTlNPYmplY3Qob2JqZWN0
KTsKKyAgICBpZiAoIWNvcmVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIGNyZWF0ZShjb3JlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIH0gLy8gQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNz
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdl
LmgKaW5kZXggOTdiZWI2ZTgxMzkuLjYzYTFlOWVhMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsK
IEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKQEAgLTU0LDYgKzU1LDkg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAgKi8KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CiAKKy8qISBA
YWJzdHJhY3QgVGhlIGNvbnRlbnQgd29ybGQgZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB3YXMgc2Vu
dC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tDb250ZW50V29ybGQgKndv
cmxkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQppbmRleCBjOTNlN2E5OWRh
Yi4uYmQ1ZGQ0NmI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQpAQCAtMzUsOSArMzUsMTAgQEAgQGltcGxlbWVudGF0
aW9uIFdLU2NyaXB0TWVzc2FnZSB7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmll
dzsKICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IF9mcmFtZUluZm87CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfbmFtZTsKKyAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IF93b3JsZDsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6
KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkg
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJh
bWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFtZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3Js
ZAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtNDYsNiArNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQm9keTooaWQpYm9k
eSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzooVwogICAgIF93ZWJWaWV3
ID0gd2ViVmlldzsKICAgICBfZnJhbWVJbmZvID0gZnJhbWVJbmZvOwogICAgIF9uYW1lID0gYWRv
cHROUyhbbmFtZSBjb3B5XSk7CisgICAgX3dvcmxkID0gd29ybGQ7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KQEAgLTcwLDQgKzcyLDkgQEAgLSAoTlNTdHJpbmcgKiluYW1lCiAgICAgcmV0dXJuIF9u
YW1lLmdldCgpOwogfQogCistIChXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCit7CisgICAgcmV0dXJu
IF93b3JsZC5nZXQoKTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgyM2RmMWU4YjUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaApAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIFdL
U2NyaXB0TWVzc2FnZTsKK0BjbGFzcyBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKKworLyohIEEg
Y2xhc3MgY29uZm9ybWluZyB0byAgdGhlIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkg
cHJvdG9jb2wgcHJvdmlkZXMgYQorbWV0aG9kIGZvciByZWNlaXZpbmcgbWVzc2FnZXMgZnJvbSBK
YXZhU2NyaXB0IHJ1bm5pbmcgaW4gYSB3ZWJwYWdlIGFuZCByZXBseWluZyB0byB0aGVtIGFzeW5j
aHJvbm91c2x5LgorKi8KK0Bwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5
IDxOU09iamVjdD4KKworLyohIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gYSBzY3JpcHQgbWVzc2Fn
ZSBpcyByZWNlaXZlZCBmcm9tIGEgd2VicGFnZS4KKyBAcGFyYW0gdXNlckNvbnRlbnRDb250cm9s
bGVyIFRoZSB1c2VyIGNvbnRlbnQgY29udHJvbGxlciBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0
aG9kLgorIEBwYXJhbSBtZXNzYWdlIFRoZSBzY3JpcHQgbWVzc2FnZSByZWNlaXZlZC4KKyBAcGFy
YW0gcmVwbHlIYW5kbGVyIEEgYmxvY2sgdG8gYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiBw
cm9jZXNzaW5nIHRoZSBtZXNzYWdlLgorIEBkaXNjdXNzaW9uIFdoZW4gdGhlIEphdmFTY3JpcHQg
cnVubmluZyBpbiB5b3VyIGFwcGxpY2F0aW9uJ3Mgd2ViIGNvbnRlbnQgY2FsbGVkIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVzc2FnZUJvZHk+KSwK
KyBhIEphdmFTY3JpcHQgUHJvbWlzZSBvYmplY3Qgd2FzIHJldHVybmVkLiBUaGUgdmFsdWVzIHBh
c3NlZCB0byB0aGUgcmVwbHlIYW5kbGVyIGFyZSB1c2VkIHRvIHJlc29sdmUgdGhhdCBQcm9taXNl
LgorCisgUGFzc2luZyBhIG5vbi1uaWwgTlNTdHJpbmcgdmFsdWUgdG8gdGhlIHNlY29uZCBwYXJh
bWV0ZXIgb2YgdGhlIHJlcGx5SGFuZGxlciBzaWduYWxzIGFuIGVycm9yLgorIE5vIG1hdHRlciB3
aGF0IHZhbHVlIHlvdSBwYXNzIHRvIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHJlcGx5SGFu
ZGxlciwKKyB0aGUgUHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGggYSBKYXZhU2NyaXB0IGVy
cm9yIG9iamVjdCB3aG9zZSBtZXNzYWdlIHByb3BlcnR5IGlzIHNldCB0byB0aGF0IGVycm9yTWVz
c2FnZSBzdHJpbmcuCisKKyBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB0aGUgcmVwbHlIYW5k
bGVyIGlzIG5pbCwgdGhlIGZpcnN0IGFyZ3VtZW50IHdpbGwgYmUgc2VyaWFsaXplZCBpbnRvIGl0
cyBKYXZhU2NyaXB0IGVxdWl2YWxlbnQgYW5kIHRoZSBQcm9taXNlIHdpbGwgYmUgZnVsZmlsbGVk
IHdpdGggdGhlIHJlc3VsdGluZyB2YWx1ZS4KKyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbmls
IHRoZW4gdGhlIFByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCB3aXRoIGEgSmF2YVNjcmlwdCB2YWx1
ZSBvZiAidW5kZWZpbmVkIgorCisgQWxsb3dlZCBub24tbmlsIHJlc3VsdCB0eXBlcyBhcmU6Cisg
TlNOdW1iZXIsIE5TTnVsbCwgTlNTdHJpbmcsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlv
bmFyeS4KKyBBbnkgTlNBcnJheSBvciBOU0RpY3Rpb25hcnkgY29udGFpbmVycyBjYW4gb25seSBj
b250YWluIG9iamVjdHMgb2YgdGhvc2UgdHlwZXMuCisKKyBUaGUgcmVwbHlIYW5kbGVyIGNhbiBi
ZSBjYWxsZWQgYXQgbW9zdCBvbmNlLgorIElmIHRoZSByZXBseUhhbmRsZXIgaXMgZGVhbGxvY2F0
ZWQgYmVmb3JlIGl0IGlzIGNhbGxlZCwgdGhlIFByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3aXRo
IGEgSmF2YVNjcmlwdCBFcnJvciBvYmplY3QKKyB3aXRoIGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2Ug
aW5kaWNhdGluZyB0aGUgaGFuZGxlciB3YXMgbmV2ZXIgY2FsbGVkLgorCisgRXhhbXBsZToKKwor
IFdpdGggYSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IG9iamVjdCBpbnN0YWxsZWQg
d2l0aCB0aGUgbmFtZSAidGVzdEhhbmRsZXIiLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIEphdmFT
Y3JpcHQ6CisgQHRleHRibG9jaworICAgICB2YXIgcHJvbWlzZSA9IHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJGdWxmaWxsIG1lIHdpdGggNDIi
KTsKKyAgICAgYXdhaXQgcDsKKyAgICAgcmV0dXJuIHA7CisgQC90ZXh0YmxvY2sKKworIEFuZCBj
b25zaWRlciB0aGUgZm9sbG93aW5nIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgaW1w
bGVtZW50YXRpb246CisgQHRleHRibG9jaworICAgICAtICh2b2lkKXVzZXJDb250ZW50Q29udHJv
bGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlk
UmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UgcmVwbHlIYW5k
bGVyOih2b2lkICheKShpZCwgTlNTdHJpbmcgKikpcmVwbHlIYW5kbGVyCisgICAgIHsKKyAgICAg
ICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbDpAIkZ1bGZpbGwgbWUgd2l0aCA0MiJdKQorICAg
ICAgICAgICAgcmVwbHlIYW5kbGVyKEA0MiwgbmlsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmVwbHlIYW5kbGVyKG5pbCwgQCJVbmV4cGVjdGVkIG1lc3NhZ2UgcmVjZWl2ZWQiKTsKKyAg
ICAgfQorIEAvdGV4dGJsb2NrCisKKyBJbiB0aGlzIGV4YW1wbGU6CisgICAtIFRoZSBKYXZhU2Ny
aXB0IGNvZGUgc2VuZHMgYSBtZXNzYWdlIHRvIHlvdXIgYXBwbGljYXRpb24gY29kZSB3aXRoIHRo
ZSBib2R5IEAiRnVsZmlsbCBtZSB3aXRoIDQyIgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBp
cyBzdXNwZW5kZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHJlc3VsdGluZyBwcm9taXNlIHRvIHJl
c29sdmUuCisgICAtIFlvdXIgbWVzc2FnZSBoYW5kbGVyIGlzIGludm9rZWQgd2l0aCB0aGF0IG1l
c3NhZ2UgYW5kIGEgYmxvY2sgdG8gY2FsbCB3aXRoIHRoZSByZXBseSB3aGVuIHJlYWR5LgorICAg
LSBZb3VyIG1lc3NhZ2UgaGFuZGxlciBzZW5kcyB0aGUgdmFsdWUgQDQyIGFzIGEgcmVwbHkuCisg
ICAtIFRoZSBKYXZhU2NyaXB0IHByb21pc2UgaXMgZnVsZmlsbGVkIHdpdGggdGhlIHZhbHVlIDQy
LgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250aW51ZXMgYW5kIHRoZSB2YWx1ZSA0MiBp
cyByZXR1cm5lZC4KKyAqLworLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNv
bnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRN
ZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXiko
aWQgcmVwbHksIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpKXJlcGx5SGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQGVuZAorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKaW5kZXggMjYzNzg4MDA1Njcu
Ljg5YmM1MThkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaApAQCAtMjcsNiArMjcsNiBAQAog
CiBAaW50ZXJmYWNlIFdLU2NyaXB0TWVzc2FnZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoQm9keTooaWQpYm9keSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzoo
V0tGcmFtZUluZm8gKilmcmFtZUluZm8gbmFtZTooTlNTdHJpbmcgKiluYW1lOworLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFt
ZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIuaAppbmRleCA4MjlhMDU3MzM3ZC4uZjQzZjJlNjJmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5oCkBAIC0zMCw4ICszMCwxMCBAQAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNz
IFdLQ29udGVudFJ1bGVMaXN0OworQGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLVXNl
clNjcmlwdDsKIEBwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyOworQHByb3RvY29sIFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk7CiAKIC8qISBBIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyIG9iamVjdCBwcm92aWRlcyBhIHdheSBmb3IgSmF2YVNjcmlwdCB0byBwb3N0CiAgbWVz
c2FnZXMgdG8gYSB3ZWIgdmlldy4KQEAgLTU2LDE5ICs1OCw3NSBAQCBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclNjcmlwdHM7
CiAKIC8qISBAYWJzdHJhY3QgQWRkcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCi0gQHBhcmFt
IHNjcmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBtZXNzYWdlIGhhbmRsZXIgdG8gYWRkLgorIEBwYXJh
bSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQu
CisgQHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRk
IHRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgogIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRo
ZSBtZXNzYWdlIGhhbmRsZXIuCi0gQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0TWVzc2FnZUhh
bmRsZXIgYWRkcyBhIGZ1bmN0aW9uCi0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5h
bWU+LnBvc3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIGZvciBhbGwKLSBmcmFtZXMuCisgQGRpc2N1
c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFtZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VC
b2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGluIHRoZSBnaXZlbiBXS0NvbnRlbnRXb3Js
ZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLgorCisg
RWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkgbnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1ZSBuYW1lLgorCisgT25jZSBhbnkgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRlZCB0byBhIFdLQ29udGVudFdvcmxkIGZv
ciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRvIGFkZCBhbm90aGVyCisgc2NyaXB0IG1l
c3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdvcmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3
aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVy
LgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxpZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0
IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIgYW5kIFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHkKKyBvYmplY3RzIHdpbGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90
aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhlIHNhbWUgV0tDb250ZW50V29ybGQgd2l0
aCB0aGUgc2FtZSBuYW1lLgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdv
cmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFi
c3RyYWN0IEFkZHMgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBzY3JpcHRNZXNz
YWdlSGFuZGxlcldpdGhSZXBseSBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQuCisg
QHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRkIHRo
ZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBt
ZXNzYWdlIGhhbmRsZXIuCisgQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFt
ZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VCb2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGlu
IHRoZSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUg
YSBub24tZW1wdHkgc3RyaW5nLgorCisgRWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkg
bnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1
ZSBuYW1lLgorCisgT25jZSBhbnkgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRl
ZCB0byBhIFdLQ29udGVudFdvcmxkIGZvciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRv
IGFkZCBhbm90aGVyCisgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdv
cmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91
cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxp
ZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHkgYW5kIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIKKyBvYmplY3RzIHdp
bGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhl
IHNhbWUgV0tDb250ZW50V29ybGQgd2l0aCB0aGUgc2FtZSBuYW1lLgorCisgUmVmZXIgdG8gdGhl
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgZG9jdW1lbnRhdGlvbiBmb3IgZXhhbXBs
ZXMgb2YgaG93IGl0IGlzIG1vcmUgZmxleGlibGUgdGhhbiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
LgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OihpZCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4pc2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVw
bHkgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBBZGRzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0
byB0aGUgbWFpbiB3b3JsZCB1c2VkIGJ5IHBhZ2UgY29udGVudCBpdHNlbGYuCisgQHBhcmFtIHNj
cmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRvIGFkZC4KKyBA
cGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgorIEBkaXNjdXNzaW9u
IENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOmNvbnRlbnRXb3JsZDpuYW1lOgorIHdpdGggW1dLQ29udGVudFdvcmxkIHBh
Z2VXb3JsZF0gYXMgdGhlIGNvbnRlbnRXb3JsZCBhcmd1bWVudC4KICAqLwogLSAodm9pZClhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1l
c3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZTsKIAogLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KICBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0
aGUgbWVzc2FnZSBoYW5kbGVyIHRvIHJlbW92ZS4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBX
S0NvbnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlci4KKyAqLworLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5T
U3RyaW5nICopbmFtZSBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
Ky8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCisgQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlciB0byByZW1vdmUuCisgQGRpc2N1
c3Npb24gQ2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgcmVtb3Zl
U2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOmNvbnRlbnRXb3JsZDoKKyAgd2l0aCBbV0tDb250
ZW50V29ybGQgcGFnZVdvcmxkXSBhcyB0aGUgY29udGVudFdvcmxkIGFyZ3VtZW50LgogICovCiAt
ICh2b2lkKXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1l
OwogCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYWxsIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzIGZy
b20gYSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBXS0Nv
bnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSBhbGwgc2NyaXB0IG1lc3NhZ2UgaGFuZGxl
cnMuCisgKi8KKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRl
bnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGFsbCBhc3NvY2lhdGVkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLgorICovCistICh2b2lk
KXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVycyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IEFkZHMgYSBjb250
ZW50IHJ1bGUgbGlzdC4KICBAcGFyYW0gY29udGVudFJ1bGVMaXN0IFRoZSBjb250ZW50IHJ1bGUg
bGlzdCB0byBhZGQuCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA2ODI3YzkxNDFj
MC4uN2Y5NGE0MDU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5o
IgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgorI2ltcG9ydCAiV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oIgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLVXNlclNjcmlwdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgpAQCAtMTI1LDMxICsxMjYsOTQgQEAgcHVibGljOgogICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQogICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQogICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseShmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAotICAgIHZvaWQgZGlkUG9zdE1l
c3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorCisgICAgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZShXS1VzZXJDb250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQgPFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHk+IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQorICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQorICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQorICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdl
KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBmaW5hbAogICAgIHsKICAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZy
YW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5m
b0RhdGEpLCAmcGFnZSkpOwogICAgICAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUsIDApOwotICAgICAg
ICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2lu
aXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBmcmFtZUluZm86
ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIG1l
c3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJv
ZHkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0
KCkgbmFtZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsKICAgICAgICAgCi0g
ICAgICAgICAgICBbbV9oYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIu
Z2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKV07CisgICAgICAgICAg
ICBbKGlkPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KW1faGFuZGxlci5nZXQoKSB1c2VyQ29udGVu
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOm1l
c3NhZ2UuZ2V0KCldOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNBc3luY1JlcGx5
OworICAgIH0KKworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgRnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5SGFuZGxlcikgZmluYWwKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3N1cHBvcnRzQXN5bmNSZXBseSk7CisKKyAgICAgICAgYXV0byBm
aW5hbGl6ZXIgPSBbXShGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
Y29uc3QgU3RyaW5nJik+JiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24obnVsbHB0
ciwgIldLV2ViVmlldyBBUEkgY2xpZW50IGRpZCBub3QgcmVzcG9uZCB0byB0aGlzIHBvc3RNZXNz
YWdlIl9zKTsKKyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBhdXRvIGhhbmRsZXIgPSBDb21w
bGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPihXVEZNb3ZlKHJlcGx5SGFuZGxlciksIFdURk1vdmUoZmluYWxp
emVyKSk7CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBSZXRhaW5Q
dHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCAmcGFnZSkpOworICAgICAgICAgICAgaWQgYm9keSA9
IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIDApOworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0
TWVzc2FnZSBhbGxvY10gX2luaXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94
eShwYWdlKSBmcmFtZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxk
OndyYXBwZXIod29ybGQpXSk7CisKKyAgICAgICAgICAgIFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseT4pbV9oYW5kbGVyLmdldCgpIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2Nv
bnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKSByZXBs
eUhhbmRsZXI6XihpZCByZXN1bHQsIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIo
bnVsbHB0ciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0g
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChyZXN1bHQpOwor
ICAgICAgICAgICAgICAgIGlmICghc2VyaWFsaXplZFZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZXIobnVsbHB0ciwgIlRoZSByZXN1bHQgdmFsdWUgcGFzc2VkIGJhY2sgZnJvbSB0
aGUgV0tXZWJWaWV3IEFQSSBjbGllbnQgd2FzIHVuYWJsZSB0byBiZSBzZXJpYWxpemVkIl9zKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGhhbmRsZXIoc2VyaWFsaXplZFZhbHVlLmdldCgpLCB7IH0pOworICAgICAgICAg
ICAgfV07CiAgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPGlkIDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9oYW5kbGVyOworICAgIFJldGFpblB0cjxpZD4gbV9oYW5k
bGVyOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9uYW1lOworICAgIGJvb2wgbV9zdXBwb3J0
c0FzeW5jUmVwbHk7CiB9OwogCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXIKK3sKKyAg
ICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKHNjcmlwdE1lc3NhZ2VIYW5kbGVyKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMu
IiwgKE5TU3RyaW5nICopc2NyaXB0TWVzc2FnZUhhbmRsZXIubmFtZSgpXTsKK30KKwogLSAodm9p
ZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNj
cmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewogICAgIGF1dG8gaGFu
ZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVl
PFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVy
LCBuYW1lKSwgbmFtZSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7Ci0g
ICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKSkKLSAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNz
YWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFt
ZV07CisgICAgW3NlbGYgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCldOwor
fQorCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3Js
ZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIGF1dG8gaGFuZGxlciA9IFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwg
bmFtZSwgKndvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBbc2VsZiBfYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKV07Cit9CisKKy0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHk6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PilzY3Jp
cHRNZXNzYWdlSGFuZGxlciBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQgbmFt
ZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJE
ZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqd29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5k
bGVyLmdldCgpXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5h
bWU6KE5TU3RyaW5nICopbmFtZQpAQCAtMTU3LDYgKzIyMSwyMSBAQCAtICh2b2lkKXJlbW92ZVNj
cmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lCiAgICAgX3VzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKG5hbWUs
IEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogfQogCistICh2b2lkKXJl
bW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHktPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUobmFtZSwgKmNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0
TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50
V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJN
ZXNzYWdlSGFuZGxlcnMoKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZv
aWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzCit7CisgICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCk7Cit9CisKICNwcmFn
bWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAtIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgKaW5kZXgg
MTA4YmVlMTUzODIuLjQ3ZjdkZTAxOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlcklu
dGVybmFsLmgKQEAgLTI5LDE1ICsyOSwxOCBAQAogI2ltcG9ydCAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0KIHRlbXBsYXRlPD4gc3RydWN0
IFdyYXBwZXJUcmFpdHM8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKICAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKIH07CiAKK2NsYXNzIFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyOwogfQogCiBAaW50ZXJmYWNlIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gX3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OwogfQorCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXI7CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAppbmRleCBhYTM1MWU3N2NjZC4uZTVm
ODk2ZDliMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CiAK
K0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBXS1VzZXJTY3JpcHQ7CiBAY2xhc3MgX1dL
VXNlckNvbnRlbnRGaWx0ZXI7CiBAY2xhc3MgX1dLVXNlckNvbnRlbnRXb3JsZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAwMzQxNThi
YTIxLi42YjExYjM4NDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC04OTgsMTUgKzg5OCwxMyBAQCAtICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJP
T0wpYQogCiAgICAgZm9yIChpZCBrZXkgaW4gYXJndW1lbnRzKSB7CiAgICAgICAgIGlkIHZhbHVl
ID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZUFy
Z3VtZW50KHZhbHVlKSkgewotICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlvbiBh
cmd1bWVudCB2YWx1ZXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlcywgb3IgY29u
dGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdHlwZXM6IE5TU3RyaW5nLCBOU051bWJlciwgTlNEYXRl
LCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsKKyAgICAgICAgYXV0byBzZXJpYWxpemVkVmFs
dWUgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KHZhbHVl
KTsKKyAgICAgICAgaWYgKCFzZXJpYWxpemVkVmFsdWUpIHsKKyAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xs
b3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU051bWJl
ciwgTlNOdWxsLCBOU0RhdGUsIE5TU3RyaW5nLCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgCi0gICAgICAgIGF1dG8gd2lyZUJ5
dGVzID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCh2
YWx1ZSk7Ci0gICAgICAgIC8vIFNpbmNlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgaW5wdXQgZGljdGlv
bmFyeSBhYm92ZSwgd2Ugc2hvdWxkIG5ldmVyIGZhaWwgdG8gc2VyaWFsaXplIGl0IGludG8gd2ly
ZSBieXRlcy4KLSAgICAgICAgQVNTRVJUKHdpcmVCeXRlcyk7Ci0gICAgICAgIGFyZ3VtZW50c01h
cC0+c2V0KGtleSwgKndpcmVCeXRlcyk7CisKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5
LCBzZXJpYWxpemVkVmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygp
KTsKICAgICB9CiAKICAgICBpZiAoZXJyb3JNZXNzYWdlICYmIGhhbmRsZXIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwCmluZGV4IDdjNDMyMzA0ZjUyLi5kYTEyOWUzYjhiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuY3BwCkBAIC0xOTAsMTMgKzE5MCwyMiBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZy
YW1lSW5mb0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGpzUmVzdWx0ID0gd2Via2l0SmF2YXNjcmlwdFJlc3Vs
dENyZWF0ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgICAgICBnX3NpZ25hbF9lbWl0KG1f
bWFuYWdlciwgc2lnbmFsc1tTQ1JJUFRfTUVTU0FHRV9SRUNFSVZFRF0sIG1faGFuZGxlck5hbWUs
IGpzUmVzdWx0KTsKICAgICAgICAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKGpzUmVz
dWx0KTsKICAgICB9CiAKKyAgICBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQ
STo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+
JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KKyAgICAKICAgICB2aXJ0dWFsIH5TY3JpcHRNZXNz
YWdlQ2xpZW50R3RrKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggYjY1NTFlYWJmNWMuLmUwMGMyMWUwMThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShX
ZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQ
b3N0TWVzc2FnZShXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250
ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gc2VyaWFs
aXplZFNjcmlwdFZhbHVlLnRvU3RyaW5nKCk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRva2Vu
cyA9IG1lc3NhZ2Uuc3BsaXQoJzonKTsKQEAgLTUzLDYgKzUzLDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQ
b3J0KCksIHRva2Vuc1swXS50b1VJbnQ2NCgpLCB0b2tlbnNbMV0udG9VSW50NjQoKSwgdG9rZW5z
WzJdKTsKICAgICB9CiAKKyAgICBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQ
STo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+
JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KKwogICAgIH5TY3JpcHRNZXNzYWdlQ2xpZW50KCkg
eyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAKaW5kZXggYzk1MWE1MGQzOTguLmYzZjI4YTQ3ZTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKIAogICAgIH5TY3JpcHRNZXNzYWdlQ2xpZW50KCkgeyB9CiAKLSAgICB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJp
ZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZv
RGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byB0
b2tlbnMgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUudG9TdHJpbmcoKS5zcGxpdCgiOiIpOwogICAg
ICAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAzKQpAQCAtNjEsNiArNjEsMTUgQEAgcHVibGljOgog
ICAgICAgICBVUkwgcmVxdWVzdFVSTCB7IHsgfSwgcGFnZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkg
fTsKICAgICAgICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJM
Lmhvc3RBbmRQb3J0KCksIHRva2Vuc1swXS50b1VJbnRTdHJpY3QoKSwgdG9rZW5zWzFdLnRvVUlu
dFN0cmljdCgpLCB0b2tlbnNbMl0pOwogICAgIH0KKyAgICAKKyAgICBib29sIHN1cHBvcnRzQXN5
bmNSZXBseSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkm
LCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgY29uc3QgU3RyaW5nJik+JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KIAogcHJpdmF0
ZToKICAgICBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXImIG1faW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggYWZhY2JiMDcxZjEuLjJm
NjE0YjIzYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAg
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIENv
bnRlbnRXb3JsZDsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01Miw3ICs1Myw5IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250
ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRQb3N0TWVzc2FnZVdpdGhBc3luY1JlcGx5KFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5m
b0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25z
dCBTdHJpbmcmKT4mJikgPSAwOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQVBJOjpDb250ZW50V29ybGQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAppbmRleCA3ZGQ4ZWI5OTMxNy4uMjRiNjMzZTQ4NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCisjaW5jbHVk
ZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5o
IgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgpAQCAtMzE2LDcgKzMxNyw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nCiB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJz
KEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5p
ZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzRm9yV29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OwogCiAgICAgdW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdl
SGFuZGxlcnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7CkBAIC0zMjgsNyArMzI5LDEzIEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdl
SGFuZGxlcnMoQVBJOjpDb250ZW50V29yCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKQoreworICAgIGZvciAoYXV0byYg
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
cygpLCBpZGVudGlmaWVyKCkpOworfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlOjpBc3luY1JlcGx5JiYgcmVw
bHkpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VQcm94eUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNDEsNyArMzQ4LDIxIEBAIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwKICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpwYWdlLCBXVEZNb3ZlKGZyYW1l
SW5mb0RhdGEpLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFSZWZl
cmVuY2UudmVjdG9yKCkpKTsKKyAgICBpZiAoIWhhbmRsZXItPmNsaWVudCgpLnN1cHBvcnRzQXN5
bmNSZXBseSgpKSB7CisgICAgICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpw
YWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3RvcigpKSk7Cisg
ICAgICAgIHJlcGx5KHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGhh
bmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoKnBhZ2UsIFdURk1v
dmUoZnJhbWVJbmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFSZWZlcmVuY2UudmVjdG9yKCkpLCBbcmVwbHkgPSBXVEZN
b3ZlKHJlcGx5KV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvck1lc3NhZ2UuaXNO
dWxsKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgICAgICAgICByZXBseSh7
IHZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkudG9XaXJlQnl0ZXMoKSB9LCB7IH0pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcmVwbHkoeyB9LCBlcnJv
ck1lc3NhZ2UpOworICAgIH0pOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDJjMDk0Mjg1MGI0Li4x
MjlhMzQwZjA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC05OCw2ICs5
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlciYpOwogICAgIHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVy
Rm9yTmFtZShjb25zdCBTdHJpbmcmLCBBUEk6OkNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVt
b3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3JsZCYpOworICAgIHZvaWQg
cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKICAgICB2b2lkIGFkZE5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkm
KTsKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qg
bWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBk
aWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2U6OkFzeW5j
UmVwbHkmJik7CiAKICAgICB2b2lkIGFkZENvbnRlbnRXb3JsZChBUEk6OkNvbnRlbnRXb3JsZCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDhkMjAwYTFlNmU5Li5mZDk1ZjJmNWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDUgKzI0LDUgQEAK
ICAqLwogCiBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB7Ci1EaWRQ
b3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5k
bGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rpb24KK0RpZFBv
c3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRs
ZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2Ug
cmVzdWx0VmFsdWUsIFN0cmluZyBlcnJvck1lc3NhZ2UpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZTQ3YjZlOTJmMC4u
ZTNkYjU0MDlhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtOTczLDYgKzk3Myw3IEBACiAJCTUxMDUyMzc0MUM3M0QzOEIwMDc5OTND
QiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNTIzNzMxQzczRDM3QjAwNzk5M0NCIC8q
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmggKi87IH07CiAJCTUxMDUyMzc1MUM3
M0QzOEYwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNTIz
NzIxQzczRDM3QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTUxMDZEN0M0MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVu
dUNvbnRleHREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5o
ICovOyB9OworCQk1MTA5MDk5NzIzREFDQkYyMDAzQjFFNEMgLyogV0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwOTA5OTQyM0Q0MUYxMzAwM0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJX
aXRoUmVwbHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCTUxMEFGRkJBMTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQUZGQjgxNjU0MjA0
ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmggKi87IH07CiAJCTUxMEY1OTEwMURERTI5
NjkwMDQxMkZGNSAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQzQjI1RTFERENERkQxMDAxNEZBQzYgLyog
X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxMEY1OTExMURERTI5NzAwMDQxMkZGNSAvKiBfV0tMaW5rSWNv
blBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQzBDOTc5MURERDc4NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzU5Nyw2
ICszNTk4LDcgQEAKIAkJNTEwNUIwRjMxNjMwODcyRTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNkQ3QkYxOEJEQkU3MzAwMEFCMTY2IC8q
IENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHRE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4
dERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwOTA5OTQyM0Q0MUYxMzAw
M0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBRkZCNzE2NTQyMDQ4MDAxQkEwNUUgLyog
V2ViUmVzb3VyY2VMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViUmVzb3VyY2VMb2FkZXIuY3BwOyBwYXRoID0gTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEFGRkI4MTY1NDIwNDgwMDFC
QTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJSZXNvdXJjZUxvYWRlci5oOyBwYXRoID0gTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBRkZDRTE2NTQyQ0JEMDAxQkEw
NUUgLyogV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM5Miw2ICs3Mzk0LDcgQEAKIAkJ
CQkxQTdFMzc3NzE4RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLmggKi8sCiAJCQkJ
MUE3RTM3NzYxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5tbSAqLywKIAkJCQkx
QTdFMzc3NDE4RTRBMzNBMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oICovLAor
CQkJCTUxMDkwOTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0
aFJlcGx5LmggKi8sCiAJCQkJN0NDOTlBMzUxOEVGN0NCQzAwNDhDOEI0IC8qIFdLU2NyaXB0TWVz
c2FnZUludGVybmFsLmggKi8sCiAJCQkJNTFDRDFDNUYxQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2Vj
dXJpdHlPcmlnaW4uaCAqLywKIAkJCQk1MUNEMUM2MDFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1
cml0eU9yaWdpbi5tbSAqLywKQEAgLTExMzE4LDYgKzExMzIxLDcgQEAKIAkJCQlCQ0VFN0FEMTEy
ODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRTBFNDI1MTY4QjdBMjgwMDU3RTY2QSAvKiBXZWJQcm9jZXNzU3VwcGxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRTA5MzQxODg2MUQzODAwRDJEQzQ5IC8qIFdlYlByb2dy
ZXNzVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwOTA5OTcyM0RBQ0JGMjAw
M0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkY1ODlEMTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2MUNDQ0E2MjMxNDg1QUEwMEI2NTlCOSAvKiBXZWJSZW1vdGVP
YmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDQxNTBDMzUwNjAwRTUy
Q0U5IC8qIFdlYlJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5jcHAKaW5kZXggZjVjODdjMDJiZDYuLjA0MjlkYWQ2YWY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAg
ICAgfQogCiAgICAgLy8gV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcgotICAg
IHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVy
LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlKSBvdmVycmlkZQorICAgIHZv
aWQgZGlkUG9zdE1lc3NhZ2UoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyLCBX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBoYW5k
bGVyLmZyYW1lKCk7CiAgICAgICAgIGlmICghZnJhbWUpCkBAIC0yNjgsNyArMjY4LDE3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3Nh
Z2Uod2ViUGFnZS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCB3ZWJGcmFtZS0+aW5mbygpLCBt
X2lkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJv
bGxlci0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZXNzYWdlUmVwbHlIYW5kbGVyID0g
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdWx0VmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSB7CisgICAgICAgICAgICBpZiAoIWVycm9yTWVzc2FnZS5pc051bGwoKSkgeworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIGVycm9yTWVzc2FnZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIHZhbHVl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHJlc3VsdFZhbHVl
LnZlY3RvcigpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHZhbHVlLnB0cigpLCB7
IH0pOworICAgICAgICB9OworCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQ
cm94eUlkZW50aWZpZXIoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UodmFsdWUtPmRhdGEoKSkpLCBXVEZNb3ZlKG1lc3NhZ2VSZXBseUhhbmRsZXIp
LCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwpAQCAtMzA5LDcgKzMxOSwxOCBAQCB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKENvbnRlbnRXb3JsZElkZW50aQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3Rv
cjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYgd29ybGRJZGVudGlmaWVycykKK3ZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKCkK
K3sKKyNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorICAgIGlmIChtX3VzZXJNZXNz
YWdlSGFuZGxlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3VzZXJNZXNz
YWdlSGFuZGxlcnMuY2xlYXIoKTsKKyAgICBpbnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFVzZXJNZXNz
YWdlSGFuZGxlckludmFsaWRhdGlvbkNsaWVudHMoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zv
cldvcmxkcyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mIHdvcmxkSWRlbnRp
ZmllcnMpCiB7CiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICAgICBib29sIHVz
ZXJNZXNzYWdlSGFuZGxlcnNDaGFuZ2VkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmgKaW5kZXggZTkwMjYwNzdlOTMuLmNlOTBhOWQ5M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5oCkBAIC0xMDAsNyArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92
ZUFsbFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4m
KTsKIAogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKENvbnRlbnRXb3Js
ZElkZW50aWZpZXIsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIHJl
bW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3Js
ZElkZW50aWZpZXI+Jik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXJzRm9yV29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYpOworICAg
IHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycygpOwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKICAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25z
dCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVz
c2FnZXMuaW4KaW5kZXggNWFkY2QwODBlOTEuLjJhYjIzMjRiYjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3LDggQEAgbWVz
c2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIHsKIAogICAgIEFkZFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcnMoVmVjdG9yPHN0cnVjdCBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyRGF0YT4gc2NyaXB0TWVzc2FnZUhhbmRsZXJzKTsKICAgICBSZW1vdmVVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmll
ciwgdWludDY0X3QgaWRlbnRpZmllcik7Ci0gICAgUmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVycyhWZWN0b3I8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50
aWZpZXJzKTsKKyAgICBSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzRm9yV29ybGRz
KFZlY3RvcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcnMp
OworICAgIFJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoKTsKIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgQWRkQ29udGVudFJ1bGVMaXN0cyhWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBj
b250ZW50RmlsdGVycyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNWI4YzQyNWRiZWMuLmZjZjc2Yzc0OGJlIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDQt
MTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGgg
YSBwcm9taXNlLgorICAgICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxU
ZXN0KToKKyAgICAgICAgKC1bQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENv
bnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6cmVwbHlIYW5kbGVyOl0pOgorCiAyMDIw
LTA0LTE3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEVuYWJsZSBzZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29u
dHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDRhYjk5NDMyYTg3Li42N2JmYmQ1M2M5NiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENv
bnRyb2xsZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9V
c2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTMwLDcgKzMwLDEwIEBACiAjaW1wb3J0ICJUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFdvcmxkLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1NjcmlwdE1lc3NhZ2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
V2l0aFJlcGx5Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyU2NyaXB0Lmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tVc2VyU2NyaXB0UHJpdmF0ZS5oPgpAQCAtNzQsNiArNzcsOSBAQCBAZW5kCiAKIFRFU1QoV0tV
c2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQogewor
ICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
ZmFsc2U7CisKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBh
ZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKQEAgLTk1LDYgKzEwMSw5IEBAIFRFU1QoV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQogCiBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdElzb2xh
dGVkV29ybGQpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxk
PiB3b3JsZCA9IFtfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQi
XTsKIAogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0
TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwpAQCAtMTQ0LDYgKzE1Myw5
IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFz
aWNQb3N0SXNvbGF0ZWRXb3JsZCkKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2Ny
aXB0TWVzc2FnZUhhbmRsZXJCYXNpY1JlbW92ZSkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVh
cigpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRy
PFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gdXNlckNv
bnRlbnRDb250cm9sbGVyID0gW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXTsK
QEAgLTE4OCw2ICsyMDAsOCBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRN
ZXNzYWdlSGFuZGxlckJhc2ljUmVtb3ZlKQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVy
LCBTY3JpcHRNZXNzYWdlSGFuZGxlckNhbGxSZW1vdmVkSGFuZGxlcikKIHsKKyAgICByZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFu
ZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dF0pOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBS
ZXRhaW5QdHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9
IFtjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC0yMDUsMjIgKzIxOSwy
MyBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckNh
bGxSZW1vdmVkSGFuZGxlcikKIAogICAgIFt1c2VyQ29udGVudENvbnRyb2xsZXIgcmVtb3ZlU2Ny
aXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CiAKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIC8vIFRlc3QgdGhhdCB3ZSB0aHJvdyBhbiBleGNl
cHRpb24gaWYgeW91IHRyeSB0byB1c2UgYSBtZXNzYWdlIGhhbmRsZXIgdGhhdCBoYXMgYmVlbiBy
ZW1vdmVkLgotICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDoKLSAgICAgICAgQCJ0cnkg
eyIKLSAgICAgICAgICIgICAgaGFuZGxlclRvUmVtb3ZlLnBvc3RNZXNzYWdlKCdGQUlMJyk7Igot
ICAgICAgICAgIn0gY2F0Y2ggKGUpIHsiCi0gICAgICAgICAiICAgIHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLmhhbmRsZXJUb1Bvc3QucG9zdE1lc3NhZ2UoJ1BBU1MnKTsiCi0gICAgICAg
ICAifSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZh
U2NyaXB0OkAicmV0dXJuIGhhbmRsZXJUb1JlbW92ZS5wb3N0TWVzc2FnZSgnRkFJTCcpIiBhcmd1
bWVudHM6bmlsIGluQ29udGVudFdvcmxkOltXS0NvbnRlbnRXb3JsZCBwYWdlV29ybGRdIGNvbXBs
ZXRpb25IYW5kbGVyOl4gKGlkIHZhbHVlLCBOU0Vycm9yICogZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwodmFsdWUpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIkludmFs
aWRBY2Nlc3NFcnJvciJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CiAKLSAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2Ug
PSBmYWxzZTsKLQotICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbc2Ny
aXB0TWVzc2FnZXNbMF0gYm9keV0pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4g
d2ViVmlld0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbFRlc3Qo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKIHsKKyAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uQ29w
eSA9IGFkb3B0TlMoW2NvbmZpZ3VyYXRpb24gY29weV0pOwogICAgIFtjb25maWd1cmF0aW9uQ29w
eSBzZXRVc2VyQ29udGVudENvbnRyb2xsZXI6W1tbV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXV07CkBAIC0yMzYsNiArMjUxLDkgQEAgc3RhdGljIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFu
ZGxlclJlbW92YWwKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsKQogeworICAgIHNjcmlwdE1lc3NhZ2VzLmNs
ZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbj4gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1
cmF0aW9uIHNldFByb2Nlc3NQb29sOltbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1d
OwpAQCAtMjYyLDYgKzI4MCw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlw
dE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbCkKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkgLy8gRklYTUU6IGhhbmdzIGluIHRoZSBpT1Mgc2ltdWxhdG9yCiBURVNUKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQog
eworICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKQEAgLTI5Myw2ICszMTQsOSBAQCBURVNUKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQog
CiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlclJlcGxh
Y2VXaXRoU2FtZU5hbWUpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNl
aXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdl
SGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10g
aW5pdF0pOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAg
ICBSZXRhaW5QdHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxl
ciA9IFtjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC04MzMsNiArODU3
LDkgQEAgc3RhdGljIHZvaWQgY29tcGFyZU1lc3NhZ2VzKFZlY3Rvcjxjb25zdCBjaGFyKj4mJiBl
eHBlY3RlZE1lc3NhZ2VzKQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBJbmplY3RV
c2VyU2NyaXB0SW1tZWRpYXRlbHkpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAg
ICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIGF1dG8gaGFuZGxlciA9IGFk
b3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gc3Rh
cnRBbGxGcmFtZXMgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJj
ZTpAIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdl
KCdzdGFydCBhbGwnKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXRE
b2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKICAgICBhdXRvIGVuZE1haW5GcmFt
ZU9ubHkgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlbmQg
bWFpbicpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50
RW5kIGZvck1haW5GcmFtZU9ubHk6WUVTXSk7CkBAIC05MDIsMyArOTI5LDI3NCBAQCBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQogICAgIEVYUEVD
VF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndhaXRlZCBmb3Igbm90aWZpY2F0
aW9uIik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAiZG9j
dW1lbnQgcGFyc2luZyBlbmRlZCIpOwogfQorCitAaW50ZXJmYWNlIEFzeW5jU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4KK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIKKworLSAodm9p
ZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNv
bnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2Ug
KiltZXNzYWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TU3RyaW5nICplcnJvck1lc3Nh
Z2UpKXJlcGx5SGFuZGxlcgoreworICAgIGlmIChbbWVzc2FnZS5uYW1lIGlzRXF1YWxUb1N0cmlu
ZzpAIm90aGVyV29ybGRIYW5kbGVyIl0pCisgICAgICAgIEVYUEVDVF9UUlVFKG1lc3NhZ2Uud29y
bGQgIT0gbmlsKTsKKyAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKSB7CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpA
IkZ1bGZpbGwiXSkgeworICAgICAgICAgICAgcmVwbHlIYW5kbGVyKEAiRnVsZmlsbGVkISIsIG5p
bCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdl
LmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiUmVqZWN0Il0pIHsKKyAgICAgICAgICAgIHJlcGx5SGFu
ZGxlcihuaWwsIEAiUmVqZWN0ZWQhIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiVW5kZWZpbmVkIl0p
IHsKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihuaWwsIG5pbCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5n
OkAiRG8gbm90aGluZyJdKSB7CisgICAgICAgICAgICAvLyBEcm9wIHRoZSByZXBseSBoYW5kbGVy
IHdpdGhvdXQgcmVzcG9uZGluZyB0byBzZWUgd2hhdCBoYXBwZW5zCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5n
OkAiSW52YWxpZCByZXBseSJdKSB7CisgICAgICAgICAgICByZXBseUhhbmRsZXIoW1tbTlNEYXRh
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0sIG5pbCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBbGwgb3RoZXIgaW5wdXRzIHNob3VsZCBqdXN0IGJl
IHJvdW5kIHRyaXBwZWQgYmFjayB0byB0aGUgbWVzc2FnZSBoYW5kbGVyCisgICAgcmVwbHlIYW5k
bGVyKG1lc3NhZ2UuYm9keSwgbmlsKTsKK30KKworQGVuZAorCitURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBNZXNzYWdlSGFuZGxlckFQSSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0FzeW5j
U2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpo
YW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgbmFtZTpA
InRlc3RIYW5kbGVyMSJdOworCisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBA
dHJ5IHsKKyAgICAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6
V0tDb250ZW50V29ybGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjEiXTsKKyAgICB9IEBj
YXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgeworICAgICAgICBoYWRFeGNlcHRpb24gPSB0
cnVlOworICAgIH0KKworICAgIEVYUEVDVF9UUlVFKGhhZEV4Y2VwdGlvbik7CisgICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJX
aXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVs
dENsaWVudFdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjIiXTsKKworICAgIGF1dG8gKndvcmxkID0g
W1dLQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJvdGhlcldvcmxkIl07CisgICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJX
aXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29ybGQgbmFtZTpAInRlc3RIYW5k
bGVyMyJdOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOndv
cmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjQiXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdl
dCgpIGNvbnRlbnRXb3JsZDp3b3JsZCBuYW1lOkAidGVzdEhhbmRsZXI1Il07CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKworICAgIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TU3RyaW5nICpmdW5jdGlvbkJv
ZHkgPSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbaGFuZGxlcl0ucG9z
dE1lc3NhZ2UoYXJnKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKworICAgIC8vIHBhZ2VXb3JsZCBp
cyB3aGVyZSB0ZXN0aGFuZGxlcjEgbGl2ZXMKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2Ny
aXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXIx
IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQg
Y29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0Vx
dWFsVG9OdW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAv
LyBUcnlpbmcgdG8gZmluZCB0ZXN0SGFuZGxlcjEgaW4gdGhlIGRlZmF1bHRDbGllbnRXb3JsZCBz
aG91bGQgZmFpbAorICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5
IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjEiLCBAImFyZyIgOiBAMSB9
IGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0
aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBkZWZhdWx0Q2xpZW50V29ybGQgaXMg
d2hlcmUgdGVzdGhhbmRsZXIyIGxpdmVzCisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlw
dDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMiIs
IEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVu
dFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1
bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwor
CisgICAgLy8gQnV0IGlmIHdlIHJlbXZvZSBpdCwgaXQgc2hvdWxkIG5vIGxvbmdlciBsaXZlIHRo
ZXJlLCBhbmQgdXNpbmcgaXQgc2hvdWxkIGNhdXNlIGFuIGVycm9yLgorICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTpAInRlc3RIYW5kbGVyMiIgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRD
bGllbnRXb3JsZF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJv
ZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMiIsIEAiYXJnIiA6IEAx
IH0gaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBs
ZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlmeSBoYW5kbGVycyAzLCA0
LCBhbmQgNSBhcmUgYWxsIGluIHRoZSBjdXN0b20gd29ybGQuCisgICAgW3dlYlZpZXcgY2FsbEFz
eW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRl
c3RIYW5kbGVyMyIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlv
bkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1i
ZXI6QDFdKTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0
aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI0IiwgQCJhcmci
IDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
ICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgIH1dOwor
ICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpA
eyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjUiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdv
cmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJv
cikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFty
ZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNl
OworCisgICAgLy8gUmVtb3ZlIDMgZnJvbSB0aGUgd3Jvbmcgd29ybGQsIHZlcmlmeSBpdCBpcyBz
dGlsbCB0aGVyZSBpbiB0aGUgY3VzdG9tIHdvcmxkLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAInRl
c3RIYW5kbGVyMyIgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3Js
ZF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1l
bnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMyIsIEAiYXJnIiA6IEAxIH0gaW5Db250
ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0g
ZmFsc2U7CisKKyAgICAvLyBSZW1vdmUgMyBmcm9tIHRoZSBjb3JyZWN0IHdvcmxkLCB2ZXJpZnkg
aXQgaXMgZ29uZSwgYnV0IDQgYW5kIDUgYXJlIHN0aWxsIHRoZXJlLgorICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTpAInRlc3RIYW5kbGVyMyIgY29udGVudFdvcmxkOndvcmxkXTsKKyAgICBbd2ViVmlldyBj
YWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6
IEAidGVzdEhhbmRsZXIzIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAg
ICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1
bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBpbkNv
bnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgIH1dOworICAgIFt3ZWJWaWV3
IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIi
IDogQCJ0ZXN0SGFuZGxlcjUiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVh
bFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8g
UmVtb3ZlICJhbGwiIGluIHRoZSBjdXN0b20gd29ybGQsIHZlcmlmeSA0IGFuZCA1IGFyZSBub3cg
Z29uZS4KKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVB
bGxTY3JpcHRNZXNzYWdlSGFuZGxlcnNGcm9tQ29udGVudFdvcmxkOndvcmxkXTsKKyAgICBbd2Vi
VmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5k
bGVyIiA6IEAidGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3Js
ZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAg
ICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9y
KTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9k
eSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI1IiwgQCJhcmciIDogQDEg
fSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAg
RVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7Cit9
CisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRs
ZXJCYXNpY1Bvc3QpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJv
bGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250
ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBOU1N0cmluZyAq
ZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRl
c3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdGdWxmaWxsJyk7IGF3YWl0IHA7IHJldHVybiBwOyI7Cisg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5p
bCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRs
ZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJp
bmc6QCJGdWxmaWxsZWQhIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdSZWplY3QnKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsK
KyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6
bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CisgICAgICAgIEVYUEVD
VF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAiUmVqZWN0ZWQhIl0p
OworICAgICAgICAKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0
aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFu
ZGxlci5wb3N0TWVzc2FnZSgnVW5kZWZpbmVkJyk7IHZhciByZXN1bHQgPSBhd2FpdCBwOyByZXR1
cm4gcmVzdWx0ID09IHVuZGVmaW5lZCA/ICdZZXMnIDogJ05vJyI7CisgICAgW3dlYlZpZXcgY2Fs
bEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3Js
ZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1
bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJZZXMiXSk7CisK
KyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAi
dmFyIHAgPSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZSgnRG8gbm90aGluZycpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNh
bGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29y
bGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVz
dWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAg
ICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBk
ZXNjcmlwdGlvbl0gY29udGFpbnNTdHJpbmc6QCJkaWQgbm90IHJlc3BvbmQgdG8gdGhpcyBwb3N0
TWVzc2FnZSJdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgZnVu
Y3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RI
YW5kbGVyLnBvc3RNZXNzYWdlKCdJbnZhbGlkIHJlcGx5Jyk7IGF3YWl0IHA7IHJldHVybiBwOyI7
CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRz
Om5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhh
bmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9O
VUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAgICBFWFBF
Q1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAInVuYWJsZSB0byBi
ZSBzZXJpYWxpemVkIl0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChXS1VzZXJDb250ZW50
Q29udHJvbGxlciwgV29ybGRMaWZldGltZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29u
ZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0FzeW5jU2Ny
aXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKworICAgIFJldGFpblB0cjxXS0NvbnRl
bnRXb3JsZD4gd29ybGQgPSBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIm90aGVyV29y
bGQiXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDp3b3Js
ZC5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIC8vIFNl
dCBhIHZhcmlhYmxlIGluIHRoZSB3b3JsZC4KKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZm9vID0gJ2JhciciIGluQ29udGVudFdv
cmxkOndvcmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
ZG9uZSA9IGZhbHNlOworCisgICAgLy8gSGF2ZSB0aGUgbWVzc2FnZSBoYW5kbGVyIGJvdW5jZSBi
YWNrIHRoYXQgdmFsdWUuCisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShmb28p
OyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6
ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6d29ybGQuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBp
c0VxdWFsVG9TdHJpbmc6QCJiYXIiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwor
CisgICAgLy8gUmVtb3ZlIHRoZSBtZXNzYWdlIGhhbmRsZXIsIHdoaWNoIHVzZWQgdG8gY2F1c2Ug
dGhlIHdvcmxkIHRvIGJlIGRlc3Ryb3llZCBpbiB0aGUgd2ViIHByb2Nlc3MuCisgICAgLy8gQnV0
IGJ5IGV2YWx1YXRpbmcgSlMgbWFrZSBzdXJlIHRoZSB2YWx1ZSBpcyBzdGlsbCB0aGVyZS4KKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVBbGxTY3JpcHRN
ZXNzYWdlSGFuZGxlcnNGcm9tQ29udGVudFdvcmxkOndvcmxkLmdldCgpXTsKKyAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJmb28iIGluQ29udGVudFdvcmxkOndvcmxkLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQg
aXNFcXVhbFRvU3RyaW5nOkAiYmFyIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396918</attachid>
            <date>2020-04-19 11:05:31 -0700</date>
            <delta_ts>2020-04-19 11:40:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>79487</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGJmMTk3OGI1YjMuLjMxMmNiODJkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3
aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KTog
QWRkIGEgdmFyaWFudCBvZiBDb21wbGV0aW9uSGFuZGxlciB0aGF0IGFsbG93cyBmb3IgYSBGaW5h
bGl6ZXIgZnVuY3Rpb24KKyAgICAgICAgICB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENvbXBs
ZXRpb24gZnVuY3Rpb24gaGFzbid0IGJlZW4gY2FsbGVkIGF0IGRlc3RydWN0aW9uIHRpbWUuCisK
IDIwMjAtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV1RGXSBNb3ZlIERhdGFSZWYuaCBmcm9tIFdlYkNvcmUgdG8gV1RGIHRvIHV0aWxpemUgaXQg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oIGIv
U291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAppbmRleCA5MzhiNDk2NmYwOC4uOGM5
OGRmZTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtNjksNiArNjksNDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gV3JhcHMgYSBGdW5jdGlvbiB0byBtYWtlIHN1
cmUgaXQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKy8vIElmIHRoZSBDb21wbGV0aW9uSGFuZGxl
cldpdGhGaW5hbGl6ZXIgaXMgZGVzdHJveWVkIGFuZCB0aGUgZnVuY3Rpb24gaGFzbid0IHlldCBi
ZWVuIGNhbGxlZCwKKy8vIHRoZSBmaW5hbGl6ZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlv
biBhcyBpdHMgYXJndW1lbnQuCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhh
bmRsZXJXaXRoRmluYWxpemVyOwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4g
SW4+CitjbGFzcyBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KEluLi4uKT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29t
cGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlLCBGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPE91dChJbi4uLik+Jik+JiYgZmluYWxpemVyKQorICAgICAgICA6
IG1fZnVuY3Rpb24oV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgICwgbV9maW5hbGl6ZXIoV1RG
TW92ZShmaW5hbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXIoQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyJiYpID0gZGVmYXVsdDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXImIG9wZXJhdG9yPShDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25IYW5k
bGVyV2l0aEZpbmFsaXplcigpCisgICAgeworICAgICAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9maW5hbGl6ZXIobV9mdW5jdGlvbik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5j
dGlvbjsgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBB
U1NFUlQobV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZCA9PSBpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxl
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Z1bmN0aW9uLCBudWxscHRyKShzdGQ6OmZvcndhcmQ8SW4+KGluKS4u
Lik7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjxPdXQoSW4uLi4pPiYpPiBtX2ZpbmFsaXpl
cjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRo
cmVhZCB7IGlzTWFpblRocmVhZCgpIH07CisjZW5kaWYKK307CisKIG5hbWVzcGFjZSBEZXRhaWwg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgpAQCAtMTE1LDMgKzE1
OCw0IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlOwordXNpbmcgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q1YjNlOTVhNDYuLjFiNGZjZWZj
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdl
SGFuZGxlcjo6cG9zdE1lc3NhZ2UpOiBSZXR1cm4gYSBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBi
eSB0aGUgQVBJIGNsaWVudC4KKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKwogMjAyMC0wNC0xOCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZHVjZSBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
RnJhbWVMb2FkUmVxdWVzdCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuY3BwCmluZGV4IGIwN2RiOGI2YjE0Li5jZjgyYWYzYjY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMjksNyArMjksOSBAQAog
I2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE0ICs0MywyOSBAQCBVc2VyTWVzc2FnZUhhbmRs
ZXI6OlVzZXJNZXNzYWdlSGFuZGxlcihGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0bwogCiBVc2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRl
ZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3Nh
Z2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiB2YWx1ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVzY3JpcHRvciBoYXMgYmVlbiByZW1vdmVkLiBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaGFzCiAgICAgLy8gcmVtb3ZlZCB0
aGUgbmFtZWQgbWVzc2FnZSBoYW5kbGVyIGF0IHRoZSBXZWJLaXQyIEFQSSBsZXZlbC4KLSAgICBp
ZiAoIW1fZGVzY3JpcHRvcikKKyAgICBpZiAoIW1fZGVzY3JpcHRvcikgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH0pOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgfQogCi0gICAgbV9k
ZXNjcmlwdG9yLT5kaWRQb3N0TWVzc2FnZSgqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgIG1fZGVz
Y3JpcHRvci0+ZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdldCgpLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwcm9taXNl
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KEpTQzo6Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBl
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChyZXN1bHQpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4ocmVzdWx0
LT5kZXNlcmlhbGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKKyAgICB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aAppbmRleCA5NGFmZmI1MGM5Yy4uOTEyMjc5YWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKKwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVc2VyTWVzc2FnZUhh
bmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0KICAgICB2b2lkIGludmFs
aWRhdGVEZXNjcmlwdG9yKCkgeyBtX2Rlc2NyaXB0b3IgPSBudWxscHRyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKaW5kZXggNzc2YzE4MjRiNmEuLjMyZGIy
OGVjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCkBA
IC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJT
CiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNj
cmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggNDVlMTU1N2UwNmIuLmQyZjY1MzU3MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShVc2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlNTQ5MDJhZjc5Ny4uNGMyMDc1MDBhMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJv
bm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAgICAgICByZGFyOi8vcHJvYmxlbS81
NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgQ2hhbmdlIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBvc3RNZXNzYWdlKCkgdG8g
cmV0dXJuIGEgcHJvbWlzZSBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4KKyAgICAgICAgCisgICAgICAg
IEFsbG93IGZvciB0aGF0IHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgYnkgYW4gYXN5bmNocm9ub3Vz
IHJlcGx5IGJsb2NrIHVwIGluIHRoZSBBUEkgY2xpZW50LgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBsaWtlIHRoZSBvcHBvc2l0ZSB2ZXJzaW9uIG9mIFtXS1dlYlZpZXcgY2FsbEFzeW5jRnVu
Y3Rpb246XQorICAgICAgICAKKyAgICAgICAgQW5kIHdoaWxlIHdlJ3JlIGFkZGluZyBhIG5ldyBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVyIHZhcmlhbnQsIHdlJ3JlIGFkZGluZyBpdCBzYW5kYm94ZWQg
YnkgV0tDb250ZW50V29ybGQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ29jb2EubW06CisgICAgICAgIChBUEk6OnZhbGlkYXRlT2JqZWN0KToKKyAg
ICAgICAgKEFQSTo6Y29yZVZhbHVlRnJvbU5TT2JqZWN0KToKKyAgICAgICAgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tTlNPYmplY3QpOgorICAgICAgICAoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oOiBOb3cgdGhhdCBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVycyBjYW4gYmUgcGVyLXdvcmxkLCBtZXNzYWdlcworICAgICAg
ICAgIGRlY2xhcmUgd2hpY2ggd29ybGQgdGhleSB3ZXJlIHBvc3RlZCBmcm9tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tOgorICAgICAgICAoLVtXS1Nj
cmlwdE1lc3NhZ2UgX2luaXRXaXRoQm9keTp3ZWJWaWV3OmZyYW1lSW5mbzpuYW1lOndvcmxkOl0p
OgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2Ugd29ybGRdKToKKyAgICAgICAgKC1bV0tTY3Jp
cHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpmcmFtZUluZm86bmFtZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFs
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRs
ZXJXaXRoUmVwbHkuaDogQWRkZWQuCisgICAgICAgICAgRGVjbGFyZSB0aGUgbmV3IHByb3RvY29s
IGZvciBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgdGhhdCBjYW4gcmVwbHkgdG8gbWVzc2FnZXMg
YXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
X2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpjb250ZW50V29ybGQ6
bmFtZTpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHk6Y29udGVudFdvcmxkOm5hbWU6XSk6CisgICAgICAgICgtW1dL
VXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpj
b250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92
ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6XSk6CisgICAgICAgICgt
W1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJ
bnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3lu
Y0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZyYW1lOmluV29ybGQ6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICAgVXBkYXRlIGZvciBuZXcgc2hhcmVkIEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxs
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxk
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNC0xOCAgUGFibG8gU2FhdmVkcmEgIDxw
c2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJlcGxhY2UgZXZpbCBz
dHJ0b2soKSBjYWxscyB3aXRoIGZzY2FuZigpIGluIE1lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCAxZjQzZTYzYzYxMS4uNmZlODU3NmFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JK
Q19fKQogICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IHdpcmVCeXRlc0Zyb21OU09iamVjdChpZCk7CisgICAgc3RhdGljIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21OU09iamVjdChpZCk7CiAjZW5kaWYK
IAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNvY29hLm1tCmluZGV4IDY2ZThiMjdhMDlhLi43MzEwZjVlMWYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJp
YWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQpAQCAtODAsMjAgKzgwLDY0IEBAIGlkIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkCiAgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0OwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2Jq
ZWN0KGlkIG9iamVjdCkKK3N0YXRpYyBib29sIHZhbGlkYXRlT2JqZWN0KGlkIGFyZ3VtZW50KQog
eworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCBb
YXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSB8fCBbYXJndW1lbnQgaXNL
aW5kT2ZDbGFzczpbTlNEYXRlIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
TnVsbCBjbGFzc11dKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChbYXJndW1lbnQg
aXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7CisgICAgICAgIF9fYmxvY2sgQk9PTCB2
YWxpZCA9IHRydWU7CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1lcmF0ZU9iamVjdHNVc2luZ0Js
b2NrOl4oaWQgb2JqZWN0LCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7CisgICAgICAgICAgICBp
ZiAoIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZh
bHNlOworICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAg
ICB9XTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgaWYgKFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkgeworICAgICAgICBfX2Jsb2Nr
IGJvb2wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVtZXJhdGVLZXlzQW5k
T2JqZWN0c1VzaW5nQmxvY2s6XihpZCBrZXksIGlkIHZhbHVlLCBCT09MICpzdG9wKSB7CisgICAg
ICAgICAgICBpZiAoIXZhbGlkYXRlT2JqZWN0KGtleSkgfHwgIXZhbGlkYXRlT2JqZWN0KHZhbHVl
KSkgeworICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgKnN0
b3AgPSBZRVM7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworCisgICAgICAgIHJldHVybiB2
YWxpZDsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjb3JlVmFsdWVGcm9tTlNPYmplY3QoaWQgb2Jq
ZWN0KQoreworICAgIGlmIChvYmplY3QgJiYgIXZhbGlkYXRlT2JqZWN0KG9iamVjdCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICBKU0NvbnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0KCkuZW5zdXJlQ29udGV4dCgpOwog
ICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0Om9iamVjdCBpbkNv
bnRleHQ6Y29udGV4dF07CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGdsb2JhbE9iamVjdCA9
IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAgICAgQVNTRVJUKGdsb2JhbE9i
amVjdCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QpOwogCi0gICAg
YXV0byBjb3JlVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgq
Z2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKSk7Ci0g
ICAgcmV0dXJuIGNvcmVWYWx1ZS0+dG9XaXJlQnl0ZXMoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxP
YmplY3QsIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpOworfQorCitSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChpZCBvYmpl
Y3QpCit7CisgICAgYXV0byBjb3JlVmFsdWUgPSBjb3JlVmFsdWVGcm9tTlNPYmplY3Qob2JqZWN0
KTsKKyAgICBpZiAoIWNvcmVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIGNyZWF0ZShjb3JlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIH0gLy8gQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNz
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdl
LmgKaW5kZXggOTdiZWI2ZTgxMzkuLjYzYTFlOWVhMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsK
IEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKQEAgLTU0LDYgKzU1LDkg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAgKi8KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CiAKKy8qISBA
YWJzdHJhY3QgVGhlIGNvbnRlbnQgd29ybGQgZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB3YXMgc2Vu
dC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tDb250ZW50V29ybGQgKndv
cmxkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQppbmRleCBjOTNlN2E5OWRh
Yi4uYmQ1ZGQ0NmI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQpAQCAtMzUsOSArMzUsMTAgQEAgQGltcGxlbWVudGF0
aW9uIFdLU2NyaXB0TWVzc2FnZSB7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmll
dzsKICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IF9mcmFtZUluZm87CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfbmFtZTsKKyAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IF93b3JsZDsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6
KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkg
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJh
bWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFtZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3Js
ZAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtNDYsNiArNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQm9keTooaWQpYm9k
eSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzooVwogICAgIF93ZWJWaWV3
ID0gd2ViVmlldzsKICAgICBfZnJhbWVJbmZvID0gZnJhbWVJbmZvOwogICAgIF9uYW1lID0gYWRv
cHROUyhbbmFtZSBjb3B5XSk7CisgICAgX3dvcmxkID0gd29ybGQ7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KQEAgLTcwLDQgKzcyLDkgQEAgLSAoTlNTdHJpbmcgKiluYW1lCiAgICAgcmV0dXJuIF9u
YW1lLmdldCgpOwogfQogCistIChXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCit7CisgICAgcmV0dXJu
IF93b3JsZC5nZXQoKTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgyM2RmMWU4YjUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaApAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIFdL
U2NyaXB0TWVzc2FnZTsKK0BjbGFzcyBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKKworLyohIEEg
Y2xhc3MgY29uZm9ybWluZyB0byAgdGhlIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkg
cHJvdG9jb2wgcHJvdmlkZXMgYQorbWV0aG9kIGZvciByZWNlaXZpbmcgbWVzc2FnZXMgZnJvbSBK
YXZhU2NyaXB0IHJ1bm5pbmcgaW4gYSB3ZWJwYWdlIGFuZCByZXBseWluZyB0byB0aGVtIGFzeW5j
aHJvbm91c2x5LgorKi8KK0Bwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5
IDxOU09iamVjdD4KKworLyohIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gYSBzY3JpcHQgbWVzc2Fn
ZSBpcyByZWNlaXZlZCBmcm9tIGEgd2VicGFnZS4KKyBAcGFyYW0gdXNlckNvbnRlbnRDb250cm9s
bGVyIFRoZSB1c2VyIGNvbnRlbnQgY29udHJvbGxlciBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0
aG9kLgorIEBwYXJhbSBtZXNzYWdlIFRoZSBzY3JpcHQgbWVzc2FnZSByZWNlaXZlZC4KKyBAcGFy
YW0gcmVwbHlIYW5kbGVyIEEgYmxvY2sgdG8gYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiBw
cm9jZXNzaW5nIHRoZSBtZXNzYWdlLgorIEBkaXNjdXNzaW9uIFdoZW4gdGhlIEphdmFTY3JpcHQg
cnVubmluZyBpbiB5b3VyIGFwcGxpY2F0aW9uJ3Mgd2ViIGNvbnRlbnQgY2FsbGVkIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVzc2FnZUJvZHk+KSwK
KyBhIEphdmFTY3JpcHQgUHJvbWlzZSBvYmplY3Qgd2FzIHJldHVybmVkLiBUaGUgdmFsdWVzIHBh
c3NlZCB0byB0aGUgcmVwbHlIYW5kbGVyIGFyZSB1c2VkIHRvIHJlc29sdmUgdGhhdCBQcm9taXNl
LgorCisgUGFzc2luZyBhIG5vbi1uaWwgTlNTdHJpbmcgdmFsdWUgdG8gdGhlIHNlY29uZCBwYXJh
bWV0ZXIgb2YgdGhlIHJlcGx5SGFuZGxlciBzaWduYWxzIGFuIGVycm9yLgorIE5vIG1hdHRlciB3
aGF0IHZhbHVlIHlvdSBwYXNzIHRvIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHJlcGx5SGFu
ZGxlciwKKyB0aGUgUHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGggYSBKYXZhU2NyaXB0IGVy
cm9yIG9iamVjdCB3aG9zZSBtZXNzYWdlIHByb3BlcnR5IGlzIHNldCB0byB0aGF0IGVycm9yTWVz
c2FnZSBzdHJpbmcuCisKKyBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB0aGUgcmVwbHlIYW5k
bGVyIGlzIG5pbCwgdGhlIGZpcnN0IGFyZ3VtZW50IHdpbGwgYmUgc2VyaWFsaXplZCBpbnRvIGl0
cyBKYXZhU2NyaXB0IGVxdWl2YWxlbnQgYW5kIHRoZSBQcm9taXNlIHdpbGwgYmUgZnVsZmlsbGVk
IHdpdGggdGhlIHJlc3VsdGluZyB2YWx1ZS4KKyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbmls
IHRoZW4gdGhlIFByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCB3aXRoIGEgSmF2YVNjcmlwdCB2YWx1
ZSBvZiAidW5kZWZpbmVkIgorCisgQWxsb3dlZCBub24tbmlsIHJlc3VsdCB0eXBlcyBhcmU6Cisg
TlNOdW1iZXIsIE5TTnVsbCwgTlNTdHJpbmcsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlv
bmFyeS4KKyBBbnkgTlNBcnJheSBvciBOU0RpY3Rpb25hcnkgY29udGFpbmVycyBjYW4gb25seSBj
b250YWluIG9iamVjdHMgb2YgdGhvc2UgdHlwZXMuCisKKyBUaGUgcmVwbHlIYW5kbGVyIGNhbiBi
ZSBjYWxsZWQgYXQgbW9zdCBvbmNlLgorIElmIHRoZSByZXBseUhhbmRsZXIgaXMgZGVhbGxvY2F0
ZWQgYmVmb3JlIGl0IGlzIGNhbGxlZCwgdGhlIFByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3aXRo
IGEgSmF2YVNjcmlwdCBFcnJvciBvYmplY3QKKyB3aXRoIGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2Ug
aW5kaWNhdGluZyB0aGUgaGFuZGxlciB3YXMgbmV2ZXIgY2FsbGVkLgorCisgRXhhbXBsZToKKwor
IFdpdGggYSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IG9iamVjdCBpbnN0YWxsZWQg
d2l0aCB0aGUgbmFtZSAidGVzdEhhbmRsZXIiLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIEphdmFT
Y3JpcHQ6CisgQHRleHRibG9jaworICAgICB2YXIgcHJvbWlzZSA9IHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJGdWxmaWxsIG1lIHdpdGggNDIi
KTsKKyAgICAgYXdhaXQgcDsKKyAgICAgcmV0dXJuIHA7CisgQC90ZXh0YmxvY2sKKworIEFuZCBj
b25zaWRlciB0aGUgZm9sbG93aW5nIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgaW1w
bGVtZW50YXRpb246CisgQHRleHRibG9jaworICAgICAtICh2b2lkKXVzZXJDb250ZW50Q29udHJv
bGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlk
UmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UgcmVwbHlIYW5k
bGVyOih2b2lkICheKShpZCwgTlNTdHJpbmcgKikpcmVwbHlIYW5kbGVyCisgICAgIHsKKyAgICAg
ICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbDpAIkZ1bGZpbGwgbWUgd2l0aCA0MiJdKQorICAg
ICAgICAgICAgcmVwbHlIYW5kbGVyKEA0MiwgbmlsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmVwbHlIYW5kbGVyKG5pbCwgQCJVbmV4cGVjdGVkIG1lc3NhZ2UgcmVjZWl2ZWQiKTsKKyAg
ICAgfQorIEAvdGV4dGJsb2NrCisKKyBJbiB0aGlzIGV4YW1wbGU6CisgICAtIFRoZSBKYXZhU2Ny
aXB0IGNvZGUgc2VuZHMgYSBtZXNzYWdlIHRvIHlvdXIgYXBwbGljYXRpb24gY29kZSB3aXRoIHRo
ZSBib2R5IEAiRnVsZmlsbCBtZSB3aXRoIDQyIgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBp
cyBzdXNwZW5kZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHJlc3VsdGluZyBwcm9taXNlIHRvIHJl
c29sdmUuCisgICAtIFlvdXIgbWVzc2FnZSBoYW5kbGVyIGlzIGludm9rZWQgd2l0aCB0aGF0IG1l
c3NhZ2UgYW5kIGEgYmxvY2sgdG8gY2FsbCB3aXRoIHRoZSByZXBseSB3aGVuIHJlYWR5LgorICAg
LSBZb3VyIG1lc3NhZ2UgaGFuZGxlciBzZW5kcyB0aGUgdmFsdWUgQDQyIGFzIGEgcmVwbHkuCisg
ICAtIFRoZSBKYXZhU2NyaXB0IHByb21pc2UgaXMgZnVsZmlsbGVkIHdpdGggdGhlIHZhbHVlIDQy
LgorICAgLSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250aW51ZXMgYW5kIHRoZSB2YWx1ZSA0MiBp
cyByZXR1cm5lZC4KKyAqLworLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNv
bnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRN
ZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXiko
aWQgcmVwbHksIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpKXJlcGx5SGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQGVuZAorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKaW5kZXggMjYzNzg4MDA1Njcu
Ljg5YmM1MThkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaApAQCAtMjcsNiArMjcsNiBAQAog
CiBAaW50ZXJmYWNlIFdLU2NyaXB0TWVzc2FnZSAoKQogCi0tIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoQm9keTooaWQpYm9keSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzoo
V0tGcmFtZUluZm8gKilmcmFtZUluZm8gbmFtZTooTlNTdHJpbmcgKiluYW1lOworLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6KE5TU3RyaW5nICopbmFt
ZSB3b3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIuaAppbmRleCA4MjlhMDU3MzM3ZC4uZjQzZjJlNjJmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5oCkBAIC0zMCw4ICszMCwxMCBAQAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNz
IFdLQ29udGVudFJ1bGVMaXN0OworQGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLVXNl
clNjcmlwdDsKIEBwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyOworQHByb3RvY29sIFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk7CiAKIC8qISBBIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyIG9iamVjdCBwcm92aWRlcyBhIHdheSBmb3IgSmF2YVNjcmlwdCB0byBwb3N0CiAgbWVz
c2FnZXMgdG8gYSB3ZWIgdmlldy4KQEAgLTU2LDE5ICs1OCw3NSBAQCBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKIC0gKHZvaWQpcmVtb3ZlQWxsVXNlclNjcmlwdHM7
CiAKIC8qISBAYWJzdHJhY3QgQWRkcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCi0gQHBhcmFt
IHNjcmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBtZXNzYWdlIGhhbmRsZXIgdG8gYWRkLgorIEBwYXJh
bSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQu
CisgQHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRk
IHRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgogIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRo
ZSBtZXNzYWdlIGhhbmRsZXIuCi0gQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0TWVzc2FnZUhh
bmRsZXIgYWRkcyBhIGZ1bmN0aW9uCi0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5h
bWU+LnBvc3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIGZvciBhbGwKLSBmcmFtZXMuCisgQGRpc2N1
c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFtZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VC
b2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGluIHRoZSBnaXZlbiBXS0NvbnRlbnRXb3Js
ZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLgorCisg
RWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkgbnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1ZSBuYW1lLgorCisgT25jZSBhbnkgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRlZCB0byBhIFdLQ29udGVudFdvcmxkIGZv
ciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRvIGFkZCBhbm90aGVyCisgc2NyaXB0IG1l
c3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdvcmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3
aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVy
LgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxpZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0
IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIgYW5kIFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHkKKyBvYmplY3RzIHdpbGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90
aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhlIHNhbWUgV0tDb250ZW50V29ybGQgd2l0
aCB0aGUgc2FtZSBuYW1lLgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdv
cmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFi
c3RyYWN0IEFkZHMgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBzY3JpcHRNZXNz
YWdlSGFuZGxlcldpdGhSZXBseSBUaGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byBhZGQuCisg
QHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gYWRkIHRo
ZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBt
ZXNzYWdlIGhhbmRsZXIuCisgQGRpc2N1c3Npb24gQWRkaW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlciBhZGRzIGEgZnVuY3Rpb24KKyB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFt
ZT4ucG9zdE1lc3NhZ2UoPG1lc3NhZ2VCb2R5PikgdG8gYWxsIGZyYW1lcywgYXZhaWxhYmxlIGlu
IHRoZSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKworIFRoZSBuYW1lIGFyZ3VtZW50IG11c3QgYmUg
YSBub24tZW1wdHkgc3RyaW5nLgorCisgRWFjaCBXS0NvbnRlbnRXb3JsZCBjYW4gaGF2ZSBhbnkg
bnVtYmVyIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLCBidXQgb25seSBvbmUgcGVyIHVuaXF1
ZSBuYW1lLgorCisgT25jZSBhbnkgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBoYXMgYmVlbiBhZGRl
ZCB0byBhIFdLQ29udGVudFdvcmxkIGZvciBhIGdpdmVuIG5hbWUsIGl0IGlzIGFuIGVycm9yIHRv
IGFkZCBhbm90aGVyCisgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0byB0aGF0IFdLQ29udGVudFdv
cmxkIGZvciB0aGF0IHNhbWUgbmFtZSB3aXRob3V0IGZpcnN0IHJlbW92aW5nIHRoZSBwcmV2aW91
cyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorCisgVGhlIGFib3ZlIHJlc3RyaWN0aW9uIGFwcGxp
ZXMgdG8gYW55IHR5cGUgb2Ygc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciAtIFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHkgYW5kIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIKKyBvYmplY3RzIHdp
bGwgY29uZmxpY3Qgd2l0aCBlYWNoIG90aGVyIGlmIHlvdSB0cnkgdG8gYWRkIHRoZW0gdG8gdGhl
IHNhbWUgV0tDb250ZW50V29ybGQgd2l0aCB0aGUgc2FtZSBuYW1lLgorCisgUmVmZXIgdG8gdGhl
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgZG9jdW1lbnRhdGlvbiBmb3IgZXhhbXBs
ZXMgb2YgaG93IGl0IGlzIG1vcmUgZmxleGlibGUgdGhhbiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
LgorICovCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OihpZCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4pc2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVw
bHkgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBBZGRzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0
byB0aGUgbWFpbiB3b3JsZCB1c2VkIGJ5IHBhZ2UgY29udGVudCBpdHNlbGYuCisgQHBhcmFtIHNj
cmlwdE1lc3NhZ2VIYW5kbGVyIFRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRvIGFkZC4KKyBA
cGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgorIEBkaXNjdXNzaW9u
IENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOmNvbnRlbnRXb3JsZDpuYW1lOgorIHdpdGggW1dLQ29udGVudFdvcmxkIHBh
Z2VXb3JsZF0gYXMgdGhlIGNvbnRlbnRXb3JsZCBhcmd1bWVudC4KICAqLwogLSAodm9pZClhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1l
c3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZTsKIAogLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KICBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0
aGUgbWVzc2FnZSBoYW5kbGVyIHRvIHJlbW92ZS4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBX
S0NvbnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlci4KKyAqLworLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5T
U3RyaW5nICopbmFtZSBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
Ky8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCisgQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlciB0byByZW1vdmUuCisgQGRpc2N1
c3Npb24gQ2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgcmVtb3Zl
U2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOmNvbnRlbnRXb3JsZDoKKyAgd2l0aCBbV0tDb250
ZW50V29ybGQgcGFnZVdvcmxkXSBhcyB0aGUgY29udGVudFdvcmxkIGFyZ3VtZW50LgogICovCiAt
ICh2b2lkKXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1l
OwogCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYWxsIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzIGZy
b20gYSBnaXZlbiBXS0NvbnRlbnRXb3JsZC4KKyBAcGFyYW0gY29udGVudFdvcmxkIFRoZSBXS0Nv
bnRlbnRXb3JsZCBmcm9tIHdoaWNoIHRvIHJlbW92ZSBhbGwgc2NyaXB0IG1lc3NhZ2UgaGFuZGxl
cnMuCisgKi8KKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRl
bnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGFsbCBhc3NvY2lhdGVkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXJzLgorICovCistICh2b2lk
KXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVycyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IEFkZHMgYSBjb250
ZW50IHJ1bGUgbGlzdC4KICBAcGFyYW0gY29udGVudFJ1bGVMaXN0IFRoZSBjb250ZW50IHJ1bGUg
bGlzdCB0byBhZGQuCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA2ODI3YzkxNDFj
MC4uN2Y5NGE0MDU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5o
IgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgorI2ltcG9ydCAiV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oIgogI2ltcG9ydCAiV0tTY3JpcHRNZXNzYWdlSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLVXNlclNjcmlwdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgpAQCAtMTI1LDMxICsxMjYsOTQgQEAgcHVibGljOgogICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQogICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQogICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseShmYWxzZSkKICAgICB7CiAgICAgfQotICAgIAotICAgIHZvaWQgZGlkUG9zdE1l
c3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorCisgICAgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZShXS1VzZXJDb250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQgPFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHk+IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQorICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQorICAgICAgICAsIG1faGFuZGxlcihoYW5kbGVyKQorICAg
ICAgICAsIG1fbmFtZShhZG9wdE5TKFtuYW1lIGNvcHldKSkKKyAgICAgICAgLCBtX3N1cHBvcnRz
QXN5bmNSZXBseSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdl
KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBmaW5hbAogICAgIHsKICAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZy
YW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5m
b0RhdGEpLCAmcGFnZSkpOwogICAgICAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUsIDApOwotICAgICAg
ICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2lu
aXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBmcmFtZUluZm86
ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIG1l
c3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJv
ZHkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0
KCkgbmFtZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsKICAgICAgICAgCi0g
ICAgICAgICAgICBbbV9oYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIu
Z2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKV07CisgICAgICAgICAg
ICBbKGlkPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KW1faGFuZGxlci5nZXQoKSB1c2VyQ29udGVu
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOm1l
c3NhZ2UuZ2V0KCldOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNBc3luY1JlcGx5
OworICAgIH0KKworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgRnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5SGFuZGxlcikgZmluYWwKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3N1cHBvcnRzQXN5bmNSZXBseSk7CisKKyAgICAgICAgYXV0byBm
aW5hbGl6ZXIgPSBbXShGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
Y29uc3QgU3RyaW5nJik+JiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24obnVsbHB0
ciwgIldLV2ViVmlldyBBUEkgY2xpZW50IGRpZCBub3QgcmVzcG9uZCB0byB0aGlzIHBvc3RNZXNz
YWdlIl9zKTsKKyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBhdXRvIGhhbmRsZXIgPSBDb21w
bGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPihXVEZNb3ZlKHJlcGx5SGFuZGxlciksIFdURk1vdmUoZmluYWxp
emVyKSk7CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBSZXRhaW5Q
dHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCAmcGFnZSkpOworICAgICAgICAgICAgaWQgYm9keSA9
IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIDApOworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0
TWVzc2FnZSBhbGxvY10gX2luaXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94
eShwYWdlKSBmcmFtZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxk
OndyYXBwZXIod29ybGQpXSk7CisKKyAgICAgICAgICAgIFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseT4pbV9oYW5kbGVyLmdldCgpIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2Nv
bnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKSByZXBs
eUhhbmRsZXI6XihpZCByZXN1bHQsIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIo
bnVsbHB0ciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0g
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21OU09iamVjdChyZXN1bHQpOwor
ICAgICAgICAgICAgICAgIGlmICghc2VyaWFsaXplZFZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZXIobnVsbHB0ciwgIlRoZSByZXN1bHQgdmFsdWUgcGFzc2VkIGJhY2sgZnJvbSB0
aGUgV0tXZWJWaWV3IEFQSSBjbGllbnQgd2FzIHVuYWJsZSB0byBiZSBzZXJpYWxpemVkIl9zKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGhhbmRsZXIoc2VyaWFsaXplZFZhbHVlLmdldCgpLCB7IH0pOworICAgICAgICAg
ICAgfV07CiAgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPGlkIDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9oYW5kbGVyOworICAgIFJldGFpblB0cjxpZD4gbV9oYW5k
bGVyOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9uYW1lOworICAgIGJvb2wgbV9zdXBwb3J0
c0FzeW5jUmVwbHk7CiB9OwogCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXIKK3sKKyAg
ICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKHNjcmlwdE1lc3NhZ2VIYW5kbGVyKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMu
IiwgKE5TU3RyaW5nICopc2NyaXB0TWVzc2FnZUhhbmRsZXIubmFtZSgpXTsKK30KKwogLSAodm9p
ZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNj
cmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewogICAgIGF1dG8gaGFu
ZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVl
PFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVy
LCBuYW1lKSwgbmFtZSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7Ci0g
ICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKSkKLSAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNz
YWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFt
ZV07CisgICAgW3NlbGYgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCldOwor
fQorCistICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3Js
ZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIGF1dG8gaGFuZGxlciA9IFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwg
bmFtZSwgKndvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBbc2VsZiBfYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKV07Cit9CisKKy0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHk6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PilzY3Jp
cHRNZXNzYWdlSGFuZGxlciBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQgbmFt
ZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJE
ZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqd29ybGQt
Pl9jb250ZW50V29ybGQpOworICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5k
bGVyLmdldCgpXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5h
bWU6KE5TU3RyaW5nICopbmFtZQpAQCAtMTU3LDYgKzIyMSwyMSBAQCAtICh2b2lkKXJlbW92ZVNj
cmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lCiAgICAgX3VzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKG5hbWUs
IEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogfQogCistICh2b2lkKXJl
bW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHktPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUobmFtZSwgKmNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0
TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50
V29ybGQKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJN
ZXNzYWdlSGFuZGxlcnMoKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cit9CisKKy0gKHZv
aWQpcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzCit7CisgICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCk7Cit9CisKICNwcmFn
bWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgogCiAtIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgKaW5kZXgg
MTA4YmVlMTUzODIuLjQ3ZjdkZTAxOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlcklu
dGVybmFsLmgKQEAgLTI5LDE1ICsyOSwxOCBAQAogI2ltcG9ydCAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0KIHRlbXBsYXRlPD4gc3RydWN0
IFdyYXBwZXJUcmFpdHM8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKICAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBXS1VzZXJDb250ZW50Q29udHJvbGxlcjsKIH07CiAKK2NsYXNzIFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyOwogfQogCiBAaW50ZXJmYWNlIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gX3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OwogfQorCistICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYpc2NyaXB0TWVzc2FnZUhhbmRsZXI7CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAppbmRleCBhYTM1MWU3N2NjZC4uZTVm
ODk2ZDliMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CiAK
K0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBXS1VzZXJTY3JpcHQ7CiBAY2xhc3MgX1dL
VXNlckNvbnRlbnRGaWx0ZXI7CiBAY2xhc3MgX1dLVXNlckNvbnRlbnRXb3JsZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAwMzQxNThi
YTIxLi42YjExYjM4NDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC04OTgsMTUgKzg5OCwxMyBAQCAtICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJP
T0wpYQogCiAgICAgZm9yIChpZCBrZXkgaW4gYXJndW1lbnRzKSB7CiAgICAgICAgIGlkIHZhbHVl
ID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZUFy
Z3VtZW50KHZhbHVlKSkgewotICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlvbiBh
cmd1bWVudCB2YWx1ZXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlcywgb3IgY29u
dGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdHlwZXM6IE5TU3RyaW5nLCBOU051bWJlciwgTlNEYXRl
LCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsKKyAgICAgICAgYXV0byBzZXJpYWxpemVkVmFs
dWUgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KHZhbHVl
KTsKKyAgICAgICAgaWYgKCFzZXJpYWxpemVkVmFsdWUpIHsKKyAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xs
b3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU051bWJl
ciwgTlNOdWxsLCBOU0RhdGUsIE5TU3RyaW5nLCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5IjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgCi0gICAgICAgIGF1dG8gd2lyZUJ5
dGVzID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndpcmVCeXRlc0Zyb21OU09iamVjdCh2
YWx1ZSk7Ci0gICAgICAgIC8vIFNpbmNlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgaW5wdXQgZGljdGlv
bmFyeSBhYm92ZSwgd2Ugc2hvdWxkIG5ldmVyIGZhaWwgdG8gc2VyaWFsaXplIGl0IGludG8gd2ly
ZSBieXRlcy4KLSAgICAgICAgQVNTRVJUKHdpcmVCeXRlcyk7Ci0gICAgICAgIGFyZ3VtZW50c01h
cC0+c2V0KGtleSwgKndpcmVCeXRlcyk7CisKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5
LCBzZXJpYWxpemVkVmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygp
KTsKICAgICB9CiAKICAgICBpZiAoZXJyb3JNZXNzYWdlICYmIGhhbmRsZXIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwCmluZGV4IDdjNDMyMzA0ZjUyLi5kYTEyOWUzYjhiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuY3BwCkBAIC0xOTAsMTMgKzE5MCwyMiBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZy
YW1lSW5mb0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGpzUmVzdWx0ID0gd2Via2l0SmF2YXNjcmlwdFJlc3Vs
dENyZWF0ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgICAgICBnX3NpZ25hbF9lbWl0KG1f
bWFuYWdlciwgc2lnbmFsc1tTQ1JJUFRfTUVTU0FHRV9SRUNFSVZFRF0sIG1faGFuZGxlck5hbWUs
IGpzUmVzdWx0KTsKICAgICAgICAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKGpzUmVz
dWx0KTsKICAgICB9CiAKKyAgICBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQ
STo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+
JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KKyAgICAKICAgICB2aXJ0dWFsIH5TY3JpcHRNZXNz
YWdlQ2xpZW50R3RrKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggYjY1NTFlYWJmNWMuLmUwMGMyMWUwMThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShX
ZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQ
b3N0TWVzc2FnZShXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250
ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gc2VyaWFs
aXplZFNjcmlwdFZhbHVlLnRvU3RyaW5nKCk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRva2Vu
cyA9IG1lc3NhZ2Uuc3BsaXQoJzonKTsKQEAgLTUzLDYgKzUzLDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQ
b3J0KCksIHRva2Vuc1swXS50b1VJbnQ2NCgpLCB0b2tlbnNbMV0udG9VSW50NjQoKSwgdG9rZW5z
WzJdKTsKICAgICB9CiAKKyAgICBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQ
STo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+
JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KKwogICAgIH5TY3JpcHRNZXNzYWdlQ2xpZW50KCkg
eyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAKaW5kZXggYzk1MWE1MGQzOTguLmYzZjI4YTQ3ZTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKIAogICAgIH5TY3JpcHRNZXNzYWdlQ2xpZW50KCkgeyB9CiAKLSAgICB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJp
ZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZv
RGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byB0
b2tlbnMgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUudG9TdHJpbmcoKS5zcGxpdCgiOiIpOwogICAg
ICAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAzKQpAQCAtNjEsNiArNjEsMTUgQEAgcHVibGljOgog
ICAgICAgICBVUkwgcmVxdWVzdFVSTCB7IHsgfSwgcGFnZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkg
fTsKICAgICAgICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJM
Lmhvc3RBbmRQb3J0KCksIHRva2Vuc1swXS50b1VJbnRTdHJpY3QoKSwgdG9rZW5zWzFdLnRvVUlu
dFN0cmljdCgpLCB0b2tlbnNbMl0pOwogICAgIH0KKyAgICAKKyAgICBib29sIHN1cHBvcnRzQXN5
bmNSZXBseSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQYWdlUHJveHkm
LCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgY29uc3QgU3RyaW5nJik+JiYpIG92ZXJyaWRlCisgICAgeworICAgIH0KIAogcHJpdmF0
ZToKICAgICBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXImIG1faW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggYWZhY2JiMDcxZjEuLjJm
NjE0YjIzYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAg
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIENv
bnRlbnRXb3JsZDsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01Miw3ICs1Myw5IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250
ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRQb3N0TWVzc2FnZVdpdGhBc3luY1JlcGx5KFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5m
b0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25z
dCBTdHJpbmcmKT4mJikgPSAwOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQVBJOjpDb250ZW50V29ybGQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAppbmRleCA3ZGQ4ZWI5OTMxNy4uMjRiNjMzZTQ4NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCisjaW5jbHVk
ZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5o
IgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgpAQCAtMzE2LDcgKzMxNyw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nCiB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJz
KEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5p
ZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzRm9yV29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OwogCiAgICAgdW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdl
SGFuZGxlcnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7CkBAIC0zMjgsNyArMzI5LDEzIEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdl
SGFuZGxlcnMoQVBJOjpDb250ZW50V29yCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKQoreworICAgIGZvciAoYXV0byYg
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
cygpLCBpZGVudGlmaWVyKCkpOworfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlOjpBc3luY1JlcGx5JiYgcmVw
bHkpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VQcm94eUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNDEsNyArMzQ4LDIxIEBAIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwKICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpwYWdlLCBXVEZNb3ZlKGZyYW1l
SW5mb0RhdGEpLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFSZWZl
cmVuY2UudmVjdG9yKCkpKTsKKyAgICBpZiAoIWhhbmRsZXItPmNsaWVudCgpLnN1cHBvcnRzQXN5
bmNSZXBseSgpKSB7CisgICAgICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpw
YWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3RvcigpKSk7Cisg
ICAgICAgIHJlcGx5KHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGhh
bmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoKnBhZ2UsIFdURk1v
dmUoZnJhbWVJbmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFSZWZlcmVuY2UudmVjdG9yKCkpLCBbcmVwbHkgPSBXVEZN
b3ZlKHJlcGx5KV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvck1lc3NhZ2UuaXNO
dWxsKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgICAgICAgICByZXBseSh7
IHZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkudG9XaXJlQnl0ZXMoKSB9LCB7IH0pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcmVwbHkoeyB9LCBlcnJv
ck1lc3NhZ2UpOworICAgIH0pOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDJjMDk0Mjg1MGI0Li4x
MjlhMzQwZjA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC05OCw2ICs5
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlciYpOwogICAgIHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVy
Rm9yTmFtZShjb25zdCBTdHJpbmcmLCBBUEk6OkNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVt
b3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3JsZCYpOworICAgIHZvaWQg
cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKICAgICB2b2lkIGFkZE5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkm
KTsKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qg
bWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBk
aWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2U6OkFzeW5j
UmVwbHkmJik7CiAKICAgICB2b2lkIGFkZENvbnRlbnRXb3JsZChBUEk6OkNvbnRlbnRXb3JsZCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDhkMjAwYTFlNmU5Li5mZDk1ZjJmNWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDUgKzI0LDUgQEAK
ICAqLwogCiBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB7Ci1EaWRQ
b3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5k
bGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rpb24KK0RpZFBv
c3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRs
ZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2Ug
cmVzdWx0VmFsdWUsIFN0cmluZyBlcnJvck1lc3NhZ2UpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZTQ3YjZlOTJmMC4u
ZTNkYjU0MDlhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtOTczLDYgKzk3Myw3IEBACiAJCTUxMDUyMzc0MUM3M0QzOEIwMDc5OTND
QiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNTIzNzMxQzczRDM3QjAwNzk5M0NCIC8q
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmggKi87IH07CiAJCTUxMDUyMzc1MUM3
M0QzOEYwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNTIz
NzIxQzczRDM3QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTUxMDZEN0M0MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVu
dUNvbnRleHREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5o
ICovOyB9OworCQk1MTA5MDk5NzIzREFDQkYyMDAzQjFFNEMgLyogV0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwOTA5OTQyM0Q0MUYxMzAwM0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJX
aXRoUmVwbHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCTUxMEFGRkJBMTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQUZGQjgxNjU0MjA0
ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmggKi87IH07CiAJCTUxMEY1OTEwMURERTI5
NjkwMDQxMkZGNSAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQzQjI1RTFERENERkQxMDAxNEZBQzYgLyog
X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxMEY1OTExMURERTI5NzAwMDQxMkZGNSAvKiBfV0tMaW5rSWNv
blBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQzBDOTc5MURERDc4NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzU5Nyw2
ICszNTk4LDcgQEAKIAkJNTEwNUIwRjMxNjMwODcyRTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNkQ3QkYxOEJEQkU3MzAwMEFCMTY2IC8q
IENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHRE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4
dERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwOTA5OTQyM0Q0MUYxMzAw
M0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBRkZCNzE2NTQyMDQ4MDAxQkEwNUUgLyog
V2ViUmVzb3VyY2VMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViUmVzb3VyY2VMb2FkZXIuY3BwOyBwYXRoID0gTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEFGRkI4MTY1NDIwNDgwMDFC
QTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJSZXNvdXJjZUxvYWRlci5oOyBwYXRoID0gTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBRkZDRTE2NTQyQ0JEMDAxQkEw
NUUgLyogV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM5Miw2ICs3Mzk0LDcgQEAKIAkJ
CQkxQTdFMzc3NzE4RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLmggKi8sCiAJCQkJ
MUE3RTM3NzYxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5tbSAqLywKIAkJCQkx
QTdFMzc3NDE4RTRBMzNBMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oICovLAor
CQkJCTUxMDkwOTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0
aFJlcGx5LmggKi8sCiAJCQkJN0NDOTlBMzUxOEVGN0NCQzAwNDhDOEI0IC8qIFdLU2NyaXB0TWVz
c2FnZUludGVybmFsLmggKi8sCiAJCQkJNTFDRDFDNUYxQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2Vj
dXJpdHlPcmlnaW4uaCAqLywKIAkJCQk1MUNEMUM2MDFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1
cml0eU9yaWdpbi5tbSAqLywKQEAgLTExMzE4LDYgKzExMzIxLDcgQEAKIAkJCQlCQ0VFN0FEMTEy
ODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRTBFNDI1MTY4QjdBMjgwMDU3RTY2QSAvKiBXZWJQcm9jZXNzU3VwcGxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRTA5MzQxODg2MUQzODAwRDJEQzQ5IC8qIFdlYlByb2dy
ZXNzVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwOTA5OTcyM0RBQ0JGMjAw
M0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkY1ODlEMTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2MUNDQ0E2MjMxNDg1QUEwMEI2NTlCOSAvKiBXZWJSZW1vdGVP
YmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDQxNTBDMzUwNjAwRTUy
Q0U5IC8qIFdlYlJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01E
T01XaW5kb3cuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAKaW5kZXggNjkyNDQzZWI4MDIuLmExZGE2
MmQ3YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93
LmNwcApAQCAtMjUsNiArMjUsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRE9NRXhjZXB0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgIkdPYmplY3RFdmVudExp
c3RlbmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUdsb2JhbE9iamVjdC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaD4KQEAgLTEw
NjksOCArMTA3MSwxNyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX2RvbV93aW5kb3dfd2Via2l0X21l
c3NhZ2VfaGFuZGxlcnNfcG9zdF9tZXNzYWdlKFdlYktpdERPTURPTQogICAgIGF1dG8gaGFuZGxl
ciA9IHdlYmtpdE5hbWVzcGFjZS0+bWVzc2FnZUhhbmRsZXJzKCktPm5hbWVkSXRlbShXZWJDb3Jl
OjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgU3RyaW5nOjpmcm9tVVRGOChoYW5kbGVyTmFtZSkp
OwogICAgIGlmICghaGFuZGxlcikKICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIAorICAgIGF1
dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBkb21XaW5kb3ctPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVy
biBGQUxTRTsKKyAgICAKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2Jq
ZWN0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29y
bGQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybiBGQUxTRTsKIAot
ICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxlci0+cG9zdE1lc3NhZ2UoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlKSkpOworICAgIGF1
dG8gcHJvbWlzZSA9IERlZmVycmVkUHJvbWlzZTo6Y3JlYXRlKCpnbG9iYWxPYmplY3QpOworICAg
IGF1dG8gcmVzdWx0ID0gaGFuZGxlci0+cG9zdE1lc3NhZ2UoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlKSksIFdURk1vdmUocHJv
bWlzZSkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBG
QUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBmNWM4N2MwMmJk
Ni4uMDQyOWRhZDZhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC0y
NTQsNyArMjU0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICAvLyBXZWJDb3JlOjpVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpV
c2VyTWVzc2FnZUhhbmRsZXImIGhhbmRsZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogdmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpVc2Vy
TWVzc2FnZUhhbmRsZXImIGhhbmRsZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
dmFsdWUsIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBT
dHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFdl
YkNvcmU6OkZyYW1lKiBmcmFtZSA9IGhhbmRsZXIuZnJhbWUoKTsKICAgICAgICAgaWYgKCFmcmFt
ZSkKQEAgLTI2OCw3ICsyNjgsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF3ZWJQYWdlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlm
aWVyKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
KHZhbHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOworICAgICAgICBh
dXRvIG1lc3NhZ2VSZXBseUhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bHRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGlmICghZXJyb3JNZXNz
YWdlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0
ciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZUZyb21XaXJlQnl0ZXMocmVzdWx0VmFsdWUudmVjdG9yKCkpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIodmFsdWUucHRyKCksIHsgfSk7CisgICAgICAgIH07CisKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9z
dE1lc3NhZ2Uod2ViUGFnZS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCB3ZWJGcmFtZS0+aW5m
bygpLCBtX2lkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIFdU
Rk1vdmUobWVzc2FnZVJlcGx5SGFuZGxlciksIG1fY29udHJvbGxlci0+aWRlbnRpZmllcigpKTsK
ICAgICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xs
ZXI7CkBAIC0zMDksNyArMzE5LDE4IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoQ29udGVudFdvcmxkSWRlbnRpCiAjZW5kaWYK
IH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+JiB3b3Js
ZElkZW50aWZpZXJzKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoKQoreworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFO
RExFUlMpCisgICAgaWYgKG1fdXNlck1lc3NhZ2VIYW5kbGVycy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fdXNlck1lc3NhZ2VIYW5kbGVycy5jbGVhcigpOworICAgIGludmFs
aWRhdGVBbGxSZWdpc3RlcmVkVXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9uQ2xpZW50cygp
OworI2VuZGlmCit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxV
c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzRm9yV29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29y
bGRJZGVudGlmaWVyPiYgd29ybGRJZGVudGlmaWVycykKIHsKICNpZiBFTkFCTEUoVVNFUl9NRVNT
QUdFX0hBTkRMRVJTKQogICAgIGJvb2wgdXNlck1lc3NhZ2VIYW5kbGVyc0NoYW5nZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAppbmRleCBlOTAyNjA3N2U5My4uY2U5MGE5
ZDkzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTEwMCw3ICsxMDAsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3Rv
cjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYpOwogCiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIoQ29udGVudFdvcmxkSWRlbnRpZmllciwgdWludDY0X3QgdXNlclNjcmlw
dElkZW50aWZpZXIpOwotICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
cyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mKTsKKyAgICB2b2lkIHJlbW92
ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnNGb3JXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRl
bnRXb3JsZElkZW50aWZpZXI+Jik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIHZvaWQg
cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCA1YWRjZDA4MGU5MS4uMmFi
MjMyNGJiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdl
cy5pbgpAQCAtMzcsNyArMzcsOCBAQCBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIgewogCiAgICAgQWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhWZWN0b3I8c3RydWN0IFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMp
OwogICAgIFJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJLaXQ6OkNvbnRlbnRXb3Js
ZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKLSAgICBS
ZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKFZlY3RvcjxXZWJLaXQ6OkNvbnRlbnRX
b3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcnMpOworICAgIFJlbW92ZUFsbFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcnNGb3JXb3JsZHMoVmVjdG9yPFdlYktpdDo6Q29udGVudFdvcmxkSWRl
bnRpZmllcj4gd29ybGRJZGVudGlmaWVycyk7CisgICAgUmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBBZGRD
b250ZW50UnVsZUxpc3RzKFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJLaXQ6OldlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+IGNvbnRlbnRGaWx0ZXJzKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YjhjNDI1ZGJlYy4uZmNmNzZj
NzQ4YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNC0xOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIgQVBJIHRoYXQgYXN5
bmNocm9ub3VzbHkgcmVzcG9uZHMgd2l0aCBhIHByb21pc2UuCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzU3MjQzNDkyIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5t
bToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAod2ViVmlld0ZvclNjcmlwdE1lc3NhZ2VIYW5k
bGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbFRlc3QpOgorICAgICAgICAoLVtBc3luY1NjcmlwdE1l
c3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2Fn
ZTpyZXBseUhhbmRsZXI6XSk6CisKIDIwMjAtMDQtMTcgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIHNlcnZpY2Ugd29ya2VycyBmb3Ig
YXBwLWJvdW5kIGRvbWFpbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXggNGFiOTk0
MzJhODcuLjY3YmZiZDUzYzk2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtMzAs
NyArMzAsMTAgQEAKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQg
IlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxX
ZWJLaXQvV0tDb250ZW50V29ybGQuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLU2NyaXB0TWVzc2FnZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJT
Y3JpcHQuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJTY3JpcHRQcml2YXRlLmg+CkBAIC03NCw2
ICs3Nyw5IEBAIEBlbmQKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVz
c2FnZUhhbmRsZXJCYXNpY1Bvc3QpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAg
ICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRN
ZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBh
bGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwpAQCAtOTUs
NiArMTAxLDkgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhh
bmRsZXJCYXNpY1Bvc3QpCiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1l
c3NhZ2VIYW5kbGVyQmFzaWNQb3N0SXNvbGF0ZWRXb3JsZCkKIHsKKyAgICBzY3JpcHRNZXNzYWdl
cy5jbGVhcigpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0
YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gW19XS1VzZXJDb250ZW50V29ybGQg
d29ybGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJdOwogCiAgICAgUmV0YWluUHRyPFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CkBAIC0xNDQsNiArMTUzLDkgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxl
ciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Bvc3RJc29sYXRlZFdvcmxkKQogCiBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUmVtb3ZlKQog
eworICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyPiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdOwpAQCAtMTg4LDYgKzIwMCw4IEBAIFRFU1QoV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNSZW1vdmUpCiAKIFRF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQ2FsbFJlbW92
ZWRIYW5kbGVyKQogeworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAg
UmV0YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1Njcmlw
dE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxl
cj4gdXNlckNvbnRlbnRDb250cm9sbGVyID0gW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXTsKQEAgLTIwNSwyMiArMjE5LDIzIEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQ2FsbFJlbW92ZWRIYW5kbGVyKQogCiAgICAgW3VzZXJD
b250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6QCJoYW5k
bGVyVG9SZW1vdmUiXTsKIAorICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgLy8g
VGVzdCB0aGF0IHdlIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB5b3UgdHJ5IHRvIHVzZSBhIG1lc3Nh
Z2UgaGFuZGxlciB0aGF0IGhhcyBiZWVuIHJlbW92ZWQuCi0gICAgW3dlYlZpZXcgZXZhbHVhdGVK
YXZhU2NyaXB0OgotICAgICAgICBAInRyeSB7IgotICAgICAgICAgIiAgICBoYW5kbGVyVG9SZW1v
dmUucG9zdE1lc3NhZ2UoJ0ZBSUwnKTsiCi0gICAgICAgICAifSBjYXRjaCAoZSkgeyIKLSAgICAg
ICAgICIgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuaGFuZGxlclRvUG9zdC5wb3N0
TWVzc2FnZSgnUEFTUycpOyIKLSAgICAgICAgICJ9IiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwor
ICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJyZXR1cm4gaGFuZGxlclRvUmVtb3Zl
LnBvc3RNZXNzYWdlKCdGQUlMJykiIGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6W1dLQ29u
dGVudFdvcmxkIHBhZ2VXb3JsZF0gY29tcGxldGlvbkhhbmRsZXI6XiAoaWQgdmFsdWUsIE5TRXJy
b3IgKiBlcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTCh2YWx1ZSk7CisgICAgICAgIEVYUEVD
VF9OT1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRp
b25dIGNvbnRhaW5zU3RyaW5nOkAiSW52YWxpZEFjY2Vzc0Vycm9yIl0pOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKIAotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwog
ICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotCi0gICAgRVhQRUNUX1dLX1NUUkVR
KEAiUEFTUyIsIChOU1N0cmluZyAqKVtzY3JpcHRNZXNzYWdlc1swXSBib2R5XSk7CiB9CiAKIHN0
YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJN
dWx0aXBsZUhhbmRsZXJSZW1vdmFsVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1
cmF0aW9uKQogeworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0
YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Db3B5ID0gYWRvcHROUyhbY29uZmlndXJhdGlvbiBjb3B5
XSk7CiAgICAgW2NvbmZpZ3VyYXRpb25Db3B5IHNldFVzZXJDb250ZW50Q29udHJvbGxlcjpbW1tX
S1VzZXJDb250ZW50Q29udHJvbGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKQEAgLTIz
Niw2ICsyNTEsOSBAQCBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlld0ZvclNjcmlw
dE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbAogCiBURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWwp
CiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKICAgICBSZXRhaW5QdHI8X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6W1tbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXV07CkBAIC0yNjIsNiArMjgwLDkgQEAgVEVTVChXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJS
ZW1vdmFsKQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKSAvLyBGSVhNRTogaGFuZ3MgaW4gdGhl
IGlPUyBzaW11bGF0b3IKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyV2l0aE5hdmlnYXRpb24pCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsK
KyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3Jp
cHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwpAQCAt
MjkzLDYgKzMxNCw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyV2l0aE5hdmlnYXRpb24pCiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIs
IFNjcmlwdE1lc3NhZ2VIYW5kbGVyUmVwbGFjZVdpdGhTYW1lTmFtZSkKIHsKKyAgICBzY3JpcHRN
ZXNzYWdlcy5jbGVhcigpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAg
ICAgUmV0YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJv
bGxlcj4gdXNlckNvbnRlbnRDb250cm9sbGVyID0gW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXTsKQEAgLTgzMyw2ICs4NTcsOSBAQCBzdGF0aWMgdm9pZCBjb21wYXJlTWVzc2Fn
ZXMoVmVjdG9yPGNvbnN0IGNoYXIqPiYmIGV4cGVjdGVkTWVzc2FnZXMpCiAKIFRFU1QoV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSkKIHsKKyAgICBz
Y3JpcHRNZXNzYWdlcy5jbGVhcigpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNl
OworCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgYXV0byBzdGFydEFsbEZyYW1lcyA9IGFkb3B0TlMoW1tXS1VzZXJT
Y3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOkAid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxl
cnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ3N0YXJ0IGFsbCcpIiBpbmplY3Rpb25UaW1lOldL
VXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpO
T10pOwogICAgIGF1dG8gZW5kTWFpbkZyYW1lT25seSA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQg
YWxsb2NdIGluaXRXaXRoU291cmNlOkAid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2VuZCBtYWluJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKQEAg
LTkwMiwzICs5MjksMjc0IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3Jp
cHROb3RpZmljYXRpb24pCiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxl
cnRdLCAid2FpdGVkIGZvciBub3RpZmljYXRpb24iKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2Rl
bGVnYXRlIHdhaXRGb3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7CiB9CisKK0Bp
bnRlcmZhY2UgQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1l
c3NhZ2VIYW5kbGVyV2l0aFJlcGx5PgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQXN5bmNTY3Jp
cHRNZXNzYWdlSGFuZGxlcgorCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlw
dE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UgcmVwbHlIYW5kbGVyOih2b2lkIChe
KShpZCwgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSkpcmVwbHlIYW5kbGVyCit7CisgICAgaWYgKFtt
ZXNzYWdlLm5hbWUgaXNFcXVhbFRvU3RyaW5nOkAib3RoZXJXb3JsZEhhbmRsZXIiXSkKKyAgICAg
ICAgRVhQRUNUX1RSVUUobWVzc2FnZS53b3JsZCAhPSBuaWwpOworICAgIGlmIChbbWVzc2FnZS5i
b2R5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgaWYgKFttZXNz
YWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiRnVsZmlsbCJdKSB7CisgICAgICAgICAgICByZXBs
eUhhbmRsZXIoQCJGdWxmaWxsZWQhIiwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0VxdWFsVG9TdHJpbmc6QCJSZWplY3Qi
XSkgeworICAgICAgICAgICAgcmVwbHlIYW5kbGVyKG5pbCwgQCJSZWplY3RlZCEiKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0Vx
dWFsVG9TdHJpbmc6QCJVbmRlZmluZWQiXSkgeworICAgICAgICAgICAgcmVwbHlIYW5kbGVyKG5p
bCwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoW21l
c3NhZ2UuYm9keSBpc0VxdWFsVG9TdHJpbmc6QCJEbyBub3RoaW5nIl0pIHsKKyAgICAgICAgICAg
IC8vIERyb3AgdGhlIHJlcGx5IGhhbmRsZXIgd2l0aG91dCByZXNwb25kaW5nIHRvIHNlZSB3aGF0
IGhhcHBlbnMKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoW21l
c3NhZ2UuYm9keSBpc0VxdWFsVG9TdHJpbmc6QCJJbnZhbGlkIHJlcGx5Il0pIHsKKyAgICAgICAg
ICAgIHJlcGx5SGFuZGxlcihbW1tOU0RhdGEgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXSwgbmls
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFsbCBv
dGhlciBpbnB1dHMgc2hvdWxkIGp1c3QgYmUgcm91bmQgdHJpcHBlZCBiYWNrIHRvIHRoZSBtZXNz
YWdlIGhhbmRsZXIKKyAgICByZXBseUhhbmRsZXIobWVzc2FnZS5ib2R5LCBuaWwpOworfQorCitA
ZW5kCisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIE1lc3NhZ2VIYW5kbGVyQVBJKQor
eworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IGhhbmRsZXIgPSBhZG9wdE5TKFtbQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOldLQ29u
dGVudFdvcmxkLnBhZ2VXb3JsZCBuYW1lOkAidGVzdEhhbmRsZXIxIl07CisKKyAgICBib29sIGhh
ZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpo
YW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgbmFtZTpA
InRlc3RIYW5kbGVyMSJdOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7
CisgICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7CisgICAgfQorCisgICAgRVhQRUNUX1RSVUUo
aGFkRXhjZXB0aW9uKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRX
b3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgbmFtZTpAInRlc3RIYW5kbGVy
MiJdOworCisgICAgYXV0byAqd29ybGQgPSBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpA
Im90aGVyV29ybGQiXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRX
b3JsZDp3b3JsZCBuYW1lOkAidGVzdEhhbmRsZXIzIl07CisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFu
ZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29ybGQgbmFtZTpAInRlc3RIYW5kbGVyNCJdOworICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOndvcmxkIG5hbWU6QCJ0
ZXN0SGFuZGxlcjUiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYm9vbCBkb25lID0gZmFsc2U7
CisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVyc1toYW5kbGVyXS5wb3N0TWVzc2FnZShhcmcpOyBhd2FpdCBwOyByZXR1cm4g
cDsiOworCisgICAgLy8gcGFnZVdvcmxkIGlzIHdoZXJlIHRlc3RoYW5kbGVyMSBsaXZlcworICAg
IFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBA
ImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjEiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxk
OldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFRyeWluZyB0byBmaW5kIHRlc3RIYW5kbGVyMSBp
biB0aGUgZGVmYXVsdENsaWVudFdvcmxkIHNob3VsZCBmYWlsCisgICAgW3dlYlZpZXcgY2FsbEFz
eW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRl
c3RIYW5kbGVyMSIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQu
ZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vy
cm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBF
Q1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAg
IC8vIGRlZmF1bHRDbGllbnRXb3JsZCBpcyB3aGVyZSB0ZXN0aGFuZGxlcjIgbGl2ZXMKKyAgICBb
d2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJo
YW5kbGVyIiA6IEAidGVzdEhhbmRsZXIyIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDpX
S0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChp
ZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBCdXQgaWYgd2UgcmVtdm9lIGl0LCBp
dCBzaG91bGQgbm8gbG9uZ2VyIGxpdmUgdGhlcmUsIGFuZCB1c2luZyBpdCBzaG91bGQgY2F1c2Ug
YW4gZXJyb3IuCisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gcmVt
b3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOkAidGVzdEhhbmRsZXIyIiBjb250ZW50V29y
bGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkXTsKKyAgICBbd2ViVmlldyBjYWxs
QXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAi
dGVzdEhhbmRsZXIyIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3Js
ZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVY
UEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisg
ICAgLy8gVmVyaWZ5IGhhbmRsZXJzIDMsIDQsIGFuZCA1IGFyZSBhbGwgaW4gdGhlIGN1c3RvbSB3
b3JsZC4KKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1
bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXIzIiwgQCJhcmciIDogQDEgfSBpbkNv
bnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgIH1dOworICAgIFt3ZWJWaWV3
IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIi
IDogQCJ0ZXN0SGFuZGxlcjQiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVh
bFRvTnVtYmVyOkAxXSk7CisgICAgfV07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlw
dDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyNSIs
IEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZd
IChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9y
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBSZW1vdmUgMyBmcm9tIHRoZSB3
cm9uZyB3b3JsZCwgdmVyaWZ5IGl0IGlzIHN0aWxsIHRoZXJlIGluIHRoZSBjdXN0b20gd29ybGQu
CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gcmVtb3ZlU2NyaXB0
TWVzc2FnZUhhbmRsZXJGb3JOYW1lOkAidGVzdEhhbmRsZXIzIiBjb250ZW50V29ybGQ6V0tDb250
ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZh
U2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRs
ZXIzIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0p
OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSAzIGZyb20g
dGhlIGNvcnJlY3Qgd29ybGQsIHZlcmlmeSBpdCBpcyBnb25lLCBidXQgNCBhbmQgNSBhcmUgc3Rp
bGwgdGhlcmUuCisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gcmVt
b3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOkAidGVzdEhhbmRsZXIzIiBjb250ZW50V29y
bGQ6d29ybGRdOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5
IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjMiLCBAImFyZyIgOiBAMSB9
IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBF
WFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgIH1dOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0ph
dmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFu
ZGxlcjQiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAx
XSk7CisgICAgfV07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJv
ZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyNSIsIEAiYXJnIiA6IEAx
IH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAg
ICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBSZW1vdmUgImFsbCIgaW4gdGhlIGN1c3RvbSB3b3Js
ZCwgdmVyaWZ5IDQgYW5kIDUgYXJlIG5vdyBnb25lLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIHJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250
ZW50V29ybGQ6d29ybGRdOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rp
b25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjQiLCBAImFyZyIg
OiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVz
dWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAg
ICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgIH1dOworICAgIFt3ZWJWaWV3IGNhbGxB
c3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0
ZXN0SGFuZGxlcjUiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRp
b25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBF
Q1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxl
ciwgQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdCkKK3sKKyAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHRO
UyhbW0FzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldp
dGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29y
bGQgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGJvb2wgZG9u
ZSA9IGZhbHNlOworICAgIE5TU3RyaW5nICpmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0Z1bGZpbGwn
KTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0
OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxk
LnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIkZ1bGZpbGxlZCEiXSk7CisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ1JlamVj
dCcpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3Jp
cHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29y
bGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfVFJV
RSghIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29u
dGFpbnNTdHJpbmc6QCJSZWplY3RlZCEiXSk7CisgICAgICAgIAorICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAg
ICBkb25lID0gZmFsc2U7CisgICAgZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdVbmRlZmluZWQnKTsg
dmFyIHJlc3VsdCA9IGF3YWl0IHA7IHJldHVybiByZXN1bHQgPT0gdW5kZWZpbmVkID8gJ1llcycg
OiAnTm8nIjsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBh
cmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlz
RXF1YWxUb1N0cmluZzpAIlllcyJdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFs
c2U7CisgICAgZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdEbyBub3RoaW5nJyk7IGF3YWl0IHA7IHJl
dHVybiBwOyI7CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkg
YXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29t
cGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAg
ICAgICBFWFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAImRp
ZCBub3QgcmVzcG9uZCB0byB0aGlzIHBvc3RNZXNzYWdlIl0pOworCisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICBmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0ludmFsaWQgcmVw
bHknKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2Ny
aXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdv
cmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoISFlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNv
bnRhaW5zU3RyaW5nOkAidW5hYmxlIHRvIGJlIHNlcmlhbGl6ZWQiXSk7CisKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworfQorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBXb3JsZExpZmV0aW1lKQorewor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhh
bmRsZXIgPSBhZG9wdE5TKFtbQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OworCisgICAgUmV0YWluUHRyPFdLQ29udGVudFdvcmxkPiB3b3JsZCA9IFtXS0NvbnRlbnRXb3Js
ZCB3b3JsZFdpdGhOYW1lOkAib3RoZXJXb3JsZCJdOworICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRs
ZXIuZ2V0KCkgY29udGVudFdvcmxkOndvcmxkLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworCisgICAgLy8gU2V0IGEgdmFyaWFibGUgaW4gdGhlIHdvcmxkLgorICAg
IGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInZh
ciBmb28gPSAnYmFyJyIgaW5Db250ZW50V29ybGQ6d29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBIYXZlIHRo
ZSBtZXNzYWdlIGhhbmRsZXIgYm91bmNlIGJhY2sgdGhhdCB2YWx1ZS4KKyAgICBOU1N0cmluZyAq
ZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRl
c3RIYW5kbGVyLnBvc3RNZXNzYWdlKGZvbyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dl
YlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNv
bnRlbnRXb3JsZDp3b3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAg
ICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJhciJdKTsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBSZW1vdmUgdGhlIG1lc3NhZ2UgaGFu
ZGxlciwgd2hpY2ggdXNlZCB0byBjYXVzZSB0aGUgd29ybGQgdG8gYmUgZGVzdHJveWVkIGluIHRo
ZSB3ZWIgcHJvY2Vzcy4KKyAgICAvLyBCdXQgYnkgZXZhbHVhdGluZyBKUyBtYWtlIHN1cmUgdGhl
IHZhbHVlIGlzIHN0aWxsIHRoZXJlLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIHJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6
d29ybGQuZ2V0KCldOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImZvbyIgaW5D
b250ZW50V29ybGQ6d29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJiYXIiXSk7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396919</attachid>
            <date>2020-04-19 11:40:45 -0700</date>
            <delta_ts>2020-04-19 12:01:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>81672</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGJmMTk3OGI1YjMuLjMxMmNiODJkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3
aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KTog
QWRkIGEgdmFyaWFudCBvZiBDb21wbGV0aW9uSGFuZGxlciB0aGF0IGFsbG93cyBmb3IgYSBGaW5h
bGl6ZXIgZnVuY3Rpb24KKyAgICAgICAgICB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENvbXBs
ZXRpb24gZnVuY3Rpb24gaGFzbid0IGJlZW4gY2FsbGVkIGF0IGRlc3RydWN0aW9uIHRpbWUuCisK
IDIwMjAtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV1RGXSBNb3ZlIERhdGFSZWYuaCBmcm9tIFdlYkNvcmUgdG8gV1RGIHRvIHV0aWxpemUgaXQg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oIGIv
U291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAppbmRleCA5MzhiNDk2NmYwOC4uOGM5
OGRmZTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtNjksNiArNjksNDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gV3JhcHMgYSBGdW5jdGlvbiB0byBtYWtlIHN1
cmUgaXQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKy8vIElmIHRoZSBDb21wbGV0aW9uSGFuZGxl
cldpdGhGaW5hbGl6ZXIgaXMgZGVzdHJveWVkIGFuZCB0aGUgZnVuY3Rpb24gaGFzbid0IHlldCBi
ZWVuIGNhbGxlZCwKKy8vIHRoZSBmaW5hbGl6ZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlv
biBhcyBpdHMgYXJndW1lbnQuCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhh
bmRsZXJXaXRoRmluYWxpemVyOwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4g
SW4+CitjbGFzcyBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KEluLi4uKT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29t
cGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlLCBGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPE91dChJbi4uLik+Jik+JiYgZmluYWxpemVyKQorICAgICAgICA6
IG1fZnVuY3Rpb24oV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgICwgbV9maW5hbGl6ZXIoV1RG
TW92ZShmaW5hbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXIoQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyJiYpID0gZGVmYXVsdDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXImIG9wZXJhdG9yPShDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25IYW5k
bGVyV2l0aEZpbmFsaXplcigpCisgICAgeworICAgICAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9maW5hbGl6ZXIobV9mdW5jdGlvbik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5j
dGlvbjsgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBB
U1NFUlQobV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZCA9PSBpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxl
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Z1bmN0aW9uLCBudWxscHRyKShzdGQ6OmZvcndhcmQ8SW4+KGluKS4u
Lik7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjxPdXQoSW4uLi4pPiYpPiBtX2ZpbmFsaXpl
cjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRo
cmVhZCB7IGlzTWFpblRocmVhZCgpIH07CisjZW5kaWYKK307CisKIG5hbWVzcGFjZSBEZXRhaWwg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgpAQCAtMTE1LDMgKzE1
OCw0IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlOwordXNpbmcgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q1YjNlOTVhNDYuLjFiNGZjZWZj
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdl
SGFuZGxlcjo6cG9zdE1lc3NhZ2UpOiBSZXR1cm4gYSBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBi
eSB0aGUgQVBJIGNsaWVudC4KKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKwogMjAyMC0wNC0xOCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZHVjZSBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
RnJhbWVMb2FkUmVxdWVzdCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCmluZGV4IGY1NWQ5ZDE5N2MyLi5mNDcw
MGY5Y2UxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJFdmVudExv
b3AuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKaW5kZXggM2FiYjZl
NjY1ZDYuLjdlZDg3MmJjNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGUyMWUwMzZhNjAu
LjY5NWQ0ZWU1MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IDMyYTRhNGZhYjFhLi5mYWMwNjcxMjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVu
dEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRM
b29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuY3BwCmluZGV4IGIwN2RiOGI2YjE0Li5jZjgyYWYzYjY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMjksNyArMjksOSBAQAog
I2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE0ICs0MywyOSBAQCBVc2VyTWVzc2FnZUhhbmRs
ZXI6OlVzZXJNZXNzYWdlSGFuZGxlcihGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0bwogCiBVc2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRl
ZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3Nh
Z2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiB2YWx1ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVzY3JpcHRvciBoYXMgYmVlbiByZW1vdmVkLiBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaGFzCiAgICAgLy8gcmVtb3ZlZCB0
aGUgbmFtZWQgbWVzc2FnZSBoYW5kbGVyIGF0IHRoZSBXZWJLaXQyIEFQSSBsZXZlbC4KLSAgICBp
ZiAoIW1fZGVzY3JpcHRvcikKKyAgICBpZiAoIW1fZGVzY3JpcHRvcikgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH0pOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgfQogCi0gICAgbV9k
ZXNjcmlwdG9yLT5kaWRQb3N0TWVzc2FnZSgqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgIG1fZGVz
Y3JpcHRvci0+ZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdldCgpLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwcm9taXNl
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KEpTQzo6Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBl
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChyZXN1bHQpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4ocmVzdWx0
LT5kZXNlcmlhbGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKKyAgICB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aAppbmRleCA5NGFmZmI1MGM5Yy4uOTEyMjc5YWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKKwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVc2VyTWVzc2FnZUhh
bmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0KICAgICB2b2lkIGludmFs
aWRhdGVEZXNjcmlwdG9yKCkgeyBtX2Rlc2NyaXB0b3IgPSBudWxscHRyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKaW5kZXggNzc2YzE4MjRiNmEuLjMyZGIy
OGVjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCkBA
IC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJT
CiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNj
cmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggNDVlMTU1N2UwNmIuLmQyZjY1MzU3MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShVc2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA1NDk0OWMxNzI1Yi4uY2U1NzlmN2M1MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeHRl
bmRhYmxlRXZlbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTU0OTAyYWY3OTcuLjRjMjA3NTAw
YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA0LTE4ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tTY3JpcHRNZXNzYWdlSGFuZGxl
ciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3aXRoIGEgcHJvbWlzZS4KKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIENoYW5nZSB3ZWJraXQubWVzc2FnZUhhbmRsZXJzLjxuYW1l
Pi5wb3N0TWVzc2FnZSgpIHRvIHJldHVybiBhIHByb21pc2UgaW5zdGVhZCBvZiB1bmRlZmluZWQu
CisgICAgICAgIAorICAgICAgICBBbGxvdyBmb3IgdGhhdCBwcm9taXNlIHRvIGJlIHJlc29sdmVk
IGJ5IGFuIGFzeW5jaHJvbm91cyByZXBseSBibG9jayB1cCBpbiB0aGUgQVBJIGNsaWVudC4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgaXMgbGlrZSB0aGUgb3Bwb3NpdGUgdmVyc2lvbiBvZiBbV0tX
ZWJWaWV3IGNhbGxBc3luY0Z1bmN0aW9uOl0KKyAgICAgICAgCisgICAgICAgIEFuZCB3aGlsZSB3
ZSdyZSBhZGRpbmcgYSBuZXcgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB2YXJpYW50LCB3ZSdyZSBh
ZGRpbmcgaXQgc2FuZGJveGVkIGJ5IFdLQ29udGVudFdvcmxkLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tOgorICAgICAgICAoQVBJOjp2
YWxpZGF0ZU9iamVjdCk6CisgICAgICAgIChBUEk6OmNvcmVWYWx1ZUZyb21OU09iamVjdCk6Cisg
ICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KToK
KyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmpl
Y3QpOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1l
c3NhZ2UuaDogTm93IHRoYXQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlcnMgY2FuIGJlIHBlci13b3Js
ZCwgbWVzc2FnZXMKKyAgICAgICAgICBkZWNsYXJlIHdoaWNoIHdvcmxkIHRoZXkgd2VyZSBwb3N0
ZWQgZnJvbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5t
bToKKyAgICAgICAgKC1bV0tTY3JpcHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpmcmFt
ZUluZm86bmFtZTp3b3JsZDpdKToKKyAgICAgICAgKC1bV0tTY3JpcHRNZXNzYWdlIHdvcmxkXSk6
CisgICAgICAgICgtW1dLU2NyaXB0TWVzc2FnZSBfaW5pdFdpdGhCb2R5OndlYlZpZXc6ZnJhbWVJ
bmZvOm5hbWU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Nj
cmlwdE1lc3NhZ2VJbnRlcm5hbC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Lmg6IEFkZGVkLgorICAgICAgICAgIERlY2xh
cmUgdGhlIG5ldyBwcm90b2NvbCBmb3IgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRoYXQgY2Fu
IHJlcGx5IHRvIG1lc3NhZ2VzIGFzeW5jaHJvbm91c2x5LgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bmFtZTpd
KToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6Y29udGVudFdvcmxkOm5hbWU6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250
cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmNvbnRlbnRXb3JsZDpuYW1l
Ol0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNz
YWdlSGFuZGxlckZvck5hbWU6Y29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250
ZW50Q29udHJvbGxlciByZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxlcnNGcm9tQ29udGVudFdv
cmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVBbGxTY3Jp
cHRNZXNzYWdlSGFuZGxlcnNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVh
dGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1
cmU6aW5GcmFtZTppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAgIFVwZGF0
ZSBmb3IgbmV3IHNoYXJlZCBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpbml0aWFsaXphdGlv
bi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnNGb3JXb3JsZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW46CisKIDIwMjAtMDQtMTgg
IFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11b
V1BFXSBSZXBsYWNlIGV2aWwgc3RydG9rKCkgY2FsbHMgd2l0aCBmc2NhbmYoKSBpbiBNZW1vcnlQ
cmVzc3VyZU1vbml0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggMWY0M2U2M2M2MTEuLjZmZTg1NzZhYzM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgZGVmaW5lZChfX09CSkNfXykKICAgICBzdGF0aWMgaWQgZGVzZXJpYWxpemUoV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKLSAgICBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQp
OworICAgIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tTlNP
YmplY3QoaWQpOwogI2VuZGlmCiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQppbmRleCA2NmU4YjI3YTA5YS4uNzMxMGY1
ZTFmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElT
ZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KQEAgLTgwLDIwICs4
MCw2NCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVybiB2YWx1ZS50b09iamVj
dDsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OndpcmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCitzdGF0aWMgYm9vbCB2YWxpZGF0ZU9i
amVjdChpZCBhcmd1bWVudCkKIHsKKyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dIHx8IFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU051bGwgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgeworICAg
ICAgICBfX2Jsb2NrIEJPT0wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVt
ZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKGlkIG9iamVjdCwgTlNVSW50ZWdlciwgQk9PTCAqc3Rv
cCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZU9iamVjdChvYmplY3QpKSB7CisgICAgICAg
ICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0K
KworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
IHsKKyAgICAgICAgX19ibG9jayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1l
bnQgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwg
Qk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZU9iamVjdChrZXkpIHx8ICF2
YWxpZGF0ZU9iamVjdCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsK
KworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY29yZVZhbHVl
RnJvbU5TT2JqZWN0KGlkIG9iamVjdCkKK3sKKyAgICBpZiAob2JqZWN0ICYmICF2YWxpZGF0ZU9i
amVjdChvYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gc2hhcmVkQ29udGV4dCgp
LmVuc3VyZUNvbnRleHQoKTsKICAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpvYmplY3QgaW5Db250ZXh0OmNvbnRleHRdOwogICAgIGlmICghdmFsdWUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwog
ICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xv
YmFsT2JqZWN0KTsKIAotICAgIGF1dG8gY29yZVZhbHVlID0gV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxPYmplY3QsIFt2YWx1
ZSBKU1ZhbHVlUmVmXSkpOwotICAgIHJldHVybiBjb3JlVmFsdWUtPnRvV2lyZUJ5dGVzKCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpnbG9iYWxP
YmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKK30KKworUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVG
cm9tTlNPYmplY3QoaWQgb2JqZWN0KQoreworICAgIGF1dG8gY29yZVZhbHVlID0gY29yZVZhbHVl
RnJvbU5TT2JqZWN0KG9iamVjdCk7CisgICAgaWYgKCFjb3JlVmFsdWUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBjcmVhdGUoY29yZVZhbHVlLnJlbGVhc2VOb25OdWxsKCkp
OwogfQogCiB9IC8vIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLU2NyaXB0TWVzc2FnZS5oCmluZGV4IDk3YmViNmU4MTM5Li42M2ExZTllYTM4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2Fn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3Nh
Z2UuaApAQCAtMjksNiArMjksNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xh
c3MgV0tDb250ZW50V29ybGQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tXZWJWaWV3
OwogCkBAIC01NCw2ICs1NSw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlv
cyg4LjApKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3Ry
aW5nICpuYW1lOwogCisvKiEgQGFic3RyYWN0IFRoZSBjb250ZW50IHdvcmxkIGZyb20gd2hpY2gg
dGhlIG1lc3NhZ2Ugd2FzIHNlbnQuICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IFdLQ29udGVudFdvcmxkICp3b3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2Fn
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2Uu
bW0KaW5kZXggYzkzZTdhOTlkYWIuLmJkNWRkNDZiOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0KQEAgLTM1LDkgKzM1
LDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1NjcmlwdE1lc3NhZ2UgewogICAgIFdlYWtPYmpDUHRy
PFdLV2ViVmlldz4gX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBfZnJhbWVJ
bmZvOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX25hbWU7CisgICAgUmV0YWluUHRyPFdLQ29u
dGVudFdvcmxkPiBfd29ybGQ7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhCb2R5Oihp
ZClib2R5IHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZvOihXS0ZyYW1lSW5m
byAqKWZyYW1lSW5mbyBuYW1lOihOU1N0cmluZyAqKW5hbWUKKy0gKGluc3RhbmNldHlwZSlfaW5p
dFdpdGhCb2R5OihpZClib2R5IHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZv
OihXS0ZyYW1lSW5mbyAqKWZyYW1lSW5mbyBuYW1lOihOU1N0cmluZyAqKW5hbWUgd29ybGQ6KFdL
Q29udGVudFdvcmxkICopd29ybGQKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQ2LDYgKzQ3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9p
bml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmcmFtZUlu
Zm86KFcKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgX2ZyYW1lSW5mbyA9IGZyYW1lSW5m
bzsKICAgICBfbmFtZSA9IGFkb3B0TlMoW25hbWUgY29weV0pOworICAgIF93b3JsZCA9IHdvcmxk
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC03MCw0ICs3Miw5IEBAIC0gKE5TU3RyaW5nICop
bmFtZQogICAgIHJldHVybiBfbmFtZS5nZXQoKTsKIH0KIAorLSAoV0tDb250ZW50V29ybGQgKil3
b3JsZAoreworICAgIHJldHVybiBfd29ybGQuZ2V0KCk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
V2l0aFJlcGx5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi44MjNkZjFlOGI1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5LmgKQEAgLTAs
MCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
KworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK0BjbGFzcyBXS1NjcmlwdE1lc3NhZ2U7CitAY2xhc3MgV0tVc2VyQ29udGVudENv
bnRyb2xsZXI7CisKKy8qISBBIGNsYXNzIGNvbmZvcm1pbmcgdG8gIHRoZSBXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyV2l0aFJlcGx5IHByb3RvY29sIHByb3ZpZGVzIGEKK21ldGhvZCBmb3IgcmVjZWl2
aW5nIG1lc3NhZ2VzIGZyb20gSmF2YVNjcmlwdCBydW5uaW5nIGluIGEgd2VicGFnZSBhbmQgcmVw
bHlpbmcgdG8gdGhlbSBhc3luY2hyb25vdXNseS4KKyovCitAcHJvdG9jb2wgV0tTY3JpcHRNZXNz
YWdlSGFuZGxlcldpdGhSZXBseSA8TlNPYmplY3Q+CisKKy8qISBAYWJzdHJhY3QgSW52b2tlZCB3
aGVuIGEgc2NyaXB0IG1lc3NhZ2UgaXMgcmVjZWl2ZWQgZnJvbSBhIHdlYnBhZ2UuCisgQHBhcmFt
IHVzZXJDb250ZW50Q29udHJvbGxlciBUaGUgdXNlciBjb250ZW50IGNvbnRyb2xsZXIgaW52b2tp
bmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4KKyBAcGFyYW0gbWVzc2FnZSBUaGUgc2NyaXB0IG1lc3Nh
Z2UgcmVjZWl2ZWQuCisgQHBhcmFtIHJlcGx5SGFuZGxlciBBIGJsb2NrIHRvIGJlIGNhbGxlZCB3
aXRoIHRoZSByZXN1bHQgb2YgcHJvY2Vzc2luZyB0aGUgbWVzc2FnZS4KKyBAZGlzY3Vzc2lvbiBX
aGVuIHRoZSBKYXZhU2NyaXB0IHJ1bm5pbmcgaW4geW91ciBhcHBsaWNhdGlvbidzIHdlYiBjb250
ZW50IGNhbGxlZCB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFtZT4ucG9zdE1lc3Nh
Z2UoPG1lc3NhZ2VCb2R5PiksCisgYSBKYXZhU2NyaXB0IFByb21pc2Ugb2JqZWN0IHdhcyByZXR1
cm5lZC4gVGhlIHZhbHVlcyBwYXNzZWQgdG8gdGhlIHJlcGx5SGFuZGxlciBhcmUgdXNlZCB0byBy
ZXNvbHZlIHRoYXQgUHJvbWlzZS4KKworIFBhc3NpbmcgYSBub24tbmlsIE5TU3RyaW5nIHZhbHVl
IHRvIHRoZSBzZWNvbmQgcGFyYW1ldGVyIG9mIHRoZSByZXBseUhhbmRsZXIgc2lnbmFscyBhbiBl
cnJvci4KKyBObyBtYXR0ZXIgd2hhdCB2YWx1ZSB5b3UgcGFzcyB0byB0aGUgZmlyc3QgcGFyYW1l
dGVyIG9mIHRoZSByZXBseUhhbmRsZXIsCisgdGhlIFByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3
aXRoIGEgSmF2YVNjcmlwdCBlcnJvciBvYmplY3Qgd2hvc2UgbWVzc2FnZSBwcm9wZXJ0eSBpcyBz
ZXQgdG8gdGhhdCBlcnJvck1lc3NhZ2Ugc3RyaW5nLgorCisgSWYgdGhlIHNlY29uZCBwYXJhbWV0
ZXIgdG8gdGhlIHJlcGx5SGFuZGxlciBpcyBuaWwsIHRoZSBmaXJzdCBhcmd1bWVudCB3aWxsIGJl
IHNlcmlhbGl6ZWQgaW50byBpdHMgSmF2YVNjcmlwdCBlcXVpdmFsZW50IGFuZCB0aGUgUHJvbWlz
ZSB3aWxsIGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSByZXN1bHRpbmcgdmFsdWUuCisgSWYgdGhlIGZp
cnN0IGFyZ3VtZW50IGlzIG5pbCB0aGVuIHRoZSBQcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQgd2l0
aCBhIEphdmFTY3JpcHQgdmFsdWUgb2YgInVuZGVmaW5lZCIKKworIEFsbG93ZWQgbm9uLW5pbCBy
ZXN1bHQgdHlwZXMgYXJlOgorIE5TTnVtYmVyLCBOU051bGwsIE5TU3RyaW5nLCBOU0RhdGUsIE5T
QXJyYXksIGFuZCBOU0RpY3Rpb25hcnkuCisgQW55IE5TQXJyYXkgb3IgTlNEaWN0aW9uYXJ5IGNv
bnRhaW5lcnMgY2FuIG9ubHkgY29udGFpbiBvYmplY3RzIG9mIHRob3NlIHR5cGVzLgorCisgVGhl
IHJlcGx5SGFuZGxlciBjYW4gYmUgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKyBJZiB0aGUgcmVwbHlI
YW5kbGVyIGlzIGRlYWxsb2NhdGVkIGJlZm9yZSBpdCBpcyBjYWxsZWQsIHRoZSBQcm9taXNlIHdp
bGwgYmUgcmVqZWN0ZWQgd2l0aCBhIEphdmFTY3JpcHQgRXJyb3Igb2JqZWN0Cisgd2l0aCBhbiBh
cHByb3ByaWF0ZSBtZXNzYWdlIGluZGljYXRpbmcgdGhlIGhhbmRsZXIgd2FzIG5ldmVyIGNhbGxl
ZC4KKworIEV4YW1wbGU6CisKKyBXaXRoIGEgV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBs
eSBvYmplY3QgaW5zdGFsbGVkIHdpdGggdGhlIG5hbWUgInRlc3RIYW5kbGVyIiwgY29uc2lkZXIg
dGhlIGZvbGxvd2luZyBKYXZhU2NyaXB0OgorIEB0ZXh0YmxvY2sKKyAgICAgdmFyIHByb21pc2Ug
PSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgi
RnVsZmlsbCBtZSB3aXRoIDQyIik7CisgICAgIGF3YWl0IHA7CisgICAgIHJldHVybiBwOworIEAv
dGV4dGJsb2NrCisKKyBBbmQgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyV2l0aFJlcGx5IGltcGxlbWVudGF0aW9uOgorIEB0ZXh0YmxvY2sKKyAgICAgLSAodm9p
ZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNv
bnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2Ug
KiltZXNzYWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TU3RyaW5nICopKXJlcGx5SGFu
ZGxlcgorICAgICB7CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWw6QCJGdWxmaWxs
IG1lIHdpdGggNDIiXSkKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihANDIsIG5pbCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihuaWwsIEAiVW5leHBlY3RlZCBtZXNz
YWdlIHJlY2VpdmVkIik7CisgICAgIH0KKyBAL3RleHRibG9jaworCisgSW4gdGhpcyBleGFtcGxl
OgorICAgLSBUaGUgSmF2YVNjcmlwdCBjb2RlIHNlbmRzIGEgbWVzc2FnZSB0byB5b3VyIGFwcGxp
Y2F0aW9uIGNvZGUgd2l0aCB0aGUgYm9keSBAIkZ1bGZpbGwgbWUgd2l0aCA0MiIKKyAgIC0gSmF2
YVNjcmlwdCBleGVjdXRpb24gaXMgc3VzcGVuZGVkIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSByZXN1
bHRpbmcgcHJvbWlzZSB0byByZXNvbHZlLgorICAgLSBZb3VyIG1lc3NhZ2UgaGFuZGxlciBpcyBp
bnZva2VkIHdpdGggdGhhdCBtZXNzYWdlIGFuZCBhIGJsb2NrIHRvIGNhbGwgd2l0aCB0aGUgcmVw
bHkgd2hlbiByZWFkeS4KKyAgIC0gWW91ciBtZXNzYWdlIGhhbmRsZXIgc2VuZHMgdGhlIHZhbHVl
IEA0MiBhcyBhIHJlcGx5LgorICAgLSBUaGUgSmF2YVNjcmlwdCBwcm9taXNlIGlzIGZ1bGZpbGxl
ZCB3aXRoIHRoZSB2YWx1ZSA0Mi4KKyAgIC0gSmF2YVNjcmlwdCBleGVjdXRpb24gY29udGludWVz
IGFuZCB0aGUgdmFsdWUgNDIgaXMgcmV0dXJuZWQuCisgKi8KKy0gKHZvaWQpdXNlckNvbnRlbnRD
b250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxl
ciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZSByZXBs
eUhhbmRsZXI6KHZvaWQgKF4pKGlkIHJlcGx5LCBOU1N0cmluZyAqZXJyb3JNZXNzYWdlKSlyZXBs
eUhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5o
CmluZGV4IDI2Mzc4ODAwNTY3Li44OWJjNTE4ZGZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgK
QEAgLTI3LDYgKzI3LDYgQEAKIAogQGludGVyZmFjZSBXS1NjcmlwdE1lc3NhZ2UgKCkKIAotLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6KE5TU3RyaW5n
ICopbmFtZTsKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhCb2R5OihpZClib2R5IHdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZvOihXS0ZyYW1lSW5mbyAqKWZyYW1lSW5mbyBu
YW1lOihOU1N0cmluZyAqKW5hbWUgd29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQ7CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggODI5YTA1NzMzN2QuLmY0M2YyZTYyZjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtMzAsOCArMzAsMTAgQEAKIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKIEBjbGFzcyBXS0NvbnRlbnRSdWxlTGlzdDsKK0BjbGFzcyBXS0NvbnRlbnRX
b3JsZDsKIEBjbGFzcyBXS1VzZXJTY3JpcHQ7CiBAcHJvdG9jb2wgV0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcjsKK0Bwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OwogCiAvKiEg
QSBXS1VzZXJDb250ZW50Q29udHJvbGxlciBvYmplY3QgcHJvdmlkZXMgYSB3YXkgZm9yIEphdmFT
Y3JpcHQgdG8gcG9zdAogIG1lc3NhZ2VzIHRvIGEgd2ViIHZpZXcuCkBAIC01NiwxOSArNTgsNzUg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAtICh2b2lkKXJl
bW92ZUFsbFVzZXJTY3JpcHRzOwogCiAvKiEgQGFic3RyYWN0IEFkZHMgYSBzY3JpcHQgbWVzc2Fn
ZSBoYW5kbGVyLgotIEBwYXJhbSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgbWVzc2FnZSBoYW5k
bGVyIHRvIGFkZC4KKyBAcGFyYW0gc2NyaXB0TWVzc2FnZUhhbmRsZXIgVGhlIHNjcmlwdCBtZXNz
YWdlIGhhbmRsZXIgdG8gYWRkLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdv
cmxkIGluIHdoaWNoIHRvIGFkZCB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KICBAcGFyYW0g
bmFtZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgotIEBkaXNjdXNzaW9uIEFkZGlu
ZyBhIHNjcmlwdE1lc3NhZ2VIYW5kbGVyIGFkZHMgYSBmdW5jdGlvbgotIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVzc2FnZUJvZHk+KSBmb3IgYWxs
Ci0gZnJhbWVzLgorIEBkaXNjdXNzaW9uIEFkZGluZyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIg
YWRkcyBhIGZ1bmN0aW9uCisgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBv
c3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIHRvIGFsbCBmcmFtZXMsIGF2YWlsYWJsZSBpbiB0aGUg
Z2l2ZW4gV0tDb250ZW50V29ybGQuCisKKyBUaGUgbmFtZSBhcmd1bWVudCBtdXN0IGJlIGEgbm9u
LWVtcHR5IHN0cmluZy4KKworIEVhY2ggV0tDb250ZW50V29ybGQgY2FuIGhhdmUgYW55IG51bWJl
ciBvZiBzY3JpcHQgbWVzc2FnZSBoYW5kbGVycywgYnV0IG9ubHkgb25lIHBlciB1bmlxdWUgbmFt
ZS4KKworIE9uY2UgYW55IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgaGFzIGJlZW4gYWRkZWQgdG8g
YSBXS0NvbnRlbnRXb3JsZCBmb3IgYSBnaXZlbiBuYW1lLCBpdCBpcyBhbiBlcnJvciB0byBhZGQg
YW5vdGhlcgorIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgdG8gdGhhdCBXS0NvbnRlbnRXb3JsZCBm
b3IgdGhhdCBzYW1lIG5hbWUgd2l0aG91dCBmaXJzdCByZW1vdmluZyB0aGUgcHJldmlvdXMgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlci4KKworIFRoZSBhYm92ZSByZXN0cmljdGlvbiBhcHBsaWVzIHRv
IGFueSB0eXBlIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgLSBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIGFuZCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Cisgb2JqZWN0cyB3aWxsIGNv
bmZsaWN0IHdpdGggZWFjaCBvdGhlciBpZiB5b3UgdHJ5IHRvIGFkZCB0aGVtIHRvIHRoZSBzYW1l
IFdLQ29udGVudFdvcmxkIHdpdGggdGhlIHNhbWUgbmFtZS4KKyAqLworLSAodm9pZClhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBBZGRzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4K
KyBAcGFyYW0gc2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgVGhlIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXIgdG8gYWRkLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdvcmxk
IGluIHdoaWNoIHRvIGFkZCB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KKyBAcGFyYW0gbmFt
ZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgorIEBkaXNjdXNzaW9uIEFkZGluZyBh
IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgYWRkcyBhIGZ1bmN0aW9uCisgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBvc3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIHRvIGFsbCBm
cmFtZXMsIGF2YWlsYWJsZSBpbiB0aGUgZ2l2ZW4gV0tDb250ZW50V29ybGQuCisKKyBUaGUgbmFt
ZSBhcmd1bWVudCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy4KKworIEVhY2ggV0tDb250ZW50
V29ybGQgY2FuIGhhdmUgYW55IG51bWJlciBvZiBzY3JpcHQgbWVzc2FnZSBoYW5kbGVycywgYnV0
IG9ubHkgb25lIHBlciB1bmlxdWUgbmFtZS4KKworIE9uY2UgYW55IHNjcmlwdCBtZXNzYWdlIGhh
bmRsZXIgaGFzIGJlZW4gYWRkZWQgdG8gYSBXS0NvbnRlbnRXb3JsZCBmb3IgYSBnaXZlbiBuYW1l
LCBpdCBpcyBhbiBlcnJvciB0byBhZGQgYW5vdGhlcgorIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIg
dG8gdGhhdCBXS0NvbnRlbnRXb3JsZCBmb3IgdGhhdCBzYW1lIG5hbWUgd2l0aG91dCBmaXJzdCBy
ZW1vdmluZyB0aGUgcHJldmlvdXMgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KKworIFRoZSBhYm92
ZSByZXN0cmljdGlvbiBhcHBsaWVzIHRvIGFueSB0eXBlIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRs
ZXIgLSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IGFuZCBXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyCisgb2JqZWN0cyB3aWxsIGNvbmZsaWN0IHdpdGggZWFjaCBvdGhlciBpZiB5b3UgdHJ5
IHRvIGFkZCB0aGVtIHRvIHRoZSBzYW1lIFdLQ29udGVudFdvcmxkIHdpdGggdGhlIHNhbWUgbmFt
ZS4KKworIFJlZmVyIHRvIHRoZSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IGRvY3Vt
ZW50YXRpb24gZm9yIGV4YW1wbGVzIG9mIGhvdyBpdCBpcyBtb3JlIGZsZXhpYmxlIHRoYW4gV0tT
Y3JpcHRNZXNzYWdlSGFuZGxlci4KKyAqLworLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cldpdGhSZXBseTooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+KXNjcmlwdE1l
c3NhZ2VIYW5kbGVyV2l0aFJlcGx5IGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250
ZW50V29ybGQgbmFtZTooTlNTdHJpbmcgKiluYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgQWRkcyBhIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgdG8gdGhlIG1haW4gd29ybGQgdXNlZCBieSBwYWdlIGNvbnRlbnQg
aXRzZWxmLgorIEBwYXJhbSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgc2NyaXB0IG1lc3NhZ2Ug
aGFuZGxlciB0byBhZGQuCisgQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFu
ZGxlci4KKyBAZGlzY3Vzc2lvbiBDYWxsaW5nIHRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8g
Y2FsbGluZyBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpjb250ZW50V29ybGQ6bmFtZToKKyB3aXRo
IFtXS0NvbnRlbnRXb3JsZCBwYWdlV29ybGRdIGFzIHRoZSBjb250ZW50V29ybGQgYXJndW1lbnQu
CiAgKi8KIC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWU7CiAK
IC8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCiAgQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlciB0byByZW1vdmUuCisgQHBhcmFt
IGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgZnJvbSB3aGljaCB0byByZW1vdmUgdGhl
IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCisgKi8KKy0gKHZvaWQpcmVtb3ZlU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUgY29udGVudFdvcmxkOihXS0NvbnRlbnRX
b3JsZCAqKWNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYSBzY3JpcHQgbWVzc2Fn
ZSBoYW5kbGVyLgorIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBtZXNzYWdlIGhhbmRsZXIg
dG8gcmVtb3ZlLgorIEBkaXNjdXNzaW9uIENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVu
dCB0byBjYWxsaW5nIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpjb250ZW50V29y
bGQ6CisgIHdpdGggW1dLQ29udGVudFdvcmxkIHBhZ2VXb3JsZF0gYXMgdGhlIGNvbnRlbnRXb3Js
ZCBhcmd1bWVudC4KICAqLwogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5h
bWU6KE5TU3RyaW5nICopbmFtZTsKIAorLyohIEBhYnN0cmFjdCBSZW1vdmVzIGFsbCBzY3JpcHQg
bWVzc2FnZSBoYW5kbGVycyBmcm9tIGEgZ2l2ZW4gV0tDb250ZW50V29ybGQuCisgQHBhcmFtIGNv
bnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgZnJvbSB3aGljaCB0byByZW1vdmUgYWxsIHNj
cmlwdCBtZXNzYWdlIGhhbmRsZXJzLgorICovCistICh2b2lkKXJlbW92ZUFsbFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
Ky8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhbGwgYXNzb2NpYXRlZCBzY3JpcHQgbWVzc2FnZSBoYW5k
bGVycy4KKyAqLworLSAodm9pZClyZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxlcnMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyohIEBh
YnN0cmFjdCBBZGRzIGEgY29udGVudCBydWxlIGxpc3QuCiAgQHBhcmFtIGNvbnRlbnRSdWxlTGlz
dCBUaGUgY29udGVudCBydWxlIGxpc3QgdG8gYWRkLgogICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
bW0KaW5kZXggNjgyN2M5MTQxYzAuLjdmOTRhNDA1NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAj
aW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIK
KyNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCIKICNpbXBvcnQgIldL
U2NyaXB0TWVzc2FnZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTEyNSwzMSArMTI2LDk0IEBAIHB1
YmxpYzoKICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKICAgICAgICAgLCBtX2hh
bmRsZXIoaGFuZGxlcikKICAgICAgICAgLCBtX25hbWUoYWRvcHROUyhbbmFtZSBjb3B5XSkpCisg
ICAgICAgICwgbV9zdXBwb3J0c0FzeW5jUmVwbHkoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAK
LSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKKworICAgIFNjcmlwdE1l
c3NhZ2VIYW5kbGVyRGVsZWdhdGUoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xsZXIs
IGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PiBoYW5kbGVyLCBOU1N0cmluZyAq
bmFtZSkKKyAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICAgICAgLCBtX2hh
bmRsZXIoaGFuZGxlcikKKyAgICAgICAgLCBtX25hbWUoYWRvcHROUyhbbmFtZSBjb3B5XSkpCisg
ICAgICAgICwgbV9zdXBwb3J0c0FzeW5jUmVwbHkodHJ1ZSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBkaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgZmlu
YWwKICAgICB7CiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICAgICAgUmV0YWlu
UHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBhZ2UpKTsKICAgICAgICAgICAgIGlkIGJvZHkg
PSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCAwKTsKLSAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0TlMoW1tXS1Njcmlw
dE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJv
eHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1lOm1fbmFtZS5nZXQoKV0pOwor
ICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxv
Y10gX2luaXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBmcmFt
ZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxkOndyYXBwZXIod29y
bGQpXSk7CiAgICAgICAgIAotICAgICAgICAgICAgW21faGFuZGxlciB1c2VyQ29udGVudENvbnRy
b2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOm1lc3NhZ2Uu
Z2V0KCldOworICAgICAgICAgICAgWyhpZDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiltX2hhbmRs
ZXIuZ2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRSZWNl
aXZlU2NyaXB0TWVzc2FnZTptZXNzYWdlLmdldCgpXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3N1cHBvcnRzQXN5bmNSZXBseTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0
aEFzeW5jUmVwbHkoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mb0RhdGEsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIEZ1bmN0aW9uPHZv
aWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4mJiByZXBseUhh
bmRsZXIpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQobV9zdXBwb3J0c0FzeW5jUmVwbHkp
OworCisgICAgICAgIGF1dG8gZmluYWxpemVyID0gW10oRnVuY3Rpb248dm9pZChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYgZnVuY3Rpb24pIHsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uKG51bGxwdHIsICJXS1dlYlZpZXcgQVBJIGNsaWVudCBkaWQgbm90IHJlc3Bv
bmQgdG8gdGhpcyBwb3N0TWVzc2FnZSJfcyk7CisgICAgICAgIH07CisgICAgICAgIF9fYmxvY2sg
YXV0byBoYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4oV1RGTW92ZShyZXBseUhhbmRs
ZXIpLCBXVEZNb3ZlKGZpbmFsaXplcikpOworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBhZ2UpKTsKKyAg
ICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKKyAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9
IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1l
Om1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOworCisgICAgICAgICAgICBbKGlk
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+KW1faGFuZGxlci5nZXQoKSB1c2VyQ29u
dGVudENvbnRyb2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdl
Om1lc3NhZ2UuZ2V0KCkgcmVwbHlIYW5kbGVyOl4oaWQgcmVzdWx0LCBOU1N0cmluZyAqZXJyb3JN
ZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkgeworICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVyKG51bGxwdHIsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRv
IHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9t
TlNPYmplY3QocmVzdWx0KTsKKyAgICAgICAgICAgICAgICBpZiAoIXNlcmlhbGl6ZWRWYWx1ZSkg
eworICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKG51bGxwdHIsICJUaGUgcmVzdWx0IHZhbHVl
IHBhc3NlZCBiYWNrIGZyb20gdGhlIFdLV2ViVmlldyBBUEkgY2xpZW50IHdhcyB1bmFibGUgdG8g
YmUgc2VyaWFsaXplZCJfcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHNlcmlhbGl6ZWRWYWx1ZS5nZXQo
KSwgeyB9KTsKKyAgICAgICAgICAgIH1dOwogICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAg
IFJldGFpblB0cjxpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1faGFuZGxlcjsKKyAgICBS
ZXRhaW5QdHI8aWQ+IG1faGFuZGxlcjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fbmFtZTsK
KyAgICBib29sIG1fc3VwcG9ydHNBc3luY1JlcGx5OwogfTsKIAorLSAodm9pZClfYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6KFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKXNjcmlwdE1l
c3NhZ2VIYW5kbGVyCit7CisgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFk
ZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihzY3JpcHRNZXNzYWdlSGFuZGxlcikpCisgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJB
dHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4g
b25lIGFscmVhZHkgZXhpc3RzLiIsIChOU1N0cmluZyAqKXNjcmlwdE1lc3NhZ2VIYW5kbGVyLm5h
bWUoKV07Cit9CisKIC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1Njcmlw
dE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5h
bWUKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
OjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBz
Y3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdl
Q29udGVudFdvcmxkKCkpOwotICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5h
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCi0gICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0
IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFs
cmVhZHkgZXhpc3RzLiIsIG5hbWVdOworICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpoYW5kbGVyLmdldCgpXTsKK30KKworLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjoo
aWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZCBuYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAg
ICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNz
YWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp3b3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgW3Nl
bGYgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCldOworfQorCistICh2b2lk
KWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OihpZCA8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseT4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdvcmxkOihXS0NvbnRl
bnRXb3JsZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIGF1dG8gaGFuZGxl
ciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBu
YW1lKSwgbmFtZSwgKndvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBbc2VsZiBfYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKV07CiB9CiAKIC0gKHZvaWQpcmVtb3ZlU2NyaXB0
TWVzc2FnZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUKQEAgLTE1Nyw2ICsyMjEsMjEg
QEAgLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3RyaW5nICop
bmFtZQogICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgp
KTsKIH0KIAorLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3Ry
aW5nICopbmFtZSBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkCit7
CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRs
ZXJGb3JOYW1lKG5hbWUsICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworfQorCistICh2
b2lkKXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6KFdLQ29u
dGVudFdvcmxkICopY29udGVudFdvcmxkCit7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LT5yZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCpjb250ZW50V29ybGQtPl9jb250ZW50
V29ybGQpOworfQorCistICh2b2lkKXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVycworewor
ICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5k
bGVycygpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRp
b24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJJbnRlcm5hbC5oCmluZGV4IDEwOGJlZTE1MzgyLi40N2Y3ZGUwMThhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCkBAIC0yOSwxNSArMjksMTggQEAKICNpbXBvcnQg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5PiB7CiAgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gV0tVc2VyQ29udGVudENvbnRyb2xs
ZXI7CiB9OwogCitjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIH0KIAogQGludGVyZmFj
ZSBXS1VzZXJDb250ZW50Q29udHJvbGxlciAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAg
QVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+
IF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIH0KKworLSAodm9pZClfYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6KFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKaW5k
ZXggYWEzNTFlNzdjY2QuLmU1Zjg5NmQ5YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
UHJpdmF0ZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250
ZW50Q29udHJvbGxlci5oPgogCitAY2xhc3MgV0tDb250ZW50V29ybGQ7CiBAY2xhc3MgV0tVc2Vy
U2NyaXB0OwogQGNsYXNzIF9XS1VzZXJDb250ZW50RmlsdGVyOwogQGNsYXNzIF9XS1VzZXJDb250
ZW50V29ybGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCAwMDM0MTU4YmEyMS4uNmIxMWIzODQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODk4LDE1ICs4OTgsMTMgQEAg
LSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcg
YXNBc3luY0Z1bmN0aW9uOihCT09MKWEKIAogICAgIGZvciAoaWQga2V5IGluIGFyZ3VtZW50cykg
ewogICAgICAgICBpZCB2YWx1ZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OmtleV07Ci0gICAg
ICAgIGlmICghdmFsaWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xs
b3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU1N0cmlu
ZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlvbmFyeSI7CisgICAgICAg
IGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZUZyb21OU09iamVjdCh2YWx1ZSk7CisgICAgICAgIGlmICghc2VyaWFsaXplZFZhbHVlKSB7Cisg
ICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBtdXN0
IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZvbGxv
d2luZyB0eXBlczogTlNOdW1iZXIsIE5TTnVsbCwgTlNEYXRlLCBOU1N0cmluZywgTlNBcnJheSwg
YW5kIE5TRGljdGlvbmFyeSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIAot
ICAgICAgICBhdXRvIHdpcmVCeXRlcyA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJl
Qnl0ZXNGcm9tTlNPYmplY3QodmFsdWUpOwotICAgICAgICAvLyBTaW5jZSB3ZSd2ZSB2YWxpZGF0
ZWQgdGhlIGlucHV0IGRpY3Rpb25hcnkgYWJvdmUsIHdlIHNob3VsZCBuZXZlciBmYWlsIHRvIHNl
cmlhbGl6ZSBpdCBpbnRvIHdpcmUgYnl0ZXMuCi0gICAgICAgIEFTU0VSVCh3aXJlQnl0ZXMpOwot
ICAgICAgICBhcmd1bWVudHNNYXAtPnNldChrZXksICp3aXJlQnl0ZXMpOworCisgICAgICAgIGFy
Z3VtZW50c01hcC0+c2V0KGtleSwgc2VyaWFsaXplZFZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0
aW9uKCkudG9XaXJlQnl0ZXMoKSk7CiAgICAgfQogCiAgICAgaWYgKGVycm9yTWVzc2FnZSAmJiBo
YW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA3YzQzMjMwNGY1Mi4uZGEx
MjllM2I4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMTkwLDEzICsxOTAsMjIg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBh
Z2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJy
aWRlCiAgICAgewogICAgICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqc1Jlc3VsdCA9IHdl
YmtpdEphdmFzY3JpcHRSZXN1bHRDcmVhdGUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKICAgICAg
ICAgZ19zaWduYWxfZW1pdChtX21hbmFnZXIsIHNpZ25hbHNbU0NSSVBUX01FU1NBR0VfUkVDRUlW
RURdLCBtX2hhbmRsZXJOYW1lLCBqc1Jlc3VsdCk7CiAgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0
X3Jlc3VsdF91bnJlZihqc1Jlc3VsdCk7CiAgICAgfQogCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoV2ViUGFnZVByb3h5Jiwg
RnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZQorICAgIHsKKyAgICB9CisgICAgCiAgICAg
dmlydHVhbCB+U2NyaXB0TWVzc2FnZUNsaWVudEd0aygpIHsgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IGI2NTUxZWFiZjVj
Li5lMDBjMjFlMDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVy
cmlkZQorICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUlu
Zm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBTdHJp
bmcgbWVzc2FnZSA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS50b1N0cmluZygpOwogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiB0b2tlbnMgPSBtZXNzYWdlLnNwbGl0KCc6Jyk7CkBAIC01Myw2ICs1Mywx
NSBAQCBwdWJsaWM6CiAgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3BlY3Qo
cmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50NjQoKSwgdG9rZW5zWzFd
LnRvVUludDY0KCksIHRva2Vuc1syXSk7CiAgICAgfQogCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoV2ViUGFnZVByb3h5Jiwg
RnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZQorICAgIHsKKyAgICB9CisKICAgICB+U2Ny
aXB0TWVzc2FnZUNsaWVudCgpIHsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IGM5NTFhNTBkMzk4Li5mM2YyOGE0
N2UzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB+U2NyaXB0TWVzc2FnZUNsaWVu
dCgpIHsgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmIHBhZ2UsIEZy
YW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJv
eHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGF1dG8gdG9rZW5zID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLnRvU3RyaW5n
KCkuc3BsaXQoIjoiKTsKICAgICAgICAgaWYgKHRva2Vucy5zaXplKCkgIT0gMykKQEAgLTYxLDYg
KzYxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgVVJMIHJlcXVlc3RVUkwgeyB7IH0sIHBhZ2UucGFn
ZUxvYWRTdGF0ZSgpLnVybCgpIH07CiAgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
Lmluc3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50U3RyaWN0
KCksIHRva2Vuc1sxXS50b1VJbnRTdHJpY3QoKSwgdG9rZW5zWzJdKTsKICAgICB9CisgICAgCisg
ICAgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5j
UmVwbHkoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYs
IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZQorICAg
IHsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
JiBtX2luc3BlY3RvclByb3RvY29sSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCmlu
ZGV4IGFmYWNiYjA3MWYxLi4yZjYxNGIyM2EyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5o
CkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogbmFtZXNw
YWNlIEFQSSB7CiBjbGFzcyBDb250ZW50V29ybGQ7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTIsNyArNTMsOSBAQCBwdWJsaWM6CiAg
ICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNsaWVudCgp
IHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5Jiwg
RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUlu
Zm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlJikgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQ
YWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYpID0gMDsKICAgICB9OwogCiAgICAgc3Rh
dGljIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxD
bGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29udGVudFdvcmxkJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggN2RkOGViOTkzMTcuLjI0YjYz
M2U0ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNvbnRl
bnRXb3JsZC5oIgorI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKQEAgLTMxNiw3ICszMTcsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNv
bnN0IFN0cmluZwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxs
VXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9y
IChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Muc2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAg
ICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIo
KSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIG51bWJlclJlbW92ZWQgPSAwOwog
ICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBlbnRyeSkgewpA
QCAtMzI4LDcgKzMyOSwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29udGVudFdvcgogICAgIH0pOwogfQog
Ci12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxl
cklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCkK
K3sKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcnMoKSwgaWRlbnRpZmllcigpKTsKK30KKwordm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSwgTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2Fn
ZTo6QXN5bmNSZXBseSYmIHJlcGx5KQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJveHlJRCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzQx
LDcgKzM0OCwyMSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgaWYgKCFoYW5kbGVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgq
cGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3RvcigpKSk7CisgICAgaWYgKCFoYW5kbGVyLT5j
bGllbnQoKS5zdXBwb3J0c0FzeW5jUmVwbHkoKSkgeworICAgICAgICBoYW5kbGVyLT5jbGllbnQo
KS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+
d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVy
ZW5jZS52ZWN0b3IoKSkpOworICAgICAgICByZXBseSh7IH0sIHsgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZVdpdGhBc3lu
Y1JlcGx5KCpwYWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAg
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3Rv
cigpKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworICAgICAgICBp
ZiAoZXJyb3JNZXNzYWdlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwor
ICAgICAgICAgICAgcmVwbHkoeyB2YWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLnRvV2ly
ZUJ5dGVzKCkgfSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHJlcGx5KHsgfSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9KTsKIH0KIAogI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApp
bmRleCAyYzA5NDI4NTBiNC4uMTI5YTM0MGYwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRl
ZFNldC5oPgpAQCAtOTgsNiArOTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZGRVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKTsKICAgICB2b2lkIHJlbW92
ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJiwgQVBJOjpDb250ZW50V29y
bGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpDb250ZW50
V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBhZGROZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRQb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGcmFtZUlu
Zm9EYXRhJiYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
RnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRp
ZFBvc3RNZXNzYWdlOjpBc3luY1JlcGx5JiYpOwogCiAgICAgdm9pZCBhZGRDb250ZW50V29ybGQo
QVBJOjpDb250ZW50V29ybGQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4ZDIwMGExZTZlOS4uZmQ5NWYyZjVkMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yNCw1ICsyNCw1IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkgewotRGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2Fu
dHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSAtPiAo
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdFZhbHVlLCBTdHJpbmcgZXJyb3JNZXNzYWdlKSBBc3lu
YwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmU0N2I2ZTkyZjAuLmUzZGI1NDA5YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3Myw2ICs5NzMsNyBAQAogCQk1MTA1
MjM3NDFDNzNEMzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDUyMzcz
MUM3M0QzN0IwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oICov
OyB9OwogCQk1MTA1MjM3NTFDNzNEMzhGMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDUyMzcyMUM3M0QzN0IwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTA2RDdDNDE4QkRCRTczMDAw
QUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRl
eHRNZW51Q29udGV4dERhdGEuaCAqLzsgfTsKKwkJNTEwOTA5OTcyM0RBQ0JGMjAwM0IxRTRDIC8q
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDkwOTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OwogCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVz
b3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEFGRkI4MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oICovOyB9
OwogCQk1MTBGNTkxMDFEREUyOTY5MDA0MTJGRjUgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0M0IyNUUx
RERDREZEMTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBGNTkxMTFEREUyOTcwMDA0
MTJGRjUgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQzk3OTFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlu
a0ljb25QYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTM1OTcsNiArMzU5OCw3IEBACiAJCTUxMDVCMEYzMTYzMDg3MkUwMEUyNzcw
OSAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDZEN0JG
MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyog
Q29udGV4dE1lbnVDb250ZXh0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb250ZXh0TWVudUNvbnRleHREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMDkwOTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQUZGQjcx
NjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyLmNwcDsgcGF0aCA9IE5ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTBBRkZCODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkZXIuaDsgcGF0aCA9IE5ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEw
QUZGQ0UxNjU0MkNCRDAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcz
OTIsNiArNzM5NCw3IEBACiAJCQkJMUE3RTM3NzcxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0
TWVzc2FnZS5oICovLAogCQkJCTFBN0UzNzc2MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1l
c3NhZ2UubW0gKi8sCiAJCQkJMUE3RTM3NzQxOEU0QTMzQTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaCAqLywKKwkJCQk1MTA5MDk5NDIzRDQxRjEzMDAzQjFFNEMgLyogV0tTY3Jp
cHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oICovLAogCQkJCTdDQzk5QTM1MThFRjdDQkMwMDQ4
QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oICovLAogCQkJCTUxQ0QxQzVGMUIzNEI5
QzkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luLmggKi8sCiAJCQkJNTFDRDFDNjAxQjM0QjlD
OTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gKi8sCkBAIC0xMTMxOCw2ICsxMTMyMSw3
IEBACiAJCQkJQkNFRTdBRDExMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwRTQyNTE2OEI3QTI4MDA1N0U2NkEgLyogV2Vi
UHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUUwOTM0MTg4NjFEMzgw
MEQyREM0OSAvKiBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxMDkwOTk3MjNEQUNCRjIwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5RDEyQTg4Mzg4MDA2Mjk1MzAgLyogV2Vi
UHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjFDQ0NBNjIzMTQ4NUFBMDBC
NjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCmluZGV4
IDY5MjQ0M2ViODAyLi5hMWRhNjJkN2E3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURPTVdpbmRvdy5jcHAKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0RPTUV4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNs
dWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01HbG9i
YWxPYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NUHJvbWlzZURlZmVycmVkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmg+CkBAIC0xMDY5LDggKzEwNzEsMTcgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV9k
b21fd2luZG93X3dlYmtpdF9tZXNzYWdlX2hhbmRsZXJzX3Bvc3RfbWVzc2FnZShXZWJLaXRET01E
T00KICAgICBhdXRvIGhhbmRsZXIgPSB3ZWJraXROYW1lc3BhY2UtPm1lc3NhZ2VIYW5kbGVycygp
LT5uYW1lZEl0ZW0oV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIFN0cmluZzo6ZnJv
bVVURjgoaGFuZGxlck5hbWUpKTsKICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICAKKyAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gZG9tV2luZG93
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgCisgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gdG9KU0RPTUdsb2JhbE9iamVjdCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV2ViQ29yZTo6
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAg
ICByZXR1cm4gRkFMU0U7CiAKLSAgICBhdXRvIHJlc3VsdCA9IGhhbmRsZXItPnBvc3RNZXNzYWdl
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgo
bWVzc2FnZSkpKTsKKyAgICBhdXRvIHByb21pc2UgPSBEZWZlcnJlZFByb21pc2U6OmNyZWF0ZSgq
Z2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHJlc3VsdCA9IGhhbmRsZXItPnBvc3RNZXNzYWdlKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgobWVz
c2FnZSkpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKaW5kZXggZjVjODdjMDJiZDYuLjA0MjlkYWQ2YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAg
Ly8gV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcgotICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2UoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyLCBXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUG9zdE1l
c3NhZ2UoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyLCBXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBoYW5kbGVyLmZyYW1lKCk7
CiAgICAgICAgIGlmICghZnJhbWUpCkBAIC0yNjgsNyArMjY4LDE3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+
d2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJvbGxlci0+aWRlbnRp
ZmllcigpKTsKKyAgICAgICAgYXV0byBtZXNzYWdlUmVwbHlIYW5kbGVyID0gW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdWx0VmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CisgICAgICAg
ICAgICBpZiAoIWVycm9yTWVzc2FnZS5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG51bGxwdHIsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIHZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHJlc3VsdFZhbHVlLnZlY3RvcigpKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHZhbHVlLnB0cigpLCB7IH0pOworICAgICAg
ICB9OworCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZp
ZXIoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uo
dmFsdWUtPmRhdGEoKSkpLCBXVEZNb3ZlKG1lc3NhZ2VSZXBseUhhbmRsZXIpLCBtX2NvbnRyb2xs
ZXItPmlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcj4gbV9jb250cm9sbGVyOwpAQCAtMzA5LDcgKzMxOSwxOCBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKENvbnRlbnRX
b3JsZElkZW50aQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3RvcjxDb250ZW50V29y
bGRJZGVudGlmaWVyPiYgd29ybGRJZGVudGlmaWVycykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKCkKK3sKKyNpZiBFTkFC
TEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorICAgIGlmIChtX3VzZXJNZXNzYWdlSGFuZGxlcnMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3VzZXJNZXNzYWdlSGFuZGxlcnMu
Y2xlYXIoKTsKKyAgICBpbnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFVzZXJNZXNzYWdlSGFuZGxlcklu
dmFsaWRhdGlvbkNsaWVudHMoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxkcyhjb25z
dCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mIHdvcmxkSWRlbnRpZmllcnMpCiB7CiAj
aWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICAgICBib29sIHVzZXJNZXNzYWdlSGFu
ZGxlcnNDaGFuZ2VkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXgg
ZTkwMjYwNzdlOTMuLmNlOTBhOWQ5M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5o
CkBAIC0xMDAsNyArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mKTsKIAogICAgIHZv
aWQgcmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKENvbnRlbnRXb3JsZElkZW50aWZpZXIs
IHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlbW92ZUFsbFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+
Jik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzRm9yV29ybGRz
KGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYpOworICAgIHZvaWQgcmVtb3Zl
QWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKICAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmIG5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KaW5k
ZXggNWFkY2QwODBlOTEuLjJhYjIzMjRiYjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3LDggQEAgbWVzc2FnZXMgLT4gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyIHsKIAogICAgIEFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxl
cnMoVmVjdG9yPHN0cnVjdCBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4gc2Ny
aXB0TWVzc2FnZUhhbmRsZXJzKTsKICAgICBSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIo
V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllciwgdWludDY0X3Qg
aWRlbnRpZmllcik7Ci0gICAgUmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhWZWN0
b3I8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXJzKTsKKyAg
ICBSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzRm9yV29ybGRzKFZlY3RvcjxXZWJL
aXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcnMpOworICAgIFJlbW92
ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCiAgICAgQWRkQ29udGVudFJ1bGVMaXN0cyhWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50RmlsdGVy
cyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NWI4YzQyNWRiZWMuLmZjZjc2Yzc0OGJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgor
ICAgICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKHdlYlZpZXdG
b3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KToKKyAgICAg
ICAgKC1bQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlk
UmVjZWl2ZVNjcmlwdE1lc3NhZ2U6cmVwbHlIYW5kbGVyOl0pOgorCiAyMDIwLTA0LTE3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBz
ZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tCmluZGV4IDRhYjk5NDMyYTg3Li42N2JmYmQ1M2M5NiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENv
bnRyb2xsZXIubW0KQEAgLTMwLDcgKzMwLDEwIEBACiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1NjcmlwdE1lc3Nh
Z2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Lmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tVc2VyU2NyaXB0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyU2NyaXB0
UHJpdmF0ZS5oPgpAQCAtNzQsNiArNzcsOSBAQCBAZW5kCiAKIFRFU1QoV0tVc2VyQ29udGVudENv
bnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQogeworICAgIHNjcmlwdE1l
c3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAg
ICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2Ny
aXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKQEAgLTk1LDYgKzEwMSw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQogCiBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVkV29ybGQpCiB7
CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2Ug
PSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IFtf
V0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKIAogICAgIFJl
dGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRN
ZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwpAQCAtMTQ0LDYgKzE1Myw5IEBAIFRFU1QoV0tV
c2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0SXNvbGF0
ZWRXb3JsZCkKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhh
bmRsZXJCYXNpY1JlbW92ZSkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOworICAgIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gdXNlckNvbnRlbnRDb250cm9s
bGVyID0gW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXTsKQEAgLTE4OCw2ICsy
MDAsOCBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxl
ckJhc2ljUmVtb3ZlKQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNz
YWdlSGFuZGxlckNhbGxSZW1vdmVkSGFuZGxlcikKIHsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxl
ciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFJl
dGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tV
c2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IFtjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC0yMDUsMjIgKzIxOSwyMyBAQCBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckNhbGxSZW1vdmVkSGFu
ZGxlcikKIAogICAgIFt1c2VyQ29udGVudENvbnRyb2xsZXIgcmVtb3ZlU2NyaXB0TWVzc2FnZUhh
bmRsZXJGb3JOYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CiAKKyAgICBfX2Jsb2NrIGJvb2wgZG9u
ZSA9IGZhbHNlOwogICAgIC8vIFRlc3QgdGhhdCB3ZSB0aHJvdyBhbiBleGNlcHRpb24gaWYgeW91
IHRyeSB0byB1c2UgYSBtZXNzYWdlIGhhbmRsZXIgdGhhdCBoYXMgYmVlbiByZW1vdmVkLgotICAg
IFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDoKLSAgICAgICAgQCJ0cnkgeyIKLSAgICAgICAg
ICIgICAgaGFuZGxlclRvUmVtb3ZlLnBvc3RNZXNzYWdlKCdGQUlMJyk7IgotICAgICAgICAgIn0g
Y2F0Y2ggKGUpIHsiCi0gICAgICAgICAiICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LmhhbmRsZXJUb1Bvc3QucG9zdE1lc3NhZ2UoJ1BBU1MnKTsiCi0gICAgICAgICAifSIgY29tcGxl
dGlvbkhhbmRsZXI6bmlsXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0
dXJuIGhhbmRsZXJUb1JlbW92ZS5wb3N0TWVzc2FnZSgnRkFJTCcpIiBhcmd1bWVudHM6bmlsIGlu
Q29udGVudFdvcmxkOltXS0NvbnRlbnRXb3JsZCBwYWdlV29ybGRdIGNvbXBsZXRpb25IYW5kbGVy
Ol4gKGlkIHZhbHVlLCBOU0Vycm9yICogZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwodmFs
dWUpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJV
RShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIkludmFsaWRBY2Nlc3NFcnJv
ciJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CiAKLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLQot
ICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVzc2FnZXNb
MF0gYm9keV0pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlld0ZvclNj
cmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbFRlc3QoV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKIHsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2Ug
PSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9
IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uQ29weSA9IGFkb3B0TlMo
W2NvbmZpZ3VyYXRpb24gY29weV0pOwogICAgIFtjb25maWd1cmF0aW9uQ29weSBzZXRVc2VyQ29u
dGVudENvbnRyb2xsZXI6W1tbV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1
dG9yZWxlYXNlXV07CkBAIC0yMzYsNiArMjUxLDkgQEAgc3RhdGljIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWwK
IAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0
aXBsZUhhbmRsZXJSZW1vdmFsKQogeworICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAg
cmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPF9XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbj4gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFBy
b2Nlc3NQb29sOltbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOwpAQCAtMjYyLDYg
KzI4MCw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5k
bGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbCkKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgLy8g
RklYTUU6IGhhbmdzIGluIHRoZSBpT1Mgc2ltdWxhdG9yCiBURVNUKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQogeworICAgIHNjcmlw
dE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisK
ICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtb
U2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAi
dGVzdEhhbmRsZXIiXTsKQEAgLTI5Myw2ICszMTQsOSBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQogCiBURVNUKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlclJlcGxhY2VXaXRoU2FtZU5h
bWUpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFu
ZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8
V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IFtjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC04MzMsNiArODU3LDkgQEAgc3RhdGlj
IHZvaWQgY29tcGFyZU1lc3NhZ2VzKFZlY3Rvcjxjb25zdCBjaGFyKj4mJiBleHBlY3RlZE1lc3Nh
Z2VzKQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBJbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3Jp
cHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gc3RhcnRBbGxGcmFtZXMg
PSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdzdGFydCBhbGwn
KSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0
IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKICAgICBhdXRvIGVuZE1haW5GcmFtZU9ubHkgPSBhZG9w
dE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlbmQgbWFpbicpIiBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1haW5G
cmFtZU9ubHk6WUVTXSk7CkBAIC05MDIsMyArOTI5LDI3NCBAQCBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQogICAgIEVYUEVDVF9XS19TVFJFUShb
ZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndhaXRlZCBmb3Igbm90aWZpY2F0aW9uIik7CiAgICAg
RVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAiZG9jdW1lbnQgcGFyc2lu
ZyBlbmRlZCIpOwogfQorCitAaW50ZXJmYWNlIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIgOiBO
U09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4KK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIKKworLSAodm9pZCl1c2VyQ29udGVu
dENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9s
bGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlIHJl
cGx5SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpKXJlcGx5SGFu
ZGxlcgoreworICAgIGlmIChbbWVzc2FnZS5uYW1lIGlzRXF1YWxUb1N0cmluZzpAIm90aGVyV29y
bGRIYW5kbGVyIl0pCisgICAgICAgIEVYUEVDVF9UUlVFKG1lc3NhZ2Uud29ybGQgIT0gbmlsKTsK
KyAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7
CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIkZ1bGZpbGwiXSkg
eworICAgICAgICAgICAgcmVwbHlIYW5kbGVyKEAiRnVsZmlsbGVkISIsIG5pbCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVh
bFRvU3RyaW5nOkAiUmVqZWN0Il0pIHsKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihuaWwsIEAi
UmVqZWN0ZWQhIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiVW5kZWZpbmVkIl0pIHsKKyAgICAgICAg
ICAgIHJlcGx5SGFuZGxlcihuaWwsIG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiRG8gbm90aGlu
ZyJdKSB7CisgICAgICAgICAgICAvLyBEcm9wIHRoZSByZXBseSBoYW5kbGVyIHdpdGhvdXQgcmVz
cG9uZGluZyB0byBzZWUgd2hhdCBoYXBwZW5zCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiSW52YWxpZCBy
ZXBseSJdKSB7CisgICAgICAgICAgICByZXBseUhhbmRsZXIoW1tbTlNEYXRhIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV0sIG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBBbGwgb3RoZXIgaW5wdXRzIHNob3VsZCBqdXN0IGJlIHJvdW5kIHRyaXBw
ZWQgYmFjayB0byB0aGUgbWVzc2FnZSBoYW5kbGVyCisgICAgcmVwbHlIYW5kbGVyKG1lc3NhZ2Uu
Ym9keSwgbmlsKTsKK30KKworQGVuZAorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBN
ZXNzYWdlSGFuZGxlckFQSSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0FzeW5jU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgp
IGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgbmFtZTpAInRlc3RIYW5kbGVy
MSJdOworCisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBAdHJ5IHsKKyAgICAg
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250ZW50V29y
bGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjEiXTsKKyAgICB9IEBjYXRjaCAoTlNFeGNl
cHRpb24gKmV4Y2VwdGlvbikgeworICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOworICAgIH0K
KworICAgIEVYUEVDVF9UUlVFKGhhZEV4Y2VwdGlvbik7CisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFu
ZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxk
IG5hbWU6QCJ0ZXN0SGFuZGxlcjIiXTsKKworICAgIGF1dG8gKndvcmxkID0gW1dLQ29udGVudFdv
cmxkIHdvcmxkV2l0aE5hbWU6QCJvdGhlcldvcmxkIl07CisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFu
ZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29ybGQgbmFtZTpAInRlc3RIYW5kbGVyMyJdOworICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOndvcmxkIG5hbWU6QCJ0
ZXN0SGFuZGxlcjQiXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRX
b3JsZDp3b3JsZCBuYW1lOkAidGVzdEhhbmRsZXI1Il07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAg
IGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TU3RyaW5nICpmdW5jdGlvbkJvZHkgPSBAInZhciBw
ID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbaGFuZGxlcl0ucG9zdE1lc3NhZ2UoYXJn
KTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKworICAgIC8vIHBhZ2VXb3JsZCBpcyB3aGVyZSB0ZXN0
aGFuZGxlcjEgbGl2ZXMKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9u
Qm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXIxIiwgQCJhcmciIDog
QDEgfSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhh
bmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9O
VUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6
QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBUcnlpbmcgdG8g
ZmluZCB0ZXN0SGFuZGxlcjEgaW4gdGhlIGRlZmF1bHRDbGllbnRXb3JsZCBzaG91bGQgZmFpbAor
ICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpA
eyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjEiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdv
cmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpb
Jl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVz
dWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBk
b25lID0gZmFsc2U7CisKKyAgICAvLyBkZWZhdWx0Q2xpZW50V29ybGQgaXMgd2hlcmUgdGVzdGhh
bmRsZXIyIGxpdmVzCisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJv
ZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMiIsIEAiYXJnIiA6IEAx
IH0gaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBs
ZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRv
TnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gQnV0
IGlmIHdlIHJlbXZvZSBpdCwgaXQgc2hvdWxkIG5vIGxvbmdlciBsaXZlIHRoZXJlLCBhbmQgdXNp
bmcgaXQgc2hvdWxkIGNhdXNlIGFuIGVycm9yLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAInRlc3RI
YW5kbGVyMiIgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZF07
CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRz
OkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMiIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50
V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
OlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChy
ZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlmeSBoYW5kbGVycyAzLCA0LCBhbmQgNSBhcmUg
YWxsIGluIHRoZSBjdXN0b20gd29ybGQuCisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlw
dDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMyIs
IEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZd
IChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9y
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAg
ICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1
bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBpbkNv
bnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgIH1dOworICAgIFt3ZWJWaWV3
IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIi
IDogQCJ0ZXN0SGFuZGxlcjUiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVh
bFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8g
UmVtb3ZlIDMgZnJvbSB0aGUgd3Jvbmcgd29ybGQsIHZlcmlmeSBpdCBpcyBzdGlsbCB0aGVyZSBp
biB0aGUgY3VzdG9tIHdvcmxkLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAInRlc3RIYW5kbGVyMyIg
Y29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZF07CisgICAgW3dl
YlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFu
ZGxlciIgOiBAInRlc3RIYW5kbGVyMyIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29y
bGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBp
c0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAg
ICAvLyBSZW1vdmUgMyBmcm9tIHRoZSBjb3JyZWN0IHdvcmxkLCB2ZXJpZnkgaXQgaXMgZ29uZSwg
YnV0IDQgYW5kIDUgYXJlIHN0aWxsIHRoZXJlLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAInRlc3RI
YW5kbGVyMyIgY29udGVudFdvcmxkOndvcmxkXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZh
U2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRs
ZXIzIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
cmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICB9XTsKKyAgICBb
d2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJo
YW5kbGVyIiA6IEAidGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3
b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsK
KyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0
IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgIH1dOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0ph
dmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFu
ZGxlcjUiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAx
XSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gUmVtb3ZlICJhbGwi
IGluIHRoZSBjdXN0b20gd29ybGQsIHZlcmlmeSA0IGFuZCA1IGFyZSBub3cgZ29uZS4KKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVBbGxTY3JpcHRNZXNz
YWdlSGFuZGxlcnNGcm9tQ29udGVudFdvcmxkOndvcmxkXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5
bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVz
dEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNU
X05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICB9XTsK
KyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6
QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI1IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRX
b3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9O
VUxMKGVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7Cit9CisKK1RFU1QoV0tV
c2VyQ29udGVudENvbnRyb2xsZXIsIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Bvc3Qp
Cit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tD
b250ZW50V29ybGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworCisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBOU1N0cmluZyAqZnVuY3Rpb25Cb2R5
ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBv
c3RNZXNzYWdlKCdGdWxmaWxsJyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dlYlZpZXcg
Y2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRX
b3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJGdWxmaWxs
ZWQhIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgZnVuY3Rpb25C
b2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKCdSZWplY3QnKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKyAgICBbd2ViVmll
dyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluQ29udGVu
dFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlk
IHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJy
b3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAiUmVqZWN0ZWQhIl0pOworICAgICAgICAK
KyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAi
dmFyIHAgPSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZSgnVW5kZWZpbmVkJyk7IHZhciByZXN1bHQgPSBhd2FpdCBwOyByZXR1cm4gcmVzdWx0ID09
IHVuZGVmaW5lZCA/ICdZZXMnIDogJ05vJyI7CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNj
cmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRX
b3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJZZXMiXSk7CisKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRG8gbm90
aGluZycpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFT
Y3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50
V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1Rf
VFJVRSghIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0g
Y29udGFpbnNTdHJpbmc6QCJkaWQgbm90IHJlc3BvbmQgdG8gdGhpcyBwb3N0TWVzc2FnZSJdKTsK
KworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgZnVuY3Rpb25Cb2R5ID0g
QCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RN
ZXNzYWdlKCdJbnZhbGlkIHJlcGx5Jyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dlYlZp
ZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRl
bnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChp
ZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7
CisgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbW2Vy
cm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAInVuYWJsZSB0byBiZSBzZXJpYWxpemVk
Il0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwg
V29ybGRMaWZldGltZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0FzeW5jU2NyaXB0TWVzc2FnZUhh
bmRsZXIgYWxsb2NdIGluaXRdKTsKKworICAgIFJldGFpblB0cjxXS0NvbnRlbnRXb3JsZD4gd29y
bGQgPSBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIm90aGVyV29ybGQiXTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKSBuYW1l
OkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIC8vIFNldCBhIHZhcmlhYmxl
IGluIHRoZSB3b3JsZC4KKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFs
dWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZm9vID0gJ2JhciciIGluQ29udGVudFdvcmxkOndvcmxkLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNl
OworCisgICAgLy8gSGF2ZSB0aGUgbWVzc2FnZSBoYW5kbGVyIGJvdW5jZSBiYWNrIHRoYXQgdmFs
dWUuCisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShmb28pOyBhd2FpdCBwOyBy
ZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5
IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6d29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJp
bmc6QCJiYXIiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gUmVt
b3ZlIHRoZSBtZXNzYWdlIGhhbmRsZXIsIHdoaWNoIHVzZWQgdG8gY2F1c2UgdGhlIHdvcmxkIHRv
IGJlIGRlc3Ryb3llZCBpbiB0aGUgd2ViIHByb2Nlc3MuCisgICAgLy8gQnV0IGJ5IGV2YWx1YXRp
bmcgSlMgbWFrZSBzdXJlIHRoZSB2YWx1ZSBpcyBzdGlsbCB0aGVyZS4KKyAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxl
cnNGcm9tQ29udGVudFdvcmxkOndvcmxkLmdldCgpXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUph
dmFTY3JpcHQ6QCJmb28iIGluQ29udGVudFdvcmxkOndvcmxkLmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3Ry
aW5nOkAiYmFyIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396921</attachid>
            <date>2020-04-19 12:01:44 -0700</date>
            <delta_ts>2020-04-19 12:15:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>81721</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGJmMTk3OGI1YjMuLjMxMmNiODJkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3
aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KTog
QWRkIGEgdmFyaWFudCBvZiBDb21wbGV0aW9uSGFuZGxlciB0aGF0IGFsbG93cyBmb3IgYSBGaW5h
bGl6ZXIgZnVuY3Rpb24KKyAgICAgICAgICB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENvbXBs
ZXRpb24gZnVuY3Rpb24gaGFzbid0IGJlZW4gY2FsbGVkIGF0IGRlc3RydWN0aW9uIHRpbWUuCisK
IDIwMjAtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV1RGXSBNb3ZlIERhdGFSZWYuaCBmcm9tIFdlYkNvcmUgdG8gV1RGIHRvIHV0aWxpemUgaXQg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oIGIv
U291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAppbmRleCA5MzhiNDk2NmYwOC4uOGM5
OGRmZTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtNjksNiArNjksNDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gV3JhcHMgYSBGdW5jdGlvbiB0byBtYWtlIHN1
cmUgaXQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKy8vIElmIHRoZSBDb21wbGV0aW9uSGFuZGxl
cldpdGhGaW5hbGl6ZXIgaXMgZGVzdHJveWVkIGFuZCB0aGUgZnVuY3Rpb24gaGFzbid0IHlldCBi
ZWVuIGNhbGxlZCwKKy8vIHRoZSBmaW5hbGl6ZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlv
biBhcyBpdHMgYXJndW1lbnQuCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhh
bmRsZXJXaXRoRmluYWxpemVyOwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4g
SW4+CitjbGFzcyBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KEluLi4uKT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29t
cGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlLCBGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPE91dChJbi4uLik+Jik+JiYgZmluYWxpemVyKQorICAgICAgICA6
IG1fZnVuY3Rpb24oV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgICwgbV9maW5hbGl6ZXIoV1RG
TW92ZShmaW5hbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXIoQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyJiYpID0gZGVmYXVsdDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXImIG9wZXJhdG9yPShDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25IYW5k
bGVyV2l0aEZpbmFsaXplcigpCisgICAgeworICAgICAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9maW5hbGl6ZXIobV9mdW5jdGlvbik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5j
dGlvbjsgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBB
U1NFUlQobV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZCA9PSBpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxl
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Z1bmN0aW9uLCBudWxscHRyKShzdGQ6OmZvcndhcmQ8SW4+KGluKS4u
Lik7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjxPdXQoSW4uLi4pPiYpPiBtX2ZpbmFsaXpl
cjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRo
cmVhZCB7IGlzTWFpblRocmVhZCgpIH07CisjZW5kaWYKK307CisKIG5hbWVzcGFjZSBEZXRhaWwg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgpAQCAtMTE1LDMgKzE1
OCw0IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlOwordXNpbmcgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q1YjNlOTVhNDYuLjFiNGZjZWZj
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdl
SGFuZGxlcjo6cG9zdE1lc3NhZ2UpOiBSZXR1cm4gYSBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBi
eSB0aGUgQVBJIGNsaWVudC4KKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKwogMjAyMC0wNC0xOCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZHVjZSBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
RnJhbWVMb2FkUmVxdWVzdCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCmluZGV4IGY1NWQ5ZDE5N2MyLi5mNDcw
MGY5Y2UxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJFdmVudExv
b3AuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKaW5kZXggM2FiYjZl
NjY1ZDYuLjdlZDg3MmJjNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGUyMWUwMzZhNjAu
LjY5NWQ0ZWU1MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IDMyYTRhNGZhYjFhLi5mYWMwNjcxMjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVu
dEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRM
b29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuY3BwCmluZGV4IGIwN2RiOGI2YjE0Li5jZjgyYWYzYjY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMjksNyArMjksOSBAQAog
I2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE0ICs0MywyOSBAQCBVc2VyTWVzc2FnZUhhbmRs
ZXI6OlVzZXJNZXNzYWdlSGFuZGxlcihGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0bwogCiBVc2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRl
ZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3Nh
Z2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiB2YWx1ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVzY3JpcHRvciBoYXMgYmVlbiByZW1vdmVkLiBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaGFzCiAgICAgLy8gcmVtb3ZlZCB0
aGUgbmFtZWQgbWVzc2FnZSBoYW5kbGVyIGF0IHRoZSBXZWJLaXQyIEFQSSBsZXZlbC4KLSAgICBp
ZiAoIW1fZGVzY3JpcHRvcikKKyAgICBpZiAoIW1fZGVzY3JpcHRvcikgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH0pOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgfQogCi0gICAgbV9k
ZXNjcmlwdG9yLT5kaWRQb3N0TWVzc2FnZSgqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgIG1fZGVz
Y3JpcHRvci0+ZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdldCgpLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwcm9taXNl
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KEpTQzo6Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBl
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChyZXN1bHQpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4ocmVzdWx0
LT5kZXNlcmlhbGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKKyAgICB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aAppbmRleCA5NGFmZmI1MGM5Yy4uOTEyMjc5YWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKKwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVc2VyTWVzc2FnZUhh
bmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0KICAgICB2b2lkIGludmFs
aWRhdGVEZXNjcmlwdG9yKCkgeyBtX2Rlc2NyaXB0b3IgPSBudWxscHRyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKaW5kZXggNzc2YzE4MjRiNmEuLjMyZGIy
OGVjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCkBA
IC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJT
CiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNj
cmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggNDVlMTU1N2UwNmIuLmQyZjY1MzU3MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShVc2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA1NDk0OWMxNzI1Yi4uY2U1NzlmN2M1MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeHRl
bmRhYmxlRXZlbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTU0OTAyYWY3OTcuLjRjMjA3NTAw
YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA0LTE4ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tTY3JpcHRNZXNzYWdlSGFuZGxl
ciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3aXRoIGEgcHJvbWlzZS4KKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIENoYW5nZSB3ZWJraXQubWVzc2FnZUhhbmRsZXJzLjxuYW1l
Pi5wb3N0TWVzc2FnZSgpIHRvIHJldHVybiBhIHByb21pc2UgaW5zdGVhZCBvZiB1bmRlZmluZWQu
CisgICAgICAgIAorICAgICAgICBBbGxvdyBmb3IgdGhhdCBwcm9taXNlIHRvIGJlIHJlc29sdmVk
IGJ5IGFuIGFzeW5jaHJvbm91cyByZXBseSBibG9jayB1cCBpbiB0aGUgQVBJIGNsaWVudC4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgaXMgbGlrZSB0aGUgb3Bwb3NpdGUgdmVyc2lvbiBvZiBbV0tX
ZWJWaWV3IGNhbGxBc3luY0Z1bmN0aW9uOl0KKyAgICAgICAgCisgICAgICAgIEFuZCB3aGlsZSB3
ZSdyZSBhZGRpbmcgYSBuZXcgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB2YXJpYW50LCB3ZSdyZSBh
ZGRpbmcgaXQgc2FuZGJveGVkIGJ5IFdLQ29udGVudFdvcmxkLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tOgorICAgICAgICAoQVBJOjp2
YWxpZGF0ZU9iamVjdCk6CisgICAgICAgIChBUEk6OmNvcmVWYWx1ZUZyb21OU09iamVjdCk6Cisg
ICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KToK
KyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmpl
Y3QpOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1l
c3NhZ2UuaDogTm93IHRoYXQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlcnMgY2FuIGJlIHBlci13b3Js
ZCwgbWVzc2FnZXMKKyAgICAgICAgICBkZWNsYXJlIHdoaWNoIHdvcmxkIHRoZXkgd2VyZSBwb3N0
ZWQgZnJvbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5t
bToKKyAgICAgICAgKC1bV0tTY3JpcHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpmcmFt
ZUluZm86bmFtZTp3b3JsZDpdKToKKyAgICAgICAgKC1bV0tTY3JpcHRNZXNzYWdlIHdvcmxkXSk6
CisgICAgICAgICgtW1dLU2NyaXB0TWVzc2FnZSBfaW5pdFdpdGhCb2R5OndlYlZpZXc6ZnJhbWVJ
bmZvOm5hbWU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Nj
cmlwdE1lc3NhZ2VJbnRlcm5hbC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Lmg6IEFkZGVkLgorICAgICAgICAgIERlY2xh
cmUgdGhlIG5ldyBwcm90b2NvbCBmb3IgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRoYXQgY2Fu
IHJlcGx5IHRvIG1lc3NhZ2VzIGFzeW5jaHJvbm91c2x5LgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bmFtZTpd
KToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6Y29udGVudFdvcmxkOm5hbWU6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250
cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmNvbnRlbnRXb3JsZDpuYW1l
Ol0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNz
YWdlSGFuZGxlckZvck5hbWU6Y29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250
ZW50Q29udHJvbGxlciByZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxlcnNGcm9tQ29udGVudFdv
cmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVBbGxTY3Jp
cHRNZXNzYWdlSGFuZGxlcnNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVh
dGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1
cmU6aW5GcmFtZTppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAgIFVwZGF0
ZSBmb3IgbmV3IHNoYXJlZCBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpbml0aWFsaXphdGlv
bi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnNGb3JXb3JsZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW46CisKIDIwMjAtMDQtMTgg
IFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11b
V1BFXSBSZXBsYWNlIGV2aWwgc3RydG9rKCkgY2FsbHMgd2l0aCBmc2NhbmYoKSBpbiBNZW1vcnlQ
cmVzc3VyZU1vbml0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggMWY0M2U2M2M2MTEuLjZmZTg1NzZhYzM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgZGVmaW5lZChfX09CSkNfXykKICAgICBzdGF0aWMgaWQgZGVzZXJpYWxpemUoV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKLSAgICBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQp
OworICAgIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tTlNP
YmplY3QoaWQpOwogI2VuZGlmCiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQppbmRleCA2NmU4YjI3YTA5YS4uNzMxMGY1
ZTFmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElT
ZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KQEAgLTgwLDIwICs4
MCw2NCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVybiB2YWx1ZS50b09iamVj
dDsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OndpcmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCitzdGF0aWMgYm9vbCB2YWxpZGF0ZU9i
amVjdChpZCBhcmd1bWVudCkKIHsKKyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dIHx8IFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU051bGwgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgeworICAg
ICAgICBfX2Jsb2NrIEJPT0wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVt
ZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKGlkIG9iamVjdCwgTlNVSW50ZWdlciwgQk9PTCAqc3Rv
cCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZU9iamVjdChvYmplY3QpKSB7CisgICAgICAg
ICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0K
KworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
IHsKKyAgICAgICAgX19ibG9jayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1l
bnQgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwg
Qk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZU9iamVjdChrZXkpIHx8ICF2
YWxpZGF0ZU9iamVjdCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsK
KworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY29yZVZhbHVl
RnJvbU5TT2JqZWN0KGlkIG9iamVjdCkKK3sKKyAgICBpZiAob2JqZWN0ICYmICF2YWxpZGF0ZU9i
amVjdChvYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gc2hhcmVkQ29udGV4dCgp
LmVuc3VyZUNvbnRleHQoKTsKICAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpvYmplY3QgaW5Db250ZXh0OmNvbnRleHRdOwogICAgIGlmICghdmFsdWUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwog
ICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xv
YmFsT2JqZWN0KTsKIAotICAgIGF1dG8gY29yZVZhbHVlID0gV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxPYmplY3QsIFt2YWx1
ZSBKU1ZhbHVlUmVmXSkpOwotICAgIHJldHVybiBjb3JlVmFsdWUtPnRvV2lyZUJ5dGVzKCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpnbG9iYWxP
YmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKK30KKworUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVG
cm9tTlNPYmplY3QoaWQgb2JqZWN0KQoreworICAgIGF1dG8gY29yZVZhbHVlID0gY29yZVZhbHVl
RnJvbU5TT2JqZWN0KG9iamVjdCk7CisgICAgaWYgKCFjb3JlVmFsdWUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBjcmVhdGUoY29yZVZhbHVlLnJlbGVhc2VOb25OdWxsKCkp
OwogfQogCiB9IC8vIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLU2NyaXB0TWVzc2FnZS5oCmluZGV4IDk3YmViNmU4MTM5Li42M2ExZTllYTM4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2Fn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3Nh
Z2UuaApAQCAtMjksNiArMjksNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xh
c3MgV0tDb250ZW50V29ybGQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tXZWJWaWV3
OwogCkBAIC01NCw2ICs1NSw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlv
cyg4LjApKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3Ry
aW5nICpuYW1lOwogCisvKiEgQGFic3RyYWN0IFRoZSBjb250ZW50IHdvcmxkIGZyb20gd2hpY2gg
dGhlIG1lc3NhZ2Ugd2FzIHNlbnQuICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IFdLQ29udGVudFdvcmxkICp3b3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2Fn
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2Uu
bW0KaW5kZXggYzkzZTdhOTlkYWIuLmJkNWRkNDZiOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0KQEAgLTM1LDkgKzM1
LDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1NjcmlwdE1lc3NhZ2UgewogICAgIFdlYWtPYmpDUHRy
PFdLV2ViVmlldz4gX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBfZnJhbWVJ
bmZvOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX25hbWU7CisgICAgUmV0YWluUHRyPFdLQ29u
dGVudFdvcmxkPiBfd29ybGQ7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhCb2R5Oihp
ZClib2R5IHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZvOihXS0ZyYW1lSW5m
byAqKWZyYW1lSW5mbyBuYW1lOihOU1N0cmluZyAqKW5hbWUKKy0gKGluc3RhbmNldHlwZSlfaW5p
dFdpdGhCb2R5OihpZClib2R5IHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZv
OihXS0ZyYW1lSW5mbyAqKWZyYW1lSW5mbyBuYW1lOihOU1N0cmluZyAqKW5hbWUgd29ybGQ6KFdL
Q29udGVudFdvcmxkICopd29ybGQKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQ2LDYgKzQ3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9p
bml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmcmFtZUlu
Zm86KFcKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgX2ZyYW1lSW5mbyA9IGZyYW1lSW5m
bzsKICAgICBfbmFtZSA9IGFkb3B0TlMoW25hbWUgY29weV0pOworICAgIF93b3JsZCA9IHdvcmxk
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC03MCw0ICs3Miw5IEBAIC0gKE5TU3RyaW5nICop
bmFtZQogICAgIHJldHVybiBfbmFtZS5nZXQoKTsKIH0KIAorLSAoV0tDb250ZW50V29ybGQgKil3
b3JsZAoreworICAgIHJldHVybiBfd29ybGQuZ2V0KCk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
V2l0aFJlcGx5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi44MjNkZjFlOGI1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5LmgKQEAgLTAs
MCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
KworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK0BjbGFzcyBXS1NjcmlwdE1lc3NhZ2U7CitAY2xhc3MgV0tVc2VyQ29udGVudENv
bnRyb2xsZXI7CisKKy8qISBBIGNsYXNzIGNvbmZvcm1pbmcgdG8gIHRoZSBXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyV2l0aFJlcGx5IHByb3RvY29sIHByb3ZpZGVzIGEKK21ldGhvZCBmb3IgcmVjZWl2
aW5nIG1lc3NhZ2VzIGZyb20gSmF2YVNjcmlwdCBydW5uaW5nIGluIGEgd2VicGFnZSBhbmQgcmVw
bHlpbmcgdG8gdGhlbSBhc3luY2hyb25vdXNseS4KKyovCitAcHJvdG9jb2wgV0tTY3JpcHRNZXNz
YWdlSGFuZGxlcldpdGhSZXBseSA8TlNPYmplY3Q+CisKKy8qISBAYWJzdHJhY3QgSW52b2tlZCB3
aGVuIGEgc2NyaXB0IG1lc3NhZ2UgaXMgcmVjZWl2ZWQgZnJvbSBhIHdlYnBhZ2UuCisgQHBhcmFt
IHVzZXJDb250ZW50Q29udHJvbGxlciBUaGUgdXNlciBjb250ZW50IGNvbnRyb2xsZXIgaW52b2tp
bmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4KKyBAcGFyYW0gbWVzc2FnZSBUaGUgc2NyaXB0IG1lc3Nh
Z2UgcmVjZWl2ZWQuCisgQHBhcmFtIHJlcGx5SGFuZGxlciBBIGJsb2NrIHRvIGJlIGNhbGxlZCB3
aXRoIHRoZSByZXN1bHQgb2YgcHJvY2Vzc2luZyB0aGUgbWVzc2FnZS4KKyBAZGlzY3Vzc2lvbiBX
aGVuIHRoZSBKYXZhU2NyaXB0IHJ1bm5pbmcgaW4geW91ciBhcHBsaWNhdGlvbidzIHdlYiBjb250
ZW50IGNhbGxlZCB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFtZT4ucG9zdE1lc3Nh
Z2UoPG1lc3NhZ2VCb2R5PiksCisgYSBKYXZhU2NyaXB0IFByb21pc2Ugb2JqZWN0IHdhcyByZXR1
cm5lZC4gVGhlIHZhbHVlcyBwYXNzZWQgdG8gdGhlIHJlcGx5SGFuZGxlciBhcmUgdXNlZCB0byBy
ZXNvbHZlIHRoYXQgUHJvbWlzZS4KKworIFBhc3NpbmcgYSBub24tbmlsIE5TU3RyaW5nIHZhbHVl
IHRvIHRoZSBzZWNvbmQgcGFyYW1ldGVyIG9mIHRoZSByZXBseUhhbmRsZXIgc2lnbmFscyBhbiBl
cnJvci4KKyBObyBtYXR0ZXIgd2hhdCB2YWx1ZSB5b3UgcGFzcyB0byB0aGUgZmlyc3QgcGFyYW1l
dGVyIG9mIHRoZSByZXBseUhhbmRsZXIsCisgdGhlIFByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3
aXRoIGEgSmF2YVNjcmlwdCBlcnJvciBvYmplY3Qgd2hvc2UgbWVzc2FnZSBwcm9wZXJ0eSBpcyBz
ZXQgdG8gdGhhdCBlcnJvck1lc3NhZ2Ugc3RyaW5nLgorCisgSWYgdGhlIHNlY29uZCBwYXJhbWV0
ZXIgdG8gdGhlIHJlcGx5SGFuZGxlciBpcyBuaWwsIHRoZSBmaXJzdCBhcmd1bWVudCB3aWxsIGJl
IHNlcmlhbGl6ZWQgaW50byBpdHMgSmF2YVNjcmlwdCBlcXVpdmFsZW50IGFuZCB0aGUgUHJvbWlz
ZSB3aWxsIGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSByZXN1bHRpbmcgdmFsdWUuCisgSWYgdGhlIGZp
cnN0IGFyZ3VtZW50IGlzIG5pbCB0aGVuIHRoZSBQcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQgd2l0
aCBhIEphdmFTY3JpcHQgdmFsdWUgb2YgInVuZGVmaW5lZCIKKworIEFsbG93ZWQgbm9uLW5pbCBy
ZXN1bHQgdHlwZXMgYXJlOgorIE5TTnVtYmVyLCBOU051bGwsIE5TU3RyaW5nLCBOU0RhdGUsIE5T
QXJyYXksIGFuZCBOU0RpY3Rpb25hcnkuCisgQW55IE5TQXJyYXkgb3IgTlNEaWN0aW9uYXJ5IGNv
bnRhaW5lcnMgY2FuIG9ubHkgY29udGFpbiBvYmplY3RzIG9mIHRob3NlIHR5cGVzLgorCisgVGhl
IHJlcGx5SGFuZGxlciBjYW4gYmUgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKyBJZiB0aGUgcmVwbHlI
YW5kbGVyIGlzIGRlYWxsb2NhdGVkIGJlZm9yZSBpdCBpcyBjYWxsZWQsIHRoZSBQcm9taXNlIHdp
bGwgYmUgcmVqZWN0ZWQgd2l0aCBhIEphdmFTY3JpcHQgRXJyb3Igb2JqZWN0Cisgd2l0aCBhbiBh
cHByb3ByaWF0ZSBtZXNzYWdlIGluZGljYXRpbmcgdGhlIGhhbmRsZXIgd2FzIG5ldmVyIGNhbGxl
ZC4KKworIEV4YW1wbGU6CisKKyBXaXRoIGEgV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBs
eSBvYmplY3QgaW5zdGFsbGVkIHdpdGggdGhlIG5hbWUgInRlc3RIYW5kbGVyIiwgY29uc2lkZXIg
dGhlIGZvbGxvd2luZyBKYXZhU2NyaXB0OgorIEB0ZXh0YmxvY2sKKyAgICAgdmFyIHByb21pc2Ug
PSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgi
RnVsZmlsbCBtZSB3aXRoIDQyIik7CisgICAgIGF3YWl0IHA7CisgICAgIHJldHVybiBwOworIEAv
dGV4dGJsb2NrCisKKyBBbmQgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyV2l0aFJlcGx5IGltcGxlbWVudGF0aW9uOgorIEB0ZXh0YmxvY2sKKyAgICAgLSAodm9p
ZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNv
bnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2Ug
KiltZXNzYWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TU3RyaW5nICopKXJlcGx5SGFu
ZGxlcgorICAgICB7CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWw6QCJGdWxmaWxs
IG1lIHdpdGggNDIiXSkKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihANDIsIG5pbCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihuaWwsIEAiVW5leHBlY3RlZCBtZXNz
YWdlIHJlY2VpdmVkIik7CisgICAgIH0KKyBAL3RleHRibG9jaworCisgSW4gdGhpcyBleGFtcGxl
OgorICAgLSBUaGUgSmF2YVNjcmlwdCBjb2RlIHNlbmRzIGEgbWVzc2FnZSB0byB5b3VyIGFwcGxp
Y2F0aW9uIGNvZGUgd2l0aCB0aGUgYm9keSBAIkZ1bGZpbGwgbWUgd2l0aCA0MiIKKyAgIC0gSmF2
YVNjcmlwdCBleGVjdXRpb24gaXMgc3VzcGVuZGVkIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSByZXN1
bHRpbmcgcHJvbWlzZSB0byByZXNvbHZlLgorICAgLSBZb3VyIG1lc3NhZ2UgaGFuZGxlciBpcyBp
bnZva2VkIHdpdGggdGhhdCBtZXNzYWdlIGFuZCBhIGJsb2NrIHRvIGNhbGwgd2l0aCB0aGUgcmVw
bHkgd2hlbiByZWFkeS4KKyAgIC0gWW91ciBtZXNzYWdlIGhhbmRsZXIgc2VuZHMgdGhlIHZhbHVl
IEA0MiBhcyBhIHJlcGx5LgorICAgLSBUaGUgSmF2YVNjcmlwdCBwcm9taXNlIGlzIGZ1bGZpbGxl
ZCB3aXRoIHRoZSB2YWx1ZSA0Mi4KKyAgIC0gSmF2YVNjcmlwdCBleGVjdXRpb24gY29udGludWVz
IGFuZCB0aGUgdmFsdWUgNDIgaXMgcmV0dXJuZWQuCisgKi8KKy0gKHZvaWQpdXNlckNvbnRlbnRD
b250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxl
ciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZSByZXBs
eUhhbmRsZXI6KHZvaWQgKF4pKGlkIHJlcGx5LCBOU1N0cmluZyAqZXJyb3JNZXNzYWdlKSlyZXBs
eUhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5o
CmluZGV4IDI2Mzc4ODAwNTY3Li44OWJjNTE4ZGZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgK
QEAgLTI3LDYgKzI3LDYgQEAKIAogQGludGVyZmFjZSBXS1NjcmlwdE1lc3NhZ2UgKCkKIAotLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6KE5TU3RyaW5n
ICopbmFtZTsKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhCb2R5OihpZClib2R5IHdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZvOihXS0ZyYW1lSW5mbyAqKWZyYW1lSW5mbyBu
YW1lOihOU1N0cmluZyAqKW5hbWUgd29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQ7CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggODI5YTA1NzMzN2QuLmY0M2YyZTYyZjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtMzAsOCArMzAsMTAgQEAKIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKIEBjbGFzcyBXS0NvbnRlbnRSdWxlTGlzdDsKK0BjbGFzcyBXS0NvbnRlbnRX
b3JsZDsKIEBjbGFzcyBXS1VzZXJTY3JpcHQ7CiBAcHJvdG9jb2wgV0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcjsKK0Bwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OwogCiAvKiEg
QSBXS1VzZXJDb250ZW50Q29udHJvbGxlciBvYmplY3QgcHJvdmlkZXMgYSB3YXkgZm9yIEphdmFT
Y3JpcHQgdG8gcG9zdAogIG1lc3NhZ2VzIHRvIGEgd2ViIHZpZXcuCkBAIC01NiwxOSArNTgsNzUg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAtICh2b2lkKXJl
bW92ZUFsbFVzZXJTY3JpcHRzOwogCiAvKiEgQGFic3RyYWN0IEFkZHMgYSBzY3JpcHQgbWVzc2Fn
ZSBoYW5kbGVyLgotIEBwYXJhbSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgbWVzc2FnZSBoYW5k
bGVyIHRvIGFkZC4KKyBAcGFyYW0gc2NyaXB0TWVzc2FnZUhhbmRsZXIgVGhlIHNjcmlwdCBtZXNz
YWdlIGhhbmRsZXIgdG8gYWRkLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdv
cmxkIGluIHdoaWNoIHRvIGFkZCB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KICBAcGFyYW0g
bmFtZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgotIEBkaXNjdXNzaW9uIEFkZGlu
ZyBhIHNjcmlwdE1lc3NhZ2VIYW5kbGVyIGFkZHMgYSBmdW5jdGlvbgotIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVzc2FnZUJvZHk+KSBmb3IgYWxs
Ci0gZnJhbWVzLgorIEBkaXNjdXNzaW9uIEFkZGluZyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIg
YWRkcyBhIGZ1bmN0aW9uCisgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBv
c3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIHRvIGFsbCBmcmFtZXMsIGF2YWlsYWJsZSBpbiB0aGUg
Z2l2ZW4gV0tDb250ZW50V29ybGQuCisKKyBUaGUgbmFtZSBhcmd1bWVudCBtdXN0IGJlIGEgbm9u
LWVtcHR5IHN0cmluZy4KKworIEVhY2ggV0tDb250ZW50V29ybGQgY2FuIGhhdmUgYW55IG51bWJl
ciBvZiBzY3JpcHQgbWVzc2FnZSBoYW5kbGVycywgYnV0IG9ubHkgb25lIHBlciB1bmlxdWUgbmFt
ZS4KKworIE9uY2UgYW55IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgaGFzIGJlZW4gYWRkZWQgdG8g
YSBXS0NvbnRlbnRXb3JsZCBmb3IgYSBnaXZlbiBuYW1lLCBpdCBpcyBhbiBlcnJvciB0byBhZGQg
YW5vdGhlcgorIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgdG8gdGhhdCBXS0NvbnRlbnRXb3JsZCBm
b3IgdGhhdCBzYW1lIG5hbWUgd2l0aG91dCBmaXJzdCByZW1vdmluZyB0aGUgcHJldmlvdXMgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlci4KKworIFRoZSBhYm92ZSByZXN0cmljdGlvbiBhcHBsaWVzIHRv
IGFueSB0eXBlIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgLSBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIGFuZCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Cisgb2JqZWN0cyB3aWxsIGNv
bmZsaWN0IHdpdGggZWFjaCBvdGhlciBpZiB5b3UgdHJ5IHRvIGFkZCB0aGVtIHRvIHRoZSBzYW1l
IFdLQ29udGVudFdvcmxkIHdpdGggdGhlIHNhbWUgbmFtZS4KKyAqLworLSAodm9pZClhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBBZGRzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4K
KyBAcGFyYW0gc2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgVGhlIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXIgdG8gYWRkLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdvcmxk
IGluIHdoaWNoIHRvIGFkZCB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KKyBAcGFyYW0gbmFt
ZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgorIEBkaXNjdXNzaW9uIEFkZGluZyBh
IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgYWRkcyBhIGZ1bmN0aW9uCisgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBvc3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIHRvIGFsbCBm
cmFtZXMsIGF2YWlsYWJsZSBpbiB0aGUgZ2l2ZW4gV0tDb250ZW50V29ybGQuCisKKyBUaGUgbmFt
ZSBhcmd1bWVudCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy4KKworIEVhY2ggV0tDb250ZW50
V29ybGQgY2FuIGhhdmUgYW55IG51bWJlciBvZiBzY3JpcHQgbWVzc2FnZSBoYW5kbGVycywgYnV0
IG9ubHkgb25lIHBlciB1bmlxdWUgbmFtZS4KKworIE9uY2UgYW55IHNjcmlwdCBtZXNzYWdlIGhh
bmRsZXIgaGFzIGJlZW4gYWRkZWQgdG8gYSBXS0NvbnRlbnRXb3JsZCBmb3IgYSBnaXZlbiBuYW1l
LCBpdCBpcyBhbiBlcnJvciB0byBhZGQgYW5vdGhlcgorIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIg
dG8gdGhhdCBXS0NvbnRlbnRXb3JsZCBmb3IgdGhhdCBzYW1lIG5hbWUgd2l0aG91dCBmaXJzdCBy
ZW1vdmluZyB0aGUgcHJldmlvdXMgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KKworIFRoZSBhYm92
ZSByZXN0cmljdGlvbiBhcHBsaWVzIHRvIGFueSB0eXBlIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRs
ZXIgLSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IGFuZCBXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyCisgb2JqZWN0cyB3aWxsIGNvbmZsaWN0IHdpdGggZWFjaCBvdGhlciBpZiB5b3UgdHJ5
IHRvIGFkZCB0aGVtIHRvIHRoZSBzYW1lIFdLQ29udGVudFdvcmxkIHdpdGggdGhlIHNhbWUgbmFt
ZS4KKworIFJlZmVyIHRvIHRoZSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IGRvY3Vt
ZW50YXRpb24gZm9yIGV4YW1wbGVzIG9mIGhvdyBpdCBpcyBtb3JlIGZsZXhpYmxlIHRoYW4gV0tT
Y3JpcHRNZXNzYWdlSGFuZGxlci4KKyAqLworLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cldpdGhSZXBseTooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+KXNjcmlwdE1l
c3NhZ2VIYW5kbGVyV2l0aFJlcGx5IGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250
ZW50V29ybGQgbmFtZTooTlNTdHJpbmcgKiluYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgQWRkcyBhIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgdG8gdGhlIG1haW4gd29ybGQgdXNlZCBieSBwYWdlIGNvbnRlbnQg
aXRzZWxmLgorIEBwYXJhbSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgc2NyaXB0IG1lc3NhZ2Ug
aGFuZGxlciB0byBhZGQuCisgQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFu
ZGxlci4KKyBAZGlzY3Vzc2lvbiBDYWxsaW5nIHRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8g
Y2FsbGluZyBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpjb250ZW50V29ybGQ6bmFtZToKKyB3aXRo
IFtXS0NvbnRlbnRXb3JsZCBwYWdlV29ybGRdIGFzIHRoZSBjb250ZW50V29ybGQgYXJndW1lbnQu
CiAgKi8KIC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWU7CiAK
IC8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCiAgQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlciB0byByZW1vdmUuCisgQHBhcmFt
IGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgZnJvbSB3aGljaCB0byByZW1vdmUgdGhl
IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCisgKi8KKy0gKHZvaWQpcmVtb3ZlU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUgY29udGVudFdvcmxkOihXS0NvbnRlbnRX
b3JsZCAqKWNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYSBzY3JpcHQgbWVzc2Fn
ZSBoYW5kbGVyLgorIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBtZXNzYWdlIGhhbmRsZXIg
dG8gcmVtb3ZlLgorIEBkaXNjdXNzaW9uIENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVu
dCB0byBjYWxsaW5nIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpjb250ZW50V29y
bGQ6CisgIHdpdGggW1dLQ29udGVudFdvcmxkIHBhZ2VXb3JsZF0gYXMgdGhlIGNvbnRlbnRXb3Js
ZCBhcmd1bWVudC4KICAqLwogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5h
bWU6KE5TU3RyaW5nICopbmFtZTsKIAorLyohIEBhYnN0cmFjdCBSZW1vdmVzIGFsbCBzY3JpcHQg
bWVzc2FnZSBoYW5kbGVycyBmcm9tIGEgZ2l2ZW4gV0tDb250ZW50V29ybGQuCisgQHBhcmFtIGNv
bnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgZnJvbSB3aGljaCB0byByZW1vdmUgYWxsIHNj
cmlwdCBtZXNzYWdlIGhhbmRsZXJzLgorICovCistICh2b2lkKXJlbW92ZUFsbFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
Ky8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhbGwgYXNzb2NpYXRlZCBzY3JpcHQgbWVzc2FnZSBoYW5k
bGVycy4KKyAqLworLSAodm9pZClyZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxlcnMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyohIEBh
YnN0cmFjdCBBZGRzIGEgY29udGVudCBydWxlIGxpc3QuCiAgQHBhcmFtIGNvbnRlbnRSdWxlTGlz
dCBUaGUgY29udGVudCBydWxlIGxpc3QgdG8gYWRkLgogICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
bW0KaW5kZXggNjgyN2M5MTQxYzAuLjdmOTRhNDA1NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAj
aW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIK
KyNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCIKICNpbXBvcnQgIldL
U2NyaXB0TWVzc2FnZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTEyNSwzMSArMTI2LDk0IEBAIHB1
YmxpYzoKICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKICAgICAgICAgLCBtX2hh
bmRsZXIoaGFuZGxlcikKICAgICAgICAgLCBtX25hbWUoYWRvcHROUyhbbmFtZSBjb3B5XSkpCisg
ICAgICAgICwgbV9zdXBwb3J0c0FzeW5jUmVwbHkoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAK
LSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKKworICAgIFNjcmlwdE1l
c3NhZ2VIYW5kbGVyRGVsZWdhdGUoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xsZXIs
IGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PiBoYW5kbGVyLCBOU1N0cmluZyAq
bmFtZSkKKyAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICAgICAgLCBtX2hh
bmRsZXIoaGFuZGxlcikKKyAgICAgICAgLCBtX25hbWUoYWRvcHROUyhbbmFtZSBjb3B5XSkpCisg
ICAgICAgICwgbV9zdXBwb3J0c0FzeW5jUmVwbHkodHJ1ZSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBkaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgZmlu
YWwKICAgICB7CiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICAgICAgUmV0YWlu
UHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBhZ2UpKTsKICAgICAgICAgICAgIGlkIGJvZHkg
PSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCAwKTsKLSAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0TlMoW1tXS1Njcmlw
dE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJv
eHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1lOm1fbmFtZS5nZXQoKV0pOwor
ICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxv
Y10gX2luaXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBmcmFt
ZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxkOndyYXBwZXIod29y
bGQpXSk7CiAgICAgICAgIAotICAgICAgICAgICAgW21faGFuZGxlciB1c2VyQ29udGVudENvbnRy
b2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOm1lc3NhZ2Uu
Z2V0KCldOworICAgICAgICAgICAgWyhpZDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiltX2hhbmRs
ZXIuZ2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRSZWNl
aXZlU2NyaXB0TWVzc2FnZTptZXNzYWdlLmdldCgpXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3N1cHBvcnRzQXN5bmNSZXBseTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0
aEFzeW5jUmVwbHkoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mb0RhdGEsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIEZ1bmN0aW9uPHZv
aWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4mJiByZXBseUhh
bmRsZXIpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQobV9zdXBwb3J0c0FzeW5jUmVwbHkp
OworCisgICAgICAgIGF1dG8gZmluYWxpemVyID0gW10oRnVuY3Rpb248dm9pZChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYgZnVuY3Rpb24pIHsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uKG51bGxwdHIsICJXS1dlYlZpZXcgQVBJIGNsaWVudCBkaWQgbm90IHJlc3Bv
bmQgdG8gdGhpcyBwb3N0TWVzc2FnZSJfcyk7CisgICAgICAgIH07CisgICAgICAgIF9fYmxvY2sg
YXV0byBoYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4oV1RGTW92ZShyZXBseUhhbmRs
ZXIpLCBXVEZNb3ZlKGZpbmFsaXplcikpOworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBhZ2UpKTsKKyAg
ICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKKyAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9
IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1l
Om1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOworCisgICAgICAgICAgICBbKGlk
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+KW1faGFuZGxlci5nZXQoKSB1c2VyQ29u
dGVudENvbnRyb2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdl
Om1lc3NhZ2UuZ2V0KCkgcmVwbHlIYW5kbGVyOl4oaWQgcmVzdWx0LCBOU1N0cmluZyAqZXJyb3JN
ZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkgeworICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVyKG51bGxwdHIsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRv
IHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9t
TlNPYmplY3QocmVzdWx0KTsKKyAgICAgICAgICAgICAgICBpZiAoIXNlcmlhbGl6ZWRWYWx1ZSkg
eworICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKG51bGxwdHIsICJUaGUgcmVzdWx0IHZhbHVl
IHBhc3NlZCBiYWNrIGZyb20gdGhlIFdLV2ViVmlldyBBUEkgY2xpZW50IHdhcyB1bmFibGUgdG8g
YmUgc2VyaWFsaXplZCJfcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHNlcmlhbGl6ZWRWYWx1ZS5nZXQo
KSwgeyB9KTsKKyAgICAgICAgICAgIH1dOwogICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAg
IFJldGFpblB0cjxpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1faGFuZGxlcjsKKyAgICBS
ZXRhaW5QdHI8aWQ+IG1faGFuZGxlcjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fbmFtZTsK
KyAgICBib29sIG1fc3VwcG9ydHNBc3luY1JlcGx5OwogfTsKIAorLSAodm9pZClfYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6KFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKXNjcmlwdE1l
c3NhZ2VIYW5kbGVyCit7CisgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFk
ZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihzY3JpcHRNZXNzYWdlSGFuZGxlcikpCisgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJB
dHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4g
b25lIGFscmVhZHkgZXhpc3RzLiIsIChOU1N0cmluZyAqKXNjcmlwdE1lc3NhZ2VIYW5kbGVyLm5h
bWUoKV07Cit9CisKIC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1Njcmlw
dE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5h
bWUKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
OjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBz
Y3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdl
Q29udGVudFdvcmxkKCkpOwotICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5h
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCi0gICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0
IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFs
cmVhZHkgZXhpc3RzLiIsIG5hbWVdOworICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpoYW5kbGVyLmdldCgpXTsKK30KKworLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjoo
aWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZCBuYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAg
ICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNz
YWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp3b3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgW3Nl
bGYgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCldOworfQorCistICh2b2lk
KWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OihpZCA8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseT4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdvcmxkOihXS0NvbnRl
bnRXb3JsZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIGF1dG8gaGFuZGxl
ciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBu
YW1lKSwgbmFtZSwgKndvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBbc2VsZiBfYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKV07CiB9CiAKIC0gKHZvaWQpcmVtb3ZlU2NyaXB0
TWVzc2FnZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUKQEAgLTE1Nyw2ICsyMjEsMjEg
QEAgLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3RyaW5nICop
bmFtZQogICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgp
KTsKIH0KIAorLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3Ry
aW5nICopbmFtZSBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkCit7
CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRs
ZXJGb3JOYW1lKG5hbWUsICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworfQorCistICh2
b2lkKXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6KFdLQ29u
dGVudFdvcmxkICopY29udGVudFdvcmxkCit7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LT5yZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCpjb250ZW50V29ybGQtPl9jb250ZW50
V29ybGQpOworfQorCistICh2b2lkKXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVycworewor
ICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5k
bGVycygpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRp
b24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJJbnRlcm5hbC5oCmluZGV4IDEwOGJlZTE1MzgyLi40N2Y3ZGUwMThhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCkBAIC0yOSwxNSArMjksMTggQEAKICNpbXBvcnQg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5PiB7CiAgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gV0tVc2VyQ29udGVudENvbnRyb2xs
ZXI7CiB9OwogCitjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIH0KIAogQGludGVyZmFj
ZSBXS1VzZXJDb250ZW50Q29udHJvbGxlciAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAg
QVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+
IF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIH0KKworLSAodm9pZClfYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6KFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKaW5k
ZXggYWEzNTFlNzdjY2QuLmU1Zjg5NmQ5YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
UHJpdmF0ZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250
ZW50Q29udHJvbGxlci5oPgogCitAY2xhc3MgV0tDb250ZW50V29ybGQ7CiBAY2xhc3MgV0tVc2Vy
U2NyaXB0OwogQGNsYXNzIF9XS1VzZXJDb250ZW50RmlsdGVyOwogQGNsYXNzIF9XS1VzZXJDb250
ZW50V29ybGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCAwMDM0MTU4YmEyMS4uNmIxMWIzODQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODk4LDE1ICs4OTgsMTMgQEAg
LSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcg
YXNBc3luY0Z1bmN0aW9uOihCT09MKWEKIAogICAgIGZvciAoaWQga2V5IGluIGFyZ3VtZW50cykg
ewogICAgICAgICBpZCB2YWx1ZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OmtleV07Ci0gICAg
ICAgIGlmICghdmFsaWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xs
b3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU1N0cmlu
ZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlvbmFyeSI7CisgICAgICAg
IGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZUZyb21OU09iamVjdCh2YWx1ZSk7CisgICAgICAgIGlmICghc2VyaWFsaXplZFZhbHVlKSB7Cisg
ICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBtdXN0
IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZvbGxv
d2luZyB0eXBlczogTlNOdW1iZXIsIE5TTnVsbCwgTlNEYXRlLCBOU1N0cmluZywgTlNBcnJheSwg
YW5kIE5TRGljdGlvbmFyeSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIAot
ICAgICAgICBhdXRvIHdpcmVCeXRlcyA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJl
Qnl0ZXNGcm9tTlNPYmplY3QodmFsdWUpOwotICAgICAgICAvLyBTaW5jZSB3ZSd2ZSB2YWxpZGF0
ZWQgdGhlIGlucHV0IGRpY3Rpb25hcnkgYWJvdmUsIHdlIHNob3VsZCBuZXZlciBmYWlsIHRvIHNl
cmlhbGl6ZSBpdCBpbnRvIHdpcmUgYnl0ZXMuCi0gICAgICAgIEFTU0VSVCh3aXJlQnl0ZXMpOwot
ICAgICAgICBhcmd1bWVudHNNYXAtPnNldChrZXksICp3aXJlQnl0ZXMpOworCisgICAgICAgIGFy
Z3VtZW50c01hcC0+c2V0KGtleSwgc2VyaWFsaXplZFZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0
aW9uKCkudG9XaXJlQnl0ZXMoKSk7CiAgICAgfQogCiAgICAgaWYgKGVycm9yTWVzc2FnZSAmJiBo
YW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA3YzQzMjMwNGY1Mi4uZGEx
MjllM2I4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMTkwLDEzICsxOTAsMjIg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBh
Z2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJy
aWRlCiAgICAgewogICAgICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqc1Jlc3VsdCA9IHdl
YmtpdEphdmFzY3JpcHRSZXN1bHRDcmVhdGUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKICAgICAg
ICAgZ19zaWduYWxfZW1pdChtX21hbmFnZXIsIHNpZ25hbHNbU0NSSVBUX01FU1NBR0VfUkVDRUlW
RURdLCBtX2hhbmRsZXJOYW1lLCBqc1Jlc3VsdCk7CiAgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0
X3Jlc3VsdF91bnJlZihqc1Jlc3VsdCk7CiAgICAgfQogCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoV2ViUGFnZVByb3h5Jiwg
RnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZQorICAgIHsKKyAgICB9CisgICAgCiAgICAg
dmlydHVhbCB+U2NyaXB0TWVzc2FnZUNsaWVudEd0aygpIHsgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IGI2NTUxZWFiZjVj
Li5lMDBjMjFlMDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVy
cmlkZQorICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUlu
Zm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBTdHJp
bmcgbWVzc2FnZSA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS50b1N0cmluZygpOwogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiB0b2tlbnMgPSBtZXNzYWdlLnNwbGl0KCc6Jyk7CkBAIC01Myw2ICs1Mywx
NSBAQCBwdWJsaWM6CiAgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3BlY3Qo
cmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50NjQoKSwgdG9rZW5zWzFd
LnRvVUludDY0KCksIHRva2Vuc1syXSk7CiAgICAgfQogCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoV2ViUGFnZVByb3h5Jiwg
RnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZQorICAgIHsKKyAgICB9CisKICAgICB+U2Ny
aXB0TWVzc2FnZUNsaWVudCgpIHsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IGM5NTFhNTBkMzk4Li5mM2YyOGE0
N2UzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB+U2NyaXB0TWVzc2FnZUNsaWVu
dCgpIHsgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmIHBhZ2UsIEZy
YW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJv
eHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGF1dG8gdG9rZW5zID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLnRvU3RyaW5n
KCkuc3BsaXQoIjoiKTsKICAgICAgICAgaWYgKHRva2Vucy5zaXplKCkgIT0gMykKQEAgLTYxLDYg
KzYxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgVVJMIHJlcXVlc3RVUkwgeyB7IH0sIHBhZ2UucGFn
ZUxvYWRTdGF0ZSgpLnVybCgpIH07CiAgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
Lmluc3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50U3RyaWN0
KCksIHRva2Vuc1sxXS50b1VJbnRTdHJpY3QoKSwgdG9rZW5zWzJdKTsKICAgICB9CisgICAgCisg
ICAgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5j
UmVwbHkoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYs
IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZQorICAg
IHsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
JiBtX2luc3BlY3RvclByb3RvY29sSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCmlu
ZGV4IGFmYWNiYjA3MWYxLi4yZjYxNGIyM2EyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5o
CkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogbmFtZXNw
YWNlIEFQSSB7CiBjbGFzcyBDb250ZW50V29ybGQ7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTIsNyArNTMsOSBAQCBwdWJsaWM6CiAg
ICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNsaWVudCgp
IHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5Jiwg
RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUlu
Zm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlJikgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQ
YWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYpID0gMDsKICAgICB9OwogCiAgICAgc3Rh
dGljIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxD
bGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29udGVudFdvcmxkJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggN2RkOGViOTkzMTcuLjI0YjYz
M2U0ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNvbnRl
bnRXb3JsZC5oIgorI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKQEAgLTMxNiw3ICszMTcsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNv
bnN0IFN0cmluZwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxs
VXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9y
IChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Muc2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAg
ICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIo
KSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIG51bWJlclJlbW92ZWQgPSAwOwog
ICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBlbnRyeSkgewpA
QCAtMzI4LDcgKzMyOSwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29udGVudFdvcgogICAgIH0pOwogfQog
Ci12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxl
cklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCkK
K3sKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcnMoKSwgaWRlbnRpZmllcigpKTsKK30KKwordm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSwgTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2Fn
ZTo6QXN5bmNSZXBseSYmIHJlcGx5KQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJveHlJRCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzQx
LDcgKzM0OCwyMSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgaWYgKCFoYW5kbGVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgq
cGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3RvcigpKSk7CisgICAgaWYgKCFoYW5kbGVyLT5j
bGllbnQoKS5zdXBwb3J0c0FzeW5jUmVwbHkoKSkgeworICAgICAgICBoYW5kbGVyLT5jbGllbnQo
KS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+
d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVy
ZW5jZS52ZWN0b3IoKSkpOworICAgICAgICByZXBseSh7IH0sIHsgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZVdpdGhBc3lu
Y1JlcGx5KCpwYWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAg
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3Rv
cigpKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworICAgICAgICBp
ZiAoZXJyb3JNZXNzYWdlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwor
ICAgICAgICAgICAgcmVwbHkoeyB2YWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLnRvV2ly
ZUJ5dGVzKCkgfSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHJlcGx5KHsgfSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9KTsKIH0KIAogI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApp
bmRleCAyYzA5NDI4NTBiNC4uMTI5YTM0MGYwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRl
ZFNldC5oPgpAQCAtOTgsNiArOTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZGRVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKTsKICAgICB2b2lkIHJlbW92
ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJiwgQVBJOjpDb250ZW50V29y
bGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpDb250ZW50
V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBhZGROZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRQb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGcmFtZUlu
Zm9EYXRhJiYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
RnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRp
ZFBvc3RNZXNzYWdlOjpBc3luY1JlcGx5JiYpOwogCiAgICAgdm9pZCBhZGRDb250ZW50V29ybGQo
QVBJOjpDb250ZW50V29ybGQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4ZDIwMGExZTZlOS4uZmQ5NWYyZjVkMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yNCw1ICsyNCw1IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkgewotRGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2Fu
dHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSAtPiAo
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdFZhbHVlLCBTdHJpbmcgZXJyb3JNZXNzYWdlKSBBc3lu
YwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmU0N2I2ZTkyZjAuLmUzZGI1NDA5YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3Myw2ICs5NzMsNyBAQAogCQk1MTA1
MjM3NDFDNzNEMzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDUyMzcz
MUM3M0QzN0IwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oICov
OyB9OwogCQk1MTA1MjM3NTFDNzNEMzhGMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDUyMzcyMUM3M0QzN0IwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTA2RDdDNDE4QkRCRTczMDAw
QUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRl
eHRNZW51Q29udGV4dERhdGEuaCAqLzsgfTsKKwkJNTEwOTA5OTcyM0RBQ0JGMjAwM0IxRTRDIC8q
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDkwOTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OwogCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVz
b3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEFGRkI4MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oICovOyB9
OwogCQk1MTBGNTkxMDFEREUyOTY5MDA0MTJGRjUgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0M0IyNUUx
RERDREZEMTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBGNTkxMTFEREUyOTcwMDA0
MTJGRjUgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQzk3OTFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlu
a0ljb25QYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTM1OTcsNiArMzU5OCw3IEBACiAJCTUxMDVCMEYzMTYzMDg3MkUwMEUyNzcw
OSAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDZEN0JG
MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyog
Q29udGV4dE1lbnVDb250ZXh0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb250ZXh0TWVudUNvbnRleHREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMDkwOTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQUZGQjcx
NjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyLmNwcDsgcGF0aCA9IE5ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTBBRkZCODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkZXIuaDsgcGF0aCA9IE5ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEw
QUZGQ0UxNjU0MkNCRDAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcz
OTIsNiArNzM5NCw3IEBACiAJCQkJMUE3RTM3NzcxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0
TWVzc2FnZS5oICovLAogCQkJCTFBN0UzNzc2MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1l
c3NhZ2UubW0gKi8sCiAJCQkJMUE3RTM3NzQxOEU0QTMzQTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaCAqLywKKwkJCQk1MTA5MDk5NDIzRDQxRjEzMDAzQjFFNEMgLyogV0tTY3Jp
cHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oICovLAogCQkJCTdDQzk5QTM1MThFRjdDQkMwMDQ4
QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oICovLAogCQkJCTUxQ0QxQzVGMUIzNEI5
QzkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luLmggKi8sCiAJCQkJNTFDRDFDNjAxQjM0QjlD
OTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gKi8sCkBAIC0xMTMxOCw2ICsxMTMyMSw3
IEBACiAJCQkJQkNFRTdBRDExMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwRTQyNTE2OEI3QTI4MDA1N0U2NkEgLyogV2Vi
UHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUUwOTM0MTg4NjFEMzgw
MEQyREM0OSAvKiBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxMDkwOTk3MjNEQUNCRjIwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5RDEyQTg4Mzg4MDA2Mjk1MzAgLyogV2Vi
UHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjFDQ0NBNjIzMTQ4NUFBMDBC
NjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCmluZGV4
IDY5MjQ0M2ViODAyLi44MGI3MDU0NjM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURPTVdpbmRvdy5jcHAKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0RPTUV4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNs
dWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01HbG9i
YWxPYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NUHJvbWlzZURlZmVycmVkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmg+CkBAIC0xMDY5LDggKzEwNzEsMTcgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV9k
b21fd2luZG93X3dlYmtpdF9tZXNzYWdlX2hhbmRsZXJzX3Bvc3RfbWVzc2FnZShXZWJLaXRET01E
T00KICAgICBhdXRvIGhhbmRsZXIgPSB3ZWJraXROYW1lc3BhY2UtPm1lc3NhZ2VIYW5kbGVycygp
LT5uYW1lZEl0ZW0oV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIFN0cmluZzo6ZnJv
bVVURjgoaGFuZGxlck5hbWUpKTsKICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICAKKyAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gKChXZWJDb3Jl
OjpDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciopZG9tV2luZG93KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuIEZBTFNFOworICAgIAorICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxP
YmplY3QoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOwog
Ci0gICAgYXV0byByZXN1bHQgPSBoYW5kbGVyLT5wb3N0TWVzc2FnZShXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UpKSk7CisgICAg
YXV0byBwcm9taXNlID0gV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoKmdsb2JhbE9i
amVjdCk7CisgICAgYXV0byByZXN1bHQgPSBoYW5kbGVyLT5wb3N0TWVzc2FnZShXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UpKSwg
V1RGTW92ZShwcm9taXNlKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEZBTFNFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4
IGY1Yzg3YzAyYmQ2Li4wNDI5ZGFkNmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIC8vIFdlYkNv
cmU6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdl
KFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlciYgaGFuZGxlciwgV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiB2YWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdl
YkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlciYgaGFuZGxlciwgV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiB2YWx1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gaGFuZGxlci5mcmFtZSgpOwogICAgICAg
ICBpZiAoIWZyYW1lKQpAQCAtMjY4LDcgKzI2OCwxNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
IXdlYlBhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQ
cm94eUlkZW50aWZpZXIoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7
CisgICAgICAgIGF1dG8gbWVzc2FnZVJlcGx5SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJl
c3VsdFZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICAgICAgaWYg
KCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyLCBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhyZXN1bHRWYWx1ZS52ZWN0b3IoKSk7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih2YWx1ZS5wdHIoKSwgeyB9KTsKKyAgICAgICAgfTsKKwor
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIHdl
YkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5k
YXRhKCkpKSwgV1RGTW92ZShtZXNzYWdlUmVwbHlIYW5kbGVyKSwgbV9jb250cm9sbGVyLT5pZGVu
dGlmaWVyKCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+
IG1fY29udHJvbGxlcjsKQEAgLTMwOSw3ICszMTksMTggQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihDb250ZW50V29ybGRJZGVu
dGkKICNlbmRpZgogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxs
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRp
Zmllcj4mIHdvcmxkSWRlbnRpZmllcnMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycygpCit7CisjaWYgRU5BQkxFKFVTRVJf
TUVTU0FHRV9IQU5ETEVSUykKKyAgICBpZiAobV91c2VyTWVzc2FnZUhhbmRsZXJzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91c2VyTWVzc2FnZUhhbmRsZXJzLmNsZWFyKCk7
CisgICAgaW52YWxpZGF0ZUFsbFJlZ2lzdGVyZWRVc2VyTWVzc2FnZUhhbmRsZXJJbnZhbGlkYXRp
b25DbGllbnRzKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnNGb3JXb3JsZHMoY29uc3QgVmVjdG9y
PENvbnRlbnRXb3JsZElkZW50aWZpZXI+JiB3b3JsZElkZW50aWZpZXJzKQogewogI2lmIEVOQUJM
RShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAgICAgYm9vbCB1c2VyTWVzc2FnZUhhbmRsZXJzQ2hh
bmdlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IGU5MDI2MDc3
ZTkzLi5jZTkwYTlkOTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtMTAw
LDcgKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMo
Y29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+Jik7CiAKICAgICB2b2lkIHJlbW92
ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihDb250ZW50V29ybGRJZGVudGlmaWVyLCB1aW50NjRf
dCB1c2VyU2NyaXB0SWRlbnRpZmllcik7Ci0gICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYpOworICAg
IHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxkcyhjb25zdCBW
ZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcnMoKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CiAgICAgdm9pZCByZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDVhZGNk
MDgwZTkxLi4yYWIyMzI0YmI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLm1lc3NhZ2VzLmluCkBAIC0zNyw3ICszNyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlciB7CiAKICAgICBBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKFZlY3Rv
cjxzdHJ1Y3QgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+IHNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyk7CiAgICAgUmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYktpdDo6
Q29udGVudFdvcmxkSWRlbnRpZmllciB3b3JsZElkZW50aWZpZXIsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpOwotICAgIFJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoVmVjdG9yPFdlYktp
dDo6Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVycyk7CisgICAgUmVtb3Zl
QWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0ZvcldvcmxkcyhWZWN0b3I8V2ViS2l0OjpDb250
ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXJzKTsKKyAgICBSZW1vdmVBbGxVc2Vy
U2NyaXB0TWVzc2FnZUhhbmRsZXJzKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQogICAgIEFkZENvbnRlbnRSdWxlTGlzdHMoVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYktp
dDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudEZpbHRlcnMpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViOGM0MjVk
YmVjLi5mY2Y3NmM3NDhiZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTE4ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tTY3JpcHRNZXNzYWdlSGFuZGxlciBB
UEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3aXRoIGEgcHJvbWlzZS4KKyAgICAgICAg
cmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICh3ZWJWaWV3Rm9yU2NyaXB0
TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsVGVzdCk6CisgICAgICAgICgtW0Fz
eW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVT
Y3JpcHRNZXNzYWdlOnJlcGx5SGFuZGxlcjpdKToKKwogMjAyMC0wNC0xNyAgS2F0ZSBDaGVuZXkg
IDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgc2VydmljZSB3
b3JrZXJzIGZvciBhcHAtYm91bmQgZG9tYWlucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpp
bmRleCA0YWI5OTQzMmE4Ny4uNjdiZmJkNTNjOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tCkBAIC0zMCw3ICszMCwxMCBAQAogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
KyNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLVXNlclNjcmlwdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlclNjcmlwdFByaXZhdGUu
aD4KQEAgLTc0LDYgKzc3LDkgQEAgQGVuZAogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVy
LCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdCkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5j
bGVhcigpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWlu
UHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJd
IGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVy
Il07CkBAIC05NSw2ICsxMDEsOSBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3Jp
cHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdCkKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxl
ciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Bvc3RJc29sYXRlZFdvcmxkKQogeworICAgIHNj
cmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
CisKICAgICBSZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSBbX1dLVXNlckNv
bnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07CiAKICAgICBSZXRhaW5QdHI8
U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhh
bmRsZXIgYWxsb2NdIGluaXRdKTsKQEAgLTE0NCw2ICsxNTMsOSBAQCBURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVkV29ybGQp
CiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFz
aWNSZW1vdmUpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRh
aW5QdHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IFtj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC0xODgsNiArMjAwLDggQEAg
VEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Jl
bW92ZSkKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRs
ZXJDYWxsUmVtb3ZlZEhhbmRsZXIpCiB7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFs
c2U7CisKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9w
dE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLVXNlckNvbnRl
bnRDb250cm9sbGVyPiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdOwpAQCAtMjA1LDIyICsyMTksMjMgQEAgVEVTVChXS1VzZXJDb250
ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJDYWxsUmVtb3ZlZEhhbmRsZXIpCiAK
ICAgICBbdXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTpAImhhbmRsZXJUb1JlbW92ZSJdOwogCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxz
ZTsKICAgICAvLyBUZXN0IHRoYXQgd2UgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHlvdSB0cnkgdG8g
dXNlIGEgbWVzc2FnZSBoYW5kbGVyIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4KLSAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6Ci0gICAgICAgIEAidHJ5IHsiCi0gICAgICAgICAiICAgIGhh
bmRsZXJUb1JlbW92ZS5wb3N0TWVzc2FnZSgnRkFJTCcpOyIKLSAgICAgICAgICJ9IGNhdGNoIChl
KSB7IgotICAgICAgICAgIiAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5oYW5kbGVy
VG9Qb3N0LnBvc3RNZXNzYWdlKCdQQVNTJyk7IgotICAgICAgICAgIn0iIGNvbXBsZXRpb25IYW5k
bGVyOm5pbF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBoYW5k
bGVyVG9SZW1vdmUucG9zdE1lc3NhZ2UoJ0ZBSUwnKSIgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRX
b3JsZDpbV0tDb250ZW50V29ybGQgcGFnZVdvcmxkXSBjb21wbGV0aW9uSGFuZGxlcjpeIChpZCB2
YWx1ZSwgTlNFcnJvciAqIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHZhbHVlKTsKKyAg
ICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJv
ciBkZXNjcmlwdGlvbl0gY29udGFpbnNTdHJpbmc6QCJJbnZhbGlkQWNjZXNzRXJyb3IiXSk7Cisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0KLSAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHld
KTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdGb3JTY3JpcHRNZXNz
YWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24pCiB7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
CisKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkNvcHkgPSBhZG9wdE5TKFtjb25maWd1
cmF0aW9uIGNvcHldKTsKICAgICBbY29uZmlndXJhdGlvbkNvcHkgc2V0VXNlckNvbnRlbnRDb250
cm9sbGVyOltbW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV1dOwpAQCAtMjM2LDYgKzI1MSw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsCiAKIFRFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5k
bGVyUmVtb3ZhbCkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOworICAgIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9v
bDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKQEAgLTI2Miw2ICsyODAsOSBA
QCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRp
cGxlSGFuZGxlclJlbW92YWwpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpIC8vIEZJWE1FOiBo
YW5ncyBpbiB0aGUgaU9TIHNpbXVsYXRvcgogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwg
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoTmF2aWdhdGlvbikKIHsKKyAgICBzY3JpcHRNZXNzYWdl
cy5jbGVhcigpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0
YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5k
bGVyIl07CkBAIC0yOTMsNiArMzE0LDkgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwg
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoTmF2aWdhdGlvbikKIAogVEVTVChXS1VzZXJDb250ZW50
Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJSZXBsYWNlV2l0aFNhbWVOYW1lKQogewor
ICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
ZmFsc2U7CisKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBh
ZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLVXNlckNv
bnRlbnRDb250cm9sbGVyPiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBbY29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdOwpAQCAtODMzLDYgKzg1Nyw5IEBAIHN0YXRpYyB2b2lkIGNv
bXBhcmVNZXNzYWdlcyhWZWN0b3I8Y29uc3QgY2hhcio+JiYgZXhwZWN0ZWRNZXNzYWdlcykKIAog
VEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
KQogeworICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gZmFsc2U7CisKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHN0YXJ0QWxsRnJhbWVzID0gYWRvcHRO
UyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnc3RhcnQgYWxsJykiIGluamVj
dGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWlu
RnJhbWVPbmx5Ok5PXSk7CiAgICAgYXV0byBlbmRNYWluRnJhbWVPbmx5ID0gYWRvcHROUyhbW1dL
VXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZW5kIG1haW4nKSIgaW5qZWN0aW9uVGlt
ZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5
OllFU10pOwpAQCAtOTAyLDMgKzkyOSwyNzQgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxl
ciwgVXNlclNjcmlwdE5vdGlmaWNhdGlvbikKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRl
IHdhaXRGb3JBbGVydF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOwogICAgIEVYUEVDVF9X
S19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRvY3VtZW50IHBhcnNpbmcgZW5kZWQi
KTsKIH0KKworQGludGVyZmFjZSBBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3Qg
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyCisKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9s
bGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRS
ZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZSByZXBseUhhbmRs
ZXI6KHZvaWQgKF4pKGlkLCBOU1N0cmluZyAqZXJyb3JNZXNzYWdlKSlyZXBseUhhbmRsZXIKK3sK
KyAgICBpZiAoW21lc3NhZ2UubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcldvcmxkSGFuZGxl
ciJdKQorICAgICAgICBFWFBFQ1RfVFJVRShtZXNzYWdlLndvcmxkICE9IG5pbCk7CisgICAgaWYg
KFttZXNzYWdlLmJvZHkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAg
ICBpZiAoW21lc3NhZ2UuYm9keSBpc0VxdWFsVG9TdHJpbmc6QCJGdWxmaWxsIl0pIHsKKyAgICAg
ICAgICAgIHJlcGx5SGFuZGxlcihAIkZ1bGZpbGxlZCEiLCBuaWwpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmlu
ZzpAIlJlamVjdCJdKSB7CisgICAgICAgICAgICByZXBseUhhbmRsZXIobmlsLCBAIlJlamVjdGVk
ISIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChbbWVzc2Fn
ZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIlVuZGVmaW5lZCJdKSB7CisgICAgICAgICAgICByZXBs
eUhhbmRsZXIobmlsLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIkRvIG5vdGhpbmciXSkgewor
ICAgICAgICAgICAgLy8gRHJvcCB0aGUgcmVwbHkgaGFuZGxlciB3aXRob3V0IHJlc3BvbmRpbmcg
dG8gc2VlIHdoYXQgaGFwcGVucworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIkludmFsaWQgcmVwbHkiXSkg
eworICAgICAgICAgICAgcmVwbHlIYW5kbGVyKFtbW05TRGF0YSBhbGxvY10gaW5pdF0gYXV0b3Jl
bGVhc2VdLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gQWxsIG90aGVyIGlucHV0cyBzaG91bGQganVzdCBiZSByb3VuZCB0cmlwcGVkIGJhY2sg
dG8gdGhlIG1lc3NhZ2UgaGFuZGxlcgorICAgIHJlcGx5SGFuZGxlcihtZXNzYWdlLmJvZHksIG5p
bCk7Cit9CisKK0BlbmQKKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgTWVzc2FnZUhh
bmRsZXJBUEkpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50
V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjEiXTsKKwor
ICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
V2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VX
b3JsZCBuYW1lOkAidGVzdEhhbmRsZXIxIl07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKKyAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9CisKKyAgICBF
WFBFQ1RfVFJVRShoYWRFeGNlcHRpb24pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0
KCkgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBuYW1lOkAi
dGVzdEhhbmRsZXIyIl07CisKKyAgICBhdXRvICp3b3JsZCA9IFtXS0NvbnRlbnRXb3JsZCB3b3Js
ZFdpdGhOYW1lOkAib3RoZXJXb3JsZCJdOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0
KCkgY29udGVudFdvcmxkOndvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjMiXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldp
dGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDp3b3JsZCBuYW1lOkAidGVzdEhhbmRs
ZXI0Il07CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29y
bGQgbmFtZTpAInRlc3RIYW5kbGVyNSJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBib29sIGRv
bmUgPSBmYWxzZTsKKyAgICBOU1N0cmluZyAqZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzW2hhbmRsZXJdLnBvc3RNZXNzYWdlKGFyZyk7IGF3YWl0
IHA7IHJldHVybiBwOyI7CisKKyAgICAvLyBwYWdlV29ybGQgaXMgd2hlcmUgdGVzdGhhbmRsZXIx
IGxpdmVzCisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJn
dW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMSIsIEAiYXJnIiA6IEAxIH0gaW5D
b250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsm
XSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7Cisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gVHJ5aW5nIHRvIGZpbmQgdGVz
dEhhbmRsZXIxIGluIHRoZSBkZWZhdWx0Q2xpZW50V29ybGQgc2hvdWxkIGZhaWwKKyAgICBbd2Vi
VmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5k
bGVyIiA6IEAidGVzdEhhbmRsZXIxIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDpXS0Nv
bnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7Cisg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZh
bHNlOworCisgICAgLy8gZGVmYXVsdENsaWVudFdvcmxkIGlzIHdoZXJlIHRlc3RoYW5kbGVyMiBs
aXZlcworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3Vt
ZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjIiLCBAImFyZyIgOiBAMSB9IGluQ29u
dGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpA
MV0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIEJ1dCBpZiB3ZSBy
ZW12b2UgaXQsIGl0IHNob3VsZCBubyBsb25nZXIgbGl2ZSB0aGVyZSwgYW5kIHVzaW5nIGl0IHNo
b3VsZCBjYXVzZSBhbiBlcnJvci4KKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6QCJ0ZXN0SGFuZGxlcjIi
IGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGRdOworICAgIFt3
ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhh
bmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjIiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOldL
Q29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlk
IHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsK
KyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0g
ZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgaGFuZGxlcnMgMywgNCwgYW5kIDUgYXJlIGFsbCBpbiB0
aGUgY3VzdG9tIHdvcmxkLgorICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rp
b25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjMiLCBAImFyZyIg
OiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVz
dWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgfV07Cisg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7
IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyNCIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29y
bGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jl
c3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5
bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVz
dEhhbmRsZXI1IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJl
cjpAMV0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSAz
IGZyb20gdGhlIHdyb25nIHdvcmxkLCB2ZXJpZnkgaXQgaXMgc3RpbGwgdGhlcmUgaW4gdGhlIGN1
c3RvbSB3b3JsZC4KKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBy
ZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6QCJ0ZXN0SGFuZGxlcjMiIGNvbnRlbnRX
b3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGRdOworICAgIFt3ZWJWaWV3IGNh
bGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDog
QCJ0ZXN0SGFuZGxlcjMiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBs
ZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRv
TnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gUmVt
b3ZlIDMgZnJvbSB0aGUgY29ycmVjdCB3b3JsZCwgdmVyaWZ5IGl0IGlzIGdvbmUsIGJ1dCA0IGFu
ZCA1IGFyZSBzdGlsbCB0aGVyZS4KKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6QCJ0ZXN0SGFuZGxlcjMi
IGNvbnRlbnRXb3JsZDp3b3JsZF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpm
dW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMyIsIEAi
YXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChp
ZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7
CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgfV07CisgICAgW3dlYlZpZXcg
Y2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIg
OiBAInRlc3RIYW5kbGVyNCIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29t
cGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFs
VG9OdW1iZXI6QDFdKTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0
OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI1Iiwg
QCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0g
KGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSAiYWxsIiBpbiB0aGUg
Y3VzdG9tIHdvcmxkLCB2ZXJpZnkgNCBhbmQgNSBhcmUgbm93IGdvbmUuCisgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRs
ZXJzRnJvbUNvbnRlbnRXb3JsZDp3b3JsZF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNj
cmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVy
NCIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6
WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJl
c3VsdCk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgfV07CisgICAgW3dl
YlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFu
ZGxlciIgOiBAInRlc3RIYW5kbGVyNSIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29y
bGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJv
cik7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworfQorCitURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQoreworICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRs
ZXIgPSBhZG9wdE5TKFtbQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwor
ICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOldLQ29udGVudFdv
cmxkLnBhZ2VXb3JsZCBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisg
ICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAidmFy
IHAgPSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2Fn
ZSgnRnVsZmlsbCcpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3lu
Y0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tD
b250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVY
UEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiRnVsZmlsbGVkISJdKTsK
KyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAi
dmFyIHAgPSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZSgnUmVqZWN0Jyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dlYlZpZXcgY2FsbEFz
eW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpX
S0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAg
IEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbW2Vycm9yIGRlc2Ny
aXB0aW9uXSBjb250YWluc1N0cmluZzpAIlJlamVjdGVkISJdKTsKKyAgICAgICAgCisgICAgICAg
IGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBmdW5jdGlvbkJvZHkgPSBAInZhciBwID0g
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ1Vu
ZGVmaW5lZCcpOyB2YXIgcmVzdWx0ID0gYXdhaXQgcDsgcmV0dXJuIHJlc3VsdCA9PSB1bmRlZmlu
ZWQgPyAnWWVzJyA6ICdObyciOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVu
Y3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFn
ZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1
bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiWWVzIl0pOworCisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAg
IGRvbmUgPSBmYWxzZTsKKyAgICBmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93LndlYmtp
dC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0RvIG5vdGhpbmcnKTsg
YXdhaXQgcDsgcmV0dXJuIHA7IjsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1
bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBh
Z2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFl
cnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5z
U3RyaW5nOkAiZGlkIG5vdCByZXNwb25kIHRvIHRoaXMgcG9zdE1lc3NhZ2UiXSk7CisKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAg
PSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgn
SW52YWxpZCByZXBseScpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxB
c3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6
V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAg
ICBFWFBFQ1RfVFJVRSghIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNj
cmlwdGlvbl0gY29udGFpbnNTdHJpbmc6QCJ1bmFibGUgdG8gYmUgc2VyaWFsaXplZCJdKTsKKwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFdvcmxkTGlm
ZXRpbWUpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IHdvcmxkID0gW1dL
Q29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJvdGhlcldvcmxkIl07CisgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRo
UmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29ybGQuZ2V0KCkgbmFtZTpAInRlc3RI
YW5kbGVyIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICAvLyBTZXQgYSB2YXJpYWJsZSBpbiB0aGUg
d29ybGQuCisgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OkAidmFyIGZvbyA9ICdiYXInIiBpbkNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAg
IC8vIEhhdmUgdGhlIG1lc3NhZ2UgaGFuZGxlciBib3VuY2UgYmFjayB0aGF0IHZhbHVlLgorICAg
IE5TU3RyaW5nICpmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZm9vKTsgYXdhaXQgcDsgcmV0dXJuIHA7
IjsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVu
dHM6bmlsIGluQ29udGVudFdvcmxkOndvcmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAo
aWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiYmFy
Il0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSB0aGUg
bWVzc2FnZSBoYW5kbGVyLCB3aGljaCB1c2VkIHRvIGNhdXNlIHRoZSB3b3JsZCB0byBiZSBkZXN0
cm95ZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgorICAgIC8vIEJ1dCBieSBldmFsdWF0aW5nIEpTIG1h
a2Ugc3VyZSB0aGUgdmFsdWUgaXMgc3RpbGwgdGhlcmUuCisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNv
bnRlbnRXb3JsZDp3b3JsZC5nZXQoKV07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0
OkAiZm9vIiBpbkNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbJl0g
KGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJh
ciJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396923</attachid>
            <date>2020-04-19 12:15:54 -0700</date>
            <delta_ts>2020-04-19 13:28:15 -0700</delta_ts>
            <desc>Patch (omg maybe this is the one)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>81735</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGJmMTk3OGI1YjMuLjMxMmNiODJkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3
aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KTog
QWRkIGEgdmFyaWFudCBvZiBDb21wbGV0aW9uSGFuZGxlciB0aGF0IGFsbG93cyBmb3IgYSBGaW5h
bGl6ZXIgZnVuY3Rpb24KKyAgICAgICAgICB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENvbXBs
ZXRpb24gZnVuY3Rpb24gaGFzbid0IGJlZW4gY2FsbGVkIGF0IGRlc3RydWN0aW9uIHRpbWUuCisK
IDIwMjAtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV1RGXSBNb3ZlIERhdGFSZWYuaCBmcm9tIFdlYkNvcmUgdG8gV1RGIHRvIHV0aWxpemUgaXQg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oIGIv
U291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAppbmRleCA5MzhiNDk2NmYwOC4uOGM5
OGRmZTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtNjksNiArNjksNDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gV3JhcHMgYSBGdW5jdGlvbiB0byBtYWtlIHN1
cmUgaXQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKy8vIElmIHRoZSBDb21wbGV0aW9uSGFuZGxl
cldpdGhGaW5hbGl6ZXIgaXMgZGVzdHJveWVkIGFuZCB0aGUgZnVuY3Rpb24gaGFzbid0IHlldCBi
ZWVuIGNhbGxlZCwKKy8vIHRoZSBmaW5hbGl6ZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlv
biBhcyBpdHMgYXJndW1lbnQuCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhh
bmRsZXJXaXRoRmluYWxpemVyOwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4g
SW4+CitjbGFzcyBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KEluLi4uKT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29t
cGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlLCBGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPE91dChJbi4uLik+Jik+JiYgZmluYWxpemVyKQorICAgICAgICA6
IG1fZnVuY3Rpb24oV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgICwgbV9maW5hbGl6ZXIoV1RG
TW92ZShmaW5hbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXIoQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyJiYpID0gZGVmYXVsdDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXImIG9wZXJhdG9yPShDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25IYW5k
bGVyV2l0aEZpbmFsaXplcigpCisgICAgeworICAgICAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9maW5hbGl6ZXIobV9mdW5jdGlvbik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5j
dGlvbjsgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBB
U1NFUlQobV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZCA9PSBpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxl
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Z1bmN0aW9uLCBudWxscHRyKShzdGQ6OmZvcndhcmQ8SW4+KGluKS4u
Lik7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjxPdXQoSW4uLi4pPiYpPiBtX2ZpbmFsaXpl
cjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRo
cmVhZCB7IGlzTWFpblRocmVhZCgpIH07CisjZW5kaWYKK307CisKIG5hbWVzcGFjZSBEZXRhaWwg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgpAQCAtMTE1LDMgKzE1
OCw0IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlOwordXNpbmcgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q1YjNlOTVhNDYuLjFiNGZjZWZj
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMTggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdl
SGFuZGxlcjo6cG9zdE1lc3NhZ2UpOiBSZXR1cm4gYSBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBi
eSB0aGUgQVBJIGNsaWVudC4KKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKwogMjAyMC0wNC0xOCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZHVjZSBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
RnJhbWVMb2FkUmVxdWVzdCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCmluZGV4IGY1NWQ5ZDE5N2MyLi5mNDcw
MGY5Y2UxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJFdmVudExv
b3AuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKaW5kZXggM2FiYjZl
NjY1ZDYuLjdlZDg3MmJjNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGUyMWUwMzZhNjAu
LjY5NWQ0ZWU1MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IDMyYTRhNGZhYjFhLi5mYWMwNjcxMjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVu
dEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRM
b29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuY3BwCmluZGV4IGIwN2RiOGI2YjE0Li5jZjgyYWYzYjY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMjksNyArMjksOSBAQAog
I2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE0ICs0MywyOSBAQCBVc2VyTWVzc2FnZUhhbmRs
ZXI6OlVzZXJNZXNzYWdlSGFuZGxlcihGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0bwogCiBVc2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRl
ZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3Nh
Z2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiB2YWx1ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVzY3JpcHRvciBoYXMgYmVlbiByZW1vdmVkLiBUaGlz
IGNhbiBoYXBwZW4gaWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaGFzCiAgICAgLy8gcmVtb3ZlZCB0
aGUgbmFtZWQgbWVzc2FnZSBoYW5kbGVyIGF0IHRoZSBXZWJLaXQyIEFQSSBsZXZlbC4KLSAgICBp
ZiAoIW1fZGVzY3JpcHRvcikKKyAgICBpZiAoIW1fZGVzY3JpcHRvcikgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH0pOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgfQogCi0gICAgbV9k
ZXNjcmlwdG9yLT5kaWRQb3N0TWVzc2FnZSgqdGhpcywgdmFsdWUuZ2V0KCkpOworICAgIG1fZGVz
Y3JpcHRvci0+ZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdldCgpLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwcm9taXNl
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdDxJRExBbnk+KEpTQzo6Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBl
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChyZXN1bHQpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4ocmVzdWx0
LT5kZXNlcmlhbGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKKyAgICB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aAppbmRleCA5NGFmZmI1MGM5Yy4uOTEyMjc5YWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKKwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVc2VyTWVzc2FnZUhh
bmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVh
bCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0KICAgICB2b2lkIGludmFs
aWRhdGVEZXNjcmlwdG9yKCkgeyBtX2Rlc2NyaXB0b3IgPSBudWxscHRyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKaW5kZXggNzc2YzE4MjRiNmEuLjMyZGIy
OGVjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCkBA
IC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJT
CiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgewotICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNj
cmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggNDVlMTU1N2UwNmIuLmQyZjY1MzU3MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShVc2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA1NDk0OWMxNzI1Yi4uY2U1NzlmN2M1MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeHRl
bmRhYmxlRXZlbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTU0OTAyYWY3OTcuLjRjMjA3NTAw
YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA0LTE4ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tTY3JpcHRNZXNzYWdlSGFuZGxl
ciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3aXRoIGEgcHJvbWlzZS4KKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIENoYW5nZSB3ZWJraXQubWVzc2FnZUhhbmRsZXJzLjxuYW1l
Pi5wb3N0TWVzc2FnZSgpIHRvIHJldHVybiBhIHByb21pc2UgaW5zdGVhZCBvZiB1bmRlZmluZWQu
CisgICAgICAgIAorICAgICAgICBBbGxvdyBmb3IgdGhhdCBwcm9taXNlIHRvIGJlIHJlc29sdmVk
IGJ5IGFuIGFzeW5jaHJvbm91cyByZXBseSBibG9jayB1cCBpbiB0aGUgQVBJIGNsaWVudC4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgaXMgbGlrZSB0aGUgb3Bwb3NpdGUgdmVyc2lvbiBvZiBbV0tX
ZWJWaWV3IGNhbGxBc3luY0Z1bmN0aW9uOl0KKyAgICAgICAgCisgICAgICAgIEFuZCB3aGlsZSB3
ZSdyZSBhZGRpbmcgYSBuZXcgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB2YXJpYW50LCB3ZSdyZSBh
ZGRpbmcgaXQgc2FuZGJveGVkIGJ5IFdLQ29udGVudFdvcmxkLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tOgorICAgICAgICAoQVBJOjp2
YWxpZGF0ZU9iamVjdCk6CisgICAgICAgIChBUEk6OmNvcmVWYWx1ZUZyb21OU09iamVjdCk6Cisg
ICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KToK
KyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmpl
Y3QpOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1l
c3NhZ2UuaDogTm93IHRoYXQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlcnMgY2FuIGJlIHBlci13b3Js
ZCwgbWVzc2FnZXMKKyAgICAgICAgICBkZWNsYXJlIHdoaWNoIHdvcmxkIHRoZXkgd2VyZSBwb3N0
ZWQgZnJvbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5t
bToKKyAgICAgICAgKC1bV0tTY3JpcHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpmcmFt
ZUluZm86bmFtZTp3b3JsZDpdKToKKyAgICAgICAgKC1bV0tTY3JpcHRNZXNzYWdlIHdvcmxkXSk6
CisgICAgICAgICgtW1dLU2NyaXB0TWVzc2FnZSBfaW5pdFdpdGhCb2R5OndlYlZpZXc6ZnJhbWVJ
bmZvOm5hbWU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Nj
cmlwdE1lc3NhZ2VJbnRlcm5hbC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Lmg6IEFkZGVkLgorICAgICAgICAgIERlY2xh
cmUgdGhlIG5ldyBwcm90b2NvbCBmb3IgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRoYXQgY2Fu
IHJlcGx5IHRvIG1lc3NhZ2VzIGFzeW5jaHJvbm91c2x5LgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bmFtZTpd
KToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6Y29udGVudFdvcmxkOm5hbWU6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250
cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmNvbnRlbnRXb3JsZDpuYW1l
Ol0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNz
YWdlSGFuZGxlckZvck5hbWU6Y29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250
ZW50Q29udHJvbGxlciByZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxlcnNGcm9tQ29udGVudFdv
cmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVBbGxTY3Jp
cHRNZXNzYWdlSGFuZGxlcnNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVh
dGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1
cmU6aW5GcmFtZTppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAgIFVwZGF0
ZSBmb3IgbmV3IHNoYXJlZCBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpbml0aWFsaXphdGlv
bi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnNGb3JXb3JsZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW46CisKIDIwMjAtMDQtMTgg
IFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11b
V1BFXSBSZXBsYWNlIGV2aWwgc3RydG9rKCkgY2FsbHMgd2l0aCBmc2NhbmYoKSBpbiBNZW1vcnlQ
cmVzc3VyZU1vbml0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggMWY0M2U2M2M2MTEuLjZmZTg1NzZhYzM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgZGVmaW5lZChfX09CSkNfXykKICAgICBzdGF0aWMgaWQgZGVzZXJpYWxpemUoV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKLSAgICBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQp
OworICAgIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tTlNP
YmplY3QoaWQpOwogI2VuZGlmCiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxpemVk
U2NyaXB0VmFsdWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQppbmRleCA2NmU4YjI3YTA5YS4uNzMxMGY1
ZTFmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElT
ZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KQEAgLTgwLDIwICs4
MCw2NCBAQCBpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZAogICAgIHJldHVybiB2YWx1ZS50b09iamVj
dDsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OndpcmVCeXRlc0Zyb21OU09iamVjdChpZCBvYmplY3QpCitzdGF0aWMgYm9vbCB2YWxpZGF0ZU9i
amVjdChpZCBhcmd1bWVudCkKIHsKKyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XV0gfHwgW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dIHx8IFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU051bGwgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgeworICAg
ICAgICBfX2Jsb2NrIEJPT0wgdmFsaWQgPSB0cnVlOworCisgICAgICAgIFthcmd1bWVudCBlbnVt
ZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKGlkIG9iamVjdCwgTlNVSW50ZWdlciwgQk9PTCAqc3Rv
cCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZU9iamVjdChvYmplY3QpKSB7CisgICAgICAg
ICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0K
KworICAgIGlmIChbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
IHsKKyAgICAgICAgX19ibG9jayBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICBbYXJndW1l
bnQgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwg
Qk9PTCAqc3RvcCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZU9iamVjdChrZXkpIHx8ICF2
YWxpZGF0ZU9iamVjdCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICpzdG9wID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICB9XTsK
KworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY29yZVZhbHVl
RnJvbU5TT2JqZWN0KGlkIG9iamVjdCkKK3sKKyAgICBpZiAob2JqZWN0ICYmICF2YWxpZGF0ZU9i
amVjdChvYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gc2hhcmVkQ29udGV4dCgp
LmVuc3VyZUNvbnRleHQoKTsKICAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpvYmplY3QgaW5Db250ZXh0OmNvbnRleHRdOwogICAgIGlmICghdmFsdWUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwog
ICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xv
YmFsT2JqZWN0KTsKIAotICAgIGF1dG8gY29yZVZhbHVlID0gV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwgdG9KUyhnbG9iYWxPYmplY3QsIFt2YWx1
ZSBKU1ZhbHVlUmVmXSkpOwotICAgIHJldHVybiBjb3JlVmFsdWUtPnRvV2lyZUJ5dGVzKCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpnbG9iYWxP
YmplY3QsIHRvSlMoZ2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKK30KKworUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVG
cm9tTlNPYmplY3QoaWQgb2JqZWN0KQoreworICAgIGF1dG8gY29yZVZhbHVlID0gY29yZVZhbHVl
RnJvbU5TT2JqZWN0KG9iamVjdCk7CisgICAgaWYgKCFjb3JlVmFsdWUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBjcmVhdGUoY29yZVZhbHVlLnJlbGVhc2VOb25OdWxsKCkp
OwogfQogCiB9IC8vIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLU2NyaXB0TWVzc2FnZS5oCmluZGV4IDk3YmViNmU4MTM5Li42M2ExZTllYTM4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2Fn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3Nh
Z2UuaApAQCAtMjksNiArMjksNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xh
c3MgV0tDb250ZW50V29ybGQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tXZWJWaWV3
OwogCkBAIC01NCw2ICs1NSw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlv
cyg4LjApKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3Ry
aW5nICpuYW1lOwogCisvKiEgQGFic3RyYWN0IFRoZSBjb250ZW50IHdvcmxkIGZyb20gd2hpY2gg
dGhlIG1lc3NhZ2Ugd2FzIHNlbnQuICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IFdLQ29udGVudFdvcmxkICp3b3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2Fn
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2Uu
bW0KaW5kZXggYzkzZTdhOTlkYWIuLmJkNWRkNDZiOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0KQEAgLTM1LDkgKzM1
LDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1NjcmlwdE1lc3NhZ2UgewogICAgIFdlYWtPYmpDUHRy
PFdLV2ViVmlldz4gX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBfZnJhbWVJ
bmZvOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX25hbWU7CisgICAgUmV0YWluUHRyPFdLQ29u
dGVudFdvcmxkPiBfd29ybGQ7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhCb2R5Oihp
ZClib2R5IHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZvOihXS0ZyYW1lSW5m
byAqKWZyYW1lSW5mbyBuYW1lOihOU1N0cmluZyAqKW5hbWUKKy0gKGluc3RhbmNldHlwZSlfaW5p
dFdpdGhCb2R5OihpZClib2R5IHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZv
OihXS0ZyYW1lSW5mbyAqKWZyYW1lSW5mbyBuYW1lOihOU1N0cmluZyAqKW5hbWUgd29ybGQ6KFdL
Q29udGVudFdvcmxkICopd29ybGQKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQ2LDYgKzQ3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9p
bml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmcmFtZUlu
Zm86KFcKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgX2ZyYW1lSW5mbyA9IGZyYW1lSW5m
bzsKICAgICBfbmFtZSA9IGFkb3B0TlMoW25hbWUgY29weV0pOworICAgIF93b3JsZCA9IHdvcmxk
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC03MCw0ICs3Miw5IEBAIC0gKE5TU3RyaW5nICop
bmFtZQogICAgIHJldHVybiBfbmFtZS5nZXQoKTsKIH0KIAorLSAoV0tDb250ZW50V29ybGQgKil3
b3JsZAoreworICAgIHJldHVybiBfd29ybGQuZ2V0KCk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
V2l0aFJlcGx5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi44MjNkZjFlOGI1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5LmgKQEAgLTAs
MCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
KworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK0BjbGFzcyBXS1NjcmlwdE1lc3NhZ2U7CitAY2xhc3MgV0tVc2VyQ29udGVudENv
bnRyb2xsZXI7CisKKy8qISBBIGNsYXNzIGNvbmZvcm1pbmcgdG8gIHRoZSBXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyV2l0aFJlcGx5IHByb3RvY29sIHByb3ZpZGVzIGEKK21ldGhvZCBmb3IgcmVjZWl2
aW5nIG1lc3NhZ2VzIGZyb20gSmF2YVNjcmlwdCBydW5uaW5nIGluIGEgd2VicGFnZSBhbmQgcmVw
bHlpbmcgdG8gdGhlbSBhc3luY2hyb25vdXNseS4KKyovCitAcHJvdG9jb2wgV0tTY3JpcHRNZXNz
YWdlSGFuZGxlcldpdGhSZXBseSA8TlNPYmplY3Q+CisKKy8qISBAYWJzdHJhY3QgSW52b2tlZCB3
aGVuIGEgc2NyaXB0IG1lc3NhZ2UgaXMgcmVjZWl2ZWQgZnJvbSBhIHdlYnBhZ2UuCisgQHBhcmFt
IHVzZXJDb250ZW50Q29udHJvbGxlciBUaGUgdXNlciBjb250ZW50IGNvbnRyb2xsZXIgaW52b2tp
bmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4KKyBAcGFyYW0gbWVzc2FnZSBUaGUgc2NyaXB0IG1lc3Nh
Z2UgcmVjZWl2ZWQuCisgQHBhcmFtIHJlcGx5SGFuZGxlciBBIGJsb2NrIHRvIGJlIGNhbGxlZCB3
aXRoIHRoZSByZXN1bHQgb2YgcHJvY2Vzc2luZyB0aGUgbWVzc2FnZS4KKyBAZGlzY3Vzc2lvbiBX
aGVuIHRoZSBKYXZhU2NyaXB0IHJ1bm5pbmcgaW4geW91ciBhcHBsaWNhdGlvbidzIHdlYiBjb250
ZW50IGNhbGxlZCB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFtZT4ucG9zdE1lc3Nh
Z2UoPG1lc3NhZ2VCb2R5PiksCisgYSBKYXZhU2NyaXB0IFByb21pc2Ugb2JqZWN0IHdhcyByZXR1
cm5lZC4gVGhlIHZhbHVlcyBwYXNzZWQgdG8gdGhlIHJlcGx5SGFuZGxlciBhcmUgdXNlZCB0byBy
ZXNvbHZlIHRoYXQgUHJvbWlzZS4KKworIFBhc3NpbmcgYSBub24tbmlsIE5TU3RyaW5nIHZhbHVl
IHRvIHRoZSBzZWNvbmQgcGFyYW1ldGVyIG9mIHRoZSByZXBseUhhbmRsZXIgc2lnbmFscyBhbiBl
cnJvci4KKyBObyBtYXR0ZXIgd2hhdCB2YWx1ZSB5b3UgcGFzcyB0byB0aGUgZmlyc3QgcGFyYW1l
dGVyIG9mIHRoZSByZXBseUhhbmRsZXIsCisgdGhlIFByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3
aXRoIGEgSmF2YVNjcmlwdCBlcnJvciBvYmplY3Qgd2hvc2UgbWVzc2FnZSBwcm9wZXJ0eSBpcyBz
ZXQgdG8gdGhhdCBlcnJvck1lc3NhZ2Ugc3RyaW5nLgorCisgSWYgdGhlIHNlY29uZCBwYXJhbWV0
ZXIgdG8gdGhlIHJlcGx5SGFuZGxlciBpcyBuaWwsIHRoZSBmaXJzdCBhcmd1bWVudCB3aWxsIGJl
IHNlcmlhbGl6ZWQgaW50byBpdHMgSmF2YVNjcmlwdCBlcXVpdmFsZW50IGFuZCB0aGUgUHJvbWlz
ZSB3aWxsIGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSByZXN1bHRpbmcgdmFsdWUuCisgSWYgdGhlIGZp
cnN0IGFyZ3VtZW50IGlzIG5pbCB0aGVuIHRoZSBQcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQgd2l0
aCBhIEphdmFTY3JpcHQgdmFsdWUgb2YgInVuZGVmaW5lZCIKKworIEFsbG93ZWQgbm9uLW5pbCBy
ZXN1bHQgdHlwZXMgYXJlOgorIE5TTnVtYmVyLCBOU051bGwsIE5TU3RyaW5nLCBOU0RhdGUsIE5T
QXJyYXksIGFuZCBOU0RpY3Rpb25hcnkuCisgQW55IE5TQXJyYXkgb3IgTlNEaWN0aW9uYXJ5IGNv
bnRhaW5lcnMgY2FuIG9ubHkgY29udGFpbiBvYmplY3RzIG9mIHRob3NlIHR5cGVzLgorCisgVGhl
IHJlcGx5SGFuZGxlciBjYW4gYmUgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKyBJZiB0aGUgcmVwbHlI
YW5kbGVyIGlzIGRlYWxsb2NhdGVkIGJlZm9yZSBpdCBpcyBjYWxsZWQsIHRoZSBQcm9taXNlIHdp
bGwgYmUgcmVqZWN0ZWQgd2l0aCBhIEphdmFTY3JpcHQgRXJyb3Igb2JqZWN0Cisgd2l0aCBhbiBh
cHByb3ByaWF0ZSBtZXNzYWdlIGluZGljYXRpbmcgdGhlIGhhbmRsZXIgd2FzIG5ldmVyIGNhbGxl
ZC4KKworIEV4YW1wbGU6CisKKyBXaXRoIGEgV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBs
eSBvYmplY3QgaW5zdGFsbGVkIHdpdGggdGhlIG5hbWUgInRlc3RIYW5kbGVyIiwgY29uc2lkZXIg
dGhlIGZvbGxvd2luZyBKYXZhU2NyaXB0OgorIEB0ZXh0YmxvY2sKKyAgICAgdmFyIHByb21pc2Ug
PSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgi
RnVsZmlsbCBtZSB3aXRoIDQyIik7CisgICAgIGF3YWl0IHA7CisgICAgIHJldHVybiBwOworIEAv
dGV4dGJsb2NrCisKKyBBbmQgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyV2l0aFJlcGx5IGltcGxlbWVudGF0aW9uOgorIEB0ZXh0YmxvY2sKKyAgICAgLSAodm9p
ZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNv
bnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2Ug
KiltZXNzYWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TU3RyaW5nICopKXJlcGx5SGFu
ZGxlcgorICAgICB7CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWw6QCJGdWxmaWxs
IG1lIHdpdGggNDIiXSkKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihANDIsIG5pbCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihuaWwsIEAiVW5leHBlY3RlZCBtZXNz
YWdlIHJlY2VpdmVkIik7CisgICAgIH0KKyBAL3RleHRibG9jaworCisgSW4gdGhpcyBleGFtcGxl
OgorICAgLSBUaGUgSmF2YVNjcmlwdCBjb2RlIHNlbmRzIGEgbWVzc2FnZSB0byB5b3VyIGFwcGxp
Y2F0aW9uIGNvZGUgd2l0aCB0aGUgYm9keSBAIkZ1bGZpbGwgbWUgd2l0aCA0MiIKKyAgIC0gSmF2
YVNjcmlwdCBleGVjdXRpb24gaXMgc3VzcGVuZGVkIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSByZXN1
bHRpbmcgcHJvbWlzZSB0byByZXNvbHZlLgorICAgLSBZb3VyIG1lc3NhZ2UgaGFuZGxlciBpcyBp
bnZva2VkIHdpdGggdGhhdCBtZXNzYWdlIGFuZCBhIGJsb2NrIHRvIGNhbGwgd2l0aCB0aGUgcmVw
bHkgd2hlbiByZWFkeS4KKyAgIC0gWW91ciBtZXNzYWdlIGhhbmRsZXIgc2VuZHMgdGhlIHZhbHVl
IEA0MiBhcyBhIHJlcGx5LgorICAgLSBUaGUgSmF2YVNjcmlwdCBwcm9taXNlIGlzIGZ1bGZpbGxl
ZCB3aXRoIHRoZSB2YWx1ZSA0Mi4KKyAgIC0gSmF2YVNjcmlwdCBleGVjdXRpb24gY29udGludWVz
IGFuZCB0aGUgdmFsdWUgNDIgaXMgcmV0dXJuZWQuCisgKi8KKy0gKHZvaWQpdXNlckNvbnRlbnRD
b250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxl
ciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZSByZXBs
eUhhbmRsZXI6KHZvaWQgKF4pKGlkIHJlcGx5LCBOU1N0cmluZyAqZXJyb3JNZXNzYWdlKSlyZXBs
eUhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5o
CmluZGV4IDI2Mzc4ODAwNTY3Li44OWJjNTE4ZGZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgK
QEAgLTI3LDYgKzI3LDYgQEAKIAogQGludGVyZmFjZSBXS1NjcmlwdE1lc3NhZ2UgKCkKIAotLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBmcmFtZUluZm86KFdLRnJhbWVJbmZvICopZnJhbWVJbmZvIG5hbWU6KE5TU3RyaW5n
ICopbmFtZTsKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhCb2R5OihpZClib2R5IHdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZvOihXS0ZyYW1lSW5mbyAqKWZyYW1lSW5mbyBu
YW1lOihOU1N0cmluZyAqKW5hbWUgd29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQ7CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggODI5YTA1NzMzN2QuLmY0M2YyZTYyZjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtMzAsOCArMzAsMTAgQEAKIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKIEBjbGFzcyBXS0NvbnRlbnRSdWxlTGlzdDsKK0BjbGFzcyBXS0NvbnRlbnRX
b3JsZDsKIEBjbGFzcyBXS1VzZXJTY3JpcHQ7CiBAcHJvdG9jb2wgV0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcjsKK0Bwcm90b2NvbCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OwogCiAvKiEg
QSBXS1VzZXJDb250ZW50Q29udHJvbGxlciBvYmplY3QgcHJvdmlkZXMgYSB3YXkgZm9yIEphdmFT
Y3JpcHQgdG8gcG9zdAogIG1lc3NhZ2VzIHRvIGEgd2ViIHZpZXcuCkBAIC01NiwxOSArNTgsNzUg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAtICh2b2lkKXJl
bW92ZUFsbFVzZXJTY3JpcHRzOwogCiAvKiEgQGFic3RyYWN0IEFkZHMgYSBzY3JpcHQgbWVzc2Fn
ZSBoYW5kbGVyLgotIEBwYXJhbSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgbWVzc2FnZSBoYW5k
bGVyIHRvIGFkZC4KKyBAcGFyYW0gc2NyaXB0TWVzc2FnZUhhbmRsZXIgVGhlIHNjcmlwdCBtZXNz
YWdlIGhhbmRsZXIgdG8gYWRkLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdv
cmxkIGluIHdoaWNoIHRvIGFkZCB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KICBAcGFyYW0g
bmFtZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgotIEBkaXNjdXNzaW9uIEFkZGlu
ZyBhIHNjcmlwdE1lc3NhZ2VIYW5kbGVyIGFkZHMgYSBmdW5jdGlvbgotIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVzc2FnZUJvZHk+KSBmb3IgYWxs
Ci0gZnJhbWVzLgorIEBkaXNjdXNzaW9uIEFkZGluZyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIg
YWRkcyBhIGZ1bmN0aW9uCisgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBv
c3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIHRvIGFsbCBmcmFtZXMsIGF2YWlsYWJsZSBpbiB0aGUg
Z2l2ZW4gV0tDb250ZW50V29ybGQuCisKKyBUaGUgbmFtZSBhcmd1bWVudCBtdXN0IGJlIGEgbm9u
LWVtcHR5IHN0cmluZy4KKworIEVhY2ggV0tDb250ZW50V29ybGQgY2FuIGhhdmUgYW55IG51bWJl
ciBvZiBzY3JpcHQgbWVzc2FnZSBoYW5kbGVycywgYnV0IG9ubHkgb25lIHBlciB1bmlxdWUgbmFt
ZS4KKworIE9uY2UgYW55IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgaGFzIGJlZW4gYWRkZWQgdG8g
YSBXS0NvbnRlbnRXb3JsZCBmb3IgYSBnaXZlbiBuYW1lLCBpdCBpcyBhbiBlcnJvciB0byBhZGQg
YW5vdGhlcgorIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgdG8gdGhhdCBXS0NvbnRlbnRXb3JsZCBm
b3IgdGhhdCBzYW1lIG5hbWUgd2l0aG91dCBmaXJzdCByZW1vdmluZyB0aGUgcHJldmlvdXMgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlci4KKworIFRoZSBhYm92ZSByZXN0cmljdGlvbiBhcHBsaWVzIHRv
IGFueSB0eXBlIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgLSBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIGFuZCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Cisgb2JqZWN0cyB3aWxsIGNv
bmZsaWN0IHdpdGggZWFjaCBvdGhlciBpZiB5b3UgdHJ5IHRvIGFkZCB0aGVtIHRvIHRoZSBzYW1l
IFdLQ29udGVudFdvcmxkIHdpdGggdGhlIHNhbWUgbmFtZS4KKyAqLworLSAodm9pZClhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBBZGRzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4K
KyBAcGFyYW0gc2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgVGhlIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXIgdG8gYWRkLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdvcmxk
IGluIHdoaWNoIHRvIGFkZCB0aGUgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KKyBAcGFyYW0gbmFt
ZSBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBoYW5kbGVyLgorIEBkaXNjdXNzaW9uIEFkZGluZyBh
IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgYWRkcyBhIGZ1bmN0aW9uCisgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMuPG5hbWU+LnBvc3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pIHRvIGFsbCBm
cmFtZXMsIGF2YWlsYWJsZSBpbiB0aGUgZ2l2ZW4gV0tDb250ZW50V29ybGQuCisKKyBUaGUgbmFt
ZSBhcmd1bWVudCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy4KKworIEVhY2ggV0tDb250ZW50
V29ybGQgY2FuIGhhdmUgYW55IG51bWJlciBvZiBzY3JpcHQgbWVzc2FnZSBoYW5kbGVycywgYnV0
IG9ubHkgb25lIHBlciB1bmlxdWUgbmFtZS4KKworIE9uY2UgYW55IHNjcmlwdCBtZXNzYWdlIGhh
bmRsZXIgaGFzIGJlZW4gYWRkZWQgdG8gYSBXS0NvbnRlbnRXb3JsZCBmb3IgYSBnaXZlbiBuYW1l
LCBpdCBpcyBhbiBlcnJvciB0byBhZGQgYW5vdGhlcgorIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIg
dG8gdGhhdCBXS0NvbnRlbnRXb3JsZCBmb3IgdGhhdCBzYW1lIG5hbWUgd2l0aG91dCBmaXJzdCBy
ZW1vdmluZyB0aGUgcHJldmlvdXMgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KKworIFRoZSBhYm92
ZSByZXN0cmljdGlvbiBhcHBsaWVzIHRvIGFueSB0eXBlIG9mIHNjcmlwdCBtZXNzYWdlIGhhbmRs
ZXIgLSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IGFuZCBXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyCisgb2JqZWN0cyB3aWxsIGNvbmZsaWN0IHdpdGggZWFjaCBvdGhlciBpZiB5b3UgdHJ5
IHRvIGFkZCB0aGVtIHRvIHRoZSBzYW1lIFdLQ29udGVudFdvcmxkIHdpdGggdGhlIHNhbWUgbmFt
ZS4KKworIFJlZmVyIHRvIHRoZSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5IGRvY3Vt
ZW50YXRpb24gZm9yIGV4YW1wbGVzIG9mIGhvdyBpdCBpcyBtb3JlIGZsZXhpYmxlIHRoYW4gV0tT
Y3JpcHRNZXNzYWdlSGFuZGxlci4KKyAqLworLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cldpdGhSZXBseTooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+KXNjcmlwdE1l
c3NhZ2VIYW5kbGVyV2l0aFJlcGx5IGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250
ZW50V29ybGQgbmFtZTooTlNTdHJpbmcgKiluYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgQWRkcyBhIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgdG8gdGhlIG1haW4gd29ybGQgdXNlZCBieSBwYWdlIGNvbnRlbnQg
aXRzZWxmLgorIEBwYXJhbSBzY3JpcHRNZXNzYWdlSGFuZGxlciBUaGUgc2NyaXB0IG1lc3NhZ2Ug
aGFuZGxlciB0byBhZGQuCisgQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFu
ZGxlci4KKyBAZGlzY3Vzc2lvbiBDYWxsaW5nIHRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8g
Y2FsbGluZyBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpjb250ZW50V29ybGQ6bmFtZToKKyB3aXRo
IFtXS0NvbnRlbnRXb3JsZCBwYWdlV29ybGRdIGFzIHRoZSBjb250ZW50V29ybGQgYXJndW1lbnQu
CiAgKi8KIC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWU7CiAK
IC8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCiAgQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlciB0byByZW1vdmUuCisgQHBhcmFt
IGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgZnJvbSB3aGljaCB0byByZW1vdmUgdGhl
IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCisgKi8KKy0gKHZvaWQpcmVtb3ZlU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUgY29udGVudFdvcmxkOihXS0NvbnRlbnRX
b3JsZCAqKWNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYSBzY3JpcHQgbWVzc2Fn
ZSBoYW5kbGVyLgorIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBtZXNzYWdlIGhhbmRsZXIg
dG8gcmVtb3ZlLgorIEBkaXNjdXNzaW9uIENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVu
dCB0byBjYWxsaW5nIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpjb250ZW50V29y
bGQ6CisgIHdpdGggW1dLQ29udGVudFdvcmxkIHBhZ2VXb3JsZF0gYXMgdGhlIGNvbnRlbnRXb3Js
ZCBhcmd1bWVudC4KICAqLwogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5h
bWU6KE5TU3RyaW5nICopbmFtZTsKIAorLyohIEBhYnN0cmFjdCBSZW1vdmVzIGFsbCBzY3JpcHQg
bWVzc2FnZSBoYW5kbGVycyBmcm9tIGEgZ2l2ZW4gV0tDb250ZW50V29ybGQuCisgQHBhcmFtIGNv
bnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgZnJvbSB3aGljaCB0byByZW1vdmUgYWxsIHNj
cmlwdCBtZXNzYWdlIGhhbmRsZXJzLgorICovCistICh2b2lkKXJlbW92ZUFsbFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
Ky8qISBAYWJzdHJhY3QgUmVtb3ZlcyBhbGwgYXNzb2NpYXRlZCBzY3JpcHQgbWVzc2FnZSBoYW5k
bGVycy4KKyAqLworLSAodm9pZClyZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxlcnMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyohIEBh
YnN0cmFjdCBBZGRzIGEgY29udGVudCBydWxlIGxpc3QuCiAgQHBhcmFtIGNvbnRlbnRSdWxlTGlz
dCBUaGUgY29udGVudCBydWxlIGxpc3QgdG8gYWRkLgogICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
bW0KaW5kZXggNjgyN2M5MTQxYzAuLjdmOTRhNDA1NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAj
aW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIK
KyNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCIKICNpbXBvcnQgIldL
U2NyaXB0TWVzc2FnZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTEyNSwzMSArMTI2LDk0IEBAIHB1
YmxpYzoKICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKICAgICAgICAgLCBtX2hh
bmRsZXIoaGFuZGxlcikKICAgICAgICAgLCBtX25hbWUoYWRvcHROUyhbbmFtZSBjb3B5XSkpCisg
ICAgICAgICwgbV9zdXBwb3J0c0FzeW5jUmVwbHkoZmFsc2UpCiAgICAgewogICAgIH0KLSAgICAK
LSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKKworICAgIFNjcmlwdE1l
c3NhZ2VIYW5kbGVyRGVsZWdhdGUoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xsZXIs
IGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PiBoYW5kbGVyLCBOU1N0cmluZyAq
bmFtZSkKKyAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICAgICAgLCBtX2hh
bmRsZXIoaGFuZGxlcikKKyAgICAgICAgLCBtX25hbWUoYWRvcHROUyhbbmFtZSBjb3B5XSkpCisg
ICAgICAgICwgbV9zdXBwb3J0c0FzeW5jUmVwbHkodHJ1ZSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBkaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgZmlu
YWwKICAgICB7CiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICAgICAgUmV0YWlu
UHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBhZ2UpKTsKICAgICAgICAgICAgIGlkIGJvZHkg
PSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCAwKTsKLSAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0TlMoW1tXS1Njcmlw
dE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJv
eHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1lOm1fbmFtZS5nZXQoKV0pOwor
ICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxv
Y10gX2luaXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBmcmFt
ZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxkOndyYXBwZXIod29y
bGQpXSk7CiAgICAgICAgIAotICAgICAgICAgICAgW21faGFuZGxlciB1c2VyQ29udGVudENvbnRy
b2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOm1lc3NhZ2Uu
Z2V0KCldOworICAgICAgICAgICAgWyhpZDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiltX2hhbmRs
ZXIuZ2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRSZWNl
aXZlU2NyaXB0TWVzc2FnZTptZXNzYWdlLmdldCgpXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3N1cHBvcnRzQXN5bmNSZXBseTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0
aEFzeW5jUmVwbHkoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mb0RhdGEsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIEZ1bmN0aW9uPHZv
aWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4mJiByZXBseUhh
bmRsZXIpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQobV9zdXBwb3J0c0FzeW5jUmVwbHkp
OworCisgICAgICAgIGF1dG8gZmluYWxpemVyID0gW10oRnVuY3Rpb248dm9pZChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYgZnVuY3Rpb24pIHsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uKG51bGxwdHIsICJXS1dlYlZpZXcgQVBJIGNsaWVudCBkaWQgbm90IHJlc3Bv
bmQgdG8gdGhpcyBwb3N0TWVzc2FnZSJfcyk7CisgICAgICAgIH07CisgICAgICAgIF9fYmxvY2sg
YXV0byBoYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4oV1RGTW92ZShyZXBseUhhbmRs
ZXIpLCBXVEZNb3ZlKGZpbmFsaXplcikpOworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBhZ2UpKTsKKyAg
ICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKKyAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9
IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1l
Om1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOworCisgICAgICAgICAgICBbKGlk
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+KW1faGFuZGxlci5nZXQoKSB1c2VyQ29u
dGVudENvbnRyb2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdl
Om1lc3NhZ2UuZ2V0KCkgcmVwbHlIYW5kbGVyOl4oaWQgcmVzdWx0LCBOU1N0cmluZyAqZXJyb3JN
ZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkgeworICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVyKG51bGxwdHIsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRv
IHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9t
TlNPYmplY3QocmVzdWx0KTsKKyAgICAgICAgICAgICAgICBpZiAoIXNlcmlhbGl6ZWRWYWx1ZSkg
eworICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKG51bGxwdHIsICJUaGUgcmVzdWx0IHZhbHVl
IHBhc3NlZCBiYWNrIGZyb20gdGhlIFdLV2ViVmlldyBBUEkgY2xpZW50IHdhcyB1bmFibGUgdG8g
YmUgc2VyaWFsaXplZCJfcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHNlcmlhbGl6ZWRWYWx1ZS5nZXQo
KSwgeyB9KTsKKyAgICAgICAgICAgIH1dOwogICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAg
IFJldGFpblB0cjxpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1faGFuZGxlcjsKKyAgICBS
ZXRhaW5QdHI8aWQ+IG1faGFuZGxlcjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fbmFtZTsK
KyAgICBib29sIG1fc3VwcG9ydHNBc3luY1JlcGx5OwogfTsKIAorLSAodm9pZClfYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6KFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKXNjcmlwdE1l
c3NhZ2VIYW5kbGVyCit7CisgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFk
ZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihzY3JpcHRNZXNzYWdlSGFuZGxlcikpCisgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJB
dHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4g
b25lIGFscmVhZHkgZXhpc3RzLiIsIChOU1N0cmluZyAqKXNjcmlwdE1lc3NhZ2VIYW5kbGVyLm5h
bWUoKV07Cit9CisKIC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1Njcmlw
dE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5h
bWUKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
OjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBz
Y3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdl
Q29udGVudFdvcmxkKCkpOwotICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5h
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCi0gICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0
IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFs
cmVhZHkgZXhpc3RzLiIsIG5hbWVdOworICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpoYW5kbGVyLmdldCgpXTsKK30KKworLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjoo
aWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZCBuYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAg
ICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNz
YWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp3b3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgW3Nl
bGYgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCldOworfQorCistICh2b2lk
KWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OihpZCA8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseT4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgY29udGVudFdvcmxkOihXS0NvbnRl
bnRXb3JsZCAqKXdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIGF1dG8gaGFuZGxl
ciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBu
YW1lKSwgbmFtZSwgKndvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBbc2VsZiBfYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKV07CiB9CiAKIC0gKHZvaWQpcmVtb3ZlU2NyaXB0
TWVzc2FnZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUKQEAgLTE1Nyw2ICsyMjEsMjEg
QEAgLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3RyaW5nICop
bmFtZQogICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgp
KTsKIH0KIAorLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3Ry
aW5nICopbmFtZSBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkCit7
CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRs
ZXJGb3JOYW1lKG5hbWUsICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworfQorCistICh2
b2lkKXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zyb21Db250ZW50V29ybGQ6KFdLQ29u
dGVudFdvcmxkICopY29udGVudFdvcmxkCit7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LT5yZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCpjb250ZW50V29ybGQtPl9jb250ZW50
V29ybGQpOworfQorCistICh2b2lkKXJlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVycworewor
ICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5k
bGVycygpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRp
b24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJJbnRlcm5hbC5oCmluZGV4IDEwOGJlZTE1MzgyLi40N2Y3ZGUwMThhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCkBAIC0yOSwxNSArMjksMTggQEAKICNpbXBvcnQg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5PiB7CiAgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gV0tVc2VyQ29udGVudENvbnRyb2xs
ZXI7CiB9OwogCitjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIH0KIAogQGludGVyZmFj
ZSBXS1VzZXJDb250ZW50Q29udHJvbGxlciAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAg
QVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+
IF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIH0KKworLSAodm9pZClfYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6KFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKaW5k
ZXggYWEzNTFlNzdjY2QuLmU1Zjg5NmQ5YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
UHJpdmF0ZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250
ZW50Q29udHJvbGxlci5oPgogCitAY2xhc3MgV0tDb250ZW50V29ybGQ7CiBAY2xhc3MgV0tVc2Vy
U2NyaXB0OwogQGNsYXNzIF9XS1VzZXJDb250ZW50RmlsdGVyOwogQGNsYXNzIF9XS1VzZXJDb250
ZW50V29ybGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCAwMDM0MTU4YmEyMS4uNmIxMWIzODQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODk4LDE1ICs4OTgsMTMgQEAg
LSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcg
YXNBc3luY0Z1bmN0aW9uOihCT09MKWEKIAogICAgIGZvciAoaWQga2V5IGluIGFyZ3VtZW50cykg
ewogICAgICAgICBpZCB2YWx1ZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OmtleV07Ci0gICAg
ICAgIGlmICghdmFsaWRhdGVBcmd1bWVudCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IEAiRnVuY3Rpb24gYXJndW1lbnQgdmFsdWVzIG11c3QgYmUgb25lIG9mIHRoZSBmb2xs
b3dpbmcgdHlwZXMsIG9yIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHR5cGVzOiBOU1N0cmlu
ZywgTlNOdW1iZXIsIE5TRGF0ZSwgTlNBcnJheSwgYW5kIE5TRGljdGlvbmFyeSI7CisgICAgICAg
IGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZUZyb21OU09iamVjdCh2YWx1ZSk7CisgICAgICAgIGlmICghc2VyaWFsaXplZFZhbHVlKSB7Cisg
ICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBtdXN0
IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZvbGxv
d2luZyB0eXBlczogTlNOdW1iZXIsIE5TTnVsbCwgTlNEYXRlLCBOU1N0cmluZywgTlNBcnJheSwg
YW5kIE5TRGljdGlvbmFyeSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIAot
ICAgICAgICBhdXRvIHdpcmVCeXRlcyA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJl
Qnl0ZXNGcm9tTlNPYmplY3QodmFsdWUpOwotICAgICAgICAvLyBTaW5jZSB3ZSd2ZSB2YWxpZGF0
ZWQgdGhlIGlucHV0IGRpY3Rpb25hcnkgYWJvdmUsIHdlIHNob3VsZCBuZXZlciBmYWlsIHRvIHNl
cmlhbGl6ZSBpdCBpbnRvIHdpcmUgYnl0ZXMuCi0gICAgICAgIEFTU0VSVCh3aXJlQnl0ZXMpOwot
ICAgICAgICBhcmd1bWVudHNNYXAtPnNldChrZXksICp3aXJlQnl0ZXMpOworCisgICAgICAgIGFy
Z3VtZW50c01hcC0+c2V0KGtleSwgc2VyaWFsaXplZFZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0
aW9uKCkudG9XaXJlQnl0ZXMoKSk7CiAgICAgfQogCiAgICAgaWYgKGVycm9yTWVzc2FnZSAmJiBo
YW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA3YzQzMjMwNGY1Mi4uZGEx
MjllM2I4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMTkwLDEzICsxOTAsMjIg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBh
Z2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0TWVzc2Fn
ZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJy
aWRlCiAgICAgewogICAgICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqc1Jlc3VsdCA9IHdl
YmtpdEphdmFzY3JpcHRSZXN1bHRDcmVhdGUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKICAgICAg
ICAgZ19zaWduYWxfZW1pdChtX21hbmFnZXIsIHNpZ25hbHNbU0NSSVBUX01FU1NBR0VfUkVDRUlW
RURdLCBtX2hhbmRsZXJOYW1lLCBqc1Jlc3VsdCk7CiAgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0
X3Jlc3VsdF91bnJlZihqc1Jlc3VsdCk7CiAgICAgfQogCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoV2ViUGFnZVByb3h5Jiwg
RnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZQorICAgIHsKKyAgICB9CisgICAgCiAgICAg
dmlydHVhbCB+U2NyaXB0TWVzc2FnZUNsaWVudEd0aygpIHsgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IGI2NTUxZWFiZjVj
Li5lMDBjMjFlMDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVy
cmlkZQorICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUlu
Zm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBTdHJp
bmcgbWVzc2FnZSA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS50b1N0cmluZygpOwogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiB0b2tlbnMgPSBtZXNzYWdlLnNwbGl0KCc6Jyk7CkBAIC01Myw2ICs1Mywx
NSBAQCBwdWJsaWM6CiAgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3BlY3Qo
cmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50NjQoKSwgdG9rZW5zWzFd
LnRvVUludDY0KCksIHRva2Vuc1syXSk7CiAgICAgfQogCisgICAgYm9vbCBzdXBwb3J0c0FzeW5j
UmVwbHkoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoV2ViUGFnZVByb3h5Jiwg
RnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZQorICAgIHsKKyAgICB9CisKICAgICB+U2Ny
aXB0TWVzc2FnZUNsaWVudCgpIHsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IGM5NTFhNTBkMzk4Li5mM2YyOGE0
N2UzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB+U2NyaXB0TWVzc2FnZUNsaWVu
dCgpIHsgfQogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmIHBhZ2UsIEZy
YW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJv
eHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGF1dG8gdG9rZW5zID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLnRvU3RyaW5n
KCkuc3BsaXQoIjoiKTsKICAgICAgICAgaWYgKHRva2Vucy5zaXplKCkgIT0gMykKQEAgLTYxLDYg
KzYxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgVVJMIHJlcXVlc3RVUkwgeyB7IH0sIHBhZ2UucGFn
ZUxvYWRTdGF0ZSgpLnVybCgpIH07CiAgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
Lmluc3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50U3RyaWN0
KCksIHRva2Vuc1sxXS50b1VJbnRTdHJpY3QoKSwgdG9rZW5zWzJdKTsKICAgICB9CisgICAgCisg
ICAgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlV2l0aEFzeW5j
UmVwbHkoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYs
IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZQorICAg
IHsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
JiBtX2luc3BlY3RvclByb3RvY29sSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCmlu
ZGV4IGFmYWNiYjA3MWYxLi4yZjYxNGIyM2EyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5o
CkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogbmFtZXNw
YWNlIEFQSSB7CiBjbGFzcyBDb250ZW50V29ybGQ7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTIsNyArNTMsOSBAQCBwdWJsaWM6CiAg
ICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNsaWVudCgp
IHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5Jiwg
RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUlu
Zm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlJikgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseShXZWJQ
YWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYpID0gMDsKICAgICB9OwogCiAgICAgc3Rh
dGljIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxD
bGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29udGVudFdvcmxkJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggN2RkOGViOTkzMTcuLjI0YjYz
M2U0ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNvbnRl
bnRXb3JsZC5oIgorI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKQEAgLTMxNiw3ICszMTcsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNv
bnN0IFN0cmluZwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxs
VXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9y
IChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Muc2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAg
ICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIo
KSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIG51bWJlclJlbW92ZWQgPSAwOwog
ICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBlbnRyeSkgewpA
QCAtMzI4LDcgKzMyOSwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29udGVudFdvcgogICAgIH0pOwogfQog
Ci12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxl
cklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKCkK
K3sKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcnMoKSwgaWRlbnRpZmllcigpKTsKK30KKwordm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSwgTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2Fn
ZTo6QXN5bmNSZXBseSYmIHJlcGx5KQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlUHJveHlJRCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzQx
LDcgKzM0OCwyMSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgaWYgKCFoYW5kbGVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgq
cGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3RvcigpKSk7CisgICAgaWYgKCFoYW5kbGVyLT5j
bGllbnQoKS5zdXBwb3J0c0FzeW5jUmVwbHkoKSkgeworICAgICAgICBoYW5kbGVyLT5jbGllbnQo
KS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+
d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVy
ZW5jZS52ZWN0b3IoKSkpOworICAgICAgICByZXBseSh7IH0sIHsgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZVdpdGhBc3lu
Y1JlcGx5KCpwYWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAg
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVmZXJlbmNlLnZlY3Rv
cigpKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworICAgICAgICBp
ZiAoZXJyb3JNZXNzYWdlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwor
ICAgICAgICAgICAgcmVwbHkoeyB2YWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLnRvV2ly
ZUJ5dGVzKCkgfSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHJlcGx5KHsgfSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9KTsKIH0KIAogI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApp
bmRleCAyYzA5NDI4NTBiNC4uMTI5YTM0MGYwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRl
ZFNldC5oPgpAQCAtOTgsNiArOTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZGRVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImKTsKICAgICB2b2lkIHJlbW92
ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJiwgQVBJOjpDb250ZW50V29y
bGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpDb250ZW50
V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBhZGROZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRQb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGcmFtZUlu
Zm9EYXRhJiYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
RnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRp
ZFBvc3RNZXNzYWdlOjpBc3luY1JlcGx5JiYpOwogCiAgICAgdm9pZCBhZGRDb250ZW50V29ybGQo
QVBJOjpDb250ZW50V29ybGQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4ZDIwMGExZTZlOS4uZmQ5NWYyZjVkMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yNCw1ICsyNCw1IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkgewotRGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2Fu
dHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSAtPiAo
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdFZhbHVlLCBTdHJpbmcgZXJyb3JNZXNzYWdlKSBBc3lu
YwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmU0N2I2ZTkyZjAuLmUzZGI1NDA5YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3Myw2ICs5NzMsNyBAQAogCQk1MTA1
MjM3NDFDNzNEMzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDUyMzcz
MUM3M0QzN0IwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oICov
OyB9OwogCQk1MTA1MjM3NTFDNzNEMzhGMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDUyMzcyMUM3M0QzN0IwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTA2RDdDNDE4QkRCRTczMDAw
QUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRl
eHRNZW51Q29udGV4dERhdGEuaCAqLzsgfTsKKwkJNTEwOTA5OTcyM0RBQ0JGMjAwM0IxRTRDIC8q
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDkwOTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OwogCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVz
b3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEFGRkI4MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oICovOyB9
OwogCQk1MTBGNTkxMDFEREUyOTY5MDA0MTJGRjUgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0M0IyNUUx
RERDREZEMTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBGNTkxMTFEREUyOTcwMDA0
MTJGRjUgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQzk3OTFEREQ3ODU0MDAzMkNBRDMgLyogX1dLTGlu
a0ljb25QYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTM1OTcsNiArMzU5OCw3IEBACiAJCTUxMDVCMEYzMTYzMDg3MkUwMEUyNzcw
OSAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDZEN0JG
MThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyog
Q29udGV4dE1lbnVDb250ZXh0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb250ZXh0TWVudUNvbnRleHREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMDkwOTk0MjNENDFGMTMwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQUZGQjcx
NjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyLmNwcDsgcGF0aCA9IE5ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTBBRkZCODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkZXIuaDsgcGF0aCA9IE5ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEw
QUZGQ0UxNjU0MkNCRDAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcz
OTIsNiArNzM5NCw3IEBACiAJCQkJMUE3RTM3NzcxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0
TWVzc2FnZS5oICovLAogCQkJCTFBN0UzNzc2MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1l
c3NhZ2UubW0gKi8sCiAJCQkJMUE3RTM3NzQxOEU0QTMzQTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaCAqLywKKwkJCQk1MTA5MDk5NDIzRDQxRjEzMDAzQjFFNEMgLyogV0tTY3Jp
cHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oICovLAogCQkJCTdDQzk5QTM1MThFRjdDQkMwMDQ4
QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oICovLAogCQkJCTUxQ0QxQzVGMUIzNEI5
QzkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luLmggKi8sCiAJCQkJNTFDRDFDNjAxQjM0QjlD
OTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gKi8sCkBAIC0xMTMxOCw2ICsxMTMyMSw3
IEBACiAJCQkJQkNFRTdBRDExMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwRTQyNTE2OEI3QTI4MDA1N0U2NkEgLyogV2Vi
UHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUUwOTM0MTg4NjFEMzgw
MEQyREM0OSAvKiBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxMDkwOTk3MjNEQUNCRjIwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5RDEyQTg4Mzg4MDA2Mjk1MzAgLyogV2Vi
UHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjFDQ0NBNjIzMTQ4NUFBMDBC
NjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCmluZGV4
IDY5MjQ0M2ViODAyLi4xNTg0NDAzMjAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURPTVdpbmRvdy5jcHAKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0RPTUV4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNs
dWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01HbG9i
YWxPYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NUHJvbWlzZURlZmVycmVkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmg+CkBAIC0xMDY5LDggKzEwNzEsMTcgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV9k
b21fd2luZG93X3dlYmtpdF9tZXNzYWdlX2hhbmRsZXJzX3Bvc3RfbWVzc2FnZShXZWJLaXRET01E
T00KICAgICBhdXRvIGhhbmRsZXIgPSB3ZWJraXROYW1lc3BhY2UtPm1lc3NhZ2VIYW5kbGVycygp
LT5uYW1lZEl0ZW0oV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIFN0cmluZzo6ZnJv
bVVURjgoaGFuZGxlck5hbWUpKTsKICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICAKKyAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gKChXZWJDb3Jl
OjpDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciopZG9tV2luZG93KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuIEZBTFNFOworICAgIAorICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxP
YmplY3QoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOwog
Ci0gICAgYXV0byByZXN1bHQgPSBoYW5kbGVyLT5wb3N0TWVzc2FnZShXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UpKSk7CisgICAg
YXV0byBwcm9taXNlID0gV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoKmdsb2JhbE9i
amVjdCk7CisgICAgYXV0byByZXN1bHQgPSBoYW5kbGVyLT5wb3N0TWVzc2FnZShXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UpKSwg
YWRvcHRSZWYoKihwcm9taXNlLmxlYWtSZWYoKSkpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5jcHAKaW5kZXggZjVjODdjMDJiZDYuLjA0MjlkYWQ2YWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgLy8gV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcgotICAgIHZvaWQg
ZGlkUG9zdE1lc3NhZ2UoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyLCBXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlKSBvdmVycmlkZQorICAgIHZvaWQgZGlk
UG9zdE1lc3NhZ2UoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyLCBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBoYW5kbGVyLmZy
YW1lKCk7CiAgICAgICAgIGlmICghZnJhbWUpCkBAIC0yNjgsNyArMjY4LDE3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2Vi
UGFnZS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJvbGxlci0+
aWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZXNzYWdlUmVwbHlIYW5kbGVyID0gW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdWx0VmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7Cisg
ICAgICAgICAgICBpZiAoIWVycm9yTWVzc2FnZS5pc051bGwoKSkgeworICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIHZhbHVlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHJlc3VsdFZhbHVlLnZlY3Rv
cigpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHZhbHVlLnB0cigpLCB7IH0pOwor
ICAgICAgICB9OworCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlk
ZW50aWZpZXIoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZl
cmVuY2UodmFsdWUtPmRhdGEoKSkpLCBXVEZNb3ZlKG1lc3NhZ2VSZXBseUhhbmRsZXIpLCBtX2Nv
bnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwpAQCAtMzA5LDcgKzMxOSwxOCBAQCB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKENv
bnRlbnRXb3JsZElkZW50aQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3RvcjxDb250
ZW50V29ybGRJZGVudGlmaWVyPiYgd29ybGRJZGVudGlmaWVycykKK3ZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKCkKK3sKKyNp
ZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorICAgIGlmIChtX3VzZXJNZXNzYWdlSGFu
ZGxlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3VzZXJNZXNzYWdlSGFu
ZGxlcnMuY2xlYXIoKTsKKyAgICBpbnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFVzZXJNZXNzYWdlSGFu
ZGxlckludmFsaWRhdGlvbkNsaWVudHMoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxk
cyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mIHdvcmxkSWRlbnRpZmllcnMp
CiB7CiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICAgICBib29sIHVzZXJNZXNz
YWdlSGFuZGxlcnNDaGFuZ2VkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgK
aW5kZXggZTkwMjYwNzdlOTMuLmNlOTBhOWQ5M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5oCkBAIC0xMDAsNyArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mKTsKIAog
ICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKENvbnRlbnRXb3JsZElkZW50
aWZpZXIsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlbW92ZUFs
bFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50
aWZpZXI+Jik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzRm9y
V29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYpOworICAgIHZvaWQg
cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycygpOwogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKICAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJp
bmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMu
aW4KaW5kZXggNWFkY2QwODBlOTEuLjJhYjIzMjRiYjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3LDggQEAgbWVzc2FnZXMg
LT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIHsKIAogICAgIEFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcnMoVmVjdG9yPHN0cnVjdCBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0
YT4gc2NyaXB0TWVzc2FnZUhhbmRsZXJzKTsKICAgICBSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhh
bmRsZXIoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllciwgdWlu
dDY0X3QgaWRlbnRpZmllcik7Ci0gICAgUmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
cyhWZWN0b3I8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXJz
KTsKKyAgICBSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzRm9yV29ybGRzKFZlY3Rv
cjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcnMpOworICAg
IFJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoKTsKIAogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCiAgICAgQWRkQ29udGVudFJ1bGVMaXN0cyhWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50
RmlsdGVycyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNWI4YzQyNWRiZWMuLmZjZjc2Yzc0OGJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDQtMTggIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1l
c3NhZ2VIYW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9t
aXNlLgorICAgICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKHdl
YlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KToK
KyAgICAgICAgKC1bQXN5bmNTY3JpcHRNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xs
ZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6cmVwbHlIYW5kbGVyOl0pOgorCiAyMDIwLTA0LTE3
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEVu
YWJsZSBzZXJ2aWNlIHdvcmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCmluZGV4IDRhYjk5NDMyYTg3Li42N2JmYmQ1M2M5NiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xs
ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIubW0KQEAgLTMwLDcgKzMwLDEwIEBACiAjaW1wb3J0ICJUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Njcmlw
dE1lc3NhZ2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyU2NyaXB0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2Vy
U2NyaXB0UHJpdmF0ZS5oPgpAQCAtNzQsNiArNzcsOSBAQCBAZW5kCiAKIFRFU1QoV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQogeworICAgIHNj
cmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
CisKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1l
OkAidGVzdEhhbmRsZXIiXTsKQEAgLTk1LDYgKzEwMSw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENv
bnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQogCiBURVNUKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVkV29y
bGQpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiB3b3Js
ZCA9IFtfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKIAog
ICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tT
Y3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwpAQCAtMTQ0LDYgKzE1Myw5IEBAIFRF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0
SXNvbGF0ZWRXb3JsZCkKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVz
c2FnZUhhbmRsZXJCYXNpY1JlbW92ZSkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOwor
ICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNjcmlw
dE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJvbGxlcj4gdXNlckNvbnRlbnRD
b250cm9sbGVyID0gW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXTsKQEAgLTE4
OCw2ICsyMDAsOCBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdl
SGFuZGxlckJhc2ljUmVtb3ZlKQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3Jp
cHRNZXNzYWdlSGFuZGxlckNhbGxSZW1vdmVkSGFuZGxlcikKIHsKKyAgICByZWNlaXZlZFNjcmlw
dE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4g
aGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5Q
dHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IFtjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC0yMDUsMjIgKzIxOSwyMyBAQCBU
RVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckNhbGxSZW1v
dmVkSGFuZGxlcikKIAogICAgIFt1c2VyQ29udGVudENvbnRyb2xsZXIgcmVtb3ZlU2NyaXB0TWVz
c2FnZUhhbmRsZXJGb3JOYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CiAKKyAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOwogICAgIC8vIFRlc3QgdGhhdCB3ZSB0aHJvdyBhbiBleGNlcHRpb24g
aWYgeW91IHRyeSB0byB1c2UgYSBtZXNzYWdlIGhhbmRsZXIgdGhhdCBoYXMgYmVlbiByZW1vdmVk
LgotICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDoKLSAgICAgICAgQCJ0cnkgeyIKLSAg
ICAgICAgICIgICAgaGFuZGxlclRvUmVtb3ZlLnBvc3RNZXNzYWdlKCdGQUlMJyk7IgotICAgICAg
ICAgIn0gY2F0Y2ggKGUpIHsiCi0gICAgICAgICAiICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLmhhbmRsZXJUb1Bvc3QucG9zdE1lc3NhZ2UoJ1BBU1MnKTsiCi0gICAgICAgICAifSIg
Y29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0
OkAicmV0dXJuIGhhbmRsZXJUb1JlbW92ZS5wb3N0TWVzc2FnZSgnRkFJTCcpIiBhcmd1bWVudHM6
bmlsIGluQ29udGVudFdvcmxkOltXS0NvbnRlbnRXb3JsZCBwYWdlV29ybGRdIGNvbXBsZXRpb25I
YW5kbGVyOl4gKGlkIHZhbHVlLCBOU0Vycm9yICogZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwodmFsdWUpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBFWFBF
Q1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIkludmFsaWRBY2Nl
c3NFcnJvciJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CiAKLSAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxz
ZTsKLQotICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbc2NyaXB0TWVz
c2FnZXNbMF0gYm9keV0pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmll
d0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbFRlc3QoV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKIHsKKyAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFu
ZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uQ29weSA9IGFk
b3B0TlMoW2NvbmZpZ3VyYXRpb24gY29weV0pOwogICAgIFtjb25maWd1cmF0aW9uQ29weSBzZXRV
c2VyQ29udGVudENvbnRyb2xsZXI6W1tbV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXV07CkBAIC0yMzYsNiArMjUxLDkgQEAgc3RhdGljIFJldGFpblB0cjxX
S1dlYlZpZXc+IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJl
bW92YWwKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRs
ZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsKQogeworICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7
CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPF9XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbj4gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9u
IHNldFByb2Nlc3NQb29sOltbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOwpAQCAt
MjYyLDYgKzI4MCw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbCkKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkgLy8gRklYTUU6IGhhbmdzIGluIHRoZSBpT1Mgc2ltdWxhdG9yCiBURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQogeworICAg
IHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFs
c2U7CisKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9w
dE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJD
b250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBu
YW1lOkAidGVzdEhhbmRsZXIiXTsKQEAgLTI5Myw2ICszMTQsOSBAQCBURVNUKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQogCiBURVNU
KFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlclJlcGxhY2VXaXRo
U2FtZU5hbWUpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRh
aW5QdHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IFtj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl07CkBAIC04MzMsNiArODU3LDkgQEAg
c3RhdGljIHZvaWQgY29tcGFyZU1lc3NhZ2VzKFZlY3Rvcjxjb25zdCBjaGFyKj4mJiBleHBlY3Rl
ZE1lc3NhZ2VzKQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBJbmplY3RVc2VyU2Ny
aXB0SW1tZWRpYXRlbHkpCiB7CisgICAgc2NyaXB0TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNl
aXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMo
W1tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gc3RhcnRBbGxG
cmFtZXMgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdzdGFy
dCBhbGwnKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVu
dFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKICAgICBhdXRvIGVuZE1haW5GcmFtZU9ubHkg
PSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIndpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlbmQgbWFpbicp
IiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZv
ck1haW5GcmFtZU9ubHk6WUVTXSk7CkBAIC05MDIsMyArOTI5LDI3NCBAQCBURVNUKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQogICAgIEVYUEVDVF9XS19T
VFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndhaXRlZCBmb3Igbm90aWZpY2F0aW9uIik7
CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAiZG9jdW1lbnQg
cGFyc2luZyBlbmRlZCIpOwogfQorCitAaW50ZXJmYWNlIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRs
ZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4KK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIKKworLSAodm9pZCl1c2Vy
Q29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRD
b250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNz
YWdlIHJlcGx5SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TU3RyaW5nICplcnJvck1lc3NhZ2UpKXJl
cGx5SGFuZGxlcgoreworICAgIGlmIChbbWVzc2FnZS5uYW1lIGlzRXF1YWxUb1N0cmluZzpAIm90
aGVyV29ybGRIYW5kbGVyIl0pCisgICAgICAgIEVYUEVDVF9UUlVFKG1lc3NhZ2Uud29ybGQgIT0g
bmlsKTsKKyAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKSB7CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIkZ1bGZp
bGwiXSkgeworICAgICAgICAgICAgcmVwbHlIYW5kbGVyKEAiRnVsZmlsbGVkISIsIG5pbCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkg
aXNFcXVhbFRvU3RyaW5nOkAiUmVqZWN0Il0pIHsKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihu
aWwsIEAiUmVqZWN0ZWQhIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiVW5kZWZpbmVkIl0pIHsKKyAg
ICAgICAgICAgIHJlcGx5SGFuZGxlcihuaWwsIG5pbCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiRG8g
bm90aGluZyJdKSB7CisgICAgICAgICAgICAvLyBEcm9wIHRoZSByZXBseSBoYW5kbGVyIHdpdGhv
dXQgcmVzcG9uZGluZyB0byBzZWUgd2hhdCBoYXBwZW5zCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiSW52
YWxpZCByZXBseSJdKSB7CisgICAgICAgICAgICByZXBseUhhbmRsZXIoW1tbTlNEYXRhIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV0sIG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBBbGwgb3RoZXIgaW5wdXRzIHNob3VsZCBqdXN0IGJlIHJvdW5k
IHRyaXBwZWQgYmFjayB0byB0aGUgbWVzc2FnZSBoYW5kbGVyCisgICAgcmVwbHlIYW5kbGVyKG1l
c3NhZ2UuYm9keSwgbmlsKTsKK30KKworQGVuZAorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9s
bGVyLCBNZXNzYWdlSGFuZGxlckFQSSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0FzeW5jU2NyaXB0
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVy
LmdldCgpIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgbmFtZTpAInRlc3RI
YW5kbGVyMSJdOworCisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBAdHJ5IHsK
KyAgICAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250
ZW50V29ybGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjEiXTsKKyAgICB9IEBjYXRjaCAo
TlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgeworICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwor
ICAgIH0KKworICAgIEVYUEVDVF9UUlVFKGhhZEV4Y2VwdGlvbik7CisgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVw
bHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVu
dFdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjIiXTsKKworICAgIGF1dG8gKndvcmxkID0gW1dLQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJvdGhlcldvcmxkIl07CisgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVw
bHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29ybGQgbmFtZTpAInRlc3RIYW5kbGVyMyJd
OworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOndvcmxkIG5h
bWU6QCJ0ZXN0SGFuZGxlcjQiXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNv
bnRlbnRXb3JsZDp3b3JsZCBuYW1lOkAidGVzdEhhbmRsZXI1Il07CisKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TU3RyaW5nICpmdW5jdGlvbkJvZHkgPSBA
InZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbaGFuZGxlcl0ucG9zdE1lc3Nh
Z2UoYXJnKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKworICAgIC8vIHBhZ2VXb3JsZCBpcyB3aGVy
ZSB0ZXN0aGFuZGxlcjEgbGl2ZXMKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1
bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXIxIiwgQCJh
cmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9O
dW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBUcnlp
bmcgdG8gZmluZCB0ZXN0SGFuZGxlcjEgaW4gdGhlIGRlZmF1bHRDbGllbnRXb3JsZCBzaG91bGQg
ZmFpbAorICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3Vt
ZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjEiLCBAImFyZyIgOiBAMSB9IGluQ29u
dGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBkZWZhdWx0Q2xpZW50V29ybGQgaXMgd2hlcmUg
dGVzdGhhbmRsZXIyIGxpdmVzCisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5j
dGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMiIsIEAiYXJn
IiA6IEAxIH0gaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNF
cXVhbFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAg
Ly8gQnV0IGlmIHdlIHJlbXZvZSBpdCwgaXQgc2hvdWxkIG5vIGxvbmdlciBsaXZlIHRoZXJlLCBh
bmQgdXNpbmcgaXQgc2hvdWxkIGNhdXNlIGFuIGVycm9yLgorICAgIFtbY29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpA
InRlc3RIYW5kbGVyMiIgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRX
b3JsZF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJn
dW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMiIsIEAiYXJnIiA6IEAxIH0gaW5D
b250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1Rf
TlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlmeSBoYW5kbGVycyAzLCA0LCBhbmQg
NSBhcmUgYWxsIGluIHRoZSBjdXN0b20gd29ybGQuCisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2
YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5k
bGVyMyIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRs
ZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFd
KTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9k
eSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEg
fSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgIH1dOworICAgIFt3
ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhh
bmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjUiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndv
cmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQg
aXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisg
ICAgLy8gUmVtb3ZlIDMgZnJvbSB0aGUgd3Jvbmcgd29ybGQsIHZlcmlmeSBpdCBpcyBzdGlsbCB0
aGVyZSBpbiB0aGUgY3VzdG9tIHdvcmxkLgorICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAInRlc3RIYW5k
bGVyMyIgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZF07Cisg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7
IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMyIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29y
bGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jl
c3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7
CisKKyAgICAvLyBSZW1vdmUgMyBmcm9tIHRoZSBjb3JyZWN0IHdvcmxkLCB2ZXJpZnkgaXQgaXMg
Z29uZSwgYnV0IDQgYW5kIDUgYXJlIHN0aWxsIHRoZXJlLgorICAgIFtbY29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpA
InRlc3RIYW5kbGVyMyIgY29udGVudFdvcmxkOndvcmxkXTsKKyAgICBbd2ViVmlldyBjYWxsQXN5
bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVz
dEhhbmRsZXIzIiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNU
X05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICB9XTsK
KyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6
QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRX
b3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgIH1dOworICAgIFt3ZWJWaWV3IGNhbGxB
c3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0
ZXN0SGFuZGxlcjUiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRp
b25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVt
YmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gUmVtb3Zl
ICJhbGwiIGluIHRoZSBjdXN0b20gd29ybGQsIHZlcmlmeSA0IGFuZCA1IGFyZSBub3cgZ29uZS4K
KyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVBbGxTY3Jp
cHRNZXNzYWdlSGFuZGxlcnNGcm9tQ29udGVudFdvcmxkOndvcmxkXTsKKyAgICBbd2ViVmlldyBj
YWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6
IEAidGVzdEhhbmRsZXI0IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAg
ICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1
bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI1IiwgQCJhcmciIDogQDEgfSBpbkNv
bnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNU
X05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7Cit9CisKK1RF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEFzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNp
Y1Bvc3QpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
YWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29y
bGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBOU1N0cmluZyAqZnVuY3Rp
b25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5k
bGVyLnBvc3RNZXNzYWdlKCdGdWxmaWxsJyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAgW3dl
YlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNv
bnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZd
IChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9y
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJG
dWxmaWxsZWQhIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgZnVu
Y3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RI
YW5kbGVyLnBvc3RNZXNzYWdlKCdSZWplY3QnKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKyAgICBb
d2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGlu
Q29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpb
Jl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVz
dWx0KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVF
KFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAiUmVqZWN0ZWQhIl0pOworICAg
ICAgICAKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9k
eSA9IEAidmFyIHAgPSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5w
b3N0TWVzc2FnZSgnVW5kZWZpbmVkJyk7IHZhciByZXN1bHQgPSBhd2FpdCBwOyByZXR1cm4gcmVz
dWx0ID09IHVuZGVmaW5lZCA/ICdZZXMnIDogJ05vJyI7CisgICAgW3dlYlZpZXcgY2FsbEFzeW5j
SmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0Nv
bnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJZZXMiXSk7CisKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAg
PSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgn
RG8gbm90aGluZycpOyBhd2FpdCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3lu
Y0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tD
b250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBF
WFBFQ1RfVFJVRSghIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlw
dGlvbl0gY29udGFpbnNTdHJpbmc6QCJkaWQgbm90IHJlc3BvbmQgdG8gdGhpcyBwb3N0TWVzc2Fn
ZSJdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgZnVuY3Rpb25C
b2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKCdJbnZhbGlkIHJlcGx5Jyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisgICAg
W3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOm5pbCBp
bkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6
WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJl
c3VsdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJV
RShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAInVuYWJsZSB0byBiZSBzZXJp
YWxpemVkIl0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJv
bGxlciwgV29ybGRMaWZldGltZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0FzeW5jU2NyaXB0TWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKworICAgIFJldGFpblB0cjxXS0NvbnRlbnRXb3Js
ZD4gd29ybGQgPSBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIm90aGVyV29ybGQiXTsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNz
YWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDp3b3JsZC5nZXQo
KSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIC8vIFNldCBhIHZh
cmlhYmxlIGluIHRoZSB3b3JsZC4KKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZm9vID0gJ2JhciciIGluQ29udGVudFdvcmxkOndv
cmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJv
cikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9
IGZhbHNlOworCisgICAgLy8gSGF2ZSB0aGUgbWVzc2FnZSBoYW5kbGVyIGJvdW5jZSBiYWNrIHRo
YXQgdmFsdWUuCisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShmb28pOyBhd2Fp
dCBwOyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rp
b25Cb2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6d29ybGQuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFs
VG9TdHJpbmc6QCJiYXIiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAg
Ly8gUmVtb3ZlIHRoZSBtZXNzYWdlIGhhbmRsZXIsIHdoaWNoIHVzZWQgdG8gY2F1c2UgdGhlIHdv
cmxkIHRvIGJlIGRlc3Ryb3llZCBpbiB0aGUgd2ViIHByb2Nlc3MuCisgICAgLy8gQnV0IGJ5IGV2
YWx1YXRpbmcgSlMgbWFrZSBzdXJlIHRoZSB2YWx1ZSBpcyBzdGlsbCB0aGVyZS4KKyAgICBbW2Nv
bmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVBbGxTY3JpcHRNZXNzYWdl
SGFuZGxlcnNGcm9tQ29udGVudFdvcmxkOndvcmxkLmdldCgpXTsKKyAgICBbd2ViVmlldyBldmFs
dWF0ZUphdmFTY3JpcHQ6QCJmb28iIGluQ29udGVudFdvcmxkOndvcmxkLmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVh
bFRvU3RyaW5nOkAiYmFyIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396925</attachid>
            <date>2020-04-19 13:28:15 -0700</date>
            <delta_ts>2020-04-19 22:55:18 -0700</delta_ts>
            <desc>PFR</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>82438</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOGJmMTk3OGI1YjMuLjE1MWZlZDZhMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA0LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3
aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KTog
QWRkIGEgdmFyaWFudCBvZiBDb21wbGV0aW9uSGFuZGxlciB0aGF0IGFsbG93cyBmb3IgYSBGaW5h
bGl6ZXIgZnVuY3Rpb24KKyAgICAgICAgICB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIENvbXBs
ZXRpb24gZnVuY3Rpb24gaGFzbid0IGJlZW4gY2FsbGVkIGF0IGRlc3RydWN0aW9uIHRpbWUuCisK
IDIwMjAtMDQtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV1RGXSBNb3ZlIERhdGFSZWYuaCBmcm9tIFdlYkNvcmUgdG8gV1RGIHRvIHV0aWxpemUgaXQg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oIGIv
U291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAppbmRleCA5MzhiNDk2NmYwOC4uOGM5
OGRmZTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtNjksNiArNjksNDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gV3JhcHMgYSBGdW5jdGlvbiB0byBtYWtlIHN1
cmUgaXQgaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4KKy8vIElmIHRoZSBDb21wbGV0aW9uSGFuZGxl
cldpdGhGaW5hbGl6ZXIgaXMgZGVzdHJveWVkIGFuZCB0aGUgZnVuY3Rpb24gaGFzbid0IHlldCBi
ZWVuIGNhbGxlZCwKKy8vIHRoZSBmaW5hbGl6ZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlv
biBhcyBpdHMgYXJndW1lbnQuCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhh
bmRsZXJXaXRoRmluYWxpemVyOwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4g
SW4+CitjbGFzcyBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8T3V0KEluLi4uKT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29t
cGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlLCBGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPE91dChJbi4uLik+Jik+JiYgZmluYWxpemVyKQorICAgICAgICA6
IG1fZnVuY3Rpb24oV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgICwgbV9maW5hbGl6ZXIoV1RG
TW92ZShmaW5hbGl6ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXIoQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyJiYpID0gZGVmYXVsdDsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXImIG9wZXJhdG9yPShDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25IYW5k
bGVyV2l0aEZpbmFsaXplcigpCisgICAgeworICAgICAgICBpZiAoIW1fZnVuY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9maW5hbGl6ZXIobV9mdW5jdGlvbik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5j
dGlvbjsgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBB
U1NFUlQobV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZCA9PSBpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxl
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Z1bmN0aW9uLCBudWxscHRyKShzdGQ6OmZvcndhcmQ8SW4+KGluKS4u
Lik7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjxPdXQoSW4uLi4pPiYpPiBtX2ZpbmFsaXpl
cjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRo
cmVhZCB7IGlzTWFpblRocmVhZCgpIH07CisjZW5kaWYKK307CisKIG5hbWVzcGFjZSBEZXRhaWwg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgpAQCAtMTE1LDMgKzE1
OCw0IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6Q29tcGxldGlvbkhhbmRsZXI7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlOwordXNpbmcgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcldpdGhGaW5hbGl6ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q1YjNlOTVhNDYuLmUzZmRkMGQz
ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDQtMTkgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgorICAg
ICAgICByZGFyOi8vcHJvYmxlbS81NzI0MzQ5MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICBVcGRh
dGVkIGZvciBtb3ZpbmcgYW4gI2luY2x1ZGUgaW50byBpbXBsZW1lbnRhdGlvbiBmaWxlczoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaDogICAgCisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAg
ICAgIAorICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UpOiBSZXR1cm4gYSBwcm9taXNl
IHRvIGJlIGZ1bGZpbGxlZCBieSB0aGUgQVBJIGNsaWVudC4KKyAgICAgICAgKiBwYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlkbDoK
KyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDoKKwogMjAyMC0w
NC0xOCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZHVjZSBwYXJh
bWV0ZXIgbGlzdCBvZiB0aGUgRnJhbWVMb2FkUmVxdWVzdCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCmluZGV4
IGY1NWQ5ZDE5N2MyLi5mNDcwMGY5Y2UxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
KyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNs
dWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1l
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
RGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVy
cmVkLmgKaW5kZXggM2FiYjZlNjY1ZDYuLjdlZDg3MmJjNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAgLTI1LDcgKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9N
R3VhcmRlZE9iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggNGUyMWUwMzZhNjAuLjY5NWQ0ZWU1MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCmluZGV4IDMyYTRhNGZhYjFhLi5mYWMwNjcxMjk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgi
CisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3BwCmluZGV4IGIwN2RiOGI2YjE0Li5jZjgy
YWYzYjY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcApA
QCAtMjksNyArMjksOSBAQAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAKICNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSlNWYWx1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE0ICs0MywyOSBA
QCBVc2VyTWVzc2FnZUhhbmRsZXI6OlVzZXJNZXNzYWdlSGFuZGxlcihGcmFtZSYgZnJhbWUsIFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0bwogCiBVc2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVz
c2FnZUhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdl
SGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1
ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFVzZXJNZXNzYWdlSGFuZGxlcjo6cG9zdE1lc3NhZ2UoUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQogewogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVzY3JpcHRvciBoYXMg
YmVlbiByZW1vdmVkLiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaGFz
CiAgICAgLy8gcmVtb3ZlZCB0aGUgbmFtZWQgbWVzc2FnZSBoYW5kbGVyIGF0IHRoZSBXZWJLaXQy
IEFQSSBsZXZlbC4KLSAgICBpZiAoIW1fZGVzY3JpcHRvcikKKyAgICBpZiAoIW1fZGVzY3JpcHRv
cikgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vy
cm9yIH0pOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07
CisgICAgfQogCi0gICAgbV9kZXNjcmlwdG9yLT5kaWRQb3N0TWVzc2FnZSgqdGhpcywgdmFsdWUu
Z2V0KCkpOworICAgIG1fZGVzY3JpcHRvci0+ZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdl
dCgpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
cmVzdWx0LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSBwcm9taXNlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxP
YmplY3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2Uu
aXNOdWxsKCkpIHsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdDxJRExBbnk+KEpTQzo6Y3JlYXRlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBlcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEFueT4ocmVzdWx0LT5kZXNlcmlhbGl6ZSgqZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QpKTsKKyAgICB9KTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCA5NGFmZmI1MGM5Yy4uOTEyMjc5YWZjYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzMsNiArMzMsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlZmVycmVkUHJvbWlzZTsKKwogY2xhc3Mg
VXNlck1lc3NhZ2VIYW5kbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVy
PiwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxVc2VyTWVzc2FnZUhhbmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgdmlydHVhbCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICBFeGNlcHRp
b25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7
IH0KICAgICB2b2lkIGludmFsaWRhdGVEZXNjcmlwdG9yKCkgeyBtX2Rlc2NyaXB0b3IgPSBudWxs
cHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKaW5kZXgg
Nzc2YzE4MjRiNmEuLjMyZGIyOGVjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VVNF
Ul9NRVNTQUdFX0hBTkRMRVJTCiBdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgewotICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFs
dWUgbWVzc2FnZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPGFueT4gcG9zdE1l
c3NhZ2UoU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2UpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggNDVlMTU1
N2UwNmIuLmQyZjY1MzU3MjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IERPTVdyYXBwZXJXb3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRQb3N0TWVzc2FnZShVc2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0
VmFsdWUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdl
SGFuZGxlciYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgog
ICAgIEF0b21TdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA1NDk0OWMx
NzI1Yi4uY2U1NzlmN2M1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJFdmVudExvb3Au
aCIKICNpbmNsdWRlICJFeHRlbmRhYmxlRXZlbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VE
ZWZlcnJlZC5oIgogI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTU0
OTAyYWY3OTcuLjcyZjI3NGM4YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIwLTA0
LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tT
Y3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3aXRo
IGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIgYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIENoYW5nZSB3ZWJraXQubWVz
c2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSgpIHRvIHJldHVybiBhIHByb21pc2UgaW5z
dGVhZCBvZiB1bmRlZmluZWQuCisgICAgICAgIAorICAgICAgICBBbGxvdyBmb3IgdGhhdCBwcm9t
aXNlIHRvIGJlIHJlc29sdmVkIGJ5IGFuIGFzeW5jaHJvbm91cyByZXBseSBibG9jayB1cCBpbiB0
aGUgQVBJIGNsaWVudC4KKyAgICAgICAgVGhpcyBpcyBsaWtlIHRoZSBzcGlyaXR1YWwgb3Bwb3Np
dGUgdmVyc2lvbiBvZiBbV0tXZWJWaWV3IGNhbGxBc3luY0Z1bmN0aW9uOi4uLl0KKyAgICAgICAg
CisgICAgICAgIEFuZCB3aGlsZSB3ZSdyZSBhZGRpbmcgYSBuZXcgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlciB2YXJpYW50LCB3ZSdyZSBhZGRpbmcgaXQgc2FuZGJveGVkIGJ5IFdLQ29udGVudFdvcmxk
LgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29h
Lm1tOgorICAgICAgICAoQVBJOjp2YWxpZGF0ZU9iamVjdCk6CisgICAgICAgIChBUEk6OmNvcmVW
YWx1ZUZyb21OU09iamVjdCk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlRnJvbU5TT2JqZWN0KToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
Ojp3aXJlQnl0ZXNGcm9tTlNPYmplY3QpOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2UuaDogTm93IHRoYXQgc2NyaXB0IG1lc3NhZ2UgaGFu
ZGxlcnMgY2FuIGJlIHBlci13b3JsZCwgbWVzc2FnZXMKKyAgICAgICAgICBkZWNsYXJlIHdoaWNo
IHdvcmxkIHRoZXkgd2VyZSBwb3N0ZWQgZnJvbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLU2NyaXB0TWVzc2FnZS5tbToKKyAgICAgICAgKC1bV0tTY3JpcHRNZXNzYWdlIF9pbml0
V2l0aEJvZHk6d2ViVmlldzpmcmFtZUluZm86bmFtZTp3b3JsZDpdKToKKyAgICAgICAgKC1bV0tT
Y3JpcHRNZXNzYWdlIHdvcmxkXSk6CisgICAgICAgICgtW1dLU2NyaXB0TWVzc2FnZSBfaW5pdFdp
dGhCb2R5OndlYlZpZXc6ZnJhbWVJbmZvOm5hbWU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oOgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Lmg6IEFk
ZGVkLgorICAgICAgICAgIERlY2xhcmUgdGhlIG5ldyBwcm90b2NvbCBmb3IgYSBzY3JpcHQgbWVz
c2FnZSBoYW5kbGVyIHRoYXQgY2FuIHJlcGx5IHRvIG1lc3NhZ2VzIGFzeW5jaHJvbm91c2x5Lgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
bW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bmFtZTpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6Y29udGVudFdvcmxkOm5hbWU6XSk6CisgICAgICAg
ICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5OmNvbnRlbnRXb3JsZDpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJv
bGxlciByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6Y29udGVudFdvcmxkOl0pOgor
ICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVBbGxTY3JpcHRNZXNzYWdl
SGFuZGxlcnNGcm9tQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciByZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxlcnNdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5o
OgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9u
OndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZyYW1lOmluV29ybGQ6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IHNoYXJlZCBBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5k
bGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpk
aWRQb3N0TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01X
aW5kb3cuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9kb21fd2luZG93X3dlYmtpdF9tZXNzYWdl
X2hhbmRsZXJzX3Bvc3RfbWVzc2FnZSk6CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhh
bmRsZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1v
dmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzRm9yV29ybGRzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2Vz
LmluOgorCiAyMDIwLTA0LTE4ICBQYWJsbyBTYWF2ZWRyYSAgPHBzYWF2ZWRyYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdW1dQRV0gUmVwbGFjZSBldmlsIHN0cnRvaygpIGNhbGxzIHdpdGgg
ZnNjYW5mKCkgaW4gTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDFmNDNlNjNj
NjExLi42ZmU4NTc2YWMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18pCiAgICAgc3RhdGljIGlk
IGRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gd2lyZUJ5
dGVzRnJvbU5TT2JqZWN0KGlkKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gY3JlYXRlRnJvbU5TT2JqZWN0KGlkKTsKICNlbmRpZgogCiAgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS0+ZGF0YSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KaW5kZXgg
NjZlOGIyN2EwOWEuLjczMTBmNWUxZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNv
Y29hLm1tCkBAIC04MCwyMCArODAsNjQgQEAgaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNl
cmlhbGl6ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWQKICAgICBy
ZXR1cm4gdmFsdWUudG9PYmplY3Q7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlQnl0ZXNGcm9tTlNPYmplY3QoaWQgb2JqZWN0KQorc3Rh
dGljIGJvb2wgdmFsaWRhdGVPYmplY3QoaWQgYXJndW1lbnQpCiB7CisgICAgaWYgKFthcmd1bWVu
dCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNs
YXNzOltOU051bWJlciBjbGFzc11dIHx8IFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0RhdGUg
Y2xhc3NdXSB8fCBbYXJndW1lbnQgaXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNsYXNzXV0pCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKFthcmd1bWVudCBpc0tpbmRPZkNsYXNzOltOU0Fy
cmF5IGNsYXNzXV0pIHsKKyAgICAgICAgX19ibG9jayBCT09MIHZhbGlkID0gdHJ1ZTsKKworICAg
ICAgICBbYXJndW1lbnQgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihpZCBvYmplY3QsIE5T
VUludGVnZXIsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVPYmplY3Qo
b2JqZWN0KSkgeworICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgKnN0b3AgPSBZRVM7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworCisgICAgICAgIHJl
dHVybiB2YWxpZDsKKyAgICB9CisKKyAgICBpZiAoW2FyZ3VtZW50IGlzS2luZE9mQ2xhc3M6W05T
RGljdGlvbmFyeSBjbGFzc11dKSB7CisgICAgICAgIF9fYmxvY2sgYm9vbCB2YWxpZCA9IHRydWU7
CisKKyAgICAgICAgW2FyZ3VtZW50IGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpe
KGlkIGtleSwgaWQgdmFsdWUsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgICAgIGlmICghdmFsaWRh
dGVPYmplY3Qoa2V5KSB8fCAhdmFsaWRhdGVPYmplY3QodmFsdWUpKSB7CisgICAgICAgICAgICAg
ICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfV07CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGNvcmVWYWx1ZUZyb21OU09iamVjdChpZCBvYmplY3QpCit7CisgICAgaWYgKG9i
amVjdCAmJiAhdmFsaWRhdGVPYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEpTQ29udGV4dCogY29udGV4
dCA9IHNoYXJlZENvbnRleHQoKS5lbnN1cmVDb250ZXh0KCk7CiAgICAgSlNWYWx1ZSAqdmFsdWUg
PSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6b2JqZWN0IGluQ29udGV4dDpjb250ZXh0XTsKICAg
ICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0gdG9KUyhbY29udGV4dCBKU0ds
b2JhbENvbnRleHRSZWZdKTsKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdCk7CiAKLSAgICBhdXRvIGNvcmVWYWx1ZSA9IFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpnbG9iYWxPYmplY3QsIHRvSlMo
Z2xvYmFsT2JqZWN0LCBbdmFsdWUgSlNWYWx1ZVJlZl0pKTsKLSAgICByZXR1cm4gY29yZVZhbHVl
LT50b1dpcmVCeXRlcygpOworICAgIHJldHVybiBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZSgqZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFs
dWVSZWZdKSk7Cit9CisKK1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KGlkIG9iamVjdCkKK3sKKyAgICBhdXRvIGNv
cmVWYWx1ZSA9IGNvcmVWYWx1ZUZyb21OU09iamVjdChvYmplY3QpOworICAgIGlmICghY29yZVZh
bHVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3JlYXRlKGNvcmVWYWx1
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogfSAvLyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2UuaAppbmRleCA5N2JlYjZlODEz
OS4uNjNhMWU5ZWEzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tTY3JpcHRNZXNzYWdlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KIAorQGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLRnJhbWVJbmZv
OwogQGNsYXNzIFdLV2ViVmlldzsKIApAQCAtNTQsNiArNTUsOSBAQCBXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKICAqLwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKIAorLyohIEBhYnN0cmFjdCBUaGUgY29udGVu
dCB3b3JsZCBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHdhcyBzZW50LiAqLworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBXS0NvbnRlbnRXb3JsZCAqd29ybGQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NV
TUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tTY3JpcHRNZXNzYWdlLm1tCmluZGV4IGM5M2U3YTk5ZGFiLi5iZDVkZDQ2YjljMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2Fn
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNz
YWdlLm1tCkBAIC0zNSw5ICszNSwxMCBAQCBAaW1wbGVtZW50YXRpb24gV0tTY3JpcHRNZXNzYWdl
IHsKICAgICBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IF93ZWJWaWV3OwogICAgIFJldGFpblB0cjxX
S0ZyYW1lSW5mbz4gX2ZyYW1lSW5mbzsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9uYW1lOwor
ICAgIFJldGFpblB0cjxXS0NvbnRlbnRXb3JsZD4gX3dvcmxkOwogfQogCi0tIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoQm9keTooaWQpYm9keSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZy
YW1lSW5mbzooV0tGcmFtZUluZm8gKilmcmFtZUluZm8gbmFtZTooTlNTdHJpbmcgKiluYW1lCist
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQm9keTooaWQpYm9keSB3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGZyYW1lSW5mbzooV0tGcmFtZUluZm8gKilmcmFtZUluZm8gbmFtZTooTlNTdHJp
bmcgKiluYW1lIHdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCiB7CiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00Niw2ICs0Nyw3IEBA
IC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhCb2R5OihpZClib2R5IHdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZnJhbWVJbmZvOihXCiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogICAgIF9m
cmFtZUluZm8gPSBmcmFtZUluZm87CiAgICAgX25hbWUgPSBhZG9wdE5TKFtuYW1lIGNvcHldKTsK
KyAgICBfd29ybGQgPSB3b3JsZDsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtNzAsNCArNzIs
OSBAQCAtIChOU1N0cmluZyAqKW5hbWUKICAgICByZXR1cm4gX25hbWUuZ2V0KCk7CiB9CiAKKy0g
KFdLQ29udGVudFdvcmxkICopd29ybGQKK3sKKyAgICByZXR1cm4gX3dvcmxkLmdldCgpOworfQor
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODIzZGYxZThiNTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlSGFuZGxl
cldpdGhSZXBseS5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJL
aXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xhc3MgV0tTY3JpcHRNZXNzYWdlOworQGNs
YXNzIFdLVXNlckNvbnRlbnRDb250cm9sbGVyOworCisvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRv
ICB0aGUgV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseSBwcm90b2NvbCBwcm92aWRlcyBh
CittZXRob2QgZm9yIHJlY2VpdmluZyBtZXNzYWdlcyBmcm9tIEphdmFTY3JpcHQgcnVubmluZyBp
biBhIHdlYnBhZ2UgYW5kIHJlcGx5aW5nIHRvIHRoZW0gYXN5bmNocm9ub3VzbHkuCisqLworQHBy
b3RvY29sIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkgPE5TT2JqZWN0PgorCisvKiEg
QGFic3RyYWN0IEludm9rZWQgd2hlbiBhIHNjcmlwdCBtZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20g
YSB3ZWJwYWdlLgorIEBwYXJhbSB1c2VyQ29udGVudENvbnRyb2xsZXIgVGhlIHVzZXIgY29udGVu
dCBjb250cm9sbGVyIGludm9raW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QuCisgQHBhcmFtIG1lc3Nh
Z2UgVGhlIHNjcmlwdCBtZXNzYWdlIHJlY2VpdmVkLgorIEBwYXJhbSByZXBseUhhbmRsZXIgQSBi
bG9jayB0byBiZSBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHByb2Nlc3NpbmcgdGhlIG1lc3Nh
Z2UuCisgQGRpc2N1c3Npb24gV2hlbiB0aGUgSmF2YVNjcmlwdCBydW5uaW5nIGluIHlvdXIgYXBw
bGljYXRpb24ncyB3ZWIgY29udGVudCBjYWxsZWQgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxl
cnMuPG5hbWU+LnBvc3RNZXNzYWdlKDxtZXNzYWdlQm9keT4pLAorIGEgSmF2YVNjcmlwdCBQcm9t
aXNlIG9iamVjdCB3YXMgcmV0dXJuZWQuIFRoZSB2YWx1ZXMgcGFzc2VkIHRvIHRoZSByZXBseUhh
bmRsZXIgYXJlIHVzZWQgdG8gcmVzb2x2ZSB0aGF0IFByb21pc2UuCisKKyBQYXNzaW5nIGEgbm9u
LW5pbCBOU1N0cmluZyB2YWx1ZSB0byB0aGUgc2Vjb25kIHBhcmFtZXRlciBvZiB0aGUgcmVwbHlI
YW5kbGVyIHNpZ25hbHMgYW4gZXJyb3IuCisgTm8gbWF0dGVyIHdoYXQgdmFsdWUgeW91IHBhc3Mg
dG8gdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgcmVwbHlIYW5kbGVyLAorIHRoZSBQcm9taXNl
IHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCBhIEphdmFTY3JpcHQgZXJyb3Igb2JqZWN0IHdob3NlIG1l
c3NhZ2UgcHJvcGVydHkgaXMgc2V0IHRvIHRoYXQgZXJyb3JNZXNzYWdlIHN0cmluZy4KKworIElm
IHRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHRoZSByZXBseUhhbmRsZXIgaXMgbmlsLCB0aGUgZmly
c3QgYXJndW1lbnQgd2lsbCBiZSBzZXJpYWxpemVkIGludG8gaXRzIEphdmFTY3JpcHQgZXF1aXZh
bGVudCBhbmQgdGhlIFByb21pc2Ugd2lsbCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgcmVzdWx0aW5n
IHZhbHVlLgorIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBuaWwgdGhlbiB0aGUgUHJvbWlzZSB3
aWxsIGJlIHJlc29sdmVkIHdpdGggYSBKYXZhU2NyaXB0IHZhbHVlIG9mICJ1bmRlZmluZWQiCisK
KyBBbGxvd2VkIG5vbi1uaWwgcmVzdWx0IHR5cGVzIGFyZToKKyBOU051bWJlciwgTlNOdWxsLCBO
U1N0cmluZywgTlNEYXRlLCBOU0FycmF5LCBhbmQgTlNEaWN0aW9uYXJ5LgorIEFueSBOU0FycmF5
IG9yIE5TRGljdGlvbmFyeSBjb250YWluZXJzIGNhbiBvbmx5IGNvbnRhaW4gb2JqZWN0cyBvZiB0
aG9zZSB0eXBlcy4KKworIFRoZSByZXBseUhhbmRsZXIgY2FuIGJlIGNhbGxlZCBhdCBtb3N0IG9u
Y2UuCisgSWYgdGhlIHJlcGx5SGFuZGxlciBpcyBkZWFsbG9jYXRlZCBiZWZvcmUgaXQgaXMgY2Fs
bGVkLCB0aGUgUHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGggYSBKYXZhU2NyaXB0IEVycm9y
IG9iamVjdAorIHdpdGggYW4gYXBwcm9wcmlhdGUgbWVzc2FnZSBpbmRpY2F0aW5nIHRoZSBoYW5k
bGVyIHdhcyBuZXZlciBjYWxsZWQuCisKKyBFeGFtcGxlOgorCisgV2l0aCBhIFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXJXaXRoUmVwbHkgb2JqZWN0IGluc3RhbGxlZCB3aXRoIHRoZSBuYW1lICJ0ZXN0
SGFuZGxlciIsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgSmF2YVNjcmlwdDoKKyBAdGV4dGJsb2Nr
CisgICAgIHZhciBwcm9taXNlID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoIkZ1bGZpbGwgbWUgd2l0aCA0MiIpOworICAgICBhd2FpdCBwOwor
ICAgICByZXR1cm4gcDsKKyBAL3RleHRibG9jaworCisgQW5kIGNvbnNpZGVyIHRoZSBmb2xsb3dp
bmcgV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseSBpbXBsZW1lbnRhdGlvbjoKKyBAdGV4
dGJsb2NrCisgICAgIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50
Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2Fn
ZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZSByZXBseUhhbmRsZXI6KHZvaWQgKF4pKGlkLCBO
U1N0cmluZyAqKSlyZXBseUhhbmRsZXIKKyAgICAgeworICAgICAgICBpZiAoW21lc3NhZ2UuYm9k
eSBpc0VxdWFsOkAiRnVsZmlsbCBtZSB3aXRoIDQyIl0pCisgICAgICAgICAgICByZXBseUhhbmRs
ZXIoQDQyLCBuaWwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXBseUhhbmRsZXIobmls
LCBAIlVuZXhwZWN0ZWQgbWVzc2FnZSByZWNlaXZlZCIpOworICAgICB9CisgQC90ZXh0YmxvY2sK
KworIEluIHRoaXMgZXhhbXBsZToKKyAgIC0gVGhlIEphdmFTY3JpcHQgY29kZSBzZW5kcyBhIG1l
c3NhZ2UgdG8geW91ciBhcHBsaWNhdGlvbiBjb2RlIHdpdGggdGhlIGJvZHkgQCJGdWxmaWxsIG1l
IHdpdGggNDIiCisgICAtIEphdmFTY3JpcHQgZXhlY3V0aW9uIGlzIHN1c3BlbmRlZCB3aGlsZSB3
YWl0aW5nIGZvciB0aGUgcmVzdWx0aW5nIHByb21pc2UgdG8gcmVzb2x2ZS4KKyAgIC0gWW91ciBt
ZXNzYWdlIGhhbmRsZXIgaXMgaW52b2tlZCB3aXRoIHRoYXQgbWVzc2FnZSBhbmQgYSBibG9jayB0
byBjYWxsIHdpdGggdGhlIHJlcGx5IHdoZW4gcmVhZHkuCisgICAtIFlvdXIgbWVzc2FnZSBoYW5k
bGVyIHNlbmRzIHRoZSB2YWx1ZSBANDIgYXMgYSByZXBseS4KKyAgIC0gVGhlIEphdmFTY3JpcHQg
cHJvbWlzZSBpcyBmdWxmaWxsZWQgd2l0aCB0aGUgdmFsdWUgNDIuCisgICAtIEphdmFTY3JpcHQg
ZXhlY3V0aW9uIGNvbnRpbnVlcyBhbmQgdGhlIHZhbHVlIDQyIGlzIHJldHVybmVkLgorICovCist
ICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1
c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVz
c2FnZSAqKW1lc3NhZ2UgcmVwbHlIYW5kbGVyOih2b2lkICheKShpZCByZXBseSwgTlNTdHJpbmcg
KmVycm9yTWVzc2FnZSkpcmVwbHlIYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVz
c2FnZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3Jp
cHRNZXNzYWdlSW50ZXJuYWwuaAppbmRleCAyNjM3ODgwMDU2Ny4uODliYzUxOGRmZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Njcmlw
dE1lc3NhZ2VJbnRlcm5hbC5oCkBAIC0yNyw2ICsyNyw2IEBACiAKIEBpbnRlcmZhY2UgV0tTY3Jp
cHRNZXNzYWdlICgpCiAKLS0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhCb2R5OihpZClib2R5IHdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWVJbmZvOihXS0ZyYW1lSW5mbyAqKWZyYW1l
SW5mbyBuYW1lOihOU1N0cmluZyAqKW5hbWU7CistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQm9k
eTooaWQpYm9keSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lSW5mbzooV0tGcmFt
ZUluZm8gKilmcmFtZUluZm8gbmFtZTooTlNTdHJpbmcgKiluYW1lIHdvcmxkOihXS0NvbnRlbnRX
b3JsZCAqKXdvcmxkOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDgyOWEwNTcz
MzdkLi5mNDNmMmU2MmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTMwLDggKzMwLDEw
IEBACiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgV0tDb250ZW50UnVsZUxpc3Q7
CitAY2xhc3MgV0tDb250ZW50V29ybGQ7CiBAY2xhc3MgV0tVc2VyU2NyaXB0OwogQHByb3RvY29s
IFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI7CitAcHJvdG9jb2wgV0tTY3JpcHRNZXNzYWdlSGFuZGxl
cldpdGhSZXBseTsKIAogLyohIEEgV0tVc2VyQ29udGVudENvbnRyb2xsZXIgb2JqZWN0IHByb3Zp
ZGVzIGEgd2F5IGZvciBKYXZhU2NyaXB0IHRvIHBvc3QKICBtZXNzYWdlcyB0byBhIHdlYiB2aWV3
LgpAQCAtNTYsMTkgKzU4LDc1IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlv
cyg4LjApKQogLSAodm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0czsKIAogLyohIEBhYnN0cmFjdCBB
ZGRzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KLSBAcGFyYW0gc2NyaXB0TWVzc2FnZUhhbmRs
ZXIgVGhlIG1lc3NhZ2UgaGFuZGxlciB0byBhZGQuCisgQHBhcmFtIHNjcmlwdE1lc3NhZ2VIYW5k
bGVyIFRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRvIGFkZC4KKyBAcGFyYW0gY29udGVudFdv
cmxkIFRoZSBXS0NvbnRlbnRXb3JsZCBpbiB3aGljaCB0byBhZGQgdGhlIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXIuCiAgQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlci4K
LSBAZGlzY3Vzc2lvbiBBZGRpbmcgYSBzY3JpcHRNZXNzYWdlSGFuZGxlciBhZGRzIGEgZnVuY3Rp
b24KLSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy48bmFtZT4ucG9zdE1lc3NhZ2UoPG1l
c3NhZ2VCb2R5PikgZm9yIGFsbAotIGZyYW1lcy4KKyBAZGlzY3Vzc2lvbiBBZGRpbmcgYSBzY3Jp
cHQgbWVzc2FnZSBoYW5kbGVyIGFkZHMgYSBmdW5jdGlvbgorIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVzc2FnZUJvZHk+KSB0byBhbGwgZnJhbWVz
LCBhdmFpbGFibGUgaW4gdGhlIGdpdmVuIFdLQ29udGVudFdvcmxkLgorCisgVGhlIG5hbWUgYXJn
dW1lbnQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuCisKKyBFYWNoIFdLQ29udGVudFdvcmxk
IGNhbiBoYXZlIGFueSBudW1iZXIgb2Ygc2NyaXB0IG1lc3NhZ2UgaGFuZGxlcnMsIGJ1dCBvbmx5
IG9uZSBwZXIgdW5pcXVlIG5hbWUuCisKKyBPbmNlIGFueSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVy
IGhhcyBiZWVuIGFkZGVkIHRvIGEgV0tDb250ZW50V29ybGQgZm9yIGEgZ2l2ZW4gbmFtZSwgaXQg
aXMgYW4gZXJyb3IgdG8gYWRkIGFub3RoZXIKKyBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRvIHRo
YXQgV0tDb250ZW50V29ybGQgZm9yIHRoYXQgc2FtZSBuYW1lIHdpdGhvdXQgZmlyc3QgcmVtb3Zp
bmcgdGhlIHByZXZpb3VzIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIuCisKKyBUaGUgYWJvdmUgcmVz
dHJpY3Rpb24gYXBwbGllcyB0byBhbnkgdHlwZSBvZiBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIC0g
V0tTY3JpcHRNZXNzYWdlSGFuZGxlciBhbmQgV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBs
eQorIG9iamVjdHMgd2lsbCBjb25mbGljdCB3aXRoIGVhY2ggb3RoZXIgaWYgeW91IHRyeSB0byBh
ZGQgdGhlbSB0byB0aGUgc2FtZSBXS0NvbnRlbnRXb3JsZCB3aXRoIHRoZSBzYW1lIG5hbWUuCisg
Ki8KKy0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxk
ICopd29ybGQgbmFtZTooTlNTdHJpbmcgKiluYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgQWRkcyBhIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIuCisgQHBhcmFtIHNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5
IFRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRvIGFkZC4KKyBAcGFyYW0gY29udGVudFdvcmxk
IFRoZSBXS0NvbnRlbnRXb3JsZCBpbiB3aGljaCB0byBhZGQgdGhlIHNjcmlwdCBtZXNzYWdlIGhh
bmRsZXIuCisgQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgaGFuZGxlci4KKyBA
ZGlzY3Vzc2lvbiBBZGRpbmcgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIGFkZHMgYSBmdW5jdGlv
bgorIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLjxuYW1lPi5wb3N0TWVzc2FnZSg8bWVz
c2FnZUJvZHk+KSB0byBhbGwgZnJhbWVzLCBhdmFpbGFibGUgaW4gdGhlIGdpdmVuIFdLQ29udGVu
dFdvcmxkLgorCisgVGhlIG5hbWUgYXJndW1lbnQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcu
CisKKyBFYWNoIFdLQ29udGVudFdvcmxkIGNhbiBoYXZlIGFueSBudW1iZXIgb2Ygc2NyaXB0IG1l
c3NhZ2UgaGFuZGxlcnMsIGJ1dCBvbmx5IG9uZSBwZXIgdW5pcXVlIG5hbWUuCisKKyBPbmNlIGFu
eSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIGhhcyBiZWVuIGFkZGVkIHRvIGEgV0tDb250ZW50V29y
bGQgZm9yIGEgZ2l2ZW4gbmFtZSwgaXQgaXMgYW4gZXJyb3IgdG8gYWRkIGFub3RoZXIKKyBzY3Jp
cHQgbWVzc2FnZSBoYW5kbGVyIHRvIHRoYXQgV0tDb250ZW50V29ybGQgZm9yIHRoYXQgc2FtZSBu
YW1lIHdpdGhvdXQgZmlyc3QgcmVtb3ZpbmcgdGhlIHByZXZpb3VzIHNjcmlwdCBtZXNzYWdlIGhh
bmRsZXIuCisKKyBUaGUgYWJvdmUgcmVzdHJpY3Rpb24gYXBwbGllcyB0byBhbnkgdHlwZSBvZiBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVyIC0gV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseSBh
bmQgV0tTY3JpcHRNZXNzYWdlSGFuZGxlcgorIG9iamVjdHMgd2lsbCBjb25mbGljdCB3aXRoIGVh
Y2ggb3RoZXIgaWYgeW91IHRyeSB0byBhZGQgdGhlbSB0byB0aGUgc2FtZSBXS0NvbnRlbnRXb3Js
ZCB3aXRoIHRoZSBzYW1lIG5hbWUuCisKKyBSZWZlciB0byB0aGUgV0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhSZXBseSBkb2N1bWVudGF0aW9uIGZvciBleGFtcGxlcyBvZiBob3cgaXQgaXMgbW9y
ZSBmbGV4aWJsZSB0aGFuIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIuCisgKi8KKy0gKHZvaWQpYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
V2l0aFJlcGx5PilzY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseSBjb250ZW50V29ybGQ6KFdL
Q29udGVudFdvcmxkICopY29udGVudFdvcmxkIG5hbWU6KE5TU3RyaW5nICopbmFtZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFi
c3RyYWN0IEFkZHMgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHRvIHRoZSBtYWluIHdvcmxkIHVz
ZWQgYnkgcGFnZSBjb250ZW50IGl0c2VsZi4KKyBAcGFyYW0gc2NyaXB0TWVzc2FnZUhhbmRsZXIg
VGhlIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgdG8gYWRkLgorIEBwYXJhbSBuYW1lIFRoZSBuYW1l
IG9mIHRoZSBtZXNzYWdlIGhhbmRsZXIuCisgQGRpc2N1c3Npb24gQ2FsbGluZyB0aGlzIG1ldGhv
ZCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6Y29udGVu
dFdvcmxkOm5hbWU6Cisgd2l0aCBbV0tDb250ZW50V29ybGQgcGFnZVdvcmxkXSBhcyB0aGUgY29u
dGVudFdvcmxkIGFyZ3VtZW50LgogICovCiAtICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
OihpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZToo
TlNTdHJpbmcgKiluYW1lOwogCiAvKiEgQGFic3RyYWN0IFJlbW92ZXMgYSBzY3JpcHQgbWVzc2Fn
ZSBoYW5kbGVyLgogIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBtZXNzYWdlIGhhbmRsZXIg
dG8gcmVtb3ZlLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdvcmxkIGZyb20g
d2hpY2ggdG8gcmVtb3ZlIHRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorICovCistICh2b2lk
KXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIGNvbnRl
bnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBSZW1v
dmVzIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlci4KKyBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0
aGUgbWVzc2FnZSBoYW5kbGVyIHRvIHJlbW92ZS4KKyBAZGlzY3Vzc2lvbiBDYWxsaW5nIHRoaXMg
bWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxl
ckZvck5hbWU6Y29udGVudFdvcmxkOgorICB3aXRoIFtXS0NvbnRlbnRXb3JsZCBwYWdlV29ybGRd
IGFzIHRoZSBjb250ZW50V29ybGQgYXJndW1lbnQuCiAgKi8KIC0gKHZvaWQpcmVtb3ZlU2NyaXB0
TWVzc2FnZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWU7CiAKKy8qISBAYWJzdHJhY3Qg
UmVtb3ZlcyBhbGwgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlcnMgZnJvbSBhIGdpdmVuIFdLQ29udGVu
dFdvcmxkLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdvcmxkIGZyb20gd2hp
Y2ggdG8gcmVtb3ZlIGFsbCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVycy4KKyAqLworLSAodm9pZCly
ZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxlcnNGcm9tQ29udGVudFdvcmxkOihXS0NvbnRlbnRX
b3JsZCAqKWNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFJlbW92ZXMgYWxsIGFzc29jaWF0ZWQg
c2NyaXB0IG1lc3NhZ2UgaGFuZGxlcnMuCisgKi8KKy0gKHZvaWQpcmVtb3ZlQWxsU2NyaXB0TWVz
c2FnZUhhbmRsZXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKIC8qISBAYWJzdHJhY3QgQWRkcyBhIGNvbnRlbnQgcnVsZSBsaXN0LgogIEBw
YXJhbSBjb250ZW50UnVsZUxpc3QgVGhlIGNvbnRlbnQgcnVsZSBsaXN0IHRvIGFkZC4KICAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDY4MjdjOTE0MWMwLi43Zjk0YTQwNTRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiV0tGcmFt
ZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS1Njcmlw
dE1lc3NhZ2VIYW5kbGVyLmgiCisjaW1wb3J0ICJXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJl
cGx5LmgiCiAjaW1wb3J0ICJXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tV
c2VyU2NyaXB0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCkBAIC0x
MjUsMzEgKzEyNiw5NCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xs
ZXIpCiAgICAgICAgICwgbV9oYW5kbGVyKGhhbmRsZXIpCiAgICAgICAgICwgbV9uYW1lKGFkb3B0
TlMoW25hbWUgY29weV0pKQorICAgICAgICAsIG1fc3VwcG9ydHNBc3luY1JlcGx5KGZhbHNlKQog
ICAgIHsKICAgICB9Ci0gICAgCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYgcGFnZSwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJy
aWRlCisKKyAgICBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyICpjb250cm9sbGVyLCBpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4g
aGFuZGxlciwgTlNTdHJpbmcgKm5hbWUpCisgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xs
ZXIpCisgICAgICAgICwgbV9oYW5kbGVyKGhhbmRsZXIpCisgICAgICAgICwgbV9uYW1lKGFkb3B0
TlMoW25hbWUgY29weV0pKQorICAgICAgICAsIG1fc3VwcG9ydHNBc3luY1JlcGx5KHRydWUpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIEFQSTo6Q29u
dGVudFdvcmxkJiB3b3JsZCwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUpIGZpbmFsCiAgICAgewogICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
ICAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvRGF0YSksICZwYWdlKSk7CiAg
ICAgICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgMCk7Ci0gICAgICAgICAgICBhdXRvIG1lc3NhZ2Ug
PSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJvZHkgd2Vi
Vmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0KCkgbmFt
ZTptX25hbWUuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0TlMoW1tX
S1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJWaWV3OmZyb21XZWJQ
YWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1lOm1fbmFtZS5nZXQo
KSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOwogICAgICAgICAKLSAgICAgICAgICAgIFttX2hhbmRs
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRSZWNlaXZlU2Ny
aXB0TWVzc2FnZTptZXNzYWdlLmdldCgpXTsKKyAgICAgICAgICAgIFsoaWQ8V0tTY3JpcHRNZXNz
YWdlSGFuZGxlcj4pbV9oYW5kbGVyLmdldCgpIHVzZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRy
b2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6bWVzc2FnZS5nZXQoKV07CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIGZpbmFsCisgICAg
eworICAgICAgICByZXR1cm4gbV9zdXBwb3J0c0FzeW5jUmVwbHk7CisgICAgfQorCisgICAgdm9p
ZCBkaWRQb3N0TWVzc2FnZVdpdGhBc3luY1JlcGx5KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdl
LCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBBUEk6OkNvbnRlbnRXb3Js
ZCYgd29ybGQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCBGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3Qg
U3RyaW5nJik+JiYgcmVwbHlIYW5kbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
c3VwcG9ydHNBc3luY1JlcGx5KTsKKworICAgICAgICBhdXRvIGZpbmFsaXplciA9IFtdKEZ1bmN0
aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4mIGZ1
bmN0aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlvbihudWxscHRyLCAiV0tXZWJWaWV3IEFQSSBj
bGllbnQgZGlkIG5vdCByZXNwb25kIHRvIHRoaXMgcG9zdE1lc3NhZ2UiX3MpOworICAgICAgICB9
OworICAgICAgICBfX2Jsb2NrIGF1dG8gaGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyV2l0aEZp
bmFsaXplcjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+
KFdURk1vdmUocmVwbHlIYW5kbGVyKSwgV1RGTW92ZShmaW5hbGl6ZXIpKTsKKworICAgICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJh
bWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZv
RGF0YSksICZwYWdlKSk7CisgICAgICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgMCk7CisgICAgICAg
ICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5p
dFdpdGhCb2R5OmJvZHkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpm
cmFtZUluZm8uZ2V0KCkgbmFtZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsK
KworICAgICAgICAgICAgWyhpZDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PiltX2hh
bmRsZXIuZ2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRS
ZWNlaXZlU2NyaXB0TWVzc2FnZTptZXNzYWdlLmdldCgpIHJlcGx5SGFuZGxlcjpeKGlkIHJlc3Vs
dCwgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSkgeworICAgICAgICAgICAgICAgIGlmIChlcnJvck1l
c3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlcihudWxscHRyLCBlcnJvck1lc3Nh
Z2UpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgYXV0byBzZXJpYWxpemVkVmFsdWUgPSBBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlRnJvbU5TT2JqZWN0KHJlc3VsdCk7CisgICAgICAgICAgICAgICAgaWYg
KCFzZXJpYWxpemVkVmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlcihudWxscHRy
LCAiVGhlIHJlc3VsdCB2YWx1ZSBwYXNzZWQgYmFjayBmcm9tIHRoZSBXS1dlYlZpZXcgQVBJIGNs
aWVudCB3YXMgdW5hYmxlIHRvIGJlIHNlcmlhbGl6ZWQiX3MpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaGFuZGxlcihz
ZXJpYWxpemVkVmFsdWUuZ2V0KCksIHsgfSk7CisgICAgICAgICAgICB9XTsKICAgICAgICAgfQog
ICAgIH0KIAogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+
IG1fY29udHJvbGxlcjsKLSAgICBSZXRhaW5QdHI8aWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+
PiBtX2hhbmRsZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX2hhbmRsZXI7CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBtX25hbWU7CisgICAgYm9vbCBtX3N1cHBvcnRzQXN5bmNSZXBseTsKIH07CiAK
Ky0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihXZWJLaXQ6OldlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyJilzY3JpcHRNZXNzYWdlSGFuZGxlcgoreworICAgIGlmICghX3VzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoc2NyaXB0TWVzc2Fn
ZUhhbmRsZXIpKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3
aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4iLCAoTlNTdHJpbmcgKilzY3Jp
cHRNZXNzYWdlSGFuZGxlci5uYW1lKCldOworfQorCiAtICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIg
bmFtZTooTlNTdHJpbmcgKiluYW1lCiB7CiAgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRs
ZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6
OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKLSAgICBpZiAoIV91c2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0
KCkpKQotICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRp
b24gZm9ybWF0OkAiQXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5h
bWUgJyVAJyB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKKyAgICBbc2VsZiBfYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKV07Cit9CisKKy0gKHZvaWQpYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNz
YWdlSGFuZGxlciBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQgbmFtZTooTlNT
dHJpbmcgKiluYW1lCit7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqd29ybGQtPl9jb250
ZW50V29ybGQpOworICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdl
dCgpXTsKK30KKworLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTooaWQg
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIGNv
bnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZCBuYW1lOihOU1N0cmluZyAqKW5hbWUK
K3sKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3Jp
cHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp3b3JsZC0+X2NvbnRlbnRXb3JsZCk7Cisg
ICAgW3NlbGYgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCldOwogfQogCiAt
ICh2b2lkKXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1l
CkBAIC0xNTcsNiArMjIxLDIxIEBAIC0gKHZvaWQpcmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJG
b3JOYW1lOihOU1N0cmluZyAqKW5hbWUKICAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkt
PnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUobmFtZSwgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiB9CiAKKy0gKHZvaWQpcmVtb3ZlU2NyaXB0TWVzc2FnZUhh
bmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3Js
ZCAqKWNvbnRlbnRXb3JsZAoreworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVt
b3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCAqY29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkKTsKK30KKworLSAodm9pZClyZW1vdmVBbGxTY3JpcHRNZXNzYWdlSGFuZGxlcnNGcm9t
Q29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZAoreworICAgIF91c2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycygqY29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKK30KKworLSAodm9pZClyZW1vdmVBbGxTY3JpcHRN
ZXNzYWdlSGFuZGxlcnMKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92
ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKTsKK30KKwogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaAppbmRleCAxMDhiZWUxNTM4Mi4uNDdmN2Rl
MDE4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaApAQCAtMjksMTUg
KzI5LDE4IEBACiAjaW1wb3J0ICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gewogICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdL
VXNlckNvbnRlbnRDb250cm9sbGVyOwogfTsKIAorY2xhc3MgV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI7CiB9CiAKIEBpbnRlcmZhY2UgV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKCkgPFdLT2JqZWN0
PiB7CiBAcGFja2FnZQogICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5PiBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiB9CisKKy0g
KHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyJilzY3JpcHRNZXNzYWdlSGFuZGxlcjsKKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyUHJpdmF0ZS5oCmluZGV4IGFhMzUxZTc3Y2NkLi5lNWY4OTZkOWIyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0
IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaD4KIAorQGNsYXNzIFdLQ29udGVudFdv
cmxkOwogQGNsYXNzIFdLVXNlclNjcmlwdDsKIEBjbGFzcyBfV0tVc2VyQ29udGVudEZpbHRlcjsK
IEBjbGFzcyBfV0tVc2VyQ29udGVudFdvcmxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDAzNDE1OGJhMjEuLjZiMTFiMzg0NDE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTg5OCwxNSArODk4LDEzIEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcg
KilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAKICAgICBmb3IgKGlk
IGtleSBpbiBhcmd1bWVudHMpIHsKICAgICAgICAgaWQgdmFsdWUgPSBbYXJndW1lbnRzIG9iamVj
dEZvcktleTprZXldOwotICAgICAgICBpZiAoIXZhbGlkYXRlQXJndW1lbnQodmFsdWUpKSB7Ci0g
ICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBAIkZ1bmN0aW9uIGFyZ3VtZW50IHZhbHVlcyBtdXN0
IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzLCBvciBjb250YWluIG9ubHkgdGhlIGZvbGxv
d2luZyB0eXBlczogTlNTdHJpbmcsIE5TTnVtYmVyLCBOU0RhdGUsIE5TQXJyYXksIGFuZCBOU0Rp
Y3Rpb25hcnkiOworICAgICAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tTlNPYmplY3QodmFsdWUpOworICAgICAgICBpZiAoIXNl
cmlhbGl6ZWRWYWx1ZSkgeworICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gQCJGdW5jdGlvbiBh
cmd1bWVudCB2YWx1ZXMgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlcywgb3IgY29u
dGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdHlwZXM6IE5TTnVtYmVyLCBOU051bGwsIE5TRGF0ZSwg
TlNTdHJpbmcsIE5TQXJyYXksIGFuZCBOU0RpY3Rpb25hcnkiOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAKLSAgICAgICAgYXV0byB3aXJlQnl0ZXMgPSBBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6d2lyZUJ5dGVzRnJvbU5TT2JqZWN0KHZhbHVlKTsKLSAgICAgICAgLy8g
U2luY2Ugd2UndmUgdmFsaWRhdGVkIHRoZSBpbnB1dCBkaWN0aW9uYXJ5IGFib3ZlLCB3ZSBzaG91
bGQgbmV2ZXIgZmFpbCB0byBzZXJpYWxpemUgaXQgaW50byB3aXJlIGJ5dGVzLgotICAgICAgICBB
U1NFUlQod2lyZUJ5dGVzKTsKLSAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5LCAqd2lyZUJ5
dGVzKTsKKworICAgICAgICBhcmd1bWVudHNNYXAtPnNldChrZXksIHNlcmlhbGl6ZWRWYWx1ZS0+
aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLnRvV2lyZUJ5dGVzKCkpOwogICAgIH0KIAogICAgIGlm
IChlcnJvck1lc3NhZ2UgJiYgaGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKaW5k
ZXggN2M0MzIzMDRmNTIuLmRhMTI5ZTNiOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAK
QEAgLTE5MCwxMyArMTkwLDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBk
aWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorICAg
IHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6
OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdCoganNSZXN1bHQgPSB3ZWJraXRKYXZhc2NyaXB0UmVzdWx0Q3JlYXRlKHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSk7CiAgICAgICAgIGdfc2lnbmFsX2VtaXQobV9tYW5hZ2VyLCBzaWduYWxzW1ND
UklQVF9NRVNTQUdFX1JFQ0VJVkVEXSwgbV9oYW5kbGVyTmFtZSwganNSZXN1bHQpOwogICAgICAg
ICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYoanNSZXN1bHQpOwogICAgIH0KIAorICAg
IGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZVdpdGhBc3luY1Jl
cGx5KFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4mJikgb3ZlcnJpZGUKKyAgICB7
CisgICAgfQorICAgIAogICAgIHZpcnR1YWwgflNjcmlwdE1lc3NhZ2VDbGllbnRHdGsoKSB7IH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cAppbmRleCBiNjU1MWVhYmY1Yy4uZTAwYzIxZTAxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwg
RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUudG9T
dHJpbmcoKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zID0gbWVzc2FnZS5zcGxpdCgn
OicpOwpAQCAtNTMsNiArNTMsMTUgQEAgcHVibGljOgogICAgICAgICBtX2luc3BlY3RvclByb3Rv
Y29sSGFuZGxlci5pbnNwZWN0KHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgdG9rZW5zWzBdLnRv
VUludDY0KCksIHRva2Vuc1sxXS50b1VJbnQ2NCgpLCB0b2tlbnNbMl0pOwogICAgIH0KIAorICAg
IGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZVdpdGhBc3luY1Jl
cGx5KFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpDb250ZW50V29ybGQmLCBX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4mJikgb3ZlcnJpZGUKKyAgICB7
CisgICAgfQorCiAgICAgflNjcmlwdE1lc3NhZ2VDbGllbnQoKSB7IH0KIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBj
OTUxYTUwZDM5OC4uZjNmMjhhNDdlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAg
flNjcmlwdE1lc3NhZ2VDbGllbnQoKSB7IH0KIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2Vi
UGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6Q29udGVu
dFdvcmxkJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0
VmFsdWUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBhdXRvIHRva2VucyA9IHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS50b1N0cmluZygpLnNwbGl0KCI6Iik7CiAgICAgICAgIGlmICh0b2tlbnMuc2l6
ZSgpICE9IDMpCkBAIC02MSw2ICs2MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIFVSTCByZXF1ZXN0
VVJMIHsgeyB9LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OwogICAgICAgICBtX2luc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5pbnNwZWN0KHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgdG9r
ZW5zWzBdLnRvVUludFN0cmljdCgpLCB0b2tlbnNbMV0udG9VSW50U3RyaWN0KCksIHRva2Vuc1sy
XSk7CiAgICAgfQorICAgIAorICAgIGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkaWRQ
b3N0TWVzc2FnZVdpdGhBc3luY1JlcGx5KFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwg
QVBJOjpDb250ZW50V29ybGQmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcm
KT4mJikgb3ZlcnJpZGUKKyAgICB7CisgICAgfQogCiBwcml2YXRlOgogICAgIFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlciYgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdl
SGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXIuaAppbmRleCBhZmFjYmIwNzFmMS4uMmY2MTRiMjNhMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQ29udGVudFdvcmxkOworY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUyLDcg
KzUzLDkgQEAgcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNz
YWdlKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2Vi
UGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQXN5bmNSZXBseSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdl
V2l0aEFzeW5jUmVwbHkoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6OkNvbnRl
bnRXb3JsZCYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdURjo6RnVuY3Rpb248
dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmKSA9IDA7
CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGNyZWF0
ZShzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OkNvbnRl
bnRXb3JsZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4
IDdkZDhlYjk5MzE3Li4yNGI2MzNlNDg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIK
ICNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKKyNpbmNsdWRlICJBUElTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNl
clN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCkBAIC0zMTYsNyArMzE3
LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3Nh
Z2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpDb250ZW50V29ybGQm
IHdvcmxkKQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAg
ICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRl
bnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnNGb3JXb3JsZHMo
eyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCBu
dW1iZXJSZW1vdmVkID0gMDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmVJZihb
Jl0oYXV0byYgZW50cnkpIHsKQEAgLTMyOCw3ICszMjksMTMgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRl
bnRXb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VQcm94eUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVm
ZXJlbmNlKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNl
ck1lc3NhZ2VIYW5kbGVycygpCit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNz
ZXMpCisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKCksIGlkZW50aWZpZXIoKSk7
Cit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdl
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UsIE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6RGlkUG9zdE1lc3NhZ2U6OkFzeW5jUmVwbHkmJiByZXBseSkKIHsKICAgICBXZWJQYWdl
UHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZVByb3h5SUQpOwogICAg
IGlmICghcGFnZSkKQEAgLTM0MSw3ICszNDgsMjEgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAog
ICAgIGlmICghaGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaGFuZGxlci0+Y2xpZW50
KCkuZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVyZW5jZS52ZWN0b3IoKSkpOwor
ICAgIGlmICghaGFuZGxlci0+Y2xpZW50KCkuc3VwcG9ydHNBc3luY1JlcGx5KCkpIHsKKyAgICAg
ICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsIFdURk1vdmUoZnJhbWVJ
bmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmFkb3B0KGRhdGFSZWZlcmVuY2UudmVjdG9yKCkpKTsKKyAgICAgICAgcmVwbHkoeyB9LCB7
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlk
UG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwg
aGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
ZGF0YVJlZmVyZW5jZS52ZWN0b3IoKSksIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5pc051bGwoKSkgeworICAgICAgICAg
ICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgICAgIHJlcGx5KHsgdmFsdWUtPmludGVybmFsUmVw
cmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygpIH0sIHsgfSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICByZXBseSh7IH0sIGVycm9yTWVzc2FnZSk7CisgICAgfSk7
CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmgKaW5kZXggMmMwOTQyODUwYjQuLjEyOWEzNDBmMDg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KQEAgLTk4LDYgKzk5LDcgQEAgcHVibGljOgogICAg
IGJvb2wgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
Jik7CiAgICAgdm9pZCByZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmlu
ZyYsIEFQSTo6Q29udGVudFdvcmxkJik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyTWVzc2FnZUhh
bmRsZXJzKEFQSTo6Q29udGVudFdvcmxkJik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyTWVzc2Fn
ZUhhbmRsZXJzKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIHZvaWQg
YWRkTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwpAQCAtMTE4LDcgKzEyMCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3QgbWVzc2FnZUhhbmRs
ZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZTo6QXN5bmNSZXBseSYmKTsKIAogICAgIHZv
aWQgYWRkQ29udGVudFdvcmxkKEFQSTo6Q29udGVudFdvcmxkJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOGQyMDBhMWU2
ZTkuLmZkOTVmMmY1ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQsNSBAQAogICovCiAKIG1lc3NhZ2VzIC0+
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsKLURpZFBvc3RNZXNzYWdlKFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVm
ZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29ubmVjdGlvbgorRGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0
YSBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZl
cmVuY2UgbWVzc2FnZSkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHRWYWx1ZSwgU3RyaW5n
IGVycm9yTWVzc2FnZSkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZlNDdiNmU5MmYwLi5lM2RiNTQwOWFhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NzMs
NiArOTczLDcgQEAKIAkJNTEwNTIzNzQxQzczRDM4QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTA1MjM3MzFDNzNEMzdCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTEwNTIzNzUxQzczRDM4RjAwNzk5M0NCIC8qIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1MjM3MjFDNzNEMzdCMDA3OTkzQ0Ig
LyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
NTEwNkQ3QzQxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDZEN0MwMThCREJF
NzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmggKi87IH07CisJCTUxMDkwOTk3
MjNEQUNCRjIwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA5MDk5NDIzRDQx
RjEzMDAzQjFFNEMgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTEwQUZGQkExNjU0MjA0
ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBRkZCODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVz
b3VyY2VMb2FkZXIuaCAqLzsgfTsKIAkJNTEwRjU5MTAxRERFMjk2OTAwNDEyRkY1IC8qIF9XS0lj
b25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNDNCMjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBfV0tJY29uTG9hZGluZ0RlbGVn
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTEwRjU5MTExRERFMjk3MDAwNDEyRkY1IC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEM5NzkxRERENzg1
NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTk3LDYgKzM1OTgsNyBAQAogCQk1MTA1
QjBGMzE2MzA4NzJFMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZXh0TWVu
dUNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNkQ3QzAx
OEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTA5MDk5NDIzRDQxRjEzMDAzQjFFNEMgLyogV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxMEFGRkI3MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRl
ci5jcHA7IHBhdGggPSBOZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQUZGQjgxNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlJlc291cmNlTG9h
ZGVyLmg7IHBhdGggPSBOZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMEFGRkNFMTY1NDJDQkQwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxv
YWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjsgcGF0
aCA9IE5ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03MzkyLDYgKzczOTQsNyBAQAogCQkJCTFBN0UzNzc3MThFNEE0RkUw
MDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCAqLywKIAkJCQkxQTdFMzc3NjE4RTRBNEZFMDAz
RDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLm1tICovLAogCQkJCTFBN0UzNzc0MThFNEEzM0EwMDNE
MEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmggKi8sCisJCQkJNTEwOTA5OTQyM0Q0MUYx
MzAwM0IxRTRDIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHkuaCAqLywKIAkJCQk3
Q0M5OUEzNTE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCAqLywK
IAkJCQk1MUNEMUM1RjFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5oICovLAog
CQkJCTUxQ0QxQzYwMUIzNEI5QzkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luLm1tICovLApA
QCAtMTEzMTgsNiArMTEzMjEsNyBAQAogCQkJCUJDRUU3QUQxMTI4MTc5ODgwMDk4MjdEQSAvKiBX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMEU0MjUxNjhC
N0EyODAwNTdFNjZBIC8qIFdlYlByb2Nlc3NTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTFFMDkzNDE4ODYxRDM4MDBEMkRDNDkgLyogV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTA5MDk5NzIzREFDQkYyMDAzQjFFNEMgLyogV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUQxMkE4
ODM4ODAwNjI5NTMwIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkzNzk0ODQwNDE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5
ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
RE9NV2luZG93LmNwcAppbmRleCA2OTI0NDNlYjgwMi4uMTU4NDQwMzIwMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCkBAIC0yNSw2ICsyNSw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9ET01FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50Lmg+CiAjaW5jbHVkZSAiR09iamVjdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0pTRE9NR2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVBy
b21pc2VEZWZlcnJlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oPgpAQCAtMTA2OSw4ICsxMDcxLDE3IEBAIGdi
b29sZWFuIHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJraXRfbWVzc2FnZV9oYW5kbGVyc19wb3N0
X21lc3NhZ2UoV2ViS2l0RE9NRE9NCiAgICAgYXV0byBoYW5kbGVyID0gd2Via2l0TmFtZXNwYWNl
LT5tZXNzYWdlSGFuZGxlcnMoKS0+bmFtZWRJdGVtKFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxX
b3JsZCgpLCBTdHJpbmc6OmZyb21VVEY4KGhhbmRsZXJOYW1lKSk7CiAgICAgaWYgKCFoYW5kbGVy
KQogICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgCisgICAgYXV0byogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA9ICgoV2ViQ29yZTo6Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIqKWRvbVdpbmRv
dyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAKKyAgICBhdXRvKiBnbG9iYWxPYmpl
Y3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXZWJDb3Jl
OjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAg
ICAgIHJldHVybiBGQUxTRTsKIAotICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxlci0+cG9zdE1lc3Nh
Z2UoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRG
OChtZXNzYWdlKSkpOworICAgIGF1dG8gcHJvbWlzZSA9IFdlYkNvcmU6OkRlZmVycmVkUHJvbWlz
ZTo6Y3JlYXRlKCpnbG9iYWxPYmplY3QpOworICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxlci0+cG9z
dE1lc3NhZ2UoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nOjpm
cm9tVVRGOChtZXNzYWdlKSksIGFkb3B0UmVmKCoocHJvbWlzZS5sZWFrUmVmKCkpKSk7CiAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IGY1Yzg3YzAyYmQ2Li4wNDI5ZGFkNmFm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBA
QCBwcml2YXRlOgogICAgIH0KIAogICAgIC8vIFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFu
ZGxlciYgaGFuZGxlciwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSkgb3Zl
cnJpZGUKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxl
ciYgaGFuZGxlciwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgV2ViQ29yZTo6RnJhbWUq
IGZyYW1lID0gaGFuZGxlci5mcmFtZSgpOwogICAgICAgICBpZiAoIWZyYW1lKQpAQCAtMjY4LDcg
KzI2OCwxNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgd2ViRnJh
bWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRhdGEo
KSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CisgICAgICAgIGF1dG8gbWVzc2FnZVJl
cGx5SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VsdFZhbHVlLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkgeworICAgICAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNOdWxsKCkp
IHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBlcnJvck1lc3Nh
Z2UpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYXV0byB2YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRl
cyhyZXN1bHRWYWx1ZS52ZWN0b3IoKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih2
YWx1ZS5wdHIoKSwgeyB9KTsKKyAgICAgICAgfTsKKworICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQ
YWdlLT53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRp
ZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwgV1RGTW92ZShtZXNzYWdl
UmVwbHlIYW5kbGVyKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAg
IFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKQEAgLTMwOSw3
ICszMTksMTggQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihDb250ZW50V29ybGRJZGVudGkKICNlbmRpZgogfQogCi12b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
cyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mIHdvcmxkSWRlbnRpZmllcnMp
Cit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycygpCit7CisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKyAgICBp
ZiAobV91c2VyTWVzc2FnZUhhbmRsZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV91c2VyTWVzc2FnZUhhbmRsZXJzLmNsZWFyKCk7CisgICAgaW52YWxpZGF0ZUFsbFJlZ2lz
dGVyZWRVc2VyTWVzc2FnZUhhbmRsZXJJbnZhbGlkYXRpb25DbGllbnRzKCk7CisjZW5kaWYKK30K
Kwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnNGb3JXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+
JiB3b3JsZElkZW50aWZpZXJzKQogewogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMp
CiAgICAgYm9vbCB1c2VyTWVzc2FnZUhhbmRsZXJzQ2hhbmdlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oCmluZGV4IGU5MDI2MDc3ZTkzLi5jZTkwYTlkOTNlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtMTAwLDcgKzEwMCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3Js
ZElkZW50aWZpZXI+Jik7CiAKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxl
cihDb250ZW50V29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllcik7
Ci0gICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3Rv
cjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVyc0Zvcldvcmxkcyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRp
Zmllcj4mKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoKTsK
IAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgdm9pZCByZW1vdmVDb250ZW50
UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDVhZGNkMDgwZTkxLi4yYWIyMzI0YmI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0zNyw3
ICszNyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlciB7CiAKICAgICBB
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0OjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlckRhdGE+IHNjcmlwdE1lc3NhZ2VIYW5kbGVycyk7CiAgICAgUmVtb3Zl
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciB3
b3JsZElkZW50aWZpZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwotICAgIFJlbW92ZUFsbFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcnMoVmVjdG9yPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmll
cj4gd29ybGRJZGVudGlmaWVycyk7CisgICAgUmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyc0ZvcldvcmxkcyhWZWN0b3I8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3Js
ZElkZW50aWZpZXJzKTsKKyAgICBSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKCk7
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIEFkZENvbnRlbnRSdWxlTGlz
dHMoVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3REYXRhPj4gY29udGVudEZpbHRlcnMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViOGM0MjVkYmVjLi4zZTk4NTc1MjYyMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTA0LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgV0tTY3JpcHRNZXNzYWdlSGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSBy
ZXNwb25kcyB3aXRoIGEgcHJvbWlzZS4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTcyNDM0OTIg
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzOTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAo
VEVTVCk6CisgICAgICAgICh3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhh
bmRsZXJSZW1vdmFsVGVzdCk6CisgICAgICAgICgtW0FzeW5jU2NyaXB0TWVzc2FnZUhhbmRsZXIg
dXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOnJlcGx5SGFuZGxl
cjpdKToKKwogMjAyMC0wNC0xNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KIAogICAgICAgICBFbmFibGUgc2VydmljZSB3b3JrZXJzIGZvciBhcHAtYm91bmQgZG9t
YWlucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9V
c2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA0YWI5OTQzMmE4Ny4uNjdiZmJk
NTNjOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0zMCw3ICszMCwxMCBAQAog
I2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFVJRGVsZWdh
dGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0NvbnRl
bnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlclNjcmlwdC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLVXNlclNjcmlwdFByaXZhdGUuaD4KQEAgLTc0LDYgKzc3LDkgQEAgQGVu
ZAogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJh
c2ljUG9zdCkKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOworICAgIHJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CkBAIC05NSw2ICsxMDEsOSBAQCBU
RVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9z
dCkKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJC
YXNpY1Bvc3RJc29sYXRlZFdvcmxkKQogeworICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFyKCk7Cisg
ICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8X1dLVXNl
ckNvbnRlbnRXb3JsZD4gd29ybGQgPSBbX1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1l
OkAiVGVzdFdvcmxkIl07CiAKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhh
bmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKQEAg
LTE0NCw2ICsxNTMsOSBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNz
YWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVkV29ybGQpCiAKIFRFU1QoV0tVc2VyQ29udGVudENv
bnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyQmFzaWNSZW1vdmUpCiB7CisgICAgc2NyaXB0
TWVzc2FnZXMuY2xlYXIoKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKwog
ICAgIFJldGFpblB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tT
Y3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXS1dlYlZp
ZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tVc2VyQ29udGVudENvbnRy
b2xsZXI+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IFtjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl07CkBAIC0xODgsNiArMjAwLDggQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJv
bGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1JlbW92ZSkKIAogVEVTVChXS1VzZXJDb250
ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJDYWxsUmVtb3ZlZEhhbmRsZXIpCiB7
CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8U2Ny
aXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgUmV0YWluUHRyPFdLVXNlckNvbnRlbnRDb250cm9sbGVyPiB1c2VyQ29udGVu
dENvbnRyb2xsZXIgPSBbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdOwpAQCAt
MjA1LDIyICsyMTksMjMgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVz
c2FnZUhhbmRsZXJDYWxsUmVtb3ZlZEhhbmRsZXIpCiAKICAgICBbdXNlckNvbnRlbnRDb250cm9s
bGVyIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAImhhbmRsZXJUb1JlbW92ZSJd
OwogCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAgICAvLyBUZXN0IHRoYXQgd2Ug
dGhyb3cgYW4gZXhjZXB0aW9uIGlmIHlvdSB0cnkgdG8gdXNlIGEgbWVzc2FnZSBoYW5kbGVyIHRo
YXQgaGFzIGJlZW4gcmVtb3ZlZC4KLSAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Ci0g
ICAgICAgIEAidHJ5IHsiCi0gICAgICAgICAiICAgIGhhbmRsZXJUb1JlbW92ZS5wb3N0TWVzc2Fn
ZSgnRkFJTCcpOyIKLSAgICAgICAgICJ9IGNhdGNoIChlKSB7IgotICAgICAgICAgIiAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5oYW5kbGVyVG9Qb3N0LnBvc3RNZXNzYWdlKCdQQVNT
Jyk7IgotICAgICAgICAgIn0iIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgW3dlYlZpZXcg
Y2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBoYW5kbGVyVG9SZW1vdmUucG9zdE1lc3NhZ2Uo
J0ZBSUwnKSIgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpbV0tDb250ZW50V29ybGQgcGFn
ZVdvcmxkXSBjb21wbGV0aW9uSGFuZGxlcjpeIChpZCB2YWx1ZSwgTlNFcnJvciAqIGVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9OVUxMKHZhbHVlKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVy
cm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29udGFpbnNT
dHJpbmc6QCJJbnZhbGlkQWNjZXNzRXJyb3IiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0KLSAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5T
U3RyaW5nICopW3NjcmlwdE1lc3NhZ2VzWzBdIGJvZHldKTsKIH0KIAogc3RhdGljIFJldGFpblB0
cjxXS1dlYlZpZXc+IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxl
clJlbW92YWxUZXN0KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCiB7Cisg
ICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8U2NyaXB0
TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbkNvcHkgPSBhZG9wdE5TKFtjb25maWd1cmF0aW9uIGNvcHldKTsKICAgICBbY29u
ZmlndXJhdGlvbkNvcHkgc2V0VXNlckNvbnRlbnRDb250cm9sbGVyOltbW1dLVXNlckNvbnRlbnRD
b250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOwpAQCAtMjM2LDYgKzI1MSw5IEBA
IHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRs
ZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsCiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIs
IFNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbCkKIHsKKyAgICBzY3Jp
cHRNZXNzYWdlcy5jbGVhcigpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwor
CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFJldGFp
blB0cjxfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
ICAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0g
YXV0b3JlbGVhc2VdXTsKQEAgLTI2Miw2ICsyODAsOSBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWwpCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpIC8vIEZJWE1FOiBoYW5ncyBpbiB0aGUgaU9TIHNpbXVsYXRv
cgogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRo
TmF2aWdhdGlvbikKIHsKKyAgICBzY3JpcHRNZXNzYWdlcy5jbGVhcigpOworICAgIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZSA9IGZhbHNlOworCiAgICAgUmV0YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5k
bGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CkBAIC0yOTMsNiArMzE0LDkg
QEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRo
TmF2aWdhdGlvbikKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJSZXBsYWNlV2l0aFNhbWVOYW1lKQogeworICAgIHNjcmlwdE1lc3NhZ2VzLmNsZWFy
KCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8
U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhh
bmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgUmV0YWluUHRyPFdLVXNlckNvbnRlbnRDb250cm9sbGVyPiB1c2VyQ29u
dGVudENvbnRyb2xsZXIgPSBbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdOwpA
QCAtODMzLDYgKzg1Nyw5IEBAIHN0YXRpYyB2b2lkIGNvbXBhcmVNZXNzYWdlcyhWZWN0b3I8Y29u
c3QgY2hhcio+JiYgZXhwZWN0ZWRNZXNzYWdlcykKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJv
bGxlciwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KQogeworICAgIHNjcmlwdE1lc3NhZ2Vz
LmNsZWFyKCk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKICAgICBhdXRv
IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
ICAgICBhdXRvIHN0YXJ0QWxsRnJhbWVzID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10g
aW5pdFdpdGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxl
ci5wb3N0TWVzc2FnZSgnc3RhcnQgYWxsJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7CiAgICAgYXV0
byBlbmRNYWluRnJhbWVPbmx5ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdp
dGhTb3VyY2U6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZSgnZW5kIG1haW4nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25U
aW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwpAQCAtOTAyLDMgKzkyOSwy
NzQgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclNjcmlwdE5vdGlmaWNhdGlv
bikKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJ3YWl0ZWQg
Zm9yIG5vdGlmaWNhdGlvbiIpOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZv
ckFsZXJ0XSwgImRvY3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKIH0KKworQGludGVyZmFjZSBBc3lu
Y1NjcmlwdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJX
aXRoUmVwbHk+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBc3luY1NjcmlwdE1lc3NhZ2VIYW5k
bGVyCisKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJv
bGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tT
Y3JpcHRNZXNzYWdlICopbWVzc2FnZSByZXBseUhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU1N0cmlu
ZyAqZXJyb3JNZXNzYWdlKSlyZXBseUhhbmRsZXIKK3sKKyAgICBpZiAoW21lc3NhZ2UubmFtZSBp
c0VxdWFsVG9TdHJpbmc6QCJvdGhlcldvcmxkSGFuZGxlciJdKQorICAgICAgICBFWFBFQ1RfVFJV
RShtZXNzYWdlLndvcmxkICE9IG5pbCk7CisgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0Vx
dWFsVG9TdHJpbmc6QCJGdWxmaWxsIl0pIHsKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihAIkZ1
bGZpbGxlZCEiLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIlJlamVjdCJdKSB7CisgICAgICAg
ICAgICByZXBseUhhbmRsZXIobmlsLCBAIlJlamVjdGVkISIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpA
IlVuZGVmaW5lZCJdKSB7CisgICAgICAgICAgICByZXBseUhhbmRsZXIobmlsLCBuaWwpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlz
RXF1YWxUb1N0cmluZzpAIkRvIG5vdGhpbmciXSkgeworICAgICAgICAgICAgLy8gRHJvcCB0aGUg
cmVwbHkgaGFuZGxlciB3aXRob3V0IHJlc3BvbmRpbmcgdG8gc2VlIHdoYXQgaGFwcGVucworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChbbWVzc2FnZS5ib2R5IGlz
RXF1YWxUb1N0cmluZzpAIkludmFsaWQgcmVwbHkiXSkgeworICAgICAgICAgICAgcmVwbHlIYW5k
bGVyKFtbW05TRGF0YSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdLCBuaWwpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQWxsIG90aGVyIGlucHV0cyBz
aG91bGQganVzdCBiZSByb3VuZCB0cmlwcGVkIGJhY2sgdG8gdGhlIG1lc3NhZ2UgaGFuZGxlcgor
ICAgIHJlcGx5SGFuZGxlcihtZXNzYWdlLmJvZHksIG5pbCk7Cit9CisKK0BlbmQKKworVEVTVChX
S1VzZXJDb250ZW50Q29udHJvbGxlciwgTWVzc2FnZUhhbmRsZXJBUEkpCit7CisgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFk
b3B0TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFn
ZVdvcmxkIG5hbWU6QCJ0ZXN0SGFuZGxlcjEiXTsKKworICAgIGJvb2wgaGFkRXhjZXB0aW9uID0g
ZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkg
Y29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBuYW1lOkAidGVzdEhhbmRsZXIx
Il07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgaGFk
RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9CisKKyAgICBFWFBFQ1RfVFJVRShoYWRFeGNlcHRpb24p
OworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOldLQ29udGVu
dFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBuYW1lOkAidGVzdEhhbmRsZXIyIl07CisKKyAgICBh
dXRvICp3b3JsZCA9IFtXS0NvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAib3RoZXJXb3JsZCJd
OworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOndvcmxkIG5h
bWU6QCJ0ZXN0SGFuZGxlcjMiXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpoYW5kbGVyLmdldCgpIGNv
bnRlbnRXb3JsZDp3b3JsZCBuYW1lOkAidGVzdEhhbmRsZXI0Il07CisgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVw
bHk6aGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6d29ybGQgbmFtZTpAInRlc3RIYW5kbGVyNSJd
OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBOU1N0cmlu
ZyAqZnVuY3Rpb25Cb2R5ID0gQCJ2YXIgcCA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
W2hhbmRsZXJdLnBvc3RNZXNzYWdlKGFyZyk7IGF3YWl0IHA7IHJldHVybiBwOyI7CisKKyAgICAv
LyBwYWdlV29ybGQgaXMgd2hlcmUgdGVzdGhhbmRsZXIxIGxpdmVzCisgICAgW3dlYlZpZXcgY2Fs
bEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBA
InRlc3RIYW5kbGVyMSIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29y
bGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVF
KFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZh
bHNlOworCisgICAgLy8gVHJ5aW5nIHRvIGZpbmQgdGVzdEhhbmRsZXIxIGluIHRoZSBkZWZhdWx0
Q2xpZW50V29ybGQgc2hvdWxkIGZhaWwKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0
OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXIxIiwg
QCJhcmciIDogQDEgfSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50
V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChl
cnJvcik7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gZGVmYXVsdENs
aWVudFdvcmxkIGlzIHdoZXJlIHRlc3RoYW5kbGVyMiBsaXZlcworICAgIFt3ZWJWaWV3IGNhbGxB
c3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0
ZXN0SGFuZGxlcjIiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxk
LmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRv
bmUgPSBmYWxzZTsKKworICAgIC8vIEJ1dCBpZiB3ZSByZW12b2UgaXQsIGl0IHNob3VsZCBubyBs
b25nZXIgbGl2ZSB0aGVyZSwgYW5kIHVzaW5nIGl0IHNob3VsZCBjYXVzZSBhbiBlcnJvci4KKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVTY3JpcHRNZXNz
YWdlSGFuZGxlckZvck5hbWU6QCJ0ZXN0SGFuZGxlcjIiIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRX
b3JsZC5kZWZhdWx0Q2xpZW50V29ybGRdOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3Jp
cHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjIi
LCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGll
bnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkg
aGFuZGxlcnMgMywgNCwgYW5kIDUgYXJlIGFsbCBpbiB0aGUgY3VzdG9tIHdvcmxkLgorICAgIFt3
ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpAeyBAImhh
bmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjMiLCBAImFyZyIgOiBAMSB9IGluQ29udGVudFdvcmxkOndv
cmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQg
aXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgfV07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2
YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5k
bGVyNCIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRs
ZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFd
KTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9k
eSBhcmd1bWVudHM6QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI1IiwgQCJhcmciIDogQDEg
fSBpbkNvbnRlbnRXb3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IGRvbmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSAzIGZyb20gdGhlIHdyb25nIHdvcmxkLCB2
ZXJpZnkgaXQgaXMgc3RpbGwgdGhlcmUgaW4gdGhlIGN1c3RvbSB3b3JsZC4KKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxl
ckZvck5hbWU6QCJ0ZXN0SGFuZGxlcjMiIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZh
dWx0Q2xpZW50V29ybGRdOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rp
b25Cb2R5IGFyZ3VtZW50czpAeyBAImhhbmRsZXIiIDogQCJ0ZXN0SGFuZGxlcjMiLCBAImFyZyIg
OiBAMSB9IGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVz
dWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkAxXSk7CisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgLy8gUmVtb3ZlIDMgZnJvbSB0aGUgY29ycmVjdCB3
b3JsZCwgdmVyaWZ5IGl0IGlzIGdvbmUsIGJ1dCA0IGFuZCA1IGFyZSBzdGlsbCB0aGVyZS4KKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSByZW1vdmVTY3JpcHRNZXNz
YWdlSGFuZGxlckZvck5hbWU6QCJ0ZXN0SGFuZGxlcjMiIGNvbnRlbnRXb3JsZDp3b3JsZF07Cisg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7
IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyMyIsIEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29y
bGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVM
TChlcnJvcik7CisgICAgfV07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5j
dGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyNCIsIEAiYXJn
IiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDFdKTsKKyAgICB9XTsK
KyAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6
QHsgQCJoYW5kbGVyIiA6IEAidGVzdEhhbmRsZXI1IiwgQCJhcmciIDogQDEgfSBpbkNvbnRlbnRX
b3JsZDp3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzRXF1YWxUb051bWJlcjpAMV0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxz
ZTsKKworICAgIC8vIFJlbW92ZSAiYWxsIiBpbiB0aGUgY3VzdG9tIHdvcmxkLCB2ZXJpZnkgNCBh
bmQgNSBhcmUgbm93IGdvbmUuCisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJv
bGxlcl0gcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRlbnRXb3JsZDp3b3Js
ZF07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXJndW1l
bnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyNCIsIEAiYXJnIiA6IEAxIH0gaW5Db250
ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9O
T1RfTlVMTChlcnJvcik7CisgICAgfV07CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlw
dDpmdW5jdGlvbkJvZHkgYXJndW1lbnRzOkB7IEAiaGFuZGxlciIgOiBAInRlc3RIYW5kbGVyNSIs
IEAiYXJnIiA6IEAxIH0gaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZd
IChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9u
ZSA9IGZhbHNlOworfQorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBBc3luY1Njcmlw
dE1lc3NhZ2VIYW5kbGVyQmFzaWNQb3N0KQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbQXN5bmNTY3Jp
cHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5OmhhbmRs
ZXIuZ2V0KCkgY29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRnVsZmlsbCcpOyBhd2FpdCBwOyBy
ZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5
IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQg
aXNFcXVhbFRvU3RyaW5nOkAiRnVsZmlsbGVkISJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9u
ZSA9IGZhbHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnUmVqZWN0Jyk7IGF3YWl0IHA7
IHJldHVybiBwOyI7CisgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpmdW5jdGlvbkJv
ZHkgYXJndW1lbnRzOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQg
Y29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpA
IlJlamVjdGVkISJdKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBmdW5jdGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ1VuZGVmaW5lZCcpOyB2YXIgcmVzdWx0ID0g
YXdhaXQgcDsgcmV0dXJuIHJlc3VsdCA9PSB1bmRlZmluZWQgPyAnWWVzJyA6ICdObyciOworICAg
IFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czpuaWwg
aW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
OlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5n
OkAiWWVzIl0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBmdW5j
dGlvbkJvZHkgPSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoJ0RvIG5vdGhpbmcnKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKyAg
ICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmls
IGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
cmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CisgICAgICAgIEVYUEVDVF9U
UlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAiZGlkIG5vdCByZXNwb25k
IHRvIHRoaXMgcG9zdE1lc3NhZ2UiXSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZh
bHNlOworICAgIGZ1bmN0aW9uQm9keSA9IEAidmFyIHAgPSB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnSW52YWxpZCByZXBseScpOyBhd2FpdCBw
OyByZXR1cm4gcDsiOworICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6ZnVuY3Rpb25C
b2R5IGFyZ3VtZW50czpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29udGFpbnNTdHJpbmc6
QCJ1bmFibGUgdG8gYmUgc2VyaWFsaXplZCJdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFdvcmxkTGlmZXRpbWUpCit7CisgICAgUmV0YWluUHRy
PFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0
TlMoW1tBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisKKyAgICBSZXRh
aW5QdHI8V0tDb250ZW50V29ybGQ+IHdvcmxkID0gW1dLQ29udGVudFdvcmxkIHdvcmxkV2l0aE5h
bWU6QCJvdGhlcldvcmxkIl07CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJv
bGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoUmVwbHk6aGFuZGxlci5nZXQoKSBjb250
ZW50V29ybGQ6d29ybGQuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICAvLyBTZXQgYSB2YXJpYWJsZSBpbiB0aGUgd29ybGQuCisgICAgYm9vbCBkb25lID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAidmFyIGZvbyA9ICdiYXIn
IiBpbkNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIEhhdmUgdGhlIG1lc3NhZ2UgaGFu
ZGxlciBib3VuY2UgYmFjayB0aGF0IHZhbHVlLgorICAgIE5TU3RyaW5nICpmdW5jdGlvbkJvZHkg
PSBAInZhciBwID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9z
dE1lc3NhZ2UoZm9vKTsgYXdhaXQgcDsgcmV0dXJuIHA7IjsKKyAgICBbd2ViVmlldyBjYWxsQXN5
bmNKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhcmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxkOndv
cmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJv
cikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFty
ZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiYmFyIl0pOworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRv
bmUgPSBmYWxzZTsKKworICAgIC8vIFJlbW92ZSB0aGUgbWVzc2FnZSBoYW5kbGVyLCB3aGljaCB1
c2VkIHRvIGNhdXNlIHRoZSB3b3JsZCB0byBiZSBkZXN0cm95ZWQgaW4gdGhlIHdlYiBwcm9jZXNz
LgorICAgIC8vIEJ1dCBieSBldmFsdWF0aW5nIEpTIG1ha2Ugc3VyZSB0aGUgdmFsdWUgaXMgc3Rp
bGwgdGhlcmUuCisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gcmVt
b3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKV07
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZm9vIiBpbkNvbnRlbnRXb3JsZDp3
b3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJhciJdKTsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBk
b25lID0gZmFsc2U7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>