<?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>95301</bug_id>
          
          <creation_ts>2012-08-29 00:26:33 -0700</creation_ts>
          <short_desc>Improve the way we use convertedSpaceString() in convertHTMLTextToInterchangeFormat()</short_desc>
          <delta_ts>2012-09-02 13:26:06 -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>Web Template Framework</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>707172</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-29 00:26:33 -0700</bug_when>
    <thetext>Check why &quot;&lt;span class=\&quot;&quot; AppleConvertedSpace &quot;\&quot;&gt;&quot; + noBreakSpace + &quot;&lt;/span&gt;&quot; does not work.

See https://bugs.webkit.org/show_bug.cgi?id=95294</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709865</commentid>
    <comment_count>1</comment_count>
      <attachid>161748</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-31 12:03:29 -0700</bug_when>
    <thetext>Created attachment 161748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710350</commentid>
    <comment_count>2</comment_count>
      <attachid>161846</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-02 13:25:26 -0700</bug_when>
    <thetext>Created attachment 161846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710351</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-02 13:26:06 -0700</bug_when>
    <thetext>Committed r127392: &lt;http://trac.webkit.org/changeset/127392&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161748</attachid>
            <date>2012-08-31 12:03:29 -0700</date>
            <delta_ts>2012-09-02 13:25:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95301-20120831120316.patch</filename>
            <type>text/plain</type>
            <size>4058</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDYxNTcyNmY5NTgxOTRh
YTA2OWM4MGNlYzQwNGI4NjQ4NjQzYjEwOS4uYTVkMjViZThlMjE2ZDQ4MTdmNjYzZTIzMDNlODcx
MTEyZWJiY2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA4LTMxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgdGhl
IHdheSB3ZSB1c2UgY29udmVydGVkU3BhY2VTdHJpbmcoKSBpbiBjb252ZXJ0SFRNTFRleHRUb0lu
dGVyY2hhbmdlRm9ybWF0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk1MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIHN0YXRpYyBzdHJpbmcgY29udmVydGVkU3BhY2VTdHJpbmcoKSBoYWQgYSBj
b3VwbGUgb2YgYW5ub3lpbmcgc2lkZSBlZmZlY3RzOgorICAgICAgICAtVGhlIHN0cmluZyB3YXMg
MTZiaXRzIGR1ZSB0byBub0JyZWFrU3BhY2UsIHdoaWNoIGZvcmNlZCBhbnkgaW5wdXQgdG8gYmUg
Y29udmVydGVkIHRvIDE2Yml0cy4KKyAgICAgICAgLVRoZSBzdHJpbmcgd2FzIGtlcHQgaW4gdGhl
IGhlYXAgZm9yIG5vIHBhcnRpY3VsYXIgcmVhc29uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVk
ZWZpbmVzIGNvbnZlcnRlZFNwYWNlU3RyaW5nIGFzIGEgY29uc3RhbnQgbGl0ZXJhbCBzbyB0aGF0
IHdlIGNhbiB1c2UgaXQgZWZmaWNpZW50bHkuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gbWFr
ZSB0aGUgYmluYXJ5IGEgdGlueSBiaXQgc21hbGxlciAoNzAwIGJ5dGVzKS4KKworICAgICAgICAq
IGVkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRI
VE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQpOgorCiAyMDEyLTA4LTMwICBKdWxpZW4gQ2hhZmZy
YWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIENyYXNoIGluIFJlbmRlclRh
YmxlOjpjYWxjQm9yZGVyRW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hU
TUxJbnRlcmNoYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5n
ZS5jcHAKaW5kZXggZmRlZmE0MzdhYzVjZDViMWJmNmIzYTBhMDlkYWNkOWQ4ZDc1NDMyNS4uMGRm
OWIyNWVmMWZmOGZlMjI4YmZhMjU3MWY0OWVlMDZiNzU2ZWRiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcApAQCAtMzUsMTggKzM1LDE1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFN0cmluZyBjb252ZXJ0ZWRTcGFjZVN0cmluZygpCi17
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnZlcnRlZFNwYWNlU3RyaW5nLCAo
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiPHNwYW4gY2xhc3M9XCIiIEFwcGxlQ29udmVydGVkU3BhY2Ug
IlwiPiIpKSArIG5vQnJlYWtTcGFjZSArICI8L3NwYW4+IikpOwotICAgIHJldHVybiBjb252ZXJ0
ZWRTcGFjZVN0cmluZzsKLX0KLQogU3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VG
b3JtYXQoY29uc3QgU3RyaW5nJiBpbiwgY29uc3QgVGV4dCogbm9kZSkKIHsKICAgICAvLyBBc3N1
bWUgYWxsIHRoZSB0ZXh0IGNvbWVzIGZyb20gbm9kZS4KICAgICBpZiAobm9kZS0+cmVuZGVyZXIo
KSAmJiBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkKICAgICAg
ICAgcmV0dXJuIGluOwogCisgICAgY29uc3QgY2hhciBjb252ZXJ0ZWRTcGFjZVN0cmluZ1tdID0g
IjxzcGFuIGNsYXNzPVwiIiBBcHBsZUNvbnZlcnRlZFNwYWNlICJcIj5ceEEwPC9zcGFuPiI7Cisg
ICAgQ09NUElMRV9BU1NFUlQoKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCdceEEwJykgPT0g
bm9CcmVha1NwYWNlKSwgQ29udmVydGVkU3BhY2VTdHJpbmdTcGFjZUlzTm9CcmVha1NwYWNlKTsK
KwogICAgIFN0cmluZ0J1aWxkZXIgczsKIAogICAgIHVuc2lnbmVkIGkgPSAwOwpAQCAtNjQsMjgg
KzYxLDI4IEBAIFN0cmluZyBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KGNvbnN0
IFN0cmluZyYgaW4sIGNvbnN0IFRleHQqIG5vZGUpCiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
YWRkID0gY291bnQgJSAzOwogICAgICAgICAgICAgICAgIHN3aXRjaCAoYWRkKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKGNv
bnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmRM
aXRlcmFsKGNvbnZlcnRlZFNwYWNlU3RyaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHMu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRT
cGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kTGl0ZXJhbChj
b252ZXJ0ZWRTcGFjZVN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgPSAzOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDAgfHwgaSArIDEgPT0gaW4ubGVu
Z3RoKCkpIC8vIGF0IHN0YXJ0IG9yIGVuZCBvZiBzdHJpbmcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLmFwcGVuZExpdGVyYWwoY29udmVydGVkU3BhY2VTdHJpbmcpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMu
YXBwZW5kKCcgJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCBzdGFydCBvZiBzdHJpbmcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZExpdGVyYWwoY29udmVydGVkU3Bh
Y2VTdHJpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgJyk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgKyAyID09IGluLmxlbmd0aCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF0IGVuZCBvZiBzdHJpbmcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZExpdGVyYWwoY29udmVy
dGVkU3BhY2VTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kTGl0
ZXJhbChjb252ZXJ0ZWRTcGFjZVN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKGNvbnZlcnRlZFNwYWNl
U3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kTGl0ZXJhbChj
b252ZXJ0ZWRTcGFjZVN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBl
bmQoJyAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161846</attachid>
            <date>2012-09-02 13:25:26 -0700</date>
            <delta_ts>2012-09-02 13:25:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95301-20120902132511.patch</filename>
            <type>text/plain</type>
            <size>105213</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZmYxM2EzMGY2MjM4MWIzZjQxNGIxMzhlMjI0MDFhZjY2MWYzMjIzLi5kYzZkNmU5NGZiYjk0NjYw
Y2M1NTBiZjZkN2U1MjI0MzQ3ZTUwMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMTItMDktMDIgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBKU0MgdXNlIG9mIFN0cmluZ3MgYWZ0ZXIgdGhlIFVT
dHJpbmctPlN0cmluZyBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlIHRoZSB1c2Ugb2Ygc3RyaW5ncyBpbiB0aGUg
SlNDIHJ1bnRpbWUuCisKKyAgICAgICAgVGhlIGluaXRpYWxpemF0aW9uIG9mIElkZW50aWZpZXIg
aXMgbGVmdCBmb3IgZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIGltcHJvdmVtZW50cyBh
cmUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgLTUlIGZhc3RlciB0byByYWlzZSBvbmUgb2YgdGhl
IG1vZGlmaWVkIGV4Y2VwdGlvbi4KKyAgICAgICAgLTMgdGltZXMgZmFzdGVyIHRvIGV4ZWN1dGUg
Qm9vbGVhbjo6dG9TdHJpbmcoKQorCisgICAgICAgIE1vc3Qgb2YgdGhlIGNoYW5nZXMgYXJlIGp1
c3QgYWJvdXQgdXNpbmcgdGhlIG5ldyBtZXRob2RzCisgICAgICAgIGZvciBzdHJpbmcgbGl0ZXJh
bHMuCisKKyAgICAgICAgV2l0aCB0aGUgY2hhbmdlcywgdGhlIGJpbmFyeSBvbiB4ODZfNjQgZ2V0
cyAxNzYgYnl0ZXMgc21hbGxlci4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAg
ICAoSlNDOjo6OmNhbGxiYWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNw
cDoKKyAgICAgICAgKEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6CisgICAgICAgICogQVBJL0pT
T2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNr
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjp2YWx1
ZVRvU291cmNlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0
ZXIpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmFkZFN0YWNrVHJhY2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXJyYXlX
aXRoU2l6ZVF1aXJrKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNQb3ApOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1JldmVy
c2UpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6IEluc3RlYWQgb2YgaW5zdGFuY2lhdGluZyBu
ZXcgc3RyaW5ncywgcmV1c2UgdGhlCisgICAgICAgIGtleXdvcmRzIGF2YWlsYWJsZSBpbiBTbWFs
bFN0cmluZ3MuIEF2b2lkaW5nIHRoZSBjcmVhdGlvbiBvZiB0aGUgSlNTdHJpbmcgYW5kIFN0cmlu
Z0ltcGwKKyAgICAgICAgbWFrZXMgdGhlIG1ldGhvZCBzaWduaWZpY2FudGx5IGZhc3Rlci4KKwor
ICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3Jt
YXREYXRlVGltZSk6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Zm9ybWF0TG9jYWxlRGF0ZSk6CisgICAgICAgIChKU0M6OmZvcm1hdGVEYXRlSW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcpOgorICAgICAg
ICBDaGFuZ2UgdGhlIHdheSB3ZSB1c2Ugc25wcmludGYoKSBmb3IgY2xhcml0eSBhbmQgcGVyZm9y
bWFuY2UuCisKKyAgICAgICAgSW5zdGVhZCBvZiBhbGxvY2F0aW5nIG9uZSBleHRyYSBieXRlIHRv
IHB1dCBhIHplcm8gImp1c3QgaW4gY2FzZSIsIHdlIHVzZSB0aGUgc2l6ZSByZXR1cm5lZAorICAg
ICAgICBieSBzbnByaW50ZigpLgorICAgICAgICBUbyBwcmV2ZW50IGFueSBvdmVyZmxvdyBmcm9t
IGEgcHJvZ3JhbW1pbmcgbWlzdGFrZSwgd2UgZXhwbGljaXRlbHkgdGVzdCBmb3Igb3ZlcmZsb3cg
YW5kCisgICAgICAgIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCisKKyAgICAgICAgKEpTQzo6ZGF0
ZVByb3RvRnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAg
IChKU0M6OmNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKToKKyAgICAgICAgKEpTQzo6dGhy
b3dUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N5bnRheEVycm9yKToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIFVzaW5nIGEgbnVsbCBTdHJpbmcg
aXMgY29ycmVjdCBiZWNhdXNlICg4KSB1c2VzIGpzU3RyaW5nKCksICg5KSB0ZXN0cyBmb3IgYSBs
ZW5ndGggb2YgMC4KKworICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6Cisg
ICAgICAgIChKU0M6OkludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIFVzaW5nIGEgbnVsbCBT
dHJpbmcgZm9yIHRoZSBuYW1lIGlzIGNvcnJlY3QgYmVjYXVzZSBJbnRlcm5hbEZ1bmN0aW9uIHVz
ZXMganNTdHJpbmcoKQorICAgICAgICB0byBjcmVhdGUgdGhlIG5hbWUgdmFsdWUuCisKKyAgICAg
ICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5h
bEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8g
Y3JlYXRlIGFuIGVtcHR5IHN0cmluZyBmb3IgYSBudWxsIHN0cmluZywganNTdHJpbmcoKSBoYW5k
bGUgYm90aAorICAgICAgICBjYXNlcyBhcyBlbXB0eSBKU1N0cmluZy4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgIChKU0M6
OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpKU0FycmF5OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnBvcCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmZpbmlzaENyZWF0
aW9uKTogU2FtZSBpc3N1ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbi4KKwor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwOgorICAgICAgICAoSlNDOjplbmFibGVBc3NlbWJsZXIpOiBVc2UgQ0ZTVFIoKSBp
bnN0ZWFkIG9mIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoKS4KKyAgICAgICAgQ0ZTdHJpbmdD
cmVhdGVXaXRoQ1N0cmluZygpIGNvcHkgdGhlIGNvbnRlbnQgYW5kIG1heSBjaG9vc2UgdG8gZGVj
b2RlIHRoZSBkYXRhLgorICAgICAgICBDRlNUUigpIGlzIG11Y2ggbW9yZSBlZmZpY2llbnQuCisK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgSlNGdW5jdGlvbiB1c2VzIGpzU3RyaW5nKCkg
dG8gY3JlYXRlIHRoZSBuYW1lLCB3ZSBjYW4gdXNlIG51bGwgc3RyaW5ncyBpbnN0ZWFkCisgICAg
ICAgIG9mIGNyZWF0aW5nIGVtcHR5IHN0cmluZ3MuCisKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmNyZWF0ZVRocm93VHlwZUVycm9yKTogZGl0dG8uCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmVuY29kZSk6CisgICAg
ICAgIChKU0M6OmRlY29kZSk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6
YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpIb2xk
ZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJz
ZSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpoYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIFJldHVybiBhbiBl
bXB0eSBKU1N0cmluZyB0byBhdm9pZCB0aGUgY3JlYXRpb24gb2YgYSB0ZW1wb3JhcnkgZW1wdHkg
U3RyaW5nLgorCisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZzo6Z2V0SW5kZXhTbG93Q2FzZSk6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKTogUmVtb3ZlIHRo
ZSB2ZXJzaW9ucyBvZiBqc05vbnRyaXZpYWxTdHJpbmcoKSB0YWtpbmcgYSBjaGFyKi4gQWxsIHRo
ZSBjYWxsZXJzCisgICAgICAgIGhhdmUgYmVlbiByZXBsYWNlZCBieSBjYWxscyB1c2luZyBBU0NJ
SUxpdGVyYWwuCisKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4KToKKyAgICAgICAgKEpTQzo6OjpM
ZXhlcjo6bGV4U3RyaW5nKToKKyAgICAgICAgKEpTQzo6OjpMZXhlcjo6bGV4TnVtYmVyKToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6
CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90
b0Z1bmNUb0V4cG9uZW50aWFsKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9GaXhl
ZCk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKToKKyAgICAgICAg
KEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3Rv
dHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAo
SlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9iamVj
dENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JQcmV2
ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQp
OgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0
dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RSZWdFeHApOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVqZWN0KToK
KyAgICAgICAgKEpTQzo6cmVnRXhwT2JqZWN0U291cmNlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0NvbXBpbGUp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAg
ICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyk6CisKIDIwMTItMDktMDEg
IEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsZWQgYmFj
ayBvdXQgYSBwaWVjZSBvZiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI3Mjkz
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAppbmRleCA4MzI2YzA1NzlhYTA3MWMzNzU3MzdlZjY0MjdjZTMxZDdhYzYwMTU3
Li4wNjkxZGFmYzMwNTU1NzQ0MTdjMTE5MWZiZTJhMDM4MGQyODgyMTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApA
QCAtNTY4LDcgKzU2OCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0
aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUKICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsICJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVu
Y3Rpb24gY2FsbGJhY2suIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5
IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSk7CiB9CiAKIHRl
bXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkBAIC02MDAsNyArNjAwLDcgQEAgSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90UGEKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5l
ZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4iKSk7CisgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5lZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQg
ZG9lc24ndCBleGlzdC4iKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCBiYWUzMTAxMDViMjRiNmEyZDFm
YjQ2ZWRmMzI2NGVhZjllZDEzYzY4Li4zNjBlMzM3ZWVjZWUyMTk2YzdhNGI5ZjUyYjZhMGFlZThj
YzIzMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBA
IC0xNzMsOSArMTczLDkgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpT
Q29udGV4dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICBpZiAoZXhlYy0+Y2Fs
bGVlKCkpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KGV4ZWMtPmNhbGxlZSgpKS0+aW5oZXJpdHMo
JkludGVybmFsRnVuY3Rpb246OnNfaW5mbykpIHsKICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSA9
IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPm5hbWUoZXhlYyk7Ci0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiIzAgIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiMwICIpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lKTsK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoKSAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiKCkgIik7CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBlNmMw
YzUyOGE3MDZkMzBjNDA1NzY4MWVjOTI5OGY5YTg5Y2QyNzNjLi44YjBkNGEwOWZjZDVlNmNkM2Nj
ZjY4MTc2ZjQ1YWExZWEwODdlNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmNwcApAQCAtOTIsNyArOTIsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VGdW5j
dGlvbldpdGhDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lLAogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMpOwotICAgIHJldHVybiB0b1JlZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8g
bmFtZS0+dXN0cmluZygpIDogImFub255bW91cyIpKTsKKyAgICByZXR1cm4gdG9SZWYoSlNDYWxs
YmFja0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBj
YWxsQXNGdW5jdGlvbiwgbmFtZSA/IG5hbWUtPnVzdHJpbmcoKSA6IEFTQ0lJTGl0ZXJhbCgiYW5v
bnltb3VzIikpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlND
b250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVj
dG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDJlODYwZGVhMGVhZDI1ZDhkMWVkNjgzMDdlMTk4
MzZhODIwOGUzYjMuLmVmODk4MTJhN2EyMGZjMzhiOWM4Njc4MGI3MGUzNmFlZTIwODJkYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC03NSw3
ICs3NSw3IEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFN0cmluZyYgc3RyKQog
c3RhdGljIFN0cmluZyB2YWx1ZVRvU291cmNlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWwpCiB7CiAgICAgaWYgKCF2YWwpCi0gICAgICAgIHJldHVybiAiMCI7CisgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoIjAiKTsKIAogICAgIGlmICh2YWwuaXNTdHJpbmcoKSkKICAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoIlwiIiwgZXNjYXBlUXVvdGVzKHZhbC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpLCAiXCIiKTsKQEAgLTMwMzIsMTQgKzMwMzIsMTQgQEAgU3RyaW5nIENv
ZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKGludCByZWdpc3Rlck51bWJlcikKICAgICAgICAgICAg
IHJldHVybiBTdHJpbmcocHRyLT5maXJzdCk7CiAgICAgfQogICAgIGlmIChuZWVkc0FjdGl2YXRp
b24oKSAmJiByZWdpc3Rlck51bWJlciA9PSBhY3RpdmF0aW9uUmVnaXN0ZXIoKSkKLSAgICAgICAg
cmV0dXJuICJhY3RpdmF0aW9uIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYWN0aXZh
dGlvbiIpOwogICAgIGlmIChyZWdpc3Rlck51bWJlciA9PSB0aGlzUmVnaXN0ZXIoKSkKLSAgICAg
ICAgcmV0dXJuICJ0aGlzIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGhpcyIpOwog
ICAgIGlmICh1c2VzQXJndW1lbnRzKCkpIHsKICAgICAgICAgaWYgKHJlZ2lzdGVyTnVtYmVyID09
IGFyZ3VtZW50c1JlZ2lzdGVyKCkpCi0gICAgICAgICAgICByZXR1cm4gImFyZ3VtZW50cyI7Cisg
ICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhcmd1bWVudHMiKTsKICAgICAgICAgaWYg
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3RlcigpKSA9PSByZWdp
c3Rlck51bWJlcikKLSAgICAgICAgICAgIHJldHVybiAicmVhbCBhcmd1bWVudHMiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgicmVhbCBhcmd1bWVudHMiKTsKICAgICB9CiAgICAg
aWYgKHJlZ2lzdGVyTnVtYmVyIDwgMCkgewogICAgICAgICBpbnQgYXJndW1lbnRQb3NpdGlvbiA9
IC1yZWdpc3Rlck51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdjNGViMGQzOWU1OGFkNDVlODA0NjgyNmJhNzg3N2M0
MDIzNjI1NGUuLmMzZDIzMjE5ZjJjNzUwODIwNWYxNmZjZjE2M2ViNjJjYTVkZmIxZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApA
QCAtNzQyLDYgKzc0Miw4IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmFkZFN0YWNrVHJhY2VJZk5lY2Vz
c2FyeShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGVycm9yCiAgICAgICAgIGdsb2Jh
bE9iamVjdCA9IGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3Q7CiAgICAgZWxzZQogICAg
ICAgICBnbG9iYWxPYmplY3QgPSBlcnJvci0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyBGSVhN
RTogSlNTdHJpbmdKb2luZXIgY291bGQgYmUgbW9yZSBlZmZpY2llbnQgdGhhbiBTdHJpbmdCdWls
ZGVyIGhlcmUuCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzdGFja1RyYWNlLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZyhzdGFja1RyYWNlW2ldLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKS5pbXBsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODNlNDhjYTFiMmQxODZhZmEzZDcxMGQ1YTNhZjRmZjhl
OGUxYmRjOC4uYzlhNmRjNjAwYzQyMmRmZjViNDk4YWZjYmY3YmRiNTRhZWQyZmRiOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
QEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGlubGluZSBKU09iamVjdCogY29uc3RydWN0QXJyYXlX
aXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGkKICAgICBpZiAoYXJncy5z
aXplKCkgPT0gMSAmJiBhcmdzLmF0KDApLmlzTnVtYmVyKCkpIHsKICAgICAgICAgdWludDMyX3Qg
biA9IGFyZ3MuYXQoMCkudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmIChuICE9IGFyZ3MuYXQo
MCkudG9OdW1iZXIoZXhlYykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBw
b3NpdGl2ZSBpbnRlZ2VyLiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBzaXplIGlzIG5vdCBh
IHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CiAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgbik7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggZDAz
Y2U1MzE2N2U0NjBlYWY0YTkwNTEwNDk4YjY1MmM5YTQ3MWMwOS4uNGIxM2Y5OTNjZWQyM2I4MDEz
YzE5MGZjYzhhNmFjMmY5M2MwZWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMjA1LDEzICsyMDUsMTMgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2ln
bmVkIGhlYWRlciwgdW4KICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGsgPSBsZW5ndGg7IGsgPiBsZW5ndGggLSBjb3Vu
dDsgLS1rKSB7CiAgICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJv
cGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQz
LDcgKzI0Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhlYWRlciwKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIHRvLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmot
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC00OTEsNyArNDkx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGlmICgh
dGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxlbmd0aCAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAg
ICAgICAgIHB1dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfSBlbHNl
IGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGspKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAKQEAg
LTU2Miw3ICs1NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSkpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCmluZGV4IDE1NTFlYWJmMjY4MjBjNGIzYWRk
YTllOTY2YjQ0M2RkOThkOTA1NjEuLmM4Yzc3MjIwYTk0YzM2OWIxNmQ4NWJjNzIyMTQ0ZTJiNzRm
YWYyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Q
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Q
cm90b3R5cGUuY3BwCkBAIC03NywyMSArNzcsMjIgQEAgYm9vbCBCb29sZWFuUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGUK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmco
RXhlY1N0YXRlKiBleGVjKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1Zh
bHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZmFsc2UiKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
LmZhbHNlU3RyaW5nKGdsb2JhbERhdGEpKTsKIAogICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29s
ZWFuKHRydWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCAidHJ1ZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9i
YWxEYXRhLT5zbWFsbFN0cmluZ3MudHJ1ZVN0cmluZyhnbG9iYWxEYXRhKSk7CiAKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cygmQm9vbGVhbk9iamVjdDo6c19pbmZvKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAKICAgICBpZiAoYXNCb29sZWFuT2JqZWN0KHRo
aXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZmFsc2UiKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
LmZhbHNlU3RyaW5nKGdsb2JhbERhdGEpKTsKIAogICAgIEFTU0VSVChhc0Jvb2xlYW5PYmplY3Qo
dGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgInRydWUiKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MudHJ1ZVN0
cmluZyhnbG9iYWxEYXRhKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9v
bGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDkzMzE1NDFhODQ4NmI1
MzRlYTRlNTZjYmNlZGNjMDc1MzZmMjQ1YjAuLjBiNTdmMDEyZDU2MTRjMDI0N2EwN2I0MzQwMGRl
OTc1YmQ4OGY4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29udmVyc2lvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQod2Vla2RheU5hbWVbKHQud2Vla0RheSgpICsgNikgJSA3
XSk7CiAKICAgICAgICAgaWYgKGFzVVRDVmFyaWFudCkgewotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIiwgIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CiAg
ICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5tb250aERheSgpKTsKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCht
b250aE5hbWVbdC5tb250aCgpXSk7CkBAIC05Niw3ICs5Niw3IEBAIFN0cmluZyBmb3JtYXREYXRl
VGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBi
b29sIGFzCiAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1pbnV0ZSgpKTsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxk
ZXIsIHQuc2Vjb25kKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiIEdNVCIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBHTVQiKTsKIAogICAgICAgICBpZiAoIWFzVVRDVmFy
aWFudCkgewogICAgICAgICAgICAgaW50IG9mZnNldCA9IGFicyh0LnV0Y09mZnNldCgpKSAvIDYw
OwpAQCAtMTE0LDcgKzExNCw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAgICAg
ICBzdHJmdGltZSh0aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9uZU5hbWUpLCAiJVoiLCAmZ3Rt
KTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKHRpbWVab25lTmFtZVswXSkgewotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiICgiKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0aW1lWm9u
ZU5hbWUpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
CmluZGV4IDhjZmQ0NGVlZjg3MTQ0MTI5Yjc2MGYwNmRiOTcyODI0ODhlODM2NWIuLjYyMjExZDMw
MjQ3MmNhZWI0YmFjMGI3ODEwNzczYzExYzg1ZGJmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgc3Rh
dGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0YW5j
ZSogZGF0ZU9iamVjdCwgZG91YmwKIHsKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3Jl
Z29yaWFuRGF0ZVRpbWUgPSBkYXRlT2JqZWN0LT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgRGF0ZSIpKTsKICAgICByZXR1cm4gZm9y
bWF0TG9jYWxlRGF0ZShleGVjLCAqZ3JlZ29yaWFuRGF0ZVRpbWUsIGZvcm1hdCk7CiB9CiAKQEAg
LTM1Miw3ICszNTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJbnN0YW5j
ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVUaW1lRm9ybWF0IGZvcm1hdAogICAgICAgICA/IHRoaXNE
YXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKQogICAgICAgICA6IHRoaXNEYXRlT2Jq
LT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
SW52YWxpZCBEYXRlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZv
cm1hdERhdGVUaW1lKCpncmVnb3JpYW5EYXRlVGltZSwgZm9ybWF0LCBhc1VUQ1ZhcmlhbnQpKSk7
CiB9CkBAIC01NDgsMjQgKzU0OCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgRGF0ZUlu
c3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIGlm
ICghaXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgRGF0
ZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBEYXRlIikpKTsKIAogICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZVVUQyhleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBE
YXRlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpKTsKICAgICAvLyBN
YXhpbXVtIGFtb3VudCBvZiBzcGFjZSB3ZSBuZWVkIGluIGJ1ZmZlcjogNyAobWF4LiBkaWdpdHMg
aW4geWVhcikgKyAyICogNSAoMiBjaGFyYWN0ZXJzIGVhY2ggZm9yIG1vbnRoLCBkYXksIGhvdXIs
IG1pbnV0ZSwgc2Vjb25kKSArIDQgKC4gKyAzIGRpZ2l0cyBmb3IgbWlsbGlzZWNvbmRzKQogICAg
IC8vIDYgZm9yIGZvcm1hdHRpbmcgYW5kIG9uZSBmb3IgbnVsbCB0ZXJtaW5hdGlvbiA9IDI4LiBX
ZSBhZGQgb25lIGV4dHJhIGNoYXJhY3RlciB0byBhbGxvdyB1cyB0byBmb3JjZSBudWxsIHRlcm1p
bmF0aW9uLgotICAgIGNoYXIgYnVmZmVyWzI5XTsKKyAgICBjaGFyIGJ1ZmZlclsyOF07CiAgICAg
Ly8gSWYgdGhlIHllYXIgaXMgb3V0c2lkZSB0aGUgYm91bmRzIG9mIDAgYW5kIDk5OTkgaW5jbHVz
aXZlIHdlIHdhbnQgdG8gdXNlIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCAoRVMgMTUuOS4xLjE1
LjEpLgogICAgIGludCBtcyA9IHN0YXRpY19jYXN0PGludD4oZm1vZCh0aGlzRGF0ZU9iai0+aW50
ZXJuYWxOdW1iZXIoKSwgbXNQZXJTZWNvbmQpKTsKICAgICBpZiAobXMgPCAwKQogICAgICAgICBt
cyArPSBtc1BlclNlY29uZDsKKworICAgIGludCBjaGFyYWN0ZXJzV3JpdHRlbjsKICAgICBpZiAo
Z3JlZ29yaWFuRGF0ZVRpbWUtPnllYXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnll
YXIoKSA8IDApCi0gICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxLCAi
JSswN2QtJTAyZC0lMDJkVCUwMmQ6JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0ZVRpbWUt
PnllYXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGlt
ZS0+bW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRp
bWUtPm1pbnV0ZSgpLCBncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKKyAgICAgICAg
Y2hhcmFjdGVyc1dyaXR0ZW4gPSBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJSsw
N2QtJTAyZC0lMDJkVCUwMmQ6JTAyZDolMDJkLiUwM2RaIiwgZ3JlZ29yaWFuRGF0ZVRpbWUtPnll
YXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGltZS0+
bW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUtPmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUt
Pm1pbnV0ZSgpLCBncmVnb3JpYW5EYXRlVGltZS0+c2Vjb25kKCksIG1zKTsKICAgICBlbHNlCi0g
ICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxLCAiJTA0ZC0lMDJkLSUw
MmRUJTAyZDolMDJkOiUwMmQuJTAzZFoiLCBncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpLCBncmVn
b3JpYW5EYXRlVGltZS0+bW9udGgoKSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgp
LCBncmVnb3JpYW5EYXRlVGltZS0+aG91cigpLCBncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCks
IGdyZWdvcmlhbkRhdGVUaW1lLT5zZWNvbmQoKSwgbXMpOwotICAgIGJ1ZmZlcltzaXplb2YoYnVm
ZmVyKSAtIDFdID0gMDsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCBidWZmZXIpKTsKKyAgICAgICAgY2hhcmFjdGVyc1dyaXR0ZW4gPSBzbnByaW50
ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJTA0ZC0lMDJkLSUwMmRUJTAyZDolMDJkOiUwMmQu
JTAzZFoiLCBncmVnb3JpYW5EYXRlVGltZS0+eWVhcigpLCBncmVnb3JpYW5EYXRlVGltZS0+bW9u
dGgoKSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSgpLCBncmVnb3JpYW5EYXRlVGlt
ZS0+aG91cigpLCBncmVnb3JpYW5EYXRlVGltZS0+bWludXRlKCksIGdyZWdvcmlhbkRhdGVUaW1l
LT5zZWNvbmQoKSwgbXMpOworCisgICAgQVNTRVJUKGNoYXJhY3RlcnNXcml0dGVuID4gMCAmJiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFjdGVyc1dyaXR0ZW4pIDwgc2l6ZW9mKGJ1ZmZlcikp
OworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFjdGVyc1dyaXR0ZW4pID49IHNp
emVvZihidWZmZXIpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJp
bmcoZXhlYykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgU3RyaW5nKGJ1ZmZlciwgY2hhcmFjdGVyc1dyaXR0ZW4pKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCkBAIC0xMTEzLDEzICsxMTE5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNPTihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0b0lTT1ZhbHVl
LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgInRvSVNPU3Ry
aW5nIGlzIG5vdCBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGlzIG5v
dCBhIGZ1bmN0aW9uIikpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBhc09i
amVjdCh0b0lTT1ZhbHVlKSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGV4ZWMtPmVtcHR5
TGlzdCgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgInRv
SVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoInRvSVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCAwYTUyMmM0ZmQwMDNkYWQwNjY0OGE4ZDEzOWFjYWZj
MDRmZTViN2MwLi4yN2E3MjlkMGFhZGRhOGZiODQyNjJhYTc0YmM1ZGI1MmEyMDBmYWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC04MSw3ICs4MSw3IEBAIEpT
T2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogCiBKU09iamVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7CisgICAgcmV0
dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3Vn
aCBhcmd1bWVudHMiKSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xNjksMTIgKzE2
OSwxMiBAQCBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBl
cnJvcikKIAogSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlR5cGUgZXJy
b3IiKSk7CisgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVHlwZSBlcnJvciIpKSk7CiB9CiAKIEpTT2JqZWN0KiB0aHJvd1N5bnRh
eEVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCAiU3ludGF4IGVycm9yIikpOworICAgIHJldHVybiB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4
IGVycm9yIikpKTsKIH0KIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXgg
YmM3MWY3MGIxOTA1ZTRhM2Y4ODRmNzllNTQ3NmVmMjA1ZmZmNmM1My4uOWMzNGEwNTc0Njk3MjMw
NDQ5Y2VjZDJmNDQyYjU4ZDkwMDRjOTZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5oCkBAIC04OSw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgICAgICB7CiAgICAgICAgICAgICBTdHJpY3RNb2RlVHlwZUVycm9y
RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNzYWdlKTsKLSAgICAgICAgICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksICIiKTsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIFN0cmluZygp
KTsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDM1
NGEzMTIxYTRiODdhMzY0MDRiOWQ3YzlmZWMyYzQ0MTRjMjcwZjIuLjZjOWQ2ZGYwNGQzN2Q0YWVh
NjcxMGRmN2Y0NjY5ZGMxOWEyOTlhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBFcnJvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCop
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4
ZWMsICJFcnJvciIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBT
dHJpbmcoQVNDSUlMaXRlcmFsKCJFcnJvciIpKSksIERvbnRFbnVtKTsKIH0KIAogYm9vbCBFcnJv
clByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCkBAIC05
OCw3ICs5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNU
b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1bmRlZmluZWQs
IHRoZW4gbGV0IG5hbWUgYmUgIkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0cmluZyhuYW1l
KS4KICAgICBTdHJpbmcgbmFtZVN0cmluZzsKICAgICBpZiAobmFtZS5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICBuYW1lU3RyaW5nID0gIkVycm9yIjsKKyAgICAgICAgbmFtZVN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiRXJyb3IiKTsKICAgICBlbHNlIHsKICAgICAgICAgbmFtZVN0cmluZyA9IG5hbWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCkBAIC0xMTUsNyArMTE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
cnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyA3LiBJZiBtc2cg
aXMgdW5kZWZpbmVkLCB0aGVuIGxldCBtc2cgYmUgdGhlIGVtcHR5IFN0cmluZzsgZWxzZSBsZXQg
bXNnIGJlIFRvU3RyaW5nKG1zZykuCiAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmc7CiAgICAgaWYg
KG1lc3NhZ2UuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgbWVzc2FnZVN0cmluZyA9ICIiOworICAg
ICAgICBtZXNzYWdlU3RyaW5nID0gU3RyaW5nKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1lc3Nh
Z2VTdHJpbmcgPSBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA4M2E0ZTAzYzNiM2I3MDQzNTM0OTlj
NGNjNzNmMjFiYTRiZmFjYTk0Li43NzFlZGNlMTJiZTFmYzg1NzdiMDIwYWUyMGNhMWI0Y2ZhNGRj
NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gSW50ZXJydXB0ZWRF
eGVjdXRpb25FcnJvcjo6c19pbmZvID0geyAiSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcgogSlNW
YWx1ZSBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKIHsKICAg
ICBpZiAoaGludCA9PSBQcmVmZXJTdHJpbmcpCi0gICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoZXhlYywgIkphdmFTY3JpcHQgZXhlY3V0aW9uIGV4Y2VlZGVkIHRpbWVvdXQuIik7Cisg
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKEFTQ0lJTGl0ZXJh
bCgiSmF2YVNjcmlwdCBleGVjdXRpb24gZXhjZWVkZWQgdGltZW91dC4iKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwogfQog
CkBAIC03NCw3ICs3NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3I6OnNfaW5mbyA9IHsgIlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciIsCiBKU1ZhbHVlIFRlcm1p
bmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCiB7CiAgICAgaWYgKGhpbnQg
PT0gUHJlZmVyU3RyaW5nKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICJKYXZhU2NyaXB0IGV4ZWN1dGlvbiB0ZXJtaW5hdGVkLiIpOworICAgICAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhBU0NJSUxpdGVyYWwoIkphdmFTY3JpcHQgZXhl
Y3V0aW9uIHRlcm1pbmF0ZWQuIikpKTsKICAgICByZXR1cm4gSlNWYWx1ZShzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0KIApAQCAtOTYsMTIgKzk2LDEyIEBAIGJv
b2wgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTVmFsdWUgdmFsdWUpCiAKIEpTT2Jq
ZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNl
ZWRlZC4iKTsKKyAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Ik1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpKTsKIH0KIAogSlNPYmplY3QqIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewot
ICAgIHJldHVybiBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk1heGltdW0gY2FsbCBz
dGFjayBzaXplIGV4Y2VlZGVkLiIpOworICAgIHJldHVybiBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgQVNDSUlMaXRlcmFsKCJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4i
KSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCkBAIC0xNTMsNyArMTUzLDcgQEAgSlNP
YmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHAKIAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiT3V0IG9mIG1lbW9yeSIpOworICAgIHJldHVybiBjcmVhdGVFcnJvcihn
bG9iYWxPYmplY3QsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIG1lbW9yeSIpKTsKIH0KIAogSlNPYmpl
Y3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDFlOTAxNDdmNmE2N2JmNDRl
OWJjZWYxN2FjYzYxMzM0MWMzMmNhOGEuLjc3YzI3NDkwMzVhNjk0MDk5ODQyNjJlZDY4ZDAzM2Q4
NDNiOTQ2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCkBAIC0yMDksNyArMjA5LDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxl
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSklUQ28KICAgICAgICAg
bV9ldmFsQ29kZUJsb2NrID0gbmV3Q29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIWxleGljYWxHbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgIkV2YWwg
aXMgZGlzYWJsZWQiKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVFdmFsRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFdmFsIGlzIGRpc2FibGVkIikpKTsKICAg
ICAgICAgUmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IHBhcnNlPEV2YWxOb2RlPihnbG9iYWxE
YXRhLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJjZSwgMCwgaXNTdHJpY3RNb2RlKCkgPyBK
U1BhcnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgRXZhbE5vZGU6OmlzRnVuY3Rpb25Ob2RlID8g
SlNQYXJzZUZ1bmN0aW9uQ29kZSA6IEpTUGFyc2VQcm9ncmFtQ29kZSwgbGV4aWNhbEdsb2JhbE9i
amVjdC0+ZGVidWdnZXIoKSwgZXhlYywgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmICghZXZhbE5v
ZGUpIHsKICAgICAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwpAQCAtNjc1LDcgKzY3NSw3IEBA
IFN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkgY29uc3QKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgcGFyYW1l
dGVycy5zaXplKCk7ICsrcG9zKSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQocGFyYW1ldGVyc1twb3Nd
LnVzdHJpbmcoKSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDA0MTFhMGM1MDhhMWU3NjA1NWIxN2Y2NDRkN2Y4ODc3OGY1MWE4NDQuLjQwNTA3
ZGFlMTY2YmU3MTYxMTdlOGRmMTNiOWFjYzNhNjAzOTQ0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC04Miw3
ICs4Miw3IEBAIENhbGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3Qm
IGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZUV2YWxFcnJvcihleGVjLCAiRnVuY3Rpb24gY29uc3RydWN0b3IgaXMgZGlzYWJsZWQiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkZ1bmN0aW9uIGNvbnN0cnVjdG9yIGlzIGRpc2FibGVkIikpKTsKICAgICBy
ZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xv
YmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24pOwogfQog
CkBAIC05MywyMCArOTMsMjAgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmoKICAgICAvLyBXZSBh
bHNvIG5lZWQgXG4gYmVmb3JlIHRoZSBjbG9zaW5nIH0gdG8gaGFuZGxlIC8vIGNvbW1lbnRzIGF0
IHRoZSBlbmQgb2YgdGhlIGxhc3QgbGluZQogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChh
cmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvZ3JhbSA9ICIoZnVuY3Rpb24oKSB7IFxufSkiOwor
ICAgICAgICBwcm9ncmFtID0gQVNDSUlMaXRlcmFsKCIoZnVuY3Rpb24oKSB7IFxufSkiKTsKICAg
ICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmlu
ZygiKGZ1bmN0aW9uKCkgeyAiLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSwgIlxufSkiKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGZ1bmN0aW9uKCIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIihmdW5jdGlvbigiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5h
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiLCIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
ICAgICAgICAgfQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiKSB7ICIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIikgeyAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5h
dChhcmdzLnNpemUoKSAtIDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJcbn0pIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XG59KSIpOwogICAgICAgICBwcm9ncmFtID0gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgK
aW5kZXggOWZmZWJmN2E5ZWRkNTA3ZDYyM2NlZTM2YTBlMzU2OTMzYTg1MjUzMy4uMDdmMzgxMzA2
M2YwMjRiZWY0OGQ1ZDIzMzE5MDNjNzc1MTA3NGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogcHJv
dG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KCpl
eGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
Ci0gICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsICIiKTsKKyAgICAg
ICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgU3RyaW5nKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMjE2
ZGNlMzc5NTVmZDQ3NzllNWE1ZDQ5N2E0MDUyZjE3N2UzNTZhZi4uZTJkZTAzZDkyOTYwZTQ4YzQy
YzhhOGFlZTkyNTk3NTFiYmJiYTJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBJbnRl
cm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IFN0cmluZyYgbmEKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YSAhPSBJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8ubWV0aG9kVGFibGUuZ2V0Q2Fs
bERhdGEpOwotICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1l
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChnbG9i
YWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxE
YXRhLCBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCiBjb25z
dCBTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAzYzBiNDMyMGY1YTg4N2Q4
MDczMDYzYjQ5N2IwNDIzYjMyMGUyYTI4Li44ZTE2MDZmZDgyOTAxNGQ1YTBjY2YwYWVmMzRhYTUx
ZGFmOTBkZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApA
QCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0RlbnNlRW5vdWdoRm9yVmVj
dG9yKHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgbnVtVmFsdWVzKQogc3RhdGljIGJvb2wgcmVq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCB0aHJvd0V4Y2VwdGlvbiwgY29uc3QgY2hhciogbWVz
c2FnZSkKIHsKICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIG1lc3NhZ2UpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwobWVzc2FnZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjEyLDE0ICsyMTIsMTQg
QEAgaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywg
SlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYg
IWFycmF5LT5pc0V4dGVuc2libGUoKSkgewogICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9y
KTsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghKGVu
dHJ5LmF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKICAgICAgICAgaWYgKGVudHJ5LmF0dHJpYnV0
ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBpbmxpbmUgdm9pZCBTcGFy
c2VBcnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5z
aWduZWQgaQogICAgIAogICAgIGlmICghc2V0dGVyKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJv
dykKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIEpTQXJyYXk6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCkgewogICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsK
ICAgICAgICAgaWYgKHZhbHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4o
bmV3TGVuZ3RoKSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKKyAgICAgICAgICAgIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJy
YXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0
aGlzT2JqZWN0LT5zZXRMZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgp
KTsKQEAgLTgxMSw3ICs4MTEsNyBAQCB2b2lkIEpTQXJyYXk6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlCiAgICAgICAgIC8v
IFByb2hpYml0IGdyb3dpbmcgdGhlIGFycmF5IGlmIGxlbmd0aCBpcyBub3Qgd3JpdGFibGUuCiAg
ICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8fCAhaXNFeHRlbnNpYmxlKCkpIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBsZW5ndGggPSBpICsgMTsKQEAgLTEyMzYsNyArMTIzNiw3IEBAIEpTVmFsdWUg
SlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdG9y
YWdlLT5tX2xlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICBpZiAoIWlzTGVuZ3Ro
V3JpdGFibGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIApAQCAtMTI2MSw3ICsxMjYx
LDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAvLyBDYWxsIHRoZSBbW0RlbGV0ZV1dIGludGVybmFsIG1l
dGhvZCBvZiBPIHdpdGggYXJndW1lbnRzIGluZHggYW5kIHRydWUuCiAgICAgaWYgKCFkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpcywgZXhlYywgaW5kZXgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAgICAgLy8gQ2FsbCB0aGUg
W1tQdXRdXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50cyAibGVuZ3RoIiwgaW5k
eCwgYW5kIHRydWUuCkBAIC0xMjk0LDcgKzEyOTQsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBtZXRob2RUYWJsZSgpLT5wdXRC
eUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2UtPm1fbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAg
ICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMuZC4KICAg
ICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7Cisg
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXgg
NGRkM2YwNWRkNTI0N2VlNTE1Y2JmMzg3ZjUzMDdlOGU1NWQ0NDMxYy4uOWQ4NDNjNzc0YWIyZjdh
Yzc5NDEzYjZhY2RlMmQ1Nzk4ZjFjMmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIGkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgbV9leGVjdXRhYmxlLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIGV4ZWN1dGFibGUpOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmlu
ZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIApAQCAtMjAzLDcgKzIwMyw3
IEBAIEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lCiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7CiAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAg
ICAgICByZXR1cm4gY2FsbGVyOwotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCAiRnVu
Y3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpOworICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2Vk
IHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSk7CiB9CiAKIEpTVmFsdWUgSlNGdW5jdGlvbjo6
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
QEAgLTQxNCwyNyArNDE0LDI3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgIAogICAg
IGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNvbmZp
Z3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUg
cHJvcGVydHkuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoZGVz
Y3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSB7
CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
QXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3IgYW4gdW5jb25maWd1cmFi
bGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVj
aGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYm
IGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0g
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1w
dGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3Bl
cnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgaWYgKCF2YWx1ZUNoZWNrKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlv
bikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJB
dHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4i
KSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggZWEw
NzRlZWNmNDVkNmUzZmQ3OTdiZTBhYzZkMzlhMWNkN2NhNDQ0OS4uZDdlYTkxOTdjZDY0OTJiYzgx
MjBiMTk1MmFmYjBlNDFlNTBhMjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMDQsOCArMTA0LDggQEAgc3RhdGljIGJvb2wgZW5h
YmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNhblVzZUpJVEtleShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKDAg
LCAiSmF2YVNjcmlwdENvcmVVc2VKSVQiLCBrQ0ZTdHJpbmdFbmNvZGluZ01hY1JvbWFuKSk7Ci0g
ICAgUmV0YWluUHRyPENGQm9vbGVhblJlZj4gY2FuVXNlSklUKEFkb3B0Q0YsIChDRkJvb2xlYW5S
ZWYpQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShjYW5Vc2VKSVRLZXkuZ2V0KCksIGtDRlByZWZl
cmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7CisgICAgQ0ZTdHJpbmdSZWYgY2FuVXNlSklUS2V5
ID0gQ0ZTVFIoIkphdmFTY3JpcHRDb3JlVXNlSklUIik7CisgICAgUmV0YWluUHRyPENGQm9vbGVh
blJlZj4gY2FuVXNlSklUKEFkb3B0Q0YsIChDRkJvb2xlYW5SZWYpQ0ZQcmVmZXJlbmNlc0NvcHlB
cHBWYWx1ZShjYW5Vc2VKSVRLZXksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7
CiAgICAgaWYgKGNhblVzZUpJVCkKICAgICAgICAgcmV0dXJuIGtDRkJvb2xlYW5UcnVlID09IGNh
blVzZUpJVC5nZXQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDMxYjI3YzUxZTAxYWE2MmM3NTY3YzczMjg1ZTZh
NzIxZDQzYmE1NDMuLmQwNGE3MDMxMzk2MGYxODUwOWYwN2VkYmI1YTc1ZWY2NzM3MTc4YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTIxMSw4ICsyMTEsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICBtX2FwcGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgYXBwbHlGdW5jdGlvbik7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgT2JqZWN0
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc051
bGwoKSkpKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZShleGVjKTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNQ
cm90b0dldHRlcikpOwotICAgIHByb3RvQWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxE
YXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCAiIiwgZ2xvYmFsRnVuY1By
b3RvU2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxG
dW5jUHJvdG9HZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgU3RyaW5nKCksIGds
b2JhbEZ1bmNQcm90b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RB
Y2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNj
b3JlUHJvdG8sIHByb3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVudW0pOwogICAgIG1fZnVu
Y3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIApAQCAtMjcx
LDEyICsyNzEsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5
cGUpCiAKICAgICBTdHJ1Y3R1cmUqIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlID0gTmF0
aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpOwogICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JT
dHJ1Y3R1cmUgPSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKLSAgICBtX2V2
YWxFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwg
bmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJFdmFsRXJyb3IiKSk7Ci0gICAgbV9yYW5n
ZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBu
YXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7Ci0gICAgbV9yZWZl
cmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVy
ZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIpKTsKLSAg
ICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlN5bnRheEVycm9yIikpOwot
ICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIpKTsKLSAg
ICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0
dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIikpOworICAgIG1f
ZXZhbEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJFdmFsRXJyb3Ii
KSkpOworICAgIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVF
cnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJh
bCgiUmFuZ2VFcnJvciIpKSk7CisgICAgbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShl
eGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1
Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiUmVmZXJlbmNlRXJyb3IiKSkpOworICAgIG1fc3ludGF4RXJy
b3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2
ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRheEVycm9yIikpKTsK
KyAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlw
ZUVycm9yIikpKTsKKyAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG5h
dGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlM
aXRlcmFsKCJVUklFcnJvciIpKSk7CiAKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5j
dGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlVGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTRnVuY3Rpb24qIHRocm93ZXIg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMCwgIiIsIGdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvcik7CisgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKICAgICBH
ZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOwog
ICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhyb3dlcik7
CiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aHJvd2Vy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBiYzg5NzJjMmU0YzRkY2RjYzE2MTBiYTViZGJiODU2
ZDkxNjY3MDFiLi40NTg4ZWMyZDkxZmQ4OTlmNTg1YzI3OTgyOTczOTFmYmYzMjRhNjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGRvTm90RXNjYXBlKQogewogICAgIENTdHJpbmcg
Y3N0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS51dGY4
KHRydWUpOwogICAgIGlmICghY3N0ci5kYXRhKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsICJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVnYWwg
VVRGLTE2IHNlcXVlbmNlLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVn
YWwgVVRGLTE2IHNlcXVlbmNlLiIpKSk7CiAKICAgICBKU1N0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICBjb25zdCBjaGFyKiBwID0gY3N0ci5kYXRhKCk7CkBAIC0xMTQsNyArMTE0LDcgQEAgc3Rh
dGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2hhclR5cGUqIGNoYXJh
Y3RlcnMsIGludCBsZW5ndGgsIGMKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGFy
TGVuID09IDApIHsKICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0KQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVVUklFcnJvcihleGVjLCAiVVJJIGVy
cm9yIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVVUklFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVSSSBlcnJvciIpKSk7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBkb24ndCB1c2UgInN0cmljdCIgbW9kZSBp
cyB0aGUgInVuZXNjYXBlIiBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCwg
aXQncyBnb29kIHRvIHN1cHBvcnQgdGhlIHdvbmt5ICIldSIgc3ludGF4IGZvciBjb21wYXRpYmls
aXR5IHdpdGggV2luSUUuCiAgICAgICAgICAgICAgICAgaWYgKGsgPD0gbGVuZ3RoIC0gNiAmJiBw
WzFdID09ICd1JwpAQCAtNDk5LDcgKzQ5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVjdChleGVjKTsKICAgICBKU09i
amVjdCogdW53cmFwcGVkT2JqZWN0ID0gdGhpc09iamVjdC0+dW53cmFwcGVkT2JqZWN0KCk7CiAg
ICAgaWYgKCF1bndyYXBwZWRPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgfHwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+ZXZhbEZ1bmN0aW9uKCkgIT0gZXhlYy0+Y2Fs
bGVlKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXZhbEVycm9y
KGV4ZWMsICJUaGUgXCJ0aGlzXCIgdmFsdWUgcGFzc2VkIHRvIGV2YWwgbXVzdCBiZSB0aGUgZ2xv
YmFsIG9iamVjdCBmcm9tIHdoaWNoIGV2YWwgb3JpZ2luYXRlZCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJU
aGUgXCJ0aGlzXCIgdmFsdWUgcGFzc2VkIHRvIGV2YWwgbXVzdCBiZSB0aGUgZ2xvYmFsIG9iamVj
dCBmcm9tIHdoaWNoIGV2YWwgb3JpZ2luYXRlZCIpKSk7CiAKICAgICBKU1ZhbHVlIHggPSBleGVj
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXguaXNTdHJpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggMTUzNWMxZDEyMGI3ZWE3ZjUwZDM1
NzJmOGM4N2I2NDRmNzY4NTJjNy4uOTc1ZDRmYmM2M2NmY2M4ZDdmNDQxYzdjMDc1YzhlMTQyYzQ4
Yzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lm
aWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIHJldHVy
biBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVmaW5lZFZhbHVlOwogCiAgICAgaWYgKHZhbHVlLmlz
TnVsbCgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2Vl
ZGVkOwogICAgIH0KIApAQCAtMzcxLDcgKzM3MSwxMCBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5
UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXIm
CiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWQ7CiAKICAgICBpZiAodmFsdWUuaXNCb29s
ZWFuKCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUuaXNUcnVlKCkgPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKKyAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJ0cnVlIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1
Y2NlZWRlZDsKICAgICB9CiAKQEAgLTM4NCw3ICszODcsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5n
aWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxk
ZXImCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9
IHZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgIGlmICghaXNmaW5pdGUobnVtYmVyKSkKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSk7CiAgICAgICAgIHJl
dHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CkBAIC0zOTgsNyArNDAxLDcgQEAgU3RyaW5naWZpZXI6
OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJp
bmdCdWlsZGVyJgogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChvYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkg
ewogICAgICAgICBpZiAoaG9sZGVyLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkgewotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIm51bGwiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRl
ZDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkRHVlVG9VbmRlZmlu
ZWRWYWx1ZTsKQEAgLTQwNyw3ICs0MTAsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0
IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAg
Ly8gSGFuZGxlIGN5Y2xlIGRldGVjdGlvbiwgYW5kIHB1dCB0aGUgaG9sZGVyIG9uIHRoZSBzdGFj
ay4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ob2xkZXJTdGFjay5zaXplKCk7IGkr
KykgewogICAgICAgICBpZiAobV9ob2xkZXJTdGFja1tpXS5vYmplY3QoKSA9PSBvYmplY3QpIHsK
LSAgICAgICAgICAgIHRocm93RXJyb3IobV9leGVjLCBjcmVhdGVUeXBlRXJyb3IobV9leGVjLCAi
SlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4iKSk7Cisg
ICAgICAgICAgICB0aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlVHlwZUVycm9yKG1fZXhlYywgQVND
SUlMaXRlcmFsKCJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1
cmVzLiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgICAgICB9
CiAgICAgfQpAQCAtNTY5LDcgKzU3Miw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBw
ZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpCiAKICAg
ICBzd2l0Y2ggKHN0cmluZ2lmeVJlc3VsdCkgewogICAgICAgICBjYXNlIFN0cmluZ2lmeUZhaWxl
ZDoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFN0cmluZ2lmeVN1Y2NlZWRlZDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODA5LDcgKzgx
Miw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVy
ZWQpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkpTT04ucGFyc2Ug
cmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTT04ucGFyc2Ug
cmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKSk7CiAgICAgU3RyaW5nIHNvdXJjZSA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpOwpAQCAtODQzLDcgKzg0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSogZXhlYykKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
aWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk5vIGlucHV0IHRvIHN0cmluZ2lmeSIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIk5vIGlucHV0IHRvIHN0cmluZ2lmeSIpKSk7CiAgICAgTG9jYWxTY29wZSBzY29wZShleGVj
LT5nbG9iYWxEYXRhKCkpOwogICAgIExvY2FsPFVua25vd24+IHZhbHVlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIExvY2FsPFVua25vd24+IHJlcGxhY2VyKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+YXJndW1lbnQoMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDMyNzViMjIyYjVjZWZmYjgwMDNhMDhjMjdl
Nzk5MmQwYWYyNTMwMTMuLjgxMmJhM2JjODM0YzZkOGJmMmJhNzg4ZGRjYTBjYzAzZjU3MTcxN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTE4Miw3
ICsxODIsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgogICAgICAgICAgICAgcHJvdG90eXBl
ID0gb2JqLT5wcm90b3R5cGUoKTsKICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldENh
bGxhYmxlT2JqZWN0KHZhbHVlKSkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTk1LDcgKzE5
NSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWCiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewog
ICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgog
ICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3Mp
LT5zZXR0ZXIoKTsgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghc2V0dGVyRnVuYykgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJzZXR0
aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgic2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWCiAgICAgfQog
ICAgIAogICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4o
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0Q2FsbGFibGVPYmpl
Y3QodmFsdWUpKSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKSk7CiAgICAgcmV0dXJuOwogfQogCkBAIC0zODksNyArMzg5LDcgQEAgSlNW
YWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJlZmVycmUKIAogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkp
OwogCi0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJO
byBkZWZhdWx0IHZhbHVlIikpOworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQgdmFsdWUiKSkpOwogfQogCiBj
b25zdCBIYXNoRW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNDA5LDcgKzQwOSw3
IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghcHJvdG8uaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4g
aW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImluc3RhbmNlb2YgY2FsbGVkIG9u
IGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiIpKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTcxOCw3ICs3MTgsNyBAQCBib29sIEpTT2Jq
ZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZQogICAgICAgICAvLyB1bmxlc3MgZXh0ZW5zaW9ucyBhcmUgcHJldmVudGVk
IQogICAgICAgICBpZiAoIW9iamVjdC0+aXNFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0
IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBk
ZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3Igb2xkRGVzY3JpcHRvcjsKQEAgLTczNiwxMiArNzM2LDEyIEBAIGJvb2wgSlNPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lCiAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlm
IChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNl
cHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIkF0dGVtcHRpbmcgdG8gY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyYWJs
ZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJh
YmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpICE9IGN1cnJlbnQuZW51bWVy
YWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIp
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9CkBAIC03NTksNyArNzU5LDcgQEAgYm9vbCBKU09iamVjdDo6
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUKICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgIT0gY3VycmVu
dC5pc0RhdGFEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJs
ZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAg
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsK
KyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFu
IHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC03NzEsMTMgKzc3MSwxMyBAQCBib29s
IEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZQogICAgICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkp
IHsKICAgICAgICAgICAgIGlmICghY3VycmVudC53cml0YWJsZSgpICYmIGRlc2NyaXB0b3Iud3Jp
dGFibGUoKSkgewogICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9w
ZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUg
YXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjdXJyZW50
LndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpICYm
ICFzYW1lVmFsdWUoZXhlYywgY3VycmVudC52YWx1ZSgpLCBkZXNjcmlwdG9yLnZhbHVlKCkpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0
aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9w
ZXJ0eS4iKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNzkzLDEyICs3OTMsMTIgQEAgYm9vbCBKU09iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAg
aWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpICYmICEoY3VycmVudC5zZXR0ZXJQcmVzZW50
KCkgJiYgSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgY3VycmVudC5zZXR0ZXIoKSwgZGVzY3Jp
cHRvci5zZXR0ZXIoKSkpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAg
ICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIHNldHRlciBvZiBhbiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSAmJiAhKGN1
cnJlbnQuZ2V0dGVyUHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIGN1cnJl
bnQuZ2V0dGVyKCksIGRlc2NyaXB0b3IuZ2V0dGVyKCkpKSkgewogICAgICAgICAgICAgaWYgKHRo
cm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVuY29u
ZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCA5NzdmMGQxMDAzYzg1YTk4NjEzYzJiODhmNGQz
ZTUwY2Q4ZWJmYjIzLi40MjZjMDI2MzQ2MzYwZTk1MDhlMWU1NTk5N2ZmMmI0MWFjNmM1MWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0yMjUsNyAr
MjI1LDcgQEAgSlNTdHJpbmcqIEpTUm9wZVN0cmluZzo6Z2V0SW5kZXhTbG93Q2FzZShFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGkpCiAgICAgcmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgLy8gUmV0
dXJuIGEgc2FmZSBuby12YWx1ZSByZXN1bHQsIHRoaXMgc2hvdWxkIG5ldmVyIGJlIHVzZWQsIHNp
bmNlIHRoZSBleGNldGlvbiB3aWxsIGJlIHRocm93bi4KICAgICBpZiAoZXhlYy0+ZXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiIik7CisgICAgICAgIHJldHVybiBq
c0VtcHR5U3RyaW5nKGV4ZWMpOwogICAgIEFTU0VSVCghaXNSb3BlKCkpOwogICAgIEFTU0VSVChp
IDwgbV92YWx1ZS5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3Ry
aW5nKGV4ZWMsIG1fdmFsdWUsIGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKaW5kZXggOWYxNzZhZDIzY2ZkMjAzNGUyNGI1NzAwZjE0YjQwNDM2ZjFjZWU4My4uN2M0
ZDY1ZmM2YTJmOWQ4NGQzNTQxZDJmMjk0ZTc1NWIzMGE2OTU4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC01MCw4ICs1MCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZmFzdGVyIHRoYW4ganVzdCBjYWxsaW5nIGpz
U3RyaW5nLgogICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpT
R2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3Ry
aW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFNob3VsZCBiZSB1c2VkIGZv
ciBzdHJpbmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwKICAgICAvLyBs
aWtlbHkgb3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBwYXJzZSB0
cmVlIG9yIGEKQEAgLTM1MywxNCArMzUxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJl
dHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVhdGUocy5p
bXBsKCksIG9mZnNldCwgMSkpOwogICAgIH0KIAotICAgIGlubGluZSBKU1N0cmluZyoganNOb250
cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgY2hhciogcykKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChzKTsKLSAgICAgICAgQVNTRVJUKHNbMF0pOwotICAgICAgICBB
U1NFUlQoc1sxXSk7Ci0gICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRh
LCBTdHJpbmcocykuaW1wbCgpKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9u
dHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcykK
ICAgICB7CiAgICAgICAgIEFTU0VSVChzLmxlbmd0aCgpID4gMSk7CkBAIC00NjgsNyArNDU4LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZzgoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKSB7IHJldHVybiBqc1N1YnN0cmluZzgoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcywgb2Zm
c2V0LCBsZW5ndGgpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIHsgcmV0dXJuIGpzU3Vic3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwg
bGVuZ3RoKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
JmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0KLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJp
dmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0
cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyBy
ZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogCiAgICAgQUxX
QVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCmluZGV4IDBiZWRhYTMzZjI2
MjMwMjcyYzA3MzliNzNjMzVmYzAyZmUwZjdhNDcuLmNhZmY5OTczYjRkNDYwNjdhZWRkMTY2YTk4
Zjc5ZTI0ZjU2ZjVhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
Y3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAg
ICAgICAgICBKU09iamVjdCogc2V0dGVyRnVuYyA9IGFzR2V0dGVyU2V0dGVyKGdzKS0+c2V0dGVy
KCk7ICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIXNldHRlckZ1bmMpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAic2V0dGluZyBhIHBy
b3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInNl
dHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXgg
YWE2NTQxYjZhZWQ1YmYwY2VjZDhlNWY2Mzk5NDc5Yzg2YzIyMDllMS4uMjBiMGMzMDVhYzgyZDdm
YTZhMWIyMTgwOTg1ODg3NWFlYTgwOTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB0ZW1wbGF0ZSA8
UGFyc2VyTW9kZSBtb2RlPiBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVy
OjpsZXgoTGl0ZXJhbAogICAgICAgICAgICAgcmV0dXJuIGxleElkZW50aWZpZXIodG9rZW4pOwog
ICAgICAgICBpZiAoKm1fcHRyID09ICdcJycpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IFN0
cmljdEpTT04pIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUg
cXVvdGVzIChcJykgYXJlIG5vdCBhbGxvd2VkIGluIEpTT04iOworICAgICAgICAgICAgICAgIG1f
bGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJTaW5nbGUgcXVvdGVzIChcJykgYXJlIG5v
dCBhbGxvd2VkIGluIEpTT04iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGV4U3RyaW5nPG1vZGUsICdcJyc+KHRv
a2VuKTsKQEAgLTM1Niw3ICszNTYsNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlLCBjaGFy
IHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZQogICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJ1blN0YXJ0LCBtX3B0ciAtIHJ1blN0YXJ0KTsKICAg
ICAgICAgICAgICsrbV9wdHI7CiAgICAgICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQpIHsKLSAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIjsK
KyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW50ZXJt
aW5hdGVkIHN0cmluZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoKm1fcHRyKSB7CkBAIC0zOTUsNyArMzk1LDcg
QEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5M
SU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2UKIAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgog
ICAgICAgICAgICAgICAgICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgeyAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxcdSBtdXN0IGJlIGZvbGxvd2Vk
IGJ5IDQgaGV4IGRpZ2l0cyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9IEFTQ0lJTGl0ZXJhbCgiXFx1IG11c3QgYmUgZm9sbG93ZWQgYnkgNCBoZXggZGlnaXRz
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgICAg
ICAgICAgICAgIH0gLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IGkgPSAxOyBpIDwgNTsgaSsrKSB7CkBAIC00MjEsNyArNDIxLDcgQEAgdGVtcGxh
dGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5FIFRva2Vu
VHlwZSBMaXRlcmFsUGFyc2UKICAgICB9IHdoaWxlICgobW9kZSAhPSBOb25TdHJpY3RKU09OKSAm
JiBtX3B0ciAhPSBydW5TdGFydCAmJiAobV9wdHIgPCBtX2VuZCkgJiYgKm1fcHRyICE9IHRlcm1p
bmF0b3IpOwogCiAgICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICptX3B0ciAhPSB0ZXJtaW5hdG9y
KSB7Ci0gICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJpbmciOwor
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW50ZXJtaW5hdGVkIHN0
cmluZyIpOwogICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgfQogCkBAIC00NzQsNyArNDc0
LDcgQEAgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4TnVtYmVy
KExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4KICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9l
bmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0cikpCiAgICAgICAgICAgICArK21fcHRyOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIjsKKyAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkludmFsaWQgbnVtYmVyIik7
CiAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICB9CiAKQEAgLTQ4Myw3ICs0ODMsNyBAQCBU
b2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJh
bFBhcnNlclRva2VuPENoYXJUeXBlPgogICAgICAgICArK21fcHRyOwogICAgICAgICAvLyBbMC05
XSsKICAgICAgICAgaWYgKG1fcHRyID49IG1fZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKm1fcHRyKSkg
ewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiSW52YWxpZCBkaWdpdHMgYWZ0ZXIg
ZGVjaW1hbCBwb2ludCI7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCIpOwogICAgICAgICAgICAg
cmV0dXJuIFRva0Vycm9yOwogICAgICAgICB9CiAKQEAgLTUxOCw3ICs1MTgsNyBAQCBUb2tlblR5
cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJhbFBhcnNl
clRva2VuPENoYXJUeXBlPgogCiAgICAgICAgIC8vIFswLTldKwogICAgICAgICBpZiAobV9wdHIg
Pj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7Ci0gICAgICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBv
cHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxlYXN0IG9uZSBudW1iZXIiOworICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkV4cG9uZW50IHN5bWJv
bHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsICcrJyBvciAnLScgYW5kIHRoZW4g
YnkgYXQgbGVhc3Qgb25lIG51bWJlciIpOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwog
ICAgICAgICB9CiAgICAgICAgIApAQCAtNTU1LDcgKzU1NSw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAg
ICAgICAgICBUb2tlblR5cGUgbGFzdFRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBl
OwogICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSA9PSBUb2tSQnJhY2tldCkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuID09IFRva0NvbW1hKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29tbWEg
YXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgY29tbWEgYXQg
dGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtNTc0LDcgKzU3NCw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAg
ICAgICAgICAgICAgZ290byBkb1BhcnNlQXJyYXlTdGFydEV4cHJlc3Npb247CiAKICAgICAgICAg
ICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFja2V0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ10n
IjsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiRXhwZWN0ZWQgJ10nIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtNTk0LDcgKzU5NCw3IEBA
IEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRp
YWxTdGF0ZSkKIAogICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgY29sb24KICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICc6JyBiZWZv
cmUgdmFsdWUgaW4gb2JqZWN0IHByb3BlcnR5IGRlZmluaXRpb24iOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgJzon
IGJlZm9yZSB2YWx1ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAKQEAgLTYwNyw3ICs2MDcsNyBAQCBKU1ZhbHVlIExpdGVyYWxQ
YXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1JCcmFjZSkgIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnfSciOworICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCAn
fSciKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CkBAIC02MTksMTQgKzYxOSwx
NCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBp
bml0aWFsU3RhdGUpCiAgICAgICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RTdGFydEV4cHJlc3Np
b246IHsKICAgICAgICAgICAgICAgICBUb2tlblR5cGUgdHlwZSA9IG1fbGV4ZXIubmV4dCgpOwog
ICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1N0cmluZyAmJiAobV9tb2RlID09IFN0cmlj
dEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlmaWVyKSkgewotICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRl
cmFsIjsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0
ZXJhbCgiUHJvcGVydHkgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwiKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPiBpZGVudGlmaWVyVG9rZW4gPSBt
X2xleGVyLmN1cnJlbnRUb2tlbigpOwogCiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNv
bG9uCiAgICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJzonIjsK
KyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
RXhwZWN0ZWQgJzonIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgICAgICAgICAgICAgfQogCkBAIC02NDUsNyArNjQ1LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFy
c2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAg
ICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLnR5cGUgPT0gVG9rQ29tbWEpCiAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gZG9QYXJzZU9iamVjdFN0YXJ0RXhwcmVzc2lvbjsKICAgICAg
ICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS50eXBlICE9IFRva1JCcmFjZSkg
ewotICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICd9
JyI7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIkV4cGVjdGVkICd9JyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKQEAg
LTY5MCwxMCArNjkwLDEwIEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNl
KFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RW
YWx1ZSA9IGpzQm9vbGVhbihmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
VW5leHBlY3RlZCB0b2tlbiAnXSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd9
JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlM
aXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd9JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tJZGVudGlmaWVy
OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaXRlcmFsUGFyc2VyVG9rZW48Q2hh
clR5cGU+JiB0b2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CkBAIC03MDQsMzMgKzcwNCwz
MyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBp
bml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQ29sb246
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0
ZWQgdG9rZW4gJzonIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJzonIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRv
a0xQYXJlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAi
VW5leHBlY3RlZCB0b2tlbiAnKCciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAnKCciKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgVG9rUlBhcmVuOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcpJyIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tDb21tYToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tl
biAnLCciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyI7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVk
IHRva2VuICcuJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tBc3NpZ246Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVu
ZXhwZWN0ZWQgdG9rZW4gJz0nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1NlbWk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0VuZDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiVW5leHBlY3RlZCBFT0YiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRXJyb3I6CiAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFcnJvcgotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2Ug
dmFsdWUgZXhwcmVzc2lvbiI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcGFyc2UgdmFsdWUgZXhwcmVzc2lvbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NDgsNTAgKzc0OCw1MCBAQCBKU1Zh
bHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3Rh
dGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0UGFyc2VFeHByZXNzaW9uOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNr
ZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhw
ZWN0ZWQgdG9rZW4gJ10nIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJ10nIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IFRva0xCcmFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAneyciOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCB0b2tlbiAneyciKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVG9rUkJyYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd9JyI7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd9
JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBUb2tJZGVudGlmaWVyOgotICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGlkZW50aWZpZXIiOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBl
Y3RlZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbG9uOgotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJVbmV4cGVjdGVkIHRva2VuICc6JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSUGFyZW46Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4g
JyknIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4gJyknIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbW1hOgot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICcsJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICcsJyIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tU
cnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICd0cnVlJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICd0cnVlJyIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUb2tGYWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVuZXhwZWN0ZWQgdG9rZW4g
J2ZhbHNlJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBUb2tOdWxsOgotICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICdudWxsJyI7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4
cGVjdGVkIHRva2VuICdudWxsJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tFbmQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVu
ZXhwZWN0ZWQgRU9GIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0RvdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciOworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5l
eHBlY3RlZCB0b2tlbiAnLiciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyI7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRl
cmFsKCJVbmV4cGVjdGVkIHRva2VuICc9JyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tTZW1pOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICc7JyI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVND
SUlMaXRlcmFsKCJVbmV4cGVjdGVkIHRva2VuICc7JyIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tFcnJvcjoK
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNlIHN0YXRlbWVudCI7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJDb3Vs
ZCBub3QgcGFyc2Ugc3RhdGVtZW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4
MDEsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0
ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpID09IFRva0VuZCkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZTsKLSAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIjsKKyAg
ICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmV4cGVj
dGVkIGNvbnRlbnQgYXQgZW5kIG9mIEpTT04gbGl0ZXJhbCIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IDYxYThl
ZjM0ZGM2MjAxNmMxZGRjNjY5ZDUzN2I5MjljZjBlN2RlZmIuLmMwZjMwOGVlNWQxMDI1ZDNkZjE3
MWVhZjlkMDk2MWFiYmI2YzU2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkpTT04gUGFyc2UgZXJyb3I6ICVzIiwgbV9sZXhlci5n
ZXRFcnJvck1lc3NhZ2UoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwogICAgICAgICBpZiAoIW1f
cGFyc2VFcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6
Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAlcyIsIG1fcGFyc2VFcnJvck1lc3NhZ2UuYXNjaWko
KS5kYXRhKCkpLmltcGwoKTsKLSAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVycm9yOiBVbmFi
bGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJK
U09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciKTsKICAgICB9CiAg
ICAgCiAgICAgSlNWYWx1ZSB0cnlMaXRlcmFsUGFyc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggMWQ3OTM5MjI1MjQ2YjJk
YmVjZTgyMWEzZTQzMWMwYjdkYmZmZTViYi4uNGExMGVmZDZkNjRkYjI4MGI3NzYwNTI3ZDA3OWU4
OWMyNTBlNzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpbnQgZGVjaW1hbFBsYWNlc0luRXhwb25lbnQ7CiAgICAgYm9vbCBpc1VuZGVmaW5lZDsKICAg
ICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhlYywgMCwgMjAsIGRlY2ltYWxQbGFj
ZXNJbkV4cG9uZW50LCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11
c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9FeHBvbmVudGlhbCgp
IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CiAKICAgICAvLyBIYW5kbGUg
TmFOIGFuZCBJbmZpbml0eS4KICAgICBpZiAoIWlzZmluaXRlKHgpKQpAQCAtNDA5LDcgKzQwOSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgaW50IGRlY2ltYWxQbGFjZXM7CiAgICAgYm9vbCBpc1VuZGVm
aW5lZDsgLy8gVGhpcyBpcyBpZ25vcmVkOyB1bmRlZmluZWQgdHJlYXRlZCBhcyAwLgogICAgIGlm
ICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNlcywg
aXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQg
MjAiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUuNy40LjUuNyBzdGF0ZXMgIklmIHggPj0gMTBeMjEs
IHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAvLyBUaGlzIGFsc28gY292ZXJzIEluaW5p
dHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRoYXQgTmFOCkBAIC00NDIsNyArNDQyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lv
bihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaW50IHNpZ25pZmljYW50RmlndXJlczsKICAgICBib29s
IGlzVW5kZWZpbmVkOwogICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAx
LCAyMSwgc2lnbmlmaWNhbnRGaWd1cmVzLCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9QcmVjaXNpb24oKSBh
cmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjEiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvUHJl
Y2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpKTsKIAogICAgIC8v
IFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIFRvU3Ry
aW5nLgogICAgIGlmIChpc1VuZGVmaW5lZCkKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKIAogICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0UmFkaXhGcm9tQXJncyhleGVjKTsKICAg
ICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVu
dCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkg
cmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKIAogICAgIGludDMy
X3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZG91YmxlVmFsdWUpOwogICAg
IGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91YmxlVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjFlY2NkMzBlOTli
YmMwY2VlYjJmOWU5ZTFhNWM3ZjhiODI2YmVhNi4uMTllOTI3ZTU1MjU0ZTk0OGM2MjUxNjBkZDAz
ODFjNDg5YmJmY2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIENhbGxUeXBlIE9iamVj
dENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBl
T2YoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlJlcXVlc3RlZCBwcm90b3R5cGUgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmpl
Y3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm90b3R5cGUgb2YgYSB2YWx1ZSB0aGF0
IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghb2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4
ZWMtPnRydWVDYWxsZXJGcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiUmVxdWVzdGVkIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSB2YWx1
ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9w
ZXJ0eSBkZXNjcmlwdG9yIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CiAg
ICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYg
KCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVz
IG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1
ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikp
KTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwogICAgIGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhh
c09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJh
eShleGVjKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRl
KiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVl
c3RlZCBrZXlzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZXF1ZXN0ZWQga2V5cyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkp
OwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7CiAgICAgYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFz
T2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CiAgICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
ZXhlYyk7CkBAIC0yMDcsNyArMjA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVjKQogc3RhdGljIGJvb2wgdG9Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2MpCiB7CiAgICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBt
dXN0IGJlIGFuIG9iamVjdC4iKSk7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBh
biBvYmplY3QuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVj
dCogZGVzY3JpcHRpb24gPSBhc09iamVjdChpbik7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGlj
IGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQ
cm9wZXJ0eURlc2NyaXB0b3IKICAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQoKSkgewogICAg
ICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2FsbERhdGEo
Z2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rp
b24uIikpOworICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yCiAgICAgICAgIGlmICghc2V0
LmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAg
ICAgICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgewot
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJT
ZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJl
IGEgZnVuY3Rpb24uIikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTI3NSwxMiArMjc1LDEyIEBAIHN0YXRpYyBib29sIHRvUHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNj
cmlwdG9yCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGRlc2MudmFsdWUoKSkgewot
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBw
cm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0
ZXIuIikpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVy
dHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBpZiAoZGVzYy53cml0YWJsZVByZXNlbnQoKSkgewotICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBwcm9wZXJ0eS4gICd3cml0
YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOworICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBn
ZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIGJvb2wgdG9Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3IK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIp
KSk7CiAgICAgSlNPYmplY3QqIE8gPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSk7CiAgICAg
U3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0zNDAsMjAgKzM0
MCwyMCBAQCBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHBybwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlByb3BlcnRpZXMgY2Fu
IG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVz
IGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhleGVjLCBhc09iamVjdChleGVjLT5hcmd1bWVudCgw
KSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSAmJiAhZXhlYy0+YXJn
dW1lbnQoMCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVj
dCBvciBudWxsLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJl
IGFuIE9iamVjdCBvciBudWxsLiIpKSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgpID8gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVj
LT5nbG9iYWxEYXRhKCkpKSA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShuZXdPYmplY3QpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlByb3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRvciBsaXN0IG11c3QgYmUgYW4gT2JqZWN0LiIp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIG5l
d09iamVjdCwgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMSkpKSk7CiB9CiAKQEAgLTM2Miw3ICsz
NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2Vh
bChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRo
cm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3Quc2VhbCBjYW4gb25seSBi
ZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0LnNlYWwgY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3Qob2JqKTsKIAogICAgIGlmIChpc0pTRmluYWxPYmplY3Qob2JqZWN0KSkgewpAQCAtMzk5
LDcgKzM5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIDEuIElmIFR5cGUoTykgaXMgbm90IE9i
amVjdCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgSlNWYWx1ZSBvYmogPSBleGVj
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0LmZyZWV6ZSBj
YW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0LmZy
ZWV6ZSBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChvYmopOwogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3Qp
KSB7CkBAIC00MzksNyArNDM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBK
U1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJPYmplY3QucHJldmVudEV4dGVuc2lvbnMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMu
IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyBjYW4gb25seSBiZSBj
YWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIGFzT2JqZWN0KG9iaiktPnByZXZlbnRFeHRlbnNp
b25zKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmop
OwogfQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gMS4gSWYgVHlw
ZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBKU1Zh
bHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJP
YmplY3QuaXNTZWFsZWQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIk9iamVjdC5pc1NlYWxlZCBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkp
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwogCiAgICAgaWYgKGlzSlNG
aW5hbE9iamVjdChvYmplY3QpKQpAQCAtNDc5LDcgKzQ3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgLy8gMS4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0IHRocm93IGEgVHlwZUVycm9yIGV4Y2Vw
dGlvbi4KICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2Jq
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJPYmplY3QuaXNGcm96ZW4gY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVj
dHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5pc0Zyb3plbiBjYW4gb25seSBiZSBjYWxsZWQg
b24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwog
CiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3QpKQpAQCAtNTA5LDcgKzUwOSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5pc0V4dGVuc2libGUgY2FuIG9ubHkg
YmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5pc0V4dGVuc2li
bGUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChvYmopLT5pc0V4dGVuc2libGUoKSkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAppbmRleCA2ZmFhMTY4NDg1ZGJjZjAwYWY4ZjY3NDVmMGJjNWVmMGRhYmIwODEyLi41YWZiMGQy
ZjA4NDZjN2VkYzRiMDYxNjUzOTU3MTllNTQ3MDhkZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBnZXQgPSBleGVjLT5hcmd1bWVudCgxKTsK
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0
YSkgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoImludmFsaWQgZ2V0dGVyIHVzYWdlIikpKTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRv
ciBkZXNjcmlwdG9yOwogICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGdldCk7CkBAIC0xNzcsNyAr
MTc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZp
bmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+YXJndW1l
bnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgaWYgKGdldENhbGxEYXRhKHNldCwg
Y2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKSk7CiAKICAgICBQcm9wZXJ0eURl
c2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldFNldHRlcihzZXQpOwpAQCAt
MjQ3LDcgKzI0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmco
ZXhlYywgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyAiW29iamVjdCBVbmRlZmluZWRdIiA6ICJb
b2JqZWN0IE51bGxdIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCBTdHJpbmcodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyBBU0NJSUxp
dGVyYWwoIltvYmplY3QgVW5kZWZpbmVkXSIpIDogQVNDSUlMaXRlcmFsKCJbb2JqZWN0IE51bGxd
IikpKSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZXhl
Yyk7CiAKICAgICBKU1N0cmluZyogcmVzdWx0ID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm9i
amVjdFRvU3RyaW5nVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCA1N2VlN2RmMTRiNDk3NGJkZDQxMmQ0YzYy
MGVlOTRjMDFjMGM4YmRkLi4xMjQ4ZmI0ZGFlYTAxNDk3NGMxMzJhMDg5MzQzNWVhNjkyMzNlYjc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEEKIAog
ICAgIGlmIChhcmcwLmluaGVyaXRzKCZSZWdFeHBPYmplY3Q6OnNfaW5mbykpIHsKICAgICAgICAg
aWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25z
dHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fu
bm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZyb20gYW5vdGhl
ci4iKSkpOwogICAgICAgICAvLyBJZiBjYWxsZWQgYXMgYSBmdW5jdGlvbiwgdGhpcyBqdXN0IHJl
dHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IChzZWUgMTUuMTAuMy4xKS4KICAgICAgICAgaWYgKGNh
bGxBc0NvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICBSZWdFeHAqIHJlZ0V4cCA9IHN0YXRpY19j
YXN0PFJlZ0V4cE9iamVjdCo+KGFzT2JqZWN0KGFyZzApKS0+cmVnRXhwKCk7CkBAIC0yODEsNyAr
MjgxLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEEKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChmbGFncyA9PSBJ
bnZhbGlkRmxhZ3MpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3Ry
dWN0b3IuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJl
Z0V4cCBjb25zdHJ1Y3Rvci4iKSkpOwogICAgIH0KIAogICAgIFJlZ0V4cCogcmVnRXhwID0gUmVn
RXhwOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLCBmbGFncyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA2ZmQ5ZGIy
OWMwNGFhMzZiOTNlYmZjYzhiMTU0ZmNkZmRlMDNiYjBlLi5iMzQ2Yzc3Njk1NTJlNWE3NzgxNjU2
ODI0YjMwNDhlZjViMzZlMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6
Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5Tgogc3RhdGljIGJvb2wgcmVqZWN0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCB0aHJvd0V4Y2Vw
dGlvbiwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0g
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwobWVzc2FnZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtMTkxLDcgKzE5MSw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgIC8vIHNvdXJjZSBj
YW5ub3QgZXZlciB2YWxpZGx5IGJlICIiLiBJZiB0aGUgc291cmNlIGlzIGVtcHR5LCByZXR1cm4g
YSBkaWZmZXJlbnQgUGF0dGVybgogICAgIC8vIHRoYXQgd291bGQgbWF0Y2ggdGhlIHNhbWUgdGhp
bmcuCiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiKD86
KSIpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiKD86KSIpKTsKIAogICAgIC8vIGVhcmx5IHJldHVybiBmb3Igc3RyaW5ncyB0aGF0IGRvbid0
IGNvbnRhaW4gYSBmb3J3YXJkcyBzbGFzaCBhbmQgTGluZVRlcm1pbmF0b3IKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKQEAgLTI1MSw5ICsyNTEsOSBAQCBKU1Zh
bHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgncicpOwogICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0g
MHgyMDI4KQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInUyMDI4Iik7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInUyMDI4Iik7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgidTIwMjkiKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidTIwMjkiKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKGNoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggYzIyZTZkMDM5ZDMyOTkxZjI0NzJlYTky
NTU1M2UwYzFiYTIzNjEzMC4uM2M3NDJhMGQzMDUxNTA3YTMxNWE4N2I0ZmQzNTI3Mjg5NGNiZDFh
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBpZiAoYXJn
MC5pbmhlcml0cygmUmVnRXhwT2JqZWN0OjpzX2luZm8pKSB7CiAgICAgICAgIGlmICghYXJnMS5p
c1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcg
b25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3Qgc3Vw
cGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKSk7
CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KGFyZzApLT5yZWdFeHAoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICFleGVjLT5hcmd1bWVudENvdW50KCkg
PyBTdHJpbmcoIiIpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBAIC0xMTks
NyArMTE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmND
b21waWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgICAgICAgICAgaWYgKGZsYWdzID09IEludmFsaWRGbGFncykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJ
bnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVj
dG9yLiIpKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNmMxZjE2ZDYzZWI3ZmIy
OWI4ZDA1MWRmMTQwYmNkMzBlZmRhMjU3OS4uMTEzZGVlMTY1YzUxMTQ4NDUwZDE0YzZiZDZiNjVj
YzYwNjc2NjQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCkBAIC04NSwyNyArODUsMjcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAg
ICAgICAgaWYgKCFvYmplY3QtPmlzRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhy
b3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0
IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5l
IHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29u
ZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAg
ICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjb25maWd1cmFibGUgYXR0
cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0
eS4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxl
KCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGluZyB0byBjaGFu
Z2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwor
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2Yg
dW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigp
KSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhy
b3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgZGVz
Y3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0
dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBh
dHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWRlc2NyaXB0b3IudmFsdWUoKSkK
QEAgLTExMyw3ICsxMTMsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgICAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGggJiYgc2FtZVZhbHVl
KGV4ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwganNOdW1iZXIodGhpc09iamVjdC0+aW50ZXJuYWxW
YWx1ZSgpLT5sZW5ndGgoKSkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFk
b25seSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRl
eCBhMWUwMTMzOWNjMDE0MjhkYmJlMzI4OWE5YzVmNGJmNzc1ZTNkMjVmLi43MzYzM2E2MGIzMzQx
M2NmMDVhNjNhMDEwYThkMmRlNjgzMDMyNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4
ZWMsIEpTU3RyaW5nKiBzb3VyYwogICAgICAgICB0b3RhbExlbmd0aCArPSBzdWJzdHJpbmdSYW5n
ZXNbaV0ubGVuZ3RoOwogCiAgICAgaWYgKCF0b3RhbExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsICIiKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiAK
ICAgICBpZiAoc291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgIExDaGFyKiBidWZmZXI7CkBAIC0z
NDgsNyArMzQ4LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0
cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICB9CiAKICAgICBpZiAo
IXRvdGFsTGVuZ3RoKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIpOworICAgICAg
ICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKIAogICAgIGlmIChzb3VyY2UuaXM4Qml0KCkg
JiYgYWxsU2VwZXJhdG9yczhCaXQpIHsKICAgICAgICAgTENoYXIqIGJ1ZmZlcjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>