<?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>44318</bug_id>
          
          <creation_ts>2010-08-19 18:58:27 -0700</creation_ts>
          <short_desc>style correction in markup.cpp</short_desc>
          <delta_ts>2010-08-20 12:45:03 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>44288</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>267108</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-19 18:58:27 -0700</bug_when>
    <thetext>style correction suggested by abarth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267109</commentid>
    <comment_count>1</comment_count>
      <attachid>64922</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-19 19:00:51 -0700</bug_when>
    <thetext>Created attachment 64922
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267110</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-19 19:02:10 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=64922) [details]
&gt; cleanup

svn diff did a terrible job here because of } but hopefully what I&apos;m doing in appendStartMarkup is just outdenting the entire switch and renaming variables el, attr, and attrs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267111</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-19 19:02:43 -0700</bug_when>
    <thetext>&gt; svn diff did a terrible job here because of } but hopefully what I&apos;m doing in appendStartMarkup is just outdenting the entire switch and renaming variables el, attr, and attrs.

hopefully *clear that*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267114</commentid>
    <comment_count>4</comment_count>
      <attachid>64922</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-19 19:11:27 -0700</bug_when>
    <thetext>Comment on attachment 64922
cleanup

Thanks Ryosuke.  These diffs can be hard to read sometimes, but what I could verify looks correct and for the rest, I trust you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267115</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-19 19:12:41 -0700</bug_when>
    <thetext>Attachment 64922 did not build on mac:
Build output: http://queues.webkit.org/results/3764378</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267337</commentid>
    <comment_count>6</comment_count>
      <attachid>64970</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-20 12:17:06 -0700</bug_when>
    <thetext>Created attachment 64970
fixed mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267348</commentid>
    <comment_count>7</comment_count>
      <attachid>64970</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-20 12:36:30 -0700</bug_when>
    <thetext>Comment on attachment 64970
fixed mac build

Yay.  This one builds.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267352</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-20 12:45:03 -0700</bug_when>
    <thetext>Committed r65749: &lt;http://trac.webkit.org/changeset/65749&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64922</attachid>
            <date>2010-08-19 19:00:51 -0700</date>
            <delta_ts>2010-08-20 12:17:02 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-44318-20100819190049.patch</filename>
            <type>text/plain</type>
            <size>28341</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTcyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgc3R5
bGUgY29ycmVjdGlvbiBpbiBtYXJrdXAuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NDMxOAorCisgICAgICAgIE1ha2UgbWFya3VwLmNwcCBwYXNz
IGNoZWNrLXdlYmtpdC1zdHlsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIGFkZGVkIHNp
bmNlIHRoaXMgaXMgYSBjbGVhbnVwLgorCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEF0dHJpYnV0ZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVzY2FwZWRDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydE1hcmt1cCk6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wbGV0ZVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50UHJlc2Vu
dGF0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6aXNTcGVjaWFsQW5jZXN0b3JCbG9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRJbmNsdWRlV3JhcHBlckZvckZ1bGx5U2VsZWN0ZWRSb290
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpm
aWxsQ29udGFpbmVyRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVu
dEZyb21UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKToK
KwogMjAxMC0wOC0xOSAgVmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxpc0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAJKHJldmlzaW9uIDY1NzIxKQorKysgV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJtYXJrdXAuaCIKIAorI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgiCiAjaW5jbHVkZSAi
Q0RBVEFTZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyTmFtZXMuaCIKICNpbmNsdWRlICJD
b21tZW50LmgiCkBAIC01MiwxMyArNTMsMTIgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKLSNpbmNs
dWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKICNpbmNs
dWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSAiQXBwbHlTdHlsZUNvbW1hbmQuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMjMwLDMzICsyMzAsMzIgQEAgdm9pZCBNYXJrdXBB
Y2N1bXVsYXRvcjo6YXBwZW5kQXR0cmlidXRlVgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW47ICsraSkgewogICAgICAgICBVQ2hhciBjID0gdWNoYXJzW2ldOwogICAgICAgICBzd2l0
Y2ggKGMpIHsKLSAgICAgICAgICAgIGNhc2UgJyYnOgotICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQodWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJvbSk7Ci0gICAg
ICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgYW1wRW50aXR5KTsKLSAgICAgICAgICAgICAgICBs
YXN0Q29waWVkRnJvbSA9IGkgKyAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAnPCc6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0
Q29waWVkRnJvbSwgaSAtIGxhc3RDb3BpZWRGcm9tKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCBsdEVudGl0eSk7Ci0gICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsg
MTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJz4nOgotICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQodWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0
Q29waWVkRnJvbSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgZ3RFbnRpdHkpOwot
ICAgICAgICAgICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlICciJzoKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHVjaGFycyArIGxhc3RDb3BpZWRGcm9tLCBpIC0gbGFzdENvcGllZEZyb20pOwotICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1b3RFbnRpdHkpOwotICAgICAgICAgICAgICAgIGxh
c3RDb3BpZWRGcm9tID0gaSArIDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIG5vQnJlYWtTcGFjZToKLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlTkJTUCkgewot
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxhc3RDb3BpZWRGcm9t
LCBpIC0gbGFzdENvcGllZEZyb20pOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0
LCBuYnNwRW50aXR5KTsKLSAgICAgICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsg
MTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAtIGxhc3RDb3BpZWRGcm9tKTsK
KyAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGFtcEVudGl0eSk7CisgICAgICAgICAgICBsYXN0
Q29waWVkRnJvbSA9IGkgKyAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJzwn
OgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAt
IGxhc3RDb3BpZWRGcm9tKTsKKyAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGx0RW50aXR5KTsK
KyAgICAgICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAnPic6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxh
c3RDb3BpZWRGcm9tLCBpIC0gbGFzdENvcGllZEZyb20pOworICAgICAgICAgICAgYXBwZW5kKHJl
c3VsdCwgZ3RFbnRpdHkpOworICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICciJzoKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQodWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJvbSk7CisgICAg
ICAgICAgICBhcHBlbmQocmVzdWx0LCBxdW90RW50aXR5KTsKKyAgICAgICAgICAgIGxhc3RDb3Bp
ZWRGcm9tID0gaSArIDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBub0JyZWFr
U3BhY2U6CisgICAgICAgICAgICBpZiAoIWVzY2FwZU5CU1ApCiAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxhc3RDb3BpZWRGcm9tLCBp
IC0gbGFzdENvcGllZEZyb20pOworICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbmJzcEVudGl0
eSk7CisgICAgICAgICAgICBsYXN0Q29waWVkRnJvbSA9IGkgKyAxOwogICAgICAgICB9CiAgICAg
fQogICAgIApAQCAtMjc3LDI4ICsyNzYsMjggQEAgc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBlZENv
bnRlbnQoVmVjdG9yPAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewog
ICAgICAgICBVQ2hhciBjID0gdWNoYXJzW2ldOwogICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAg
ICAgICAgIGNhc2UgJyYnOgotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodWNoYXJzICsg
bGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJvbSk7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kKHJlc3VsdCwgYW1wRW50aXR5KTsKLSAgICAgICAgICAgICAgICBsYXN0Q29waWVkRnJvbSA9
IGkgKyAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnPCc6Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAt
IGxhc3RDb3BpZWRGcm9tKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBsdEVudGl0
eSk7Ci0gICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJz4nOgotICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQodWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJvbSk7Ci0g
ICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgZ3RFbnRpdHkpOwotICAgICAgICAgICAgICAg
IGxhc3RDb3BpZWRGcm9tID0gaSArIDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIG5vQnJlYWtTcGFjZToKLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlTkJTUCkg
ewotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxhc3RDb3BpZWRG
cm9tLCBpIC0gbGFzdENvcGllZEZyb20pOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVz
dWx0LCBuYnNwRW50aXR5KTsKLSAgICAgICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBp
ICsgMTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAtIGxhc3RDb3BpZWRGcm9t
KTsKKyAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGFtcEVudGl0eSk7CisgICAgICAgICAgICBs
YXN0Q29waWVkRnJvbSA9IGkgKyAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
JzwnOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwg
aSAtIGxhc3RDb3BpZWRGcm9tKTsKKyAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGx0RW50aXR5
KTsKKyAgICAgICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAnPic6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyAr
IGxhc3RDb3BpZWRGcm9tLCBpIC0gbGFzdENvcGllZEZyb20pOworICAgICAgICAgICAgYXBwZW5k
KHJlc3VsdCwgZ3RFbnRpdHkpOworICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIG5vQnJlYWtTcGFjZToKKyAgICAgICAg
ICAgIGlmICghZXNjYXBlTkJTUCkKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQodWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJv
bSk7CisgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBuYnNwRW50aXR5KTsKKyAgICAgICAgICAg
IGxhc3RDb3BpZWRGcm9tID0gaSArIDE7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KICAgICAKQEAgLTUyMSwxNTkgKzUyMCwxNTUgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kU3RhcnRNYXJrdQogCiAgICAgYm9vbCBkb2N1bWVudElzSFRNTCA9IG5vZGUtPmRv
Y3VtZW50KCktPmlzSFRNTERvY3VtZW50KCk7CiAgICAgc3dpdGNoIChub2RlLT5ub2RlVHlwZSgp
KSB7Ci0gICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOiB7Ci0gICAgICAgICAgICBpZiAoTm9k
ZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBh
cmVudC0+aGFzVGFnTmFtZShzY3JpcHRUYWcpCi0gICAgICAgICAgICAgICAgICAgIHx8IHBhcmVu
dC0+aGFzVGFnTmFtZShzdHlsZVRhZykKLSAgICAgICAgICAgICAgICAgICAgfHwgcGFyZW50LT5o
YXNUYWdOYW1lKHhtcFRhZykpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVUNoYXJSYW5n
ZShyZXN1bHQsIHVjaGFyUmFuZ2Uobm9kZSwgbV9yYW5nZSkpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmVudC0+aGFzVGFnTmFtZSh0
ZXh0YXJlYVRhZykpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENvbnRlbnQo
cmVzdWx0LCB1Y2hhclJhbmdlKG5vZGUsIG1fcmFuZ2UpLCBkb2N1bWVudElzSFRNTCk7ICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzaG91bGRBbm5vdGF0ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENvbnRlbnQocmVzdWx0LCB1Y2hhclJhbmdl
KG5vZGUsIG1fcmFuZ2UpLCBkb2N1bWVudElzSFRNTCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKyAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERTog
eworICAgICAgICBpZiAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAg
ICAgICAgICBpZiAocGFyZW50LT5oYXNUYWdOYW1lKHNjcmlwdFRhZykKKyAgICAgICAgICAgICAg
ICB8fCBwYXJlbnQtPmhhc1RhZ05hbWUoc3R5bGVUYWcpCisgICAgICAgICAgICAgICAgfHwgcGFy
ZW50LT5oYXNUYWdOYW1lKHhtcFRhZykpCisgICAgICAgICAgICAgICAgYXBwZW5kVUNoYXJSYW5n
ZShyZXN1bHQsIHVjaGFyUmFuZ2Uobm9kZSwgbV9yYW5nZSkpOworICAgICAgICAgICAgZWxzZSBp
ZiAocGFyZW50LT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkKKyAgICAgICAgICAgICAgICBhcHBl
bmRFc2NhcGVkQ29udGVudChyZXN1bHQsIHVjaGFyUmFuZ2Uobm9kZSwgbV9yYW5nZSksIGRvY3Vt
ZW50SXNIVE1MKTsgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkpIHsKICAgICAgICAgICAgIGJvb2wg
dXNlUmVuZGVyZWRUZXh0ID0gIWVuY2xvc2luZ05vZGVXaXRoVGFnKFBvc2l0aW9uKGNvbnN0X2Nh
c3Q8Tm9kZSo+KG5vZGUpLCAwKSwgc2VsZWN0VGFnKTsKICAgICAgICAgICAgIFN0cmluZyBtYXJr
dXAgPSBlc2NhcGVDb250ZW50VGV4dCh1c2VSZW5kZXJlZFRleHQgPyByZW5kZXJlZFRleHQobm9k
ZSwgbV9yYW5nZSkgOiBzdHJpbmdWYWx1ZUZvclJhbmdlKG5vZGUsIG1fcmFuZ2UpLCBmYWxzZSk7
CiAgICAgICAgICAgICBtYXJrdXAgPSBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0
KG1hcmt1cCwgc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dCo+KG5vZGUpKTsKICAgICAgICAgICAgIGFw
cGVuZChyZXN1bHQsIG1hcmt1cCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAg
ICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDb21t
ZW50IGNvbnRlbnQgaXMgbm90IGVzY2FwZWQsIGJ1dCBYTUxTZXJpYWxpemVyIChhbmQgcG9zc2li
bHkgb3RoZXIgY2FsbGVycykgc2hvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBpdCBpbmNsdWRl
cyAiLS0+Ii4KLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsICI8IS0tIik7Ci0gICAgICAgICAg
ICBhcHBlbmQocmVzdWx0LCBzdGF0aWNfY2FzdDxjb25zdCBDb21tZW50Kj4obm9kZSktPmRhdGEo
KSk7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiLS0+Iik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6Ci0gICAgICAgICAgICBhcHBlbmREb2N1bWVudFR5
cGUocmVzdWx0LCBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudFR5cGUqPihub2RlKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9O
X05PREU6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBQSSBkYXRhIGlzIG5vdCBlc2NhcGVkLCBi
dXQgWE1MU2VyaWFsaXplciAoYW5kIHBvc3NpYmx5IG90aGVyIGNhbGxlcnMpIHRoaXMgc2hvdWxk
IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBpdCBpbmNsdWRlcyAiPz4iLgotICAgICAgICAgICAgY29u
c3QgUHJvY2Vzc2luZ0luc3RydWN0aW9uKiBuID0gc3RhdGljX2Nhc3Q8Y29uc3QgUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKj4obm9kZSk7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiPD8iKTsK
LSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIG4tPnRhcmdldCgpKTsKLSAgICAgICAgICAgIGFw
cGVuZChyZXN1bHQsICIgIik7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBuLT5kYXRhKCkp
OwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIj8+Iik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERTogewotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnPCcpOwotICAgICAgICAgICAgY29uc3QgRWxlbWVudCogZWwgPSBz
dGF0aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICBib29sIGNvbnZl
cnQgPSBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzICYmIGlzQmxvY2soY29uc3RfY2FzdDxOb2RlKj4o
bm9kZSkpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgZWwtPm5vZGVOYW1lUHJlc2Vydmlu
Z0Nhc2UoKSk7Ci0gICAgICAgICAgICBOYW1lZE5vZGVNYXAgKmF0dHJzID0gZWwtPmF0dHJpYnV0
ZXMoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJzLT5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIGlmICghZG9jdW1lbnRJc0hUTUwgJiYgbmFtZXNwYWNlcyAmJiBzaG91bGRBZGRO
YW1lc3BhY2VFbGVtZW50KGVsKSkKLSAgICAgICAgICAgICAgICBhcHBlbmROYW1lc3BhY2UocmVz
dWx0LCBlbC0+cHJlZml4KCksIGVsLT5uYW1lc3BhY2VVUkkoKSwgKm5hbWVzcGFjZXMpOwotCi0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgICAgICAgICAgQXR0cmlidXRlICphdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7
Ci0gICAgICAgICAgICAgICAgLy8gV2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgc2Vw
YXJhdGVseSwgYmVsb3cuCi0gICAgICAgICAgICAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBzdHls
ZUF0dHIgJiYgZWwtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBjb252
ZXJ0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICcpOwotCi0gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50SXNIVE1MKQot
ICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBhdHRyLT5uYW1lKCkubG9jYWxOYW1l
KCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJl
c3VsdCwgYXR0ci0+bmFtZSgpLnRvU3RyaW5nKCkpOworICAgICAgICBhcHBlbmRFc2NhcGVkQ29u
dGVudChyZXN1bHQsIHVjaGFyUmFuZ2Uobm9kZSwgbV9yYW5nZSksIGRvY3VtZW50SXNIVE1MKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgorICAg
ICAgICAvLyBGSVhNRTogQ29tbWVudCBjb250ZW50IGlzIG5vdCBlc2NhcGVkLCBidXQgWE1MU2Vy
aWFsaXplciAoYW5kIHBvc3NpYmx5IG90aGVyIGNhbGxlcnMpIHNob3VsZCByYWlzZSBhbiBleGNl
cHRpb24gaWYgaXQgaW5jbHVkZXMgIi0tPiIuCisgICAgICAgIGFwcGVuZChyZXN1bHQsICI8IS0t
Iik7CisgICAgICAgIGFwcGVuZChyZXN1bHQsIHN0YXRpY19jYXN0PGNvbnN0IENvbW1lbnQqPihu
b2RlKS0+ZGF0YSgpKTsKKyAgICAgICAgYXBwZW5kKHJlc3VsdCwgIi0tPiIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CisgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vZGU6OkRPQ1VN
RU5UX1RZUEVfTk9ERToKKyAgICAgICAgYXBwZW5kRG9jdW1lbnRUeXBlKHJlc3VsdCwgc3RhdGlj
X2Nhc3Q8Y29uc3QgRG9jdW1lbnRUeXBlKj4obm9kZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTogeworICAgICAgICAvLyBGSVhN
RTogUEkgZGF0YSBpcyBub3QgZXNjYXBlZCwgYnV0IFhNTFNlcmlhbGl6ZXIgKGFuZCBwb3NzaWJs
eSBvdGhlciBjYWxsZXJzKSB0aGlzIHNob3VsZCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgaW5j
bHVkZXMgIj8+Ii4KKyAgICAgICAgY29uc3QgUHJvY2Vzc2luZ0luc3RydWN0aW9uKiBuID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgUHJvY2Vzc2luZ0luc3RydWN0aW9uKj4obm9kZSk7CisgICAgICAgIGFw
cGVuZChyZXN1bHQsICI8PyIpOworICAgICAgICBhcHBlbmQocmVzdWx0LCBuLT50YXJnZXQoKSk7
CisgICAgICAgIGFwcGVuZChyZXN1bHQsICIgIik7CisgICAgICAgIGFwcGVuZChyZXN1bHQsIG4t
PmRhdGEoKSk7CisgICAgICAgIGFwcGVuZChyZXN1bHQsICI/PiIpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6IHsKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgnPCcpOworICAgICAgICBjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgRWxlbWVudCo+KG5vZGUpOworICAgICAgICBib29sIGNvbnZlcnQgPSBjb252ZXJ0Qmxv
Y2tzVG9JbmxpbmVzICYmIGlzQmxvY2soY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpOworICAgICAg
ICBhcHBlbmQocmVzdWx0LCBlbGVtZW50LT5ub2RlTmFtZVByZXNlcnZpbmdDYXNlKCkpOworICAg
ICAgICBpZiAoIWRvY3VtZW50SXNIVE1MICYmIG5hbWVzcGFjZXMgJiYgc2hvdWxkQWRkTmFtZXNw
YWNlRWxlbWVudChlbGVtZW50KSkKKyAgICAgICAgICAgIGFwcGVuZE5hbWVzcGFjZShyZXN1bHQs
IGVsZW1lbnQtPnByZWZpeCgpLCBlbGVtZW50LT5uYW1lc3BhY2VVUkkoKSwgKm5hbWVzcGFjZXMp
OworCisgICAgICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVsZW1lbnQtPmF0dHJpYnV0
ZXMoKTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlcy0+bGVuZ3RoKCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShp
KTsKKyAgICAgICAgICAgIC8vIFdlJ2xsIGhhbmRsZSB0aGUgc3R5bGUgYXR0cmlidXRlIHNlcGFy
YXRlbHksIGJlbG93LgorICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgpID09IHN0eWxl
QXR0ciAmJiBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwg
Y29udmVydCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgJyk7CiAKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc9Jyk7CisgICAg
ICAgICAgICBpZiAoZG9jdW1lbnRJc0hUTUwpCisgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3Vs
dCwgYXR0cmlidXRlLT5uYW1lKCkubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGF0dHJpYnV0ZS0+bmFtZSgpLnRvU3RyaW5nKCkp
OwogCi0gICAgICAgICAgICAgICAgaWYgKGVsLT5pc1VSTEF0dHJpYnV0ZShhdHRyKSkgewotICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNvbXBsZXRlIGZpbGU6Ly8vIFVS
THMgYmVjYXVzZSBpdCBtYXkgY29udGFpbiBzZW5zaXRpdmUgaW5mb3JtYXRpb24KLSAgICAgICAg
ICAgICAgICAgICAgLy8gYWJvdXQgdGhlIHVzZXIncyBzeXN0ZW0uCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChzaG91bGRSZXNvbHZlVVJMcygpICYmICFub2RlLT5kb2N1bWVudCgpLT51cmwoKS5p
c0xvY2FsRmlsZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUXVvdGVkVVJMQXR0
cmlidXRlVmFsdWUocmVzdWx0LCBub2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhdHRyLT52
YWx1ZSgpKS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFF1b3RlZFVSTEF0dHJpYnV0ZVZhbHVlKHJlc3VsdCwgYXR0ci0+
dmFsdWUoKS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXCInKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5k
QXR0cmlidXRlVmFsdWUocmVzdWx0LCBhdHRyLT52YWx1ZSgpLCBkb2N1bWVudElzSFRNTCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1wiJyk7Ci0gICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPScpOwogCi0gICAgICAgICAgICAgICAgaWYg
KCFkb2N1bWVudElzSFRNTCAmJiBuYW1lc3BhY2VzICYmIHNob3VsZEFkZE5hbWVzcGFjZUF0dHJp
YnV0ZShhdHRyLCAqbmFtZXNwYWNlcykpCi0gICAgICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVz
cGFjZShyZXN1bHQsIGF0dHItPnByZWZpeCgpLCBhdHRyLT5uYW1lc3BhY2VVUkkoKSwgKm5hbWVz
cGFjZXMpOworICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmlzVVJMQXR0cmlidXRlKGF0dHJpYnV0
ZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNvbXBsZXRlIGZpbGU6
Ly8vIFVSTHMgYmVjYXVzZSBpdCBtYXkgY29udGFpbiBzZW5zaXRpdmUgaW5mb3JtYXRpb24KKyAg
ICAgICAgICAgICAgICAvLyBhYm91dCB0aGUgdXNlcidzIHN5c3RlbS4KKyAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkUmVzb2x2ZVVSTHMoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+dXJsKCkuaXNM
b2NhbEZpbGUoKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kUXVvdGVkVVJMQXR0cmlidXRl
VmFsdWUocmVzdWx0LCBub2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhdHRyaWJ1dGUtPnZh
bHVlKCkpLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFF1b3RlZFVSTEF0dHJpYnV0ZVZhbHVlKHJlc3VsdCwgYXR0cmlidXRlLT52YWx1
ZSgpLnN0cmluZygpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnXCInKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShy
ZXN1bHQsIGF0dHJpYnV0ZS0+dmFsdWUoKSwgZG9jdW1lbnRJc0hUTUwpOworICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJ1wiJyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChlbC0+aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8
IGNvbnZlcnQpKSB7Ci0gICAgICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGNvbnN0X2Nh
c3Q8RWxlbWVudCo+KGVsKTsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24+IHN0eWxlID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihlbGVtZW50KS0+
Z2V0SW5saW5lU3R5bGVEZWNsKCktPmNvcHkoKTsKLSAgICAgICAgICAgICAgICBpZiAoc2hvdWxk
QW5ub3RhdGUoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxl
c0ZvckVsZW1lbnQoY29uc3RfY2FzdDxFbGVtZW50Kj4oZWwpKTsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gU3R5bGVzIGZyb20gdGhlIGlubGluZSBzdHlsZSBkZWNsYXJhdGlvbiwgaGVsZCBpbiB0
aGUgdmFyaWFibGUgInN0eWxlIiwgdGFrZSBwcmVjZWRlbmNlIAotICAgICAgICAgICAgICAgICAg
ICAvLyBvdmVyIHRob3NlIGZyb20gbWF0Y2hlZCBydWxlcy4KLSAgICAgICAgICAgICAgICAgICAg
c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5tZXJnZShzdHlsZS5nZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHN0eWxlID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzOwotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bj4gY29tcHV0ZWRTdHlsZUZvckVsZW1lbnQgPSBjb21wdXRlZFN0eWxlKGVsZW1lbnQpOwotICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGZyb21D
b21wdXRlZFN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHN0eWxlLT5lbmQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3R5bGUtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENTU1Byb3Bl
cnR5JiBwcm9wZXJ0eSA9ICppdDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NWYWx1
ZSogdmFsdWUgPSBwcm9wZXJ0eS52YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFRoZSBwcm9wZXJ0eSB2YWx1ZSwgaWYgaXQncyBhIHBlcmNlbnRhZ2UsIG1heSBub3QgcmVm
bGVjdCB0aGUgYWN0dWFsIGNvbXB1dGVkIHZhbHVlLiAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRm9yIGV4YW1wbGU6IHN0eWxlPSJoZWlnaHQ6IDElOyBvdmVyZmxvdzogdmlzaWJs
ZTsiIGluIHF1aXJrc21vZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhlcmUgYXJlIG90aGVycyBsaWtlIHRoaXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNTE5NTEyMz4g
U2xhc2hkb3QgY29weS9wYXN0ZSBmaWRlbGl0eSBwcm9ibGVtCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NTX1BSSU1J
VElWRV9WQUxVRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRQcm9wZXJ0eVZhbHVlID0gY29t
cHV0ZWRTdHlsZUZvckVsZW1lbnQtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkuaWQoKSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUNvbXB1dGVkU3R5
bGUtPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5LmlkKCksIGNvbXB1dGVk
UHJvcGVydHlWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIWRvY3VtZW50SXNIVE1MICYmIG5hbWVzcGFjZXMgJiYgc2hvdWxkQWRkTmFtZXNwYWNl
QXR0cmlidXRlKGF0dHJpYnV0ZSwgKm5hbWVzcGFjZXMpKQorICAgICAgICAgICAgICAgIGFwcGVu
ZE5hbWVzcGFjZShyZXN1bHQsIGF0dHJpYnV0ZS0+cHJlZml4KCksIGF0dHJpYnV0ZS0+bmFtZXNw
YWNlVVJJKCksICpuYW1lc3BhY2VzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlbGVtZW50
LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwgY29udmVydCkpIHsKKyAg
ICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjb25zdF9jYXN0PEVsZW1lbnQqPihlbGVtZW50
KTsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUg
PSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGVsZW1lbnQpLT5nZXRJbmxpbmVTdHlsZURlY2wo
KS0+Y29weSgpOworICAgICAgICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkpIHsKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNo
ZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoY29uc3RfY2FzdDxFbGVt
ZW50Kj4oZWxlbWVudCkpOworICAgICAgICAgICAgICAgIC8vIFN0eWxlcyBmcm9tIHRoZSBpbmxp
bmUgc3R5bGUgZGVjbGFyYXRpb24sIGhlbGQgaW4gdGhlIHZhcmlhYmxlICJzdHlsZSIsIHRha2Ug
cHJlY2VkZW5jZSAKKyAgICAgICAgICAgICAgICAvLyBvdmVyIHRob3NlIGZyb20gbWF0Y2hlZCBy
dWxlcy4KKyAgICAgICAgICAgICAgICBzdHlsZUZyb21NYXRjaGVkUnVsZXMtPm1lcmdlKHN0eWxl
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBzdHlsZSA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlczsK
KworICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNv
bXB1dGVkU3R5bGVGb3JFbGVtZW50ID0gY29tcHV0ZWRTdHlsZShlbGVtZW50KTsKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGZyb21Db21wdXRlZFN0
eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOworCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gc3R5bGUtPmVuZCgpOworICAgICAgICAgICAgICAgICAgICBm
b3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0eWxl
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9ICppdDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IHByb3BlcnR5LnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlmIGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90
IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2YWx1ZS4gIAorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRm9yIGV4YW1wbGU6IHN0eWxlPSJoZWlnaHQ6IDElOyBvdmVyZmxvdzogdmlzaWJs
ZTsiIGluIHF1aXJrc21vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVy
ZSBhcmUgb3RoZXJzIGxpa2UgdGhpcywgc2VlIDxyZGFyOi8vcHJvYmxlbS81MTk1MTIzPiBTbGFz
aGRvdCBjb3B5L3Bhc3RlIGZpZGVsaXR5IHByb2JsZW0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19QUklNSVRJVkVfVkFM
VUUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVm
UHRyPENTU1ZhbHVlPiBjb21wdXRlZFByb3BlcnR5VmFsdWUgPSBjb21wdXRlZFN0eWxlRm9yRWxl
bWVudC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eS5pZCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyb21Db21wdXRlZFN0eWxlLT5hZGRQYXJzZWRQcm9wZXJ0
eShDU1NQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBjb21wdXRlZFByb3BlcnR5VmFsdWUpKTsKICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgc3R5bGUtPm1lcmdlKGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnZlcnQpCi0gICAgICAgICAgICAgICAgICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCB0
cnVlKTsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgZnVsbHkgc2VsZWN0
ZWQgYnkgdGhlIHJhbmdlLCB0aGVuIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBzdHlsZXMgdGhhdCBh
ZmZlY3QgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgbm9kZXMgYXJvdW5kIGl0Ci0gICAgICAgICAg
ICAgICAgLy8gb25seSB0aGUgb25lcyB0aGF0IGFmZmVjdCBpdCBhbmQgdGhlIG5vZGVzIHdpdGhp
biBpdC4KLSAgICAgICAgICAgICAgICBpZiAocmFuZ2VGdWxseVNlbGVjdHNOb2RlID09IERvZXNO
b3RGdWxseVNlbGVjdE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZUV4dGVyaW9yU3R5
bGVzKHN0eWxlLmdldCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoc3R5bGUtPmxlbmd0aCgpID4g
MCkgewotICAgICAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
Zywgc3R5bGVQcmVmaXgsICgiIHN0eWxlPVwiIikpOwotICAgICAgICAgICAgICAgICAgICBhcHBl
bmQocmVzdWx0LCBzdHlsZVByZWZpeCk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEF0dHJp
YnV0ZVZhbHVlKHJlc3VsdCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOwotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcIicpOwogICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBzdHlsZS0+bWVyZ2UoZnJvbUNvbXB1dGVkU3R5bGUuZ2V0KCkpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc2hvdWxkU2VsZkNs
b3NlKGVsKSkgewotICAgICAgICAgICAgICAgIGlmIChlbC0+aXNIVE1MRWxlbWVudCgpKQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7IC8vIFhIVE1MIDEuMCA8LT4gSFRN
TCBjb21wYXRpYmlsaXR5LgotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsKKyAg
ICAgICAgICAgIGlmIChjb252ZXJ0KQorICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCB0cnVlKTsKKyAgICAgICAgICAg
IC8vIElmIHRoZSBub2RlIGlzIG5vdCBmdWxseSBzZWxlY3RlZCBieSB0aGUgcmFuZ2UsIHRoZW4g
d2UgZG9uJ3Qgd2FudCB0byBrZWVwIHN0eWxlcyB0aGF0IGFmZmVjdCBpdHMgcmVsYXRpb25zaGlw
IHRvIHRoZSBub2RlcyBhcm91bmQgaXQKKyAgICAgICAgICAgIC8vIG9ubHkgdGhlIG9uZXMgdGhh
dCBhZmZlY3QgaXQgYW5kIHRoZSBub2RlcyB3aXRoaW4gaXQuCisgICAgICAgICAgICBpZiAocmFu
Z2VGdWxseVNlbGVjdHNOb2RlID09IERvZXNOb3RGdWxseVNlbGVjdE5vZGUpCisgICAgICAgICAg
ICAgICAgcmVtb3ZlRXh0ZXJpb3JTdHlsZXMoc3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgaWYg
KHN0eWxlLT5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IFN0cmluZywgc3R5bGVQcmVmaXgsICgiIHN0eWxlPVwiIikpOworICAgICAgICAg
ICAgICAgIGFwcGVuZChyZXN1bHQsIHN0eWxlUHJlZml4KTsKKyAgICAgICAgICAgICAgICBhcHBl
bmRBdHRyaWJ1dGVWYWx1ZShyZXN1bHQsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1M
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcIicpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPicpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6IHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBDREFUQSBjb250ZW50IGlzIG5vdCBlc2NhcGVkLCBidXQgWE1MU2VyaWFs
aXplciAoYW5kIHBvc3NpYmx5IG90aGVyIGNhbGxlcnMpIHNob3VsZCByYWlzZSBhbiBleGNlcHRp
b24gaWYgaXQgaW5jbHVkZXMgIl1dPiIuCi0gICAgICAgICAgICBjb25zdCBDREFUQVNlY3Rpb24q
IG4gPSBzdGF0aWNfY2FzdDxjb25zdCBDREFUQVNlY3Rpb24qPihub2RlKTsKLSAgICAgICAgICAg
IGFwcGVuZChyZXN1bHQsICI8IVtDREFUQVsiKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQs
IG4tPmRhdGEoKSk7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiXV0+Iik7Ci0gICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RF
OgotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OkVO
VElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgot
ICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoc2hv
dWxkU2VsZkNsb3NlKGVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsgLy8gWEhUTUwg
MS4wIDwtPiBIVE1MIGNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcv
Jyk7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnPicpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6IHsKKyAgICAgICAg
Ly8gRklYTUU6IENEQVRBIGNvbnRlbnQgaXMgbm90IGVzY2FwZWQsIGJ1dCBYTUxTZXJpYWxpemVy
IChhbmQgcG9zc2libHkgb3RoZXIgY2FsbGVycykgc2hvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbiBp
ZiBpdCBpbmNsdWRlcyAiXV0+Ii4KKyAgICAgICAgY29uc3QgQ0RBVEFTZWN0aW9uKiBuID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ0RBVEFTZWN0aW9uKj4obm9kZSk7CisgICAgICAgIGFwcGVuZChyZXN1
bHQsICI8IVtDREFUQVsiKTsKKyAgICAgICAgYXBwZW5kKHJlc3VsdCwgbi0+ZGF0YSgpKTsKKyAg
ICAgICAgYXBwZW5kKHJlc3VsdCwgIl1dPiIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKKyAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgor
ICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6Tk9U
QVRJT05fTk9ERToKKyAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC03
MjMsMTIgKzcxOCwxMiBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZVVSTHMoTm9kZSogbm9kZSwgY29u
CiAgICAgZm9yIChOb2RlKiBuID0gbm9kZTsgbiAhPSBlbmQ7IG4gPSBuLT50cmF2ZXJzZU5leHRO
b2RlKCkpIHsKICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICAgICAg
RWxlbWVudCogZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgIE5hbWVk
Tm9kZU1hcCogYXR0cnMgPSBlLT5hdHRyaWJ1dGVzKCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBhdHRycy0+bGVuZ3RoKCk7CisgICAgICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJp
YnV0ZXMgPSBlLT5hdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBh
dHRyaWJ1dGVzLT5sZW5ndGgoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJz
LT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICAgICAgICAgIGlmIChlLT5pc1VSTEF0dHJpYnV0
ZShhdHRyKSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoQXR0cmlidXRlQ2hh
bmdlKGUsIGF0dHItPm5hbWUoKSwgS1VSTChwYXJzZWRCYXNlVVJMLCBhdHRyLT52YWx1ZSgpKS5z
dHJpbmcoKSkpOworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmli
dXRlcy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgICAgICAgICBpZiAoZS0+aXNVUkxBdHRy
aWJ1dGUoYXR0cmlidXRlKSkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoQXR0
cmlidXRlQ2hhbmdlKGUsIGF0dHJpYnV0ZS0+bmFtZSgpLCBLVVJMKHBhcnNlZEJhc2VVUkwsIGF0
dHJpYnV0ZS0+dmFsdWUoKSkuc3RyaW5nKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTc3NSw4ICs3NzAsOCBAQCBzdGF0aWMgYm9vbCBwcm9wZXJ0eU1pc3NpbmdPckVx
dWFsVG9Ob25lCiAKIHN0YXRpYyBib29sIGlzRWxlbWVudFByZXNlbnRhdGlvbmFsKGNvbnN0IE5v
ZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodVRhZykgfHwgbm9kZS0+aGFz
VGFnTmFtZShzVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHN0cmlrZVRhZykgfHwKLSAgICAgICAg
bm9kZS0+aGFzVGFnTmFtZShpVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGVtVGFnKSB8fCBub2Rl
LT5oYXNUYWdOYW1lKGJUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc3Ryb25nVGFnKSkKKyAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZSh1VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHNUYWcpIHx8IG5v
ZGUtPmhhc1RhZ05hbWUoc3RyaWtlVGFnKQorICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGlU
YWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoZW1UYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoYlRhZykg
fHwgbm9kZS0+aGFzVGFnTmFtZShzdHJvbmdUYWcpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChub2RlKTsKICAgICBpZiAoIXN0eWxlKQpAQCAtNzg5LDE3
ICs3ODQsMTcgQEAgc3RhdGljIGJvb2wgaXNTcGVjaWFsQW5jZXN0b3JCbG9jayhOb2RlKgogICAg
IGlmICghbm9kZSB8fCAhaXNCbG9jayhub2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAKLSAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShsaXN0aW5nVGFnKSB8fAotICAgICAg
ICAgICBub2RlLT5oYXNUYWdOYW1lKG9sVGFnKSB8fAotICAgICAgICAgICBub2RlLT5oYXNUYWdO
YW1lKHByZVRhZykgfHwKLSAgICAgICAgICAgbm9kZS0+aGFzVGFnTmFtZSh0YWJsZVRhZykgfHwK
LSAgICAgICAgICAgbm9kZS0+aGFzVGFnTmFtZSh1bFRhZykgfHwKLSAgICAgICAgICAgbm9kZS0+
aGFzVGFnTmFtZSh4bXBUYWcpIHx8Ci0gICAgICAgICAgIG5vZGUtPmhhc1RhZ05hbWUoaDFUYWcp
IHx8Ci0gICAgICAgICAgIG5vZGUtPmhhc1RhZ05hbWUoaDJUYWcpIHx8Ci0gICAgICAgICAgIG5v
ZGUtPmhhc1RhZ05hbWUoaDNUYWcpIHx8Ci0gICAgICAgICAgIG5vZGUtPmhhc1RhZ05hbWUoaDRU
YWcpIHx8Ci0gICAgICAgICAgIG5vZGUtPmhhc1RhZ05hbWUoaDVUYWcpOworICAgIHJldHVybiBu
b2RlLT5oYXNUYWdOYW1lKGxpc3RpbmdUYWcpCisgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUo
b2xUYWcpCisgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUocHJlVGFnKQorICAgICAgICB8fCBu
b2RlLT5oYXNUYWdOYW1lKHRhYmxlVGFnKQorICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKHVs
VGFnKQorICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKHhtcFRhZykKKyAgICAgICAgfHwgbm9k
ZS0+aGFzVGFnTmFtZShoMVRhZykKKyAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShoMlRhZykK
KyAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShoM1RhZykKKyAgICAgICAgfHwgbm9kZS0+aGFz
VGFnTmFtZShoNFRhZykKKyAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShoNVRhZyk7CiB9CiAK
IHN0YXRpYyBib29sIHNob3VsZEluY2x1ZGVXcmFwcGVyRm9yRnVsbHlTZWxlY3RlZFJvb3QoTm9k
ZSogZnVsbHlTZWxlY3RlZFJvb3QsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkK
QEAgLTgwNyw4ICs4MDIsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRJbmNsdWRlV3JhcHBlckZvckZ1
bGx5CiAgICAgaWYgKGZ1bGx5U2VsZWN0ZWRSb290LT5pc0VsZW1lbnROb2RlKCkgJiYgc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KGZ1bGx5U2VsZWN0ZWRSb290KS0+aGFzQXR0cmlidXRlKGJhY2tncm91
bmRBdHRyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgIHJldHVybiBzdHls
ZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSkgfHwKLSAg
ICAgICAgICAgc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOworICAgIHJldHVybiBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUJhY2tncm91bmRJbWFnZSkgfHwgc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOwogfQogCiBzdGF0aWMgTm9kZSogc2VyaWFsaXplTm9kZXMoTWFy
a3VwQWNjdW11bGF0b3ImIGFjY3VtdWxhdG9yLCBOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RF
bmQpCkBAIC05MTEsMTEgKzkwNSwxMSBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdl
KiByYW5nZSwgCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBib29sIGNvbGxhcHNl
ZCA9IHVwZGF0ZWRSYW5nZS0+Y29sbGFwc2VkKGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7Cisg
ICAgQVNTRVJUKCFlYyk7CiAgICAgaWYgKGNvbGxhcHNlZCkKICAgICAgICAgcmV0dXJuICIiOwog
ICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9yID0gdXBkYXRlZFJhbmdlLT5jb21tb25BbmNlc3RvckNv
bnRhaW5lcihlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIEFTU0VSVCghZWMpOwogICAg
IGlmICghY29tbW9uQW5jZXN0b3IpCiAgICAgICAgIHJldHVybiAiIjsKIApAQCAtMTEzMCw3ICsx
MTI0LDcgQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29udAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAg
IHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoZG9j
dW1lbnQpLCBlYyk7Ci0gICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgQVNTRVJUKCFl
Yyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExNDgsMTIgKzExNDIsMTIgQEAgc3Rh
dGljIHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29udAogICAgICAgICBpZiAoIXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1
bWVudCwgdGFiVGV4dCksIGVjKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgICAgICAgICAgdGFiVGV4dCA9ICIi
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUmVmUHRyPE5vZGU+IHRleHROb2RlID0gZG9j
dW1lbnQtPmNyZWF0ZVRleHROb2RlKHN0cmluZ1dpdGhSZWJhbGFuY2VkV2hpdGVzcGFjZShzLCBm
aXJzdCwgaSArIDEgPT0gbnVtRW50cmllcykpOwogICAgICAgICAgICAgcGFyYWdyYXBoLT5hcHBl
bmRDaGlsZCh0ZXh0Tm9kZS5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVChlYyA9
PSAwKTsKKyAgICAgICAgICAgIEFTU0VSVCghZWMpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
dGhlcmUgaXMgYSB0YWIgYWZ0ZXIgZXZlcnkgZW50cnksIGV4Y2VwdCB0aGUgbGFzdCBlbnRyeQpA
QCAtMTE2Miw3ICsxMTU2LDcgQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmco
Q29udAogICAgICAgICAgICAgdGFiVGV4dC5hcHBlbmQoJ1x0Jyk7CiAgICAgICAgIGVsc2UgaWYg
KCF0YWJUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGls
ZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dCksIGVjKTsKLSAgICAgICAg
ICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgICAgIEFTU0VSVCghZWMpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBmaXJzdCA9IGZhbHNlOwpAQCAtMTIwNiwxMiArMTIwMCwxMiBA
QCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtCiAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHN0eWxlTm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXIg
JiYgcmVuZGVyZXItPnN0eWxlKCktPnByZXNlcnZlTmV3bGluZSgpKSB7CiAgICAgICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoc3RyaW5nKSwgZWMpOwot
ICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgICAgIEFTU0VSVCghZWMpOwogICAgICAgICBp
ZiAoc3RyaW5nLmVuZHNXaXRoKCJcbiIpKSB7CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCk7CiAgICAgICAgICAgICBlbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7ICAg
ICAgICAgICAgCiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxl
YXNlKCksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgICAgIEFT
U0VSVCghZWMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7
CiAgICAgfQpAQCAtMTI1MCw3ICsxMjQ0LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcmFnbQogICAgICAgICAgICAgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoZWxlbWVu
dC5nZXQoKSwgcyk7CiAgICAgICAgIH0KICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVs
ZW1lbnQucmVsZWFzZSgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAg
QVNTRVJUKCFlYyk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CkBA
IC0xMjcxLDkgKzEyNjUsOSBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1
bWVudCk7CiAgICAgICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKG5vZGVzW2ldLCBlYyk7Ci0gICAg
ICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwotICAgICAgICBBU1NFUlQo
ZWMgPT0gMCk7CisgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIAogICAgIGlmIChkb2N1bWVu
dC0+ZnJhbWUoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64970</attachid>
            <date>2010-08-20 12:17:06 -0700</date>
            <delta_ts>2010-08-20 12:36:29 -0700</delta_ts>
            <desc>fixed mac build</desc>
            <filename>bug-44318-20100820121704.patch</filename>
            <type>text/plain</type>
            <size>28181</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTc0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgc3R5
bGUgY29ycmVjdGlvbiBpbiBtYXJrdXAuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NDMxOAorCisgICAgICAgIE1ha2UgbWFya3VwLmNwcCBwYXNz
IGNoZWNrLXdlYmtpdC1zdHlsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIGFkZGVkIHNp
bmNlIHRoaXMgaXMgYSBjbGVhbnVwLgorCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEF0dHJpYnV0ZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVzY2FwZWRDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydE1hcmt1cCk6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wbGV0ZVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50UHJlc2Vu
dGF0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6aXNTcGVjaWFsQW5jZXN0b3JCbG9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRJbmNsdWRlV3JhcHBlckZvckZ1bGx5U2VsZWN0ZWRSb290
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpm
aWxsQ29udGFpbmVyRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVu
dEZyb21UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKToK
KwogMjAxMC0wOC0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJl
dmlzaW9uIDY1NzQ2KQorKysgV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJtYXJr
dXAuaCIKIAorI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ0RBVEFT
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyTmFtZXMuaCIKICNpbmNsdWRlICJDb21tZW50
LmgiCkBAIC01MiwxMyArNTMsMTIgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKLSNpbmNsdWRlICJW
aXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
VmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKICNpbmNsdWRlICJo
dG1sZWRpdGluZy5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSAiQXBwbHlTdHlsZUNvbW1hbmQuaCIKIAogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIApAQCAtMjMwLDMzICsyMzAsMzIgQEAgdm9pZCBNYXJrdXBBY2N1bXVs
YXRvcjo6YXBwZW5kQXR0cmlidXRlVgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47
ICsraSkgewogICAgICAgICBVQ2hhciBjID0gdWNoYXJzW2ldOwogICAgICAgICBzd2l0Y2ggKGMp
IHsKLSAgICAgICAgICAgIGNhc2UgJyYnOgotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
dWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJvbSk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kKHJlc3VsdCwgYW1wRW50aXR5KTsKLSAgICAgICAgICAgICAgICBsYXN0Q29w
aWVkRnJvbSA9IGkgKyAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSAnPCc6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVk
RnJvbSwgaSAtIGxhc3RDb3BpZWRGcm9tKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0
LCBsdEVudGl0eSk7Ci0gICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJz4nOgotICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQodWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVk
RnJvbSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgZ3RFbnRpdHkpOwotICAgICAg
ICAgICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlICciJzoKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVj
aGFycyArIGxhc3RDb3BpZWRGcm9tLCBpIC0gbGFzdENvcGllZEZyb20pOwotICAgICAgICAgICAg
ICAgIGFwcGVuZChyZXN1bHQsIHF1b3RFbnRpdHkpOwotICAgICAgICAgICAgICAgIGxhc3RDb3Bp
ZWRGcm9tID0gaSArIDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IG5vQnJlYWtTcGFjZToKLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlTkJTUCkgewotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxhc3RDb3BpZWRGcm9tLCBpIC0g
bGFzdENvcGllZEZyb20pOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBuYnNw
RW50aXR5KTsKLSAgICAgICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAtIGxhc3RDb3BpZWRGcm9tKTsKKyAgICAg
ICAgICAgIGFwcGVuZChyZXN1bHQsIGFtcEVudGl0eSk7CisgICAgICAgICAgICBsYXN0Q29waWVk
RnJvbSA9IGkgKyAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJzwnOgorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAtIGxhc3RD
b3BpZWRGcm9tKTsKKyAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGx0RW50aXR5KTsKKyAgICAg
ICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAnPic6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxhc3RDb3Bp
ZWRGcm9tLCBpIC0gbGFzdENvcGllZEZyb20pOworICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
Z3RFbnRpdHkpOworICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlICciJzoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
dWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJvbSk7CisgICAgICAgICAg
ICBhcHBlbmQocmVzdWx0LCBxdW90RW50aXR5KTsKKyAgICAgICAgICAgIGxhc3RDb3BpZWRGcm9t
ID0gaSArIDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBub0JyZWFrU3BhY2U6
CisgICAgICAgICAgICBpZiAoIWVzY2FwZU5CU1ApCiAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxhc3RDb3BpZWRGcm9tLCBpIC0gbGFz
dENvcGllZEZyb20pOworICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbmJzcEVudGl0eSk7Cisg
ICAgICAgICAgICBsYXN0Q29waWVkRnJvbSA9IGkgKyAxOwogICAgICAgICB9CiAgICAgfQogICAg
IApAQCAtMjc3LDI4ICsyNzYsMjggQEAgc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBlZENvbnRlbnQo
VmVjdG9yPAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAg
ICBVQ2hhciBjID0gdWNoYXJzW2ldOwogICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgICAg
IGNhc2UgJyYnOgotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodWNoYXJzICsgbGFzdENv
cGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJvbSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJl
c3VsdCwgYW1wRW50aXR5KTsKLSAgICAgICAgICAgICAgICBsYXN0Q29waWVkRnJvbSA9IGkgKyAx
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAtIGxhc3RD
b3BpZWRGcm9tKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBsdEVudGl0eSk7Ci0g
ICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgJz4nOgotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQodWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJvbSk7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kKHJlc3VsdCwgZ3RFbnRpdHkpOwotICAgICAgICAgICAgICAgIGxhc3RD
b3BpZWRGcm9tID0gaSArIDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIG5vQnJlYWtTcGFjZToKLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlTkJTUCkgewotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxhc3RDb3BpZWRGcm9tLCBp
IC0gbGFzdENvcGllZEZyb20pOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBu
YnNwRW50aXR5KTsKLSAgICAgICAgICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAtIGxhc3RDb3BpZWRGcm9tKTsKKyAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGFtcEVudGl0eSk7CisgICAgICAgICAgICBsYXN0Q29w
aWVkRnJvbSA9IGkgKyAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJzwnOgor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAtIGxh
c3RDb3BpZWRGcm9tKTsKKyAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGx0RW50aXR5KTsKKyAg
ICAgICAgICAgIGxhc3RDb3BpZWRGcm9tID0gaSArIDE7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAnPic6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVjaGFycyArIGxhc3RD
b3BpZWRGcm9tLCBpIC0gbGFzdENvcGllZEZyb20pOworICAgICAgICAgICAgYXBwZW5kKHJlc3Vs
dCwgZ3RFbnRpdHkpOworICAgICAgICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIG5vQnJlYWtTcGFjZToKKyAgICAgICAgICAgIGlm
ICghZXNjYXBlTkJTUCkKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQodWNoYXJzICsgbGFzdENvcGllZEZyb20sIGkgLSBsYXN0Q29waWVkRnJvbSk7Cisg
ICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBuYnNwRW50aXR5KTsKKyAgICAgICAgICAgIGxhc3RD
b3BpZWRGcm9tID0gaSArIDE7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0K
ICAgICAKQEAgLTUyMSwxNTkgKzUyMCwxNTcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBw
ZW5kU3RhcnRNYXJrdQogCiAgICAgYm9vbCBkb2N1bWVudElzSFRNTCA9IG5vZGUtPmRvY3VtZW50
KCktPmlzSFRNTERvY3VtZW50KCk7CiAgICAgc3dpdGNoIChub2RlLT5ub2RlVHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOiB7Ci0gICAgICAgICAgICBpZiAoTm9kZSogcGFy
ZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmVudC0+
aGFzVGFnTmFtZShzY3JpcHRUYWcpCi0gICAgICAgICAgICAgICAgICAgIHx8IHBhcmVudC0+aGFz
VGFnTmFtZShzdHlsZVRhZykKLSAgICAgICAgICAgICAgICAgICAgfHwgcGFyZW50LT5oYXNUYWdO
YW1lKHhtcFRhZykpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVUNoYXJSYW5nZShyZXN1
bHQsIHVjaGFyUmFuZ2Uobm9kZSwgbV9yYW5nZSkpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmVudC0+aGFzVGFnTmFtZSh0ZXh0YXJl
YVRhZykpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENvbnRlbnQocmVzdWx0
LCB1Y2hhclJhbmdlKG5vZGUsIG1fcmFuZ2UpLCBkb2N1bWVudElzSFRNTCk7ICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQor
ICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOiB7CisgICAgICAgIGlmIChOb2RlKiBwYXJlbnQgPSBu
b2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnQtPmhhc1RhZ05hbWUo
c2NyaXB0VGFnKQorICAgICAgICAgICAgICAgIHx8IHBhcmVudC0+aGFzVGFnTmFtZShzdHlsZVRh
ZykKKyAgICAgICAgICAgICAgICB8fCBwYXJlbnQtPmhhc1RhZ05hbWUoeG1wVGFnKSkgeworICAg
ICAgICAgICAgICAgIGFwcGVuZFVDaGFyUmFuZ2UocmVzdWx0LCB1Y2hhclJhbmdlKG5vZGUsIG1f
cmFuZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmICghc2hvdWxkQW5ub3RhdGUoKSkgeworICAgICAgICAgICAgaWYgKHBhcmVudC0+aGFz
VGFnTmFtZSh0ZXh0YXJlYVRhZykpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRFc2NhcGVkQ29u
dGVudChyZXN1bHQsIHVjaGFyUmFuZ2Uobm9kZSwgbV9yYW5nZSksIGRvY3VtZW50SXNIVE1MKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorICAg
ICAgICB9CisgICAgICAgIGlmIChzaG91bGRBbm5vdGF0ZSgpKSB7CiAgICAgICAgICAgICBib29s
IHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhQb3NpdGlvbihjb25zdF9j
YXN0PE5vZGUqPihub2RlKSwgMCksIHNlbGVjdFRhZyk7CiAgICAgICAgICAgICBTdHJpbmcgbWFy
a3VwID0gZXNjYXBlQ29udGVudFRleHQodXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KG5v
ZGUsIG1fcmFuZ2UpIDogc3RyaW5nVmFsdWVGb3JSYW5nZShub2RlLCBtX3JhbmdlKSwgZmFsc2Up
OwogICAgICAgICAgICAgbWFya3VwID0gY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1h
dChtYXJrdXAsIHN0YXRpY19jYXN0PGNvbnN0IFRleHQqPihub2RlKSk7CiAgICAgICAgICAgICBh
cHBlbmQocmVzdWx0LCBtYXJrdXApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ29t
bWVudCBjb250ZW50IGlzIG5vdCBlc2NhcGVkLCBidXQgWE1MU2VyaWFsaXplciAoYW5kIHBvc3Np
Ymx5IG90aGVyIGNhbGxlcnMpIHNob3VsZCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgaW5jbHVk
ZXMgIi0tPiIuCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiPCEtLSIpOwotICAgICAgICAg
ICAgYXBwZW5kKHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgQ29tbWVudCo+KG5vZGUpLT5kYXRh
KCkpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIi0tPiIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICAgICAgYXBwZW5kRG9jdW1lbnRU
eXBlKHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnRUeXBlKj4obm9kZSkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElP
Tl9OT0RFOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogUEkgZGF0YSBpcyBub3QgZXNjYXBlZCwg
YnV0IFhNTFNlcmlhbGl6ZXIgKGFuZCBwb3NzaWJseSBvdGhlciBjYWxsZXJzKSB0aGlzIHNob3Vs
ZCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgaW5jbHVkZXMgIj8+Ii4KLSAgICAgICAgICAgIGNv
bnN0IFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogbiA9IHN0YXRpY19jYXN0PGNvbnN0IFByb2Nlc3Np
bmdJbnN0cnVjdGlvbio+KG5vZGUpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIjw/Iik7
Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBuLT50YXJnZXQoKSk7Ci0gICAgICAgICAgICBh
cHBlbmQocmVzdWx0LCAiICIpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbi0+ZGF0YSgp
KTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsICI/PiIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6IHsKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJzwnKTsKLSAgICAgICAgICAgIGNvbnN0IEVsZW1lbnQqIGVsID0g
c3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgICAgYm9vbCBjb252
ZXJ0ID0gY29udmVydEJsb2Nrc1RvSW5saW5lcyAmJiBpc0Jsb2NrKGNvbnN0X2Nhc3Q8Tm9kZSo+
KG5vZGUpKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGVsLT5ub2RlTmFtZVByZXNlcnZp
bmdDYXNlKCkpOwotICAgICAgICAgICAgTmFtZWROb2RlTWFwICphdHRycyA9IGVsLT5hdHRyaWJ1
dGVzKCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRycy0+bGVuZ3RoKCk7Ci0g
ICAgICAgICAgICBpZiAoIWRvY3VtZW50SXNIVE1MICYmIG5hbWVzcGFjZXMgJiYgc2hvdWxkQWRk
TmFtZXNwYWNlRWxlbWVudChlbCkpCi0gICAgICAgICAgICAgICAgYXBwZW5kTmFtZXNwYWNlKHJl
c3VsdCwgZWwtPnByZWZpeCgpLCBlbC0+bmFtZXNwYWNlVVJJKCksICpuYW1lc3BhY2VzKTsKLQot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewot
ICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSAqYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVtKGkp
OwotICAgICAgICAgICAgICAgIC8vIFdlJ2xsIGhhbmRsZSB0aGUgc3R5bGUgYXR0cmlidXRlIHNl
cGFyYXRlbHksIGJlbG93LgotICAgICAgICAgICAgICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc3R5
bGVBdHRyICYmIGVsLT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwgY29u
dmVydCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAnKTsKLQotICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudElzSFRNTCkK
LSAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgYXR0ci0+bmFtZSgpLmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIGF0dHItPm5hbWUoKS50b1N0cmluZygpKTsKKyAgICAgICAgYXBwZW5kRXNjYXBlZENv
bnRlbnQocmVzdWx0LCB1Y2hhclJhbmdlKG5vZGUsIG1fcmFuZ2UpLCBkb2N1bWVudElzSFRNTCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKKyAg
ICAgICAgLy8gRklYTUU6IENvbW1lbnQgY29udGVudCBpcyBub3QgZXNjYXBlZCwgYnV0IFhNTFNl
cmlhbGl6ZXIgKGFuZCBwb3NzaWJseSBvdGhlciBjYWxsZXJzKSBzaG91bGQgcmFpc2UgYW4gZXhj
ZXB0aW9uIGlmIGl0IGluY2x1ZGVzICItLT4iLgorICAgICAgICBhcHBlbmQocmVzdWx0LCAiPCEt
LSIpOworICAgICAgICBhcHBlbmQocmVzdWx0LCBzdGF0aWNfY2FzdDxjb25zdCBDb21tZW50Kj4o
bm9kZSktPmRhdGEoKSk7CisgICAgICAgIGFwcGVuZChyZXN1bHQsICItLT4iKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgorICAgIGNhc2UgTm9kZTo6RE9D
VU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9UWVBFX05PREU6CisgICAgICAgIGFwcGVuZERvY3VtZW50VHlwZShyZXN1bHQsIHN0YXRp
Y19jYXN0PGNvbnN0IERvY3VtZW50VHlwZSo+KG5vZGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6IHsKKyAgICAgICAgLy8gRklY
TUU6IFBJIGRhdGEgaXMgbm90IGVzY2FwZWQsIGJ1dCBYTUxTZXJpYWxpemVyIChhbmQgcG9zc2li
bHkgb3RoZXIgY2FsbGVycykgdGhpcyBzaG91bGQgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGl0IGlu
Y2x1ZGVzICI/PiIuCisgICAgICAgIGNvbnN0IFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogbiA9IHN0
YXRpY19jYXN0PGNvbnN0IFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KG5vZGUpOworICAgICAgICBh
cHBlbmQocmVzdWx0LCAiPD8iKTsKKyAgICAgICAgYXBwZW5kKHJlc3VsdCwgbi0+dGFyZ2V0KCkp
OworICAgICAgICBhcHBlbmQocmVzdWx0LCAiICIpOworICAgICAgICBhcHBlbmQocmVzdWx0LCBu
LT5kYXRhKCkpOworICAgICAgICBhcHBlbmQocmVzdWx0LCAiPz4iKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOiB7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoJzwnKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGNvbnN0X2Nhc3Q8RWxlbWVu
dCo+KHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnQqPihub2RlKSk7CisgICAgICAgIGJvb2wgY29u
dmVydCA9IGNvbnZlcnRCbG9ja3NUb0lubGluZXMgJiYgaXNCbG9jayhjb25zdF9jYXN0PE5vZGUq
Pihub2RlKSk7CisgICAgICAgIGFwcGVuZChyZXN1bHQsIGVsZW1lbnQtPm5vZGVOYW1lUHJlc2Vy
dmluZ0Nhc2UoKSk7CisgICAgICAgIGlmICghZG9jdW1lbnRJc0hUTUwgJiYgbmFtZXNwYWNlcyAm
JiBzaG91bGRBZGROYW1lc3BhY2VFbGVtZW50KGVsZW1lbnQpKQorICAgICAgICAgICAgYXBwZW5k
TmFtZXNwYWNlKHJlc3VsdCwgZWxlbWVudC0+cHJlZml4KCksIGVsZW1lbnQtPm5hbWVzcGFjZVVS
SSgpLCAqbmFtZXNwYWNlcyk7CisKKyAgICAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0g
ZWxlbWVudC0+YXR0cmlidXRlcygpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1
dGVzLT5sZW5ndGgoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykgeworICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVz
LT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgLy8gV2UnbGwgaGFuZGxlIHRoZSBzdHls
ZSBhdHRyaWJ1dGUgc2VwYXJhdGVseSwgYmVsb3cuCisgICAgICAgICAgICBpZiAoYXR0cmlidXRl
LT5uYW1lKCkgPT0gc3R5bGVBdHRyICYmIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hv
dWxkQW5ub3RhdGUoKSB8fCBjb252ZXJ0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKIAotICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJz0nKTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudElzSFRNTCkKKyAgICAgICAgICAg
ICAgICBhcHBlbmQocmVzdWx0LCBhdHRyaWJ1dGUtPm5hbWUoKS5sb2NhbE5hbWUoKSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgYXR0cmlidXRlLT5u
YW1lKCkudG9TdHJpbmcoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoZWwtPmlzVVJMQXR0cmli
dXRlKGF0dHIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY29t
cGxldGUgZmlsZTovLy8gVVJMcyBiZWNhdXNlIGl0IG1heSBjb250YWluIHNlbnNpdGl2ZSBpbmZv
cm1hdGlvbgotICAgICAgICAgICAgICAgICAgICAvLyBhYm91dCB0aGUgdXNlcidzIHN5c3RlbS4K
LSAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlc29sdmVVUkxzKCkgJiYgIW5vZGUtPmRv
Y3VtZW50KCktPnVybCgpLmlzTG9jYWxGaWxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZShyZXN1bHQsIG5vZGUtPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKGF0dHItPnZhbHVlKCkpLnN0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFs
dWUocmVzdWx0LCBhdHRyLT52YWx1ZSgpLnN0cmluZygpKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcIicpOwotICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShyZXN1bHQsIGF0dHItPnZhbHVlKCksIGRv
Y3VtZW50SXNIVE1MKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXCInKTsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc9Jyk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50SXNIVE1MICYmIG5hbWVzcGFjZXMgJiYgc2hvdWxk
QWRkTmFtZXNwYWNlQXR0cmlidXRlKGF0dHIsICpuYW1lc3BhY2VzKSkKLSAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kTmFtZXNwYWNlKHJlc3VsdCwgYXR0ci0+cHJlZml4KCksIGF0dHItPm5hbWVz
cGFjZVVSSSgpLCAqbmFtZXNwYWNlcyk7CisgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNVUkxB
dHRyaWJ1dGUoYXR0cmlidXRlKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gY29tcGxldGUgZmlsZTovLy8gVVJMcyBiZWNhdXNlIGl0IG1heSBjb250YWluIHNlbnNpdGl2
ZSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIC8vIGFib3V0IHRoZSB1c2VyJ3Mgc3lzdGVt
LgorICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZXNvbHZlVVJMcygpICYmICFub2RlLT5kb2N1
bWVudCgpLT51cmwoKS5pc0xvY2FsRmlsZSgpKQorICAgICAgICAgICAgICAgICAgICBhcHBlbmRR
dW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZShyZXN1bHQsIG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKGF0dHJpYnV0ZS0+dmFsdWUoKSkuc3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUocmVzdWx0
LCBhdHRyaWJ1dGUtPnZhbHVlKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcIicpOworICAgICAgICAgICAgICAgIGFwcGVu
ZEF0dHJpYnV0ZVZhbHVlKHJlc3VsdCwgYXR0cmlidXRlLT52YWx1ZSgpLCBkb2N1bWVudElzSFRN
TCk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXCInKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGVsLT5pc0hUTUxFbGVtZW50KCkgJiYgKHNo
b3VsZEFubm90YXRlKCkgfHwgY29udmVydCkpIHsKLSAgICAgICAgICAgICAgICBFbGVtZW50KiBl
bGVtZW50ID0gY29uc3RfY2FzdDxFbGVtZW50Kj4oZWwpOwotICAgICAgICAgICAgICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBzdGF0aWNfY2FzdDxIVE1MRWxl
bWVudCo+KGVsZW1lbnQpLT5nZXRJbmxpbmVTdHlsZURlY2woKS0+Y29weSgpOwotICAgICAgICAg
ICAgICAgIGlmIChzaG91bGRBbm5vdGF0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5
bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChjb25zdF9jYXN0PEVsZW1lbnQqPihlbCkpOwot
ICAgICAgICAgICAgICAgICAgICAvLyBTdHlsZXMgZnJvbSB0aGUgaW5saW5lIHN0eWxlIGRlY2xh
cmF0aW9uLCBoZWxkIGluIHRoZSB2YXJpYWJsZSAic3R5bGUiLCB0YWtlIHByZWNlZGVuY2UgCi0g
ICAgICAgICAgICAgICAgICAgIC8vIG92ZXIgdGhvc2UgZnJvbSBtYXRjaGVkIHJ1bGVzLgotICAg
ICAgICAgICAgICAgICAgICBzdHlsZUZyb21NYXRjaGVkUnVsZXMtPm1lcmdlKHN0eWxlLmdldCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXM7Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlRm9yRWxlbWVudCA9IGNvbXB1dGVkU3R5
bGUoZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbj4gZnJvbUNvbXB1dGVkU3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gc3R5bGUtPmVuZCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzdHls
ZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gKml0OwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHByb3BlcnR5LnZhbHVlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5IHZhbHVlLCBpZiBpdCdzIGEgcGVyY2Vu
dGFnZSwgbWF5IG5vdCByZWZsZWN0IHRoZSBhY3R1YWwgY29tcHV0ZWQgdmFsdWUuICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogc3R5bGU9ImhlaWdodDogMSU7
IG92ZXJmbG93OiB2aXNpYmxlOyIgaW4gcXVpcmtzbW9kZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGVyZSBhcmUgb3RoZXJzIGxpa2UgdGhpcywgc2VlIDxyZGFyOi8v
cHJvYmxlbS81MTk1MTIzPiBTbGFzaGRvdCBjb3B5L3Bhc3RlIGZpZGVsaXR5IHByb2JsZW0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmNzc1ZhbHVlVHlwZSgpID09IENT
U1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPnByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBjb21wdXRlZFBy
b3BlcnR5VmFsdWUgPSBjb21wdXRlZFN0eWxlRm9yRWxlbWVudC0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShwcm9wZXJ0eS5pZCgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcm9tQ29tcHV0ZWRTdHlsZS0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVy
dHkuaWQoKSwgY29tcHV0ZWRQcm9wZXJ0eVZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghZG9jdW1lbnRJc0hUTUwgJiYgbmFtZXNwYWNlcyAmJiBz
aG91bGRBZGROYW1lc3BhY2VBdHRyaWJ1dGUoYXR0cmlidXRlLCAqbmFtZXNwYWNlcykpCisgICAg
ICAgICAgICAgICAgYXBwZW5kTmFtZXNwYWNlKHJlc3VsdCwgYXR0cmlidXRlLT5wcmVmaXgoKSwg
YXR0cmlidXRlLT5uYW1lc3BhY2VVUkkoKSwgKm5hbWVzcGFjZXMpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8
fCBjb252ZXJ0KSkgeworICAgICAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBzdHlsZSA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oZWxlbWVudCktPmdldElubGlu
ZVN0eWxlRGVjbCgpLT5jb3B5KCk7CisgICAgICAgICAgICBpZiAoc2hvdWxkQW5ub3RhdGUoKSkg
eworICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5
bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChjb25z
dF9jYXN0PEVsZW1lbnQqPihlbGVtZW50KSk7CisgICAgICAgICAgICAgICAgLy8gU3R5bGVzIGZy
b20gdGhlIGlubGluZSBzdHlsZSBkZWNsYXJhdGlvbiwgaGVsZCBpbiB0aGUgdmFyaWFibGUgInN0
eWxlIiwgdGFrZSBwcmVjZWRlbmNlIAorICAgICAgICAgICAgICAgIC8vIG92ZXIgdGhvc2UgZnJv
bSBtYXRjaGVkIHJ1bGVzLgorICAgICAgICAgICAgICAgIHN0eWxlRnJvbU1hdGNoZWRSdWxlcy0+
bWVyZ2Uoc3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgICAgIHN0eWxlID0gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzOworCisgICAgICAgICAgICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbj4gY29tcHV0ZWRTdHlsZUZvckVsZW1lbnQgPSBjb21wdXRlZFN0eWxlKGVsZW1lbnQp
OworICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZnJv
bUNvbXB1dGVkU3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CisK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBlbmQgPSBzdHlsZS0+ZW5kKCk7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gc3R5bGUtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gKml0OworICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gcHJvcGVydHkudmFsdWUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSB2YWx1ZSwgaWYgaXQncyBhIHBlcmNlbnRh
Z2UsIG1heSBub3QgcmVmbGVjdCB0aGUgYWN0dWFsIGNvbXB1dGVkIHZhbHVlLiAgCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogc3R5bGU9ImhlaWdodDogMSU7IG92ZXJm
bG93OiB2aXNpYmxlOyIgaW4gcXVpcmtzbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFRoZXJlIGFyZSBvdGhlcnMgbGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUx
OTUxMjM+IFNsYXNoZG90IGNvcHkvcGFzdGUgZmlkZWxpdHkgcHJvYmxlbQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NTX1BS
SU1JVElWRV9WQUxVRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGNvbXB1dGVkUHJvcGVydHlWYWx1ZSA9IGNvbXB1dGVk
U3R5bGVGb3JFbGVtZW50LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5LmlkKCkpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUNvbXB1dGVkU3R5bGUtPmFkZFBh
cnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5LmlkKCksIGNvbXB1dGVkUHJvcGVydHlW
YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBzdHlsZS0+bWVyZ2UoZnJvbUNvbXB1dGVkU3R5bGUuZ2V0KCkpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoY29udmVydCkKLSAgICAgICAg
ICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFs
dWVJbmxpbmUsIHRydWUpOwotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBub2RlIGlzIG5vdCBm
dWxseSBzZWxlY3RlZCBieSB0aGUgcmFuZ2UsIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBrZWVwIHN0
eWxlcyB0aGF0IGFmZmVjdCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBub2RlcyBhcm91bmQgaXQK
LSAgICAgICAgICAgICAgICAvLyBvbmx5IHRoZSBvbmVzIHRoYXQgYWZmZWN0IGl0IGFuZCB0aGUg
bm9kZXMgd2l0aGluIGl0LgotICAgICAgICAgICAgICAgIGlmIChyYW5nZUZ1bGx5U2VsZWN0c05v
ZGUgPT0gRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmVtb3Zl
RXh0ZXJpb3JTdHlsZXMoc3R5bGUuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+
bGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBzdHlsZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChyZXN1bHQsIHN0eWxlUHJlZml4KTsKLSAgICAgICAgICAgICAgICAgICAg
YXBwZW5kQXR0cmlidXRlVmFsdWUocmVzdWx0LCBzdHlsZS0+Y3NzVGV4dCgpLCBkb2N1bWVudElz
SFRNTCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1wiJyk7CiAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0eWxlLT5tZXJnZShmcm9tQ29tcHV0ZWRTdHls
ZS5nZXQoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChz
aG91bGRTZWxmQ2xvc2UoZWwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVsLT5pc0hUTUxFbGVt
ZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsgLy8gWEhUTUwg
MS4wIDwtPiBIVE1MIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnLycpOworICAgICAgICAgICAgaWYgKGNvbnZlcnQpCisgICAgICAgICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUsIHRydWUpOwor
ICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgbm90IGZ1bGx5IHNlbGVjdGVkIGJ5IHRoZSBy
YW5nZSwgdGhlbiB3ZSBkb24ndCB3YW50IHRvIGtlZXAgc3R5bGVzIHRoYXQgYWZmZWN0IGl0cyBy
ZWxhdGlvbnNoaXAgdG8gdGhlIG5vZGVzIGFyb3VuZCBpdAorICAgICAgICAgICAgLy8gb25seSB0
aGUgb25lcyB0aGF0IGFmZmVjdCBpdCBhbmQgdGhlIG5vZGVzIHdpdGhpbiBpdC4KKyAgICAgICAg
ICAgIGlmIChyYW5nZUZ1bGx5U2VsZWN0c05vZGUgPT0gRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSkK
KyAgICAgICAgICAgICAgICByZW1vdmVFeHRlcmlvclN0eWxlcyhzdHlsZS5nZXQoKSk7CisgICAg
ICAgICAgICBpZiAoc3R5bGUtPmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHlsZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7
CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgc3R5bGVQcmVmaXgpOworICAgICAgICAg
ICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKHJlc3VsdCwgc3R5bGUtPmNzc1RleHQoKSwgZG9j
dW1lbnRJc0hUTUwpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1wiJyk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc+Jyk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERTog
ewotICAgICAgICAgICAgLy8gRklYTUU6IENEQVRBIGNvbnRlbnQgaXMgbm90IGVzY2FwZWQsIGJ1
dCBYTUxTZXJpYWxpemVyIChhbmQgcG9zc2libHkgb3RoZXIgY2FsbGVycykgc2hvdWxkIHJhaXNl
IGFuIGV4Y2VwdGlvbiBpZiBpdCBpbmNsdWRlcyAiXV0+Ii4KLSAgICAgICAgICAgIGNvbnN0IENE
QVRBU2VjdGlvbiogbiA9IHN0YXRpY19jYXN0PGNvbnN0IENEQVRBU2VjdGlvbio+KG5vZGUpOwot
ICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgIjwhW0NEQVRBWyIpOwotICAgICAgICAgICAgYXBw
ZW5kKHJlc3VsdCwgbi0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsICJdXT4i
KTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgTm9kZTo6QVRU
UklCVVRFX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6Ci0gICAgICAgIGNh
c2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6Ok5PVEFU
SU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGlmIChzaG91bGRTZWxmQ2xvc2UoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChlbGVt
ZW50LT5pc0hUTUxFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcp
OyAvLyBYSFRNTCAxLjAgPC0+IEhUTUwgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJy8nKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQuYXBwZW5kKCc+Jyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERTog
eworICAgICAgICAvLyBGSVhNRTogQ0RBVEEgY29udGVudCBpcyBub3QgZXNjYXBlZCwgYnV0IFhN
TFNlcmlhbGl6ZXIgKGFuZCBwb3NzaWJseSBvdGhlciBjYWxsZXJzKSBzaG91bGQgcmFpc2UgYW4g
ZXhjZXB0aW9uIGlmIGl0IGluY2x1ZGVzICJdXT4iLgorICAgICAgICBjb25zdCBDREFUQVNlY3Rp
b24qIG4gPSBzdGF0aWNfY2FzdDxjb25zdCBDREFUQVNlY3Rpb24qPihub2RlKTsKKyAgICAgICAg
YXBwZW5kKHJlc3VsdCwgIjwhW0NEQVRBWyIpOworICAgICAgICBhcHBlbmQocmVzdWx0LCBuLT5k
YXRhKCkpOworICAgICAgICBhcHBlbmQocmVzdWx0LCAiXV0+Iik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgorICAgIGNhc2UgTm9kZTo6RU5U
SVRZX05PREU6CisgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CisgICAgY2Fz
ZSBOb2RlOjpOT1RBVElPTl9OT0RFOgorICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05P
REU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9
CiB9CiAKQEAgLTcyMywxMiArNzIwLDEyIEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhOb2Rl
KiBub2RlLCBjb24KICAgICBmb3IgKE5vZGUqIG4gPSBub2RlOyBuICE9IGVuZDsgbiA9IG4tPnRy
YXZlcnNlTmV4dE5vZGUoKSkgewogICAgICAgICBpZiAobi0+aXNFbGVtZW50Tm9kZSgpKSB7CiAg
ICAgICAgICAgICBFbGVtZW50KiBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAg
ICAgICAgTmFtZWROb2RlTWFwKiBhdHRycyA9IGUtPmF0dHJpYnV0ZXMoKTsKLSAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJzLT5sZW5ndGgoKTsKKyAgICAgICAgICAgIE5hbWVkTm9k
ZU1hcCogYXR0cmlidXRlcyA9IGUtPmF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgQXR0cmlidXRlKiBh
dHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGUtPmlz
VVJMQXR0cmlidXRlKGF0dHIpKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZChB
dHRyaWJ1dGVDaGFuZ2UoZSwgYXR0ci0+bmFtZSgpLCBLVVJMKHBhcnNlZEJhc2VVUkwsIGF0dHIt
PnZhbHVlKCkpLnN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1
dGUgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgICAgIGlmIChl
LT5pc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpKQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vz
LmFwcGVuZChBdHRyaWJ1dGVDaGFuZ2UoZSwgYXR0cmlidXRlLT5uYW1lKCksIEtVUkwocGFyc2Vk
QmFzZVVSTCwgYXR0cmlidXRlLT52YWx1ZSgpKS5zdHJpbmcoKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpAQCAtNzc1LDggKzc3Miw4IEBAIHN0YXRpYyBib29sIHByb3BlcnR5
TWlzc2luZ09yRXF1YWxUb05vbmUKIAogc3RhdGljIGJvb2wgaXNFbGVtZW50UHJlc2VudGF0aW9u
YWwoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh1VGFnKSB8
fCBub2RlLT5oYXNUYWdOYW1lKHNUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc3RyaWtlVGFnKSB8
fAotICAgICAgICBub2RlLT5oYXNUYWdOYW1lKGlUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoZW1U
YWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoYlRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShzdHJvbmdU
YWcpKQorICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHVUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUo
c1RhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShzdHJpa2VUYWcpCisgICAgICAgIHx8IG5vZGUtPmhh
c1RhZ05hbWUoaVRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShlbVRhZykgfHwgbm9kZS0+aGFzVGFn
TmFtZShiVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHN0cm9uZ1RhZykpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBz
dHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNsKG5vZGUpOwogICAgIGlmICghc3R5bGUp
CkBAIC03ODksMTcgKzc4NiwxNyBAQCBzdGF0aWMgYm9vbCBpc1NwZWNpYWxBbmNlc3RvckJsb2Nr
KE5vZGUqCiAgICAgaWYgKCFub2RlIHx8ICFpc0Jsb2NrKG5vZGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKGxpc3RpbmdUYWcp
IHx8Ci0gICAgICAgICAgIG5vZGUtPmhhc1RhZ05hbWUob2xUYWcpIHx8Ci0gICAgICAgICAgIG5v
ZGUtPmhhc1RhZ05hbWUocHJlVGFnKSB8fAotICAgICAgICAgICBub2RlLT5oYXNUYWdOYW1lKHRh
YmxlVGFnKSB8fAotICAgICAgICAgICBub2RlLT5oYXNUYWdOYW1lKHVsVGFnKSB8fAotICAgICAg
ICAgICBub2RlLT5oYXNUYWdOYW1lKHhtcFRhZykgfHwKLSAgICAgICAgICAgbm9kZS0+aGFzVGFn
TmFtZShoMVRhZykgfHwKLSAgICAgICAgICAgbm9kZS0+aGFzVGFnTmFtZShoMlRhZykgfHwKLSAg
ICAgICAgICAgbm9kZS0+aGFzVGFnTmFtZShoM1RhZykgfHwKLSAgICAgICAgICAgbm9kZS0+aGFz
VGFnTmFtZShoNFRhZykgfHwKLSAgICAgICAgICAgbm9kZS0+aGFzVGFnTmFtZShoNVRhZyk7Cisg
ICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUobGlzdGluZ1RhZykKKyAgICAgICAgfHwgbm9kZS0+
aGFzVGFnTmFtZShvbFRhZykKKyAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShwcmVUYWcpCisg
ICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUodGFibGVUYWcpCisgICAgICAgIHx8IG5vZGUtPmhh
c1RhZ05hbWUodWxUYWcpCisgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoeG1wVGFnKQorICAg
ICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGgxVGFnKQorICAgICAgICB8fCBub2RlLT5oYXNUYWdO
YW1lKGgyVGFnKQorICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGgzVGFnKQorICAgICAgICB8
fCBub2RlLT5oYXNUYWdOYW1lKGg0VGFnKQorICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGg1
VGFnKTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZVdyYXBwZXJGb3JGdWxseVNlbGVj
dGVkUm9vdChOb2RlKiBmdWxseVNlbGVjdGVkUm9vdCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIHN0eWxlKQpAQCAtODA3LDggKzgwNCw3IEBAIHN0YXRpYyBib29sIHNob3VsZEluY2x1ZGVX
cmFwcGVyRm9yRnVsbHkKICAgICBpZiAoZnVsbHlTZWxlY3RlZFJvb3QtPmlzRWxlbWVudE5vZGUo
KSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZnVsbHlTZWxlY3RlZFJvb3QpLT5oYXNBdHRyaWJ1
dGUoYmFja2dyb3VuZEF0dHIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAg
cmV0dXJuIHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlKSB8fAotICAgICAgICAgICBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcik7CisgICAgcmV0dXJuIHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlKSB8fCBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiB9CiAKIHN0YXRpYyBOb2RlKiBzZXJpYWxp
emVOb2RlcyhNYXJrdXBBY2N1bXVsYXRvciYgYWNjdW11bGF0b3IsIE5vZGUqIHN0YXJ0Tm9kZSwg
Tm9kZSogcGFzdEVuZCkKQEAgLTkxMSwxMSArOTA3LDExIEBAIFN0cmluZyBjcmVhdGVNYXJrdXAo
Y29uc3QgUmFuZ2UqIHJhbmdlLCAKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJv
b2wgY29sbGFwc2VkID0gdXBkYXRlZFJhbmdlLT5jb2xsYXBzZWQoZWMpOwotICAgIEFTU0VSVChl
YyA9PSAwKTsKKyAgICBBU1NFUlQoIWVjKTsKICAgICBpZiAoY29sbGFwc2VkKQogICAgICAgICBy
ZXR1cm4gIiI7CiAgICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSB1cGRhdGVkUmFuZ2UtPmNvbW1v
bkFuY2VzdG9yQ29udGFpbmVyKGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgQVNTRVJU
KCFlYyk7CiAgICAgaWYgKCFjb21tb25BbmNlc3RvcikKICAgICAgICAgcmV0dXJuICIiOwogCkBA
IC0xMTMwLDcgKzExMjYsNyBAQCBzdGF0aWMgdm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhD
b250CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkp
IHsKICAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVhdGVCbG9ja1BsYWNlaG9sZGVy
RWxlbWVudChkb2N1bWVudCksIGVjKTsKLSAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAg
ICBBU1NFUlQoIWVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE0OCwxMiArMTE0
NCwxMiBAQCBzdGF0aWMgdm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhDb250CiAgICAgICAg
IGlmICghcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmICghdGFiVGV4dC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5F
bGVtZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgZWMpOwotICAgICAgICAgICAgICAgIEFTU0VSVChl
YyA9PSAwKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKICAgICAgICAgICAgICAgICB0
YWJUZXh0ID0gIiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4
dE5vZGUgPSBkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0
ZXNwYWNlKHMsIGZpcnN0LCBpICsgMSA9PSBudW1FbnRyaWVzKSk7CiAgICAgICAgICAgICBwYXJh
Z3JhcGgtPmFwcGVuZENoaWxkKHRleHROb2RlLnJlbGVhc2UoKSwgZWMpOwotICAgICAgICAgICAg
QVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyB0aGVyZSBpcyBhIHRhYiBhZnRlciBldmVyeSBlbnRyeSwgZXhjZXB0IHRoZSBs
YXN0IGVudHJ5CkBAIC0xMTYyLDcgKzExNTgsNyBAQCBzdGF0aWMgdm9pZCBmaWxsQ29udGFpbmVy
RnJvbVN0cmluZyhDb250CiAgICAgICAgICAgICB0YWJUZXh0LmFwcGVuZCgnXHQnKTsKICAgICAg
ICAgZWxzZSBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBwYXJhZ3JhcGgt
PmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgZWMp
OwotICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZpcnN0ID0gZmFsc2U7CkBAIC0xMjA2LDEy
ICsxMjAyLDEyIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ20KICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3R5bGVOb2RlLT5yZW5kZXJlcigpOwogICAgIGlm
IChyZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpIHsKICAg
ICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShzdHJp
bmcpLCBlYyk7Ci0gICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7
CiAgICAgICAgIGlmIChzdHJpbmcuZW5kc1dpdGgoIlxuIikpIHsKICAgICAgICAgICAgIFJlZlB0
cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KTsKICAgICAg
ICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VO
ZXdsaW5lKTsgICAgICAgICAgICAKICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChl
bGVtZW50LnJlbGVhc2UoKSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAg
ICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZyYWdtZW50
LnJlbGVhc2UoKTsKICAgICB9CkBAIC0xMjUwLDcgKzEyNDYsNyBAQCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtCiAgICAgICAgICAgICBmaWxsQ29udGFpbmVyRnJvbVN0
cmluZyhlbGVtZW50LmdldCgpLCBzKTsKICAgICAgICAgfQogICAgICAgICBmcmFnbWVudC0+YXBw
ZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKGVjID09IDAp
OworICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVh
c2UoKTsKIH0KQEAgLTEyNzEsOSArMTI2Nyw5IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ20KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewog
ICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhF
bGVtZW50KGRvY3VtZW50KTsKICAgICAgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQobm9kZXNbaV0s
IGVjKTsKLSAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICBBU1NFUlQoIWVjKTsKICAg
ICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBlYyk7Ci0gICAg
ICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogCiAgICAg
aWYgKGRvY3VtZW50LT5mcmFtZSgpKQo=
</data>
<flag name="review"
          id="53652"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>