<?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>75796</bug_id>
          
          <creation_ts>2012-01-08 02:30:27 -0800</creation_ts>
          <short_desc>Rename checkNodeSecurity and allowsAccessFromFrame to have sensible names</short_desc>
          <delta_ts>2012-02-02 19:24:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          <blocked>75793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531744</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 02:30:27 -0800</bug_when>
    <thetext>Rename checkNodeSecurity and allowsAccessFromFrame to have sensible names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531745</commentid>
    <comment_count>1</comment_count>
      <attachid>121577</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 02:30:59 -0800</bug_when>
    <thetext>Created attachment 121577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531748</commentid>
    <comment_count>2</comment_count>
      <attachid>121577</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-08 02:55:11 -0800</bug_when>
    <thetext>Comment on attachment 121577
Patch

Attachment 121577 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11166171</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531817</commentid>
    <comment_count>3</comment_count>
      <attachid>121590</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 14:41:29 -0800</bug_when>
    <thetext>Created attachment 121590
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531828</commentid>
    <comment_count>4</comment_count>
      <attachid>121590</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-08 15:15:59 -0800</bug_when>
    <thetext>Comment on attachment 121590
Patch for landing

Clearing flags on attachment: 121590

Committed r104412: &lt;http://trac.webkit.org/changeset/104412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531829</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-08 15:16:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531903</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-08 18:32:54 -0800</bug_when>
    <thetext>It seems like this patch broke two layout tests:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=fast%2Fdom%2FWindow%2Fwindow-properties.html%2Chttp%2Ftests%2Fsecurity%2Fcross-frame-access-put.html&amp;group=%40ToT%20-%20webkit.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531925</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-08 19:11:45 -0800</bug_when>
    <thetext>A substantial improvement.

Wish I was around earlier today to comment on this. I would prefer shouldAllowAccessToNode rather than allowAccessToNode because the latter sounds like a verb phrase, and so seems like it could be a function that is used to “allow access” to a node.

We might also consider just calling these shouldAllowAccessTo and using overloading, since the types are distinct; on the other hand, leaving out the noun makes the names less clear, so we probably shouldn’t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531926</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 19:14:50 -0800</bug_when>
    <thetext>Ok.  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531927</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 19:15:01 -0800</bug_when>
    <thetext>Re-open to remind me to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548200</commentid>
    <comment_count>10</comment_count>
      <attachid>125199</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-02 15:38:35 -0800</bug_when>
    <thetext>Created attachment 125199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548206</commentid>
    <comment_count>11</comment_count>
      <attachid>125199</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-02 15:40:52 -0800</bug_when>
    <thetext>Comment on attachment 125199
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548366</commentid>
    <comment_count>12</comment_count>
      <attachid>125199</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 19:24:00 -0800</bug_when>
    <thetext>Comment on attachment 125199
Patch

Clearing flags on attachment: 125199

Committed r106618: &lt;http://trac.webkit.org/changeset/106618&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548367</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 19:24:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121577</attachid>
            <date>2012-01-08 02:30:59 -0800</date>
            <delta_ts>2012-01-08 14:41:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75796-20120108023058.patch</filename>
            <type>text/plain</type>
            <size>17570</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTA4ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVuYW1lIGNoZWNrTm9kZVNlY3Vy
aXR5IGFuZCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUgdG8gaGF2ZSBzZW5zaWJsZSBuYW1lcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNv
bnRhaW5zIG9ubHkgcmVuYW1lcyBhbmQgRklYTUUgY29tbWVudHMuICBObyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YWxsb3dBY2Nlc3NUb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dBY2Nl
c3NUb0ZyYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YWxsb3dTZXR0aW5nSmF2YXNjcmlwdFVSTCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hp
c3Rvcnk6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvckRlbGVn
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnB1dERlbGVnYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNMb2NhdGlvbjo6dG9TdHJpbmdGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpj
YW5BY2Nlc3NGcm9tQ3VycmVudE9yaWdpbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3Jp
cHRvckJvZHkpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZU5v
cm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrKToKKwog
MjAxMi0wMS0wNyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQXR0ZW1wdCB0byByZWdlbmVyYXRlIGJpbmRpbmdzIG9uIHRoZSBXaW5kb3dzIGJvdC4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2
aXNpb24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDEyICsyMTYsMTIgQEAgRE9NV2luZG93KiBmaXJz
dERPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKIH0KIAotYm9vbCBjaGVja05vZGVTZWN1
cml0eShFeGVjU3RhdGUqIGV4ZWMsIE5vZGUqIG5vZGUpCitib29sIGFsbG93QWNjZXNzVG9Ob2Rl
KEV4ZWNTdGF0ZSogZXhlYywgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZSAmJiBhbGxv
d3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisgICAg
cmV0dXJuIG5vZGUgJiYgYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIG5vZGUtPmRvY3VtZW50KCkt
PmZyYW1lKCkpOwogfQogCi1ib29sIGFsbG93c0FjY2Vzc0Zyb21GcmFtZShFeGVjU3RhdGUqIGV4
ZWMsIEZyYW1lKiBmcmFtZSkKK2Jvb2wgYWxsb3dBY2Nlc3NUb0ZyYW1lKEV4ZWNTdGF0ZSogZXhl
YywgRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIyOSw3ICsyMjksNyBAQCBib29sIGFsbG93c0FjY2Vzc0Zyb21GcmFtZShFeGVjU3Rh
dGUqIGV4CiAgICAgcmV0dXJuIHdpbmRvdyAmJiB3aW5kb3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhl
Yyk7CiB9CiAKLWJvb2wgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgRnJh
bWUqIGZyYW1lLCBTdHJpbmcmIG1lc3NhZ2UpCitib29sIGFsbG93QWNjZXNzVG9GcmFtZShFeGVj
U3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxMDQzOTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDE0ICsy
ODAsMTUgQEAgZW51bSBQYXJhbWV0ZXJNaXNzaW5nUG9saWN5IHsKICAgICAvLyBWYWxpZGF0ZXMg
dGhhdCB0aGUgcGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIHNlY3Rpb24gNC4x
LjEzIG9mIHRoZSBXZWJJREwgc3BlYy4KICAgICBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2Uo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVkJik7CiAKLSAgICBib29sIGNo
ZWNrTm9kZVNlY3VyaXR5KEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOwotCi0gICAgLy8gSGVscGVy
cyBmb3IgV2luZG93LCBIaXN0b3J5LCBhbmQgTG9jYXRpb24gY2xhc3NlcyB0byBpbXBsZW1lbnQg
Y3Jvc3MtZG9tYWluIHBvbGljeS4KLSAgICAvLyBCZXNpZGVzIHRoZSBjcm9zcy1kb21haW4gY2hl
Y2ssIHRoZXkgbmVlZCBub24tY2FjaGluZyB2ZXJzaW9ucyBvZiBzdGF0aWNGdW5jdGlvbkdldHRl
ciBmb3IKLSAgICAvLyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IGN1cnJlbnQgcHJvcGVydHkgdmFs
dWVzIGludm9sdmVkIGF0IGFsbC4KLSAgICAvLyBGSVhNRTogVGhlc2UgZnVuY3Rpb25zIHNob3Vs
ZCBiZSBuYW1lZCBmcmFtZUFsbG93c0FjY2Vzc0Zyb20sIGJlY2F1c2UgdGhlIGFjY2VzcyBpcyAq
dG8qIHRoZSBmcmFtZS4KLSAgICBib29sIGFsbG93c0FjY2Vzc0Zyb21GcmFtZShKU0M6OkV4ZWNT
dGF0ZSosIEZyYW1lKik7Ci0gICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoSlNDOjpFeGVj
U3RhdGUqLCBGcmFtZSosIFN0cmluZyYgbWVzc2FnZSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBhbGxvd0FjY2Vzc1RvQ29udGV4dChKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKKyAgICBib29sIGFsbG93QWNjZXNzVG9Ob2RlKEpTQzo6RXhlY1N0YXRlKiwgTm9k
ZSopOworICAgIGJvb2wgYWxsb3dBY2Nlc3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUq
KTsKKyAgICBib29sIGFsbG93QWNjZXNzVG9GcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEZyYW1lKiwg
U3RyaW5nJiBtZXNzYWdlKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbG93QWNjZXNzVG9E
T01XaW5kb3coSlNDOjpFeGVjU3RhdGUqLCBET01XaW5kb3cqKTsKKworICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhlc2UgZnVuY3Rpb25zIGluIGZhdm9yIG9mIGFjdGl2ZUNvbnRleHQgYW5kCisgICAg
Ly8gZmlyc3RDb250ZXh0LCB3aGljaCByZXR1cm4gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCouIFdl
IHByZWZlciB0byB1c2UKKyAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBhcyB0aGUgY29u
dGV4dCBvYmplY3QgaW4gdGhlIGJpbmRpbmdzLgogICAgIERPTVdpbmRvdyogYWN0aXZlRE9NV2lu
ZG93KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgRE9NV2luZG93KiBmaXJzdERPTVdpbmRvdyhKU0M6
OkV4ZWNTdGF0ZSopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxG
cmFtZUVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDEwNDM5NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGFsbG93
U2V0dGluZ0phdmFzY3JpcAogewogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUpKSkgewogICAgICAgICBEb2N1bWVudCog
Y29udGVudERvY3VtZW50ID0gaW1wLT5jb250ZW50RG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKGNv
bnRlbnREb2N1bWVudCAmJiAhY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgY29udGVudERvY3VtZW50
KSkKKyAgICAgICAgaWYgKGNvbnRlbnREb2N1bWVudCAmJiAhYWxsb3dBY2Nlc3NUb05vZGUoZXhl
YywgY29udGVudERvY3VtZW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3Rv
cnlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SGlzdG9yeUN1c3RvbS5jcHAJKHJldmlzaW9uIDEwNDM5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYx
LDcgQEAgYm9vbCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYQogICAgIC8vIE91
ciBjdXN0b20gY29kZSBpcyBvbmx5IG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIFdpbmRvdyBjcm9z
cy1kb21haW4gc2NoZW1lLCBzbyBpZiBhY2Nlc3MgaXMKICAgICAvLyBhbGxvd2VkLCByZXR1cm4g
ZmFsc2Ugc28gdGhlIG5vcm1hbCBsb29rdXAgd2lsbCB0YWtlIHBsYWNlLgogICAgIFN0cmluZyBt
ZXNzYWdlOwotICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgaW1wbCgpLT5mcmFt
ZSgpLCBtZXNzYWdlKSkKKyAgICBpZiAoYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGltcGwoKS0+
ZnJhbWUoKSwgbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENoZWNr
IGZvciB0aGUgZmV3IGZ1bmN0aW9ucyB0aGF0IHdlIGFsbG93LCBldmVuIHdoZW4gY2FsbGVkIGNy
b3NzLWRvbWFpbi4KQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yCiAgICAgfQogCiAgICAgLy8gVGhyb3cgb3V0IGFsbCBjcm9zcyBkb21h
aW4gYWNjZXNzCi0gICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgaW1wbCgpLT5m
cmFtZSgpKSkKKyAgICBpZiAoIWFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1l
KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGZvciB0aGUgZmV3IGZ1
bmN0aW9ucyB0aGF0IHdlIGFsbG93LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFpbi4KQEAg
LTE0MSw3ICsxNDEsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
CiBib29sIEpTSGlzdG9yeTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICAvLyBPbmx5IGFsbG93
IHB1dHRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIWFsbG93c0Fj
Y2Vzc0Zyb21GcmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCkpKQorICAgIGlmICghYWxsb3dBY2Nl
c3NUb0ZyYW1lKGV4ZWMsIGltcGwoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIEpTSGlzdG9yeTo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTSGlzdG9yeSo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkg
ZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIWFsbG93c0FjY2Vzc0Zyb21GcmFt
ZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkpKQorICAgIGlmICghYWxsb3dBY2Nl
c3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIEpTSGlzdG9y
eTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTSGlzdG9yeSo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgaGlz
dG9yeSBvYmplY3QgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgot
ICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+
ZnJhbWUoKSkpCisgICAgaWYgKCFhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+
aW1wbCgpLT5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldE93blByb3Bl
cnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMTA0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBKU0xvY2F0
aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZwogICAgIC8vIE91ciBjdXN0b20gY29kZSBpcyBv
bmx5IG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIFdpbmRvdyBjcm9zcy1kb21haW4gc2NoZW1lLCBz
byBpZiBhY2Nlc3MgaXMKICAgICAvLyBhbGxvd2VkLCByZXR1cm4gZmFsc2Ugc28gdGhlIG5vcm1h
bCBsb29rdXAgd2lsbCB0YWtlIHBsYWNlLgogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlmIChh
bGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgZnJhbWUsIG1lc3NhZ2UpKQorICAgIGlmIChhbGxv
d0FjY2Vzc1RvRnJhbWUoZXhlYywgZnJhbWUsIG1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBDaGVjayBmb3IgdGhlIGZldyBmdW5jdGlvbnMgdGhhdCB3ZSBhbGxvdywg
ZXZlbiB3aGVuIGNhbGxlZCBjcm9zcy1kb21haW4uCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgSlNM
b2NhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG8KICAgICB9CiAgICAgCiAgICAgLy8gdGhy
b3cgb3V0IGFsbCBjcm9zcyBkb21haW4gYWNjZXNzCi0gICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9t
RnJhbWUoZXhlYywgZnJhbWUpKQorICAgIGlmICghYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGZy
YW1lKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIHRoZSBm
ZXcgZnVuY3Rpb25zIHRoYXQgd2UgYWxsb3csIGV2ZW4gd2hlbiBjYWxsZWQgY3Jvc3MtZG9tYWlu
LgpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0
YXRlKiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYm9vbCBzYW1lRG9tYWluQWNjZXNzID0gYWxsb3dz
QWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lKTsKKyAgICBib29sIHNhbWVEb21haW5BY2Nlc3Mg
PSBhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgZnJhbWUpOwogCiAgICAgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSA9IEpTTG9jYXRpb246OnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLT5lbnRyeShl
eGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghZW50cnkpIHsKQEAgLTE1Niw3ICsxNTYsNyBA
QCBib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiB7CiAgICAgSlNMb2Nh
dGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25s
eSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICgh
YWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkp
CisgICAgaWYgKCFhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5m
cmFtZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTY1LDcgKzE2
NSw3IEBAIHZvaWQgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU08KIHsKICAgICBK
U0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihvYmplY3QpOwogICAg
IC8vIE9ubHkgYWxsb3cgdGhlIGxvY2F0aW9uIG9iamVjdCB0byBlbnVtZXJhdGVkIGJ5IGZyYW1l
cyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhl
YywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSkKKyAgICBpZiAoIWFsbG93QWNjZXNzVG9G
cmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkpKQogICAgICAgICByZXR1cm47
CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCBKU1ZhbHVlIEpTTG9jYXRpb246
OmFzc2lnbihFeGVjU3RhdGUqIGV4CiBKU1ZhbHVlIEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUo
KTsKLSAgICBpZiAoIWZyYW1lIHx8ICFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgZnJhbWUp
KQorICAgIGlmICghZnJhbWUgfHwgIWFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBmcmFtZSkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IGltcGwoKS0+dG9TdHJpbmcoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTA0Mzk3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0OCw3ICsyNDgsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkFjY2Vzc0Zyb21DdXJy
CiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50
U3RhdGUoKTsKICAgICBpZiAoZXhlYykKLSAgICAgICAgcmV0dXJuIGFsbG93c0FjY2Vzc0Zyb21G
cmFtZShleGVjLCBmcmFtZSk7CisgICAgICAgIHJldHVybiBhbGxvd0FjY2Vzc1RvRnJhbWUoZXhl
YywgZnJhbWUpOwogICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIDAgd2UncmUgaW4gYSBj
YWxsIHBhdGggd2hlcmUgdGhlIERPTSBzZWN1cml0eSAKICAgICAvLyBjaGVjayBkb2Vzbid0IGFw
cGx5IChlZy4gcGFyc2VyKS4KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAx
MDQzOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkod29ya2luZyBjb3B5KQpAQCAtNTIyLDcgKzUyMiw3IEBAIHN1YiBHZW5lcmF0ZUdldE93
blByb3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJE
T01XaW5kb3ciKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXRo
aXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghYWxsb3dzQWNjZXNzRnJv
bUZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMs
IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKICAgICAgICAgfQogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgfQpAQCAt
MTc1MiwxNSArMTc1MiwxNSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIGNhc3RlZFRoaXMtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKGV4
ZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2lm
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja05vZGVT
ZWN1cml0eSJ9KSB7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiYWxsb3dBY2Nlc3NUb05vZGUifSkgewogICAgICAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGlt
cGwgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4i
KTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNo
ZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcGwtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkpID8g
IiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NO
YW1lLCAiaW1wbC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSIsICJjYXN0ZWRUaGlzIikgLiAi
IDoganNVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gYWxsb3dBY2Nlc3NUb05vZGUoZXhlYywgaW1wbC0+JGltcGxHZXR0
ZXJGdW5jdGlvbk5hbWUoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgp
IiwgImNhc3RlZFRoaXMiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q2hlY2tGcmFtZVNlY3VyaXR5In0pIHsKICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siRG9jdW1lbnQuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
SlNET01CaW5kaW5nLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05h
bWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXBsLT5j
b250ZW50RG9jdW1lbnQoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgp
IiwgImNhc3RlZFRoaXMiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBhbGxvd0FjY2Vzc1RvTm9kZShl
eGVjLCBpbXBsLT5jb250ZW50RG9jdW1lbnQoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXBsLT4kaW1wbEdldHRlckZ1
bmN0aW9uTmFtZSgpIiwgImNhc3RlZFRoaXMiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CiAg
ICAgICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CiAgICAg
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpO1xuIik7CkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9N
V2luZG93IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoIXN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+YWxs
b3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIHN0YXRpY19jYXN0PCRjbGFz
c05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmlt
cGwoKS0+ZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
bjtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjA1Niw3ICsyMDU2LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2Jq
ZWN0KS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+
KHRoaXNPYmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWFsbG93QWNjZXNzVG9GcmFtZShleGVj
LCBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKS0+ZnJhbWUoKSkp
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAt
MjE3MCw3ICsyMTcwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJTVkdDaGVja1NlY3VyaXR5RG9jdW1lbnQifSBhbmQgISRmdW5jdGlv
bi0+aXNTdGF0aWMpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKCFjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXBsLT5nZXRTVkdEb2N1bWVudCgiIC4g
KEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSA/ICJlYyIgOiAiIikgLiIpKSlcbiIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWFsbG93QWNj
ZXNzVG9Ob2RlKGV4ZWMsIGltcGwtPmdldFNWR0RvY3VtZW50KCIgLiAoQHskZnVuY3Rpb24tPnJh
aXNlc0V4Y2VwdGlvbnN9ID8gImVjIiA6ICIiKSAuIikpKVxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpT
RE9NQmluZGluZy5oIn0gPSAxOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lv
biAxMDQzOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtODgzLDEwICs4ODMsMTAgQEAgRU5ECiAgICAgfQog
CiAgICAgIyBHZW5lcmF0ZSBzZWN1cml0eSBjaGVja3MgaWYgbmVjZXNzYXJ5Ci0gICAgaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrTm9kZVNlY3Vy
aXR5In0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoIVY4Qmlu
ZGluZ1NlY3VyaXR5OjpjaGVja05vZGVTZWN1cml0eShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBp
bXAtPiRhdHRyTmFtZSgpKSlcbiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG5c
biIpOworICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJhbGxvd0FjY2Vzc1RvTm9kZSJ9KSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dBY2Nlc3NUb05vZGUoVjhCaW5kaW5n
U3RhdGU6Ok9ubHkoKSwgaW1wLT4kYXR0ck5hbWUoKSkpXG4gICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpO1xuXG4iKTsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0ZyYW1lU2VjdXJpdHkifSkgewotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNoZWNr
Tm9kZVNlY3VyaXR5KFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+Y29udGVudERvY3VtZW50
KCkpKVxuICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcblxuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxs
b3dBY2Nlc3NUb05vZGUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5jb250ZW50RG9jdW1l
bnQoKSkpXG4gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuXG4iKTsKICAgICB9
CiAKICAgICBteSAkdXNlRXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNl
cHRpb25zfTsKQEAgLTE0MzQsNyArMTQzNCw3IEBAIEVORAogICAgIH0KICAgICBpZiAoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTVkdDaGVja1NlY3VyaXR5RG9j
dW1lbnQifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gICAg
aWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6Y2hlY2tOb2RlU2VjdXJpdHkoVjhCaW5kaW5nU3RhdGU6
Ok9ubHkoKSwgaW1wLT5nZXRTVkdEb2N1bWVudChlYykpKQorICAgIGlmICghVjhCaW5kaW5nU2Vj
dXJpdHk6OmFsbG93QWNjZXNzVG9Ob2RlKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+Z2V0
U1ZHRG9jdW1lbnQoZWMpKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigp
OwogRU5ECiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121590</attachid>
            <date>2012-01-08 14:41:29 -0800</date>
            <delta_ts>2012-02-02 15:38:30 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-75796-20120108144127.patch</filename>
            <type>text/plain</type>
            <size>18929</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDQxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTA4ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVuYW1lIGNoZWNrTm9kZVNlY3Vy
aXR5IGFuZCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUgdG8gaGF2ZSBzZW5zaWJsZSBuYW1lcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY29udGFp
bnMgb25seSByZW5hbWVzIGFuZCBGSVhNRSBjb21tZW50cy4gIE5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbGxvd0FjY2Vzc1RvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjphbGxvd0FjY2Vzc1Rv
RnJhbWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbGxvd1NldHRpbmdKYXZhc2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0hpc3RvcnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpnZXRPd25Q
cm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9y
eTo6cHV0RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpkZWxldGVQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0xv
Y2F0aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbkFj
Y2Vzc0Zyb21DdXJyZW50T3JpZ2luKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
Qm9keSk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFs
QXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorCiAyMDEy
LTAxLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTmVlZHNV
c2VyR2VzdHVyZUNoZWNrIElETCBhdHRyaWJ1dGUgaXMgbm8gbG9uZ2VyIHVzZWQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nU2VjdXJpdHkuaAko
cmV2aXNpb24gMTA0NDEwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5k
aW5nU2VjdXJpdHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDaGVjayBpZiBpdCBpcyBzYWZlIHRvIGFjY2VzcyB0aGUgZ2l2ZW4gbm9kZSBmcm9t
IHRoZQogICAgIC8vIGN1cnJlbnQgc2VjdXJpdHkgY29udGV4dC4KLSAgICBzdGF0aWMgYm9vbCBj
aGVja05vZGVTZWN1cml0eShTdGF0ZTxCaW5kaW5nPiosIE5vZGUqIHRhcmdldCk7CisgICAgc3Rh
dGljIGJvb2wgYWxsb3dBY2Nlc3NUb05vZGUoU3RhdGU8QmluZGluZz4qLCBOb2RlKiB0YXJnZXQp
OwogCiAgICAgc3RhdGljIGJvb2wgYWxsb3dQb3BVcChTdGF0ZTxCaW5kaW5nPiopOwogICAgIHN0
YXRpYyBib29sIGFsbG93U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2NyaXB0VXJsKFN0YXRlPEJpbmRp
bmc+KiwgSFRNTEZyYW1lRWxlbWVudEJhc2UqLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKQEAgLTEw
MSw3ICsxMDEsNyBAQCBib29sIEJpbmRpbmdTZWN1cml0eTxCaW5kaW5nPjo6Y2FuQWNjZXNzCiB9
CiAKIHRlbXBsYXRlIDxjbGFzcyBCaW5kaW5nPgotYm9vbCBCaW5kaW5nU2VjdXJpdHk8QmluZGlu
Zz46OmNoZWNrTm9kZVNlY3VyaXR5KFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwgTm9kZSogbm9kZSkK
K2Jvb2wgQmluZGluZ1NlY3VyaXR5PEJpbmRpbmc+OjphbGxvd0FjY2Vzc1RvTm9kZShTdGF0ZTxC
aW5kaW5nPiogc3RhdGUsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMzEsNyArMTMxLDcgQEAgYm9vbCBCaW5kaW5nU2VjdXJpdHk8Qmlu
ZGluZz46OmFsbG93U2V0dAogewogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUpKSkgewogICAgICAgICBOb2RlKiBjb250
ZW50RG9jID0gZnJhbWUtPmNvbnRlbnREb2N1bWVudCgpOwotICAgICAgICBpZiAoY29udGVudERv
YyAmJiAhY2hlY2tOb2RlU2VjdXJpdHkoc3RhdGUsIGNvbnRlbnREb2MpKQorICAgICAgICBpZiAo
Y29udGVudERvYyAmJiAhYWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIGNvbnRlbnREb2MpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gMTA0
NDEwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE2LDEyICsyMTYsMTIgQEAgRE9NV2luZG93KiBmaXJzdERPTVdpbmRv
dyhFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNH
bG9iYWxPYmplY3QoKSktPmltcGwoKTsKIH0KIAotYm9vbCBjaGVja05vZGVTZWN1cml0eShFeGVj
U3RhdGUqIGV4ZWMsIE5vZGUqIG5vZGUpCitib29sIGFsbG93QWNjZXNzVG9Ob2RlKEV4ZWNTdGF0
ZSogZXhlYywgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZSAmJiBhbGxvd3NBY2Nlc3NG
cm9tRnJhbWUoZXhlYywgbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisgICAgcmV0dXJuIG5v
ZGUgJiYgYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkp
OwogfQogCi1ib29sIGFsbG93c0FjY2Vzc0Zyb21GcmFtZShFeGVjU3RhdGUqIGV4ZWMsIEZyYW1l
KiBmcmFtZSkKK2Jvb2wgYWxsb3dBY2Nlc3NUb0ZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgRnJhbWUq
IGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIy
OSw3ICsyMjksNyBAQCBib29sIGFsbG93c0FjY2Vzc0Zyb21GcmFtZShFeGVjU3RhdGUqIGV4CiAg
ICAgcmV0dXJuIHdpbmRvdyAmJiB3aW5kb3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhlYyk7CiB9CiAK
LWJvb2wgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgRnJhbWUqIGZyYW1l
LCBTdHJpbmcmIG1lc3NhZ2UpCitib29sIGFsbG93QWNjZXNzVG9GcmFtZShFeGVjU3RhdGUqIGV4
ZWMsIEZyYW1lKiBmcmFtZSwgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCShyZXZpc2lvbiAxMDQ0MTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDE0ICsyODAsMTUgQEAg
ZW51bSBQYXJhbWV0ZXJNaXNzaW5nUG9saWN5IHsKICAgICAvLyBWYWxpZGF0ZXMgdGhhdCB0aGUg
cGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIHNlY3Rpb24gNC4xLjEzIG9mIHRo
ZSBXZWJJREwgc3BlYy4KICAgICBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVkJik7CiAKLSAgICBib29sIGNoZWNrTm9kZVNl
Y3VyaXR5KEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOwotCi0gICAgLy8gSGVscGVycyBmb3IgV2lu
ZG93LCBIaXN0b3J5LCBhbmQgTG9jYXRpb24gY2xhc3NlcyB0byBpbXBsZW1lbnQgY3Jvc3MtZG9t
YWluIHBvbGljeS4KLSAgICAvLyBCZXNpZGVzIHRoZSBjcm9zcy1kb21haW4gY2hlY2ssIHRoZXkg
bmVlZCBub24tY2FjaGluZyB2ZXJzaW9ucyBvZiBzdGF0aWNGdW5jdGlvbkdldHRlciBmb3IKLSAg
ICAvLyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IGN1cnJlbnQgcHJvcGVydHkgdmFsdWVzIGludm9s
dmVkIGF0IGFsbC4KLSAgICAvLyBGSVhNRTogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBuYW1l
ZCBmcmFtZUFsbG93c0FjY2Vzc0Zyb20sIGJlY2F1c2UgdGhlIGFjY2VzcyBpcyAqdG8qIHRoZSBm
cmFtZS4KLSAgICBib29sIGFsbG93c0FjY2Vzc0Zyb21GcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEZy
YW1lKik7Ci0gICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBG
cmFtZSosIFN0cmluZyYgbWVzc2FnZSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGxvd0Fj
Y2Vzc1RvQ29udGV4dChKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
KyAgICBib29sIGFsbG93QWNjZXNzVG9Ob2RlKEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOworICAg
IGJvb2wgYWxsb3dBY2Nlc3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqKTsKKyAgICBi
b29sIGFsbG93QWNjZXNzVG9GcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEZyYW1lKiwgU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbG93QWNjZXNzVG9ET01XaW5kb3co
SlNDOjpFeGVjU3RhdGUqLCBET01XaW5kb3cqKTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhl
c2UgZnVuY3Rpb25zIGluIGZhdm9yIG9mIGFjdGl2ZUNvbnRleHQgYW5kCisgICAgLy8gZmlyc3RD
b250ZXh0LCB3aGljaCByZXR1cm4gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCouIFdlIHByZWZlciB0
byB1c2UKKyAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBhcyB0aGUgY29udGV4dCBvYmpl
Y3QgaW4gdGhlIGJpbmRpbmdzLgogICAgIERPTVdpbmRvdyogYWN0aXZlRE9NV2luZG93KEpTQzo6
RXhlY1N0YXRlKik7CiAgICAgRE9NV2luZG93KiBmaXJzdERPTVdpbmRvdyhKU0M6OkV4ZWNTdGF0
ZSopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1l
bnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDEwNDQxMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGFsbG93U2V0dGluZ0ph
dmFzY3JpcAogewogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXModmFsdWUpKSkgewogICAgICAgICBEb2N1bWVudCogY29udGVudERv
Y3VtZW50ID0gaW1wLT5jb250ZW50RG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKGNvbnRlbnREb2N1
bWVudCAmJiAhY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgY29udGVudERvY3VtZW50KSkKKyAgICAg
ICAgaWYgKGNvbnRlbnREb2N1bWVudCAmJiAhYWxsb3dBY2Nlc3NUb05vZGUoZXhlYywgY29udGVu
dERvY3VtZW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJu
IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1
c3RvbS5jcHAJKHJldmlzaW9uIDEwNDQxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSGlzdG9yeUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgYm9v
bCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5U2xvdERlbGVnYQogICAgIC8vIE91ciBjdXN0b20g
Y29kZSBpcyBvbmx5IG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIFdpbmRvdyBjcm9zcy1kb21haW4g
c2NoZW1lLCBzbyBpZiBhY2Nlc3MgaXMKICAgICAvLyBhbGxvd2VkLCByZXR1cm4gZmFsc2Ugc28g
dGhlIG5vcm1hbCBsb29rdXAgd2lsbCB0YWtlIHBsYWNlLgogICAgIFN0cmluZyBtZXNzYWdlOwot
ICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgaW1wbCgpLT5mcmFtZSgpLCBtZXNz
YWdlKSkKKyAgICBpZiAoYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGltcGwoKS0+ZnJhbWUoKSwg
bWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENoZWNrIGZvciB0aGUg
ZmV3IGZ1bmN0aW9ucyB0aGF0IHdlIGFsbG93LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFp
bi4KQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yCiAgICAgfQogCiAgICAgLy8gVGhyb3cgb3V0IGFsbCBjcm9zcyBkb21haW4gYWNjZXNz
Ci0gICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgaW1wbCgpLT5mcmFtZSgpKSkK
KyAgICBpZiAoIWFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCkpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGZvciB0aGUgZmV3IGZ1bmN0aW9ucyB0
aGF0IHdlIGFsbG93LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFpbi4KQEAgLTE0MSw3ICsx
NDEsNyBAQCBib29sIEpTSGlzdG9yeTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCiBib29sIEpT
SGlzdG9yeTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICAvLyBPbmx5IGFsbG93IHB1dHRpbmcg
YnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIWFsbG93c0FjY2Vzc0Zyb21G
cmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCkpKQorICAgIGlmICghYWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIGltcGwoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVy
biBmYWxzZTsKIH0KQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIEpTSGlzdG9yeTo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
SGlzdG9yeSo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIWFsbG93c0FjY2Vzc0Zyb21GcmFtZShleGVjLCB0
aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkpKQorICAgIGlmICghYWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lKTsKIH0KQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIEpTSGlzdG9yeTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iCiB7CiAgICAgSlNIaXN0b3J5KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTSGlzdG9yeSo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgaGlzdG9yeSBvYmpl
Y3QgdG8gZW51bWVyYXRlZCBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICgh
YWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkp
CisgICAgaWYgKCFhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5m
cmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24g
MTA0NDEwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpnZXRP
d25Qcm9wZXJ0eVNsb3REZWxlZwogICAgIC8vIE91ciBjdXN0b20gY29kZSBpcyBvbmx5IG5lZWRl
ZCB0byBpbXBsZW1lbnQgdGhlIFdpbmRvdyBjcm9zcy1kb21haW4gc2NoZW1lLCBzbyBpZiBhY2Nl
c3MgaXMKICAgICAvLyBhbGxvd2VkLCByZXR1cm4gZmFsc2Ugc28gdGhlIG5vcm1hbCBsb29rdXAg
d2lsbCB0YWtlIHBsYWNlLgogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlmIChhbGxvd3NBY2Nl
c3NGcm9tRnJhbWUoZXhlYywgZnJhbWUsIG1lc3NhZ2UpKQorICAgIGlmIChhbGxvd0FjY2Vzc1Rv
RnJhbWUoZXhlYywgZnJhbWUsIG1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBDaGVjayBmb3IgdGhlIGZldyBmdW5jdGlvbnMgdGhhdCB3ZSBhbGxvdywgZXZlbiB3aGVu
IGNhbGxlZCBjcm9zcy1kb21haW4uCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG8KICAgICB9CiAgICAgCiAgICAgLy8gdGhyb3cgb3V0IGFs
bCBjcm9zcyBkb21haW4gYWNjZXNzCi0gICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhl
YywgZnJhbWUpKQorICAgIGlmICghYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGZyYW1lKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIHRoZSBmZXcgZnVuY3Rp
b25zIHRoYXQgd2UgYWxsb3csIGV2ZW4gd2hlbiBjYWxsZWQgY3Jvc3MtZG9tYWluLgpAQCAtMTM0
LDcgKzEzNCw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiAKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgYm9vbCBzYW1lRG9tYWluQWNjZXNzID0gYWxsb3dzQWNjZXNzRnJv
bUZyYW1lKGV4ZWMsIGZyYW1lKTsKKyAgICBib29sIHNhbWVEb21haW5BY2Nlc3MgPSBhbGxvd0Fj
Y2Vzc1RvRnJhbWUoZXhlYywgZnJhbWUpOwogCiAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9
IEpTTG9jYXRpb246OnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLT5lbnRyeShleGVjLCBwcm9w
ZXJ0eU5hbWUpOwogICAgIGlmICghZW50cnkpIHsKQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sIEpT
TG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiB7CiAgICAgSlNMb2NhdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBk
ZWxldGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghYWxsb3dzQWNj
ZXNzRnJvbUZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpCisgICAgaWYg
KCFhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTY1LDcgKzE2NSw3IEBAIHZv
aWQgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU08KIHsKICAgICBKU0xvY2F0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihvYmplY3QpOwogICAgIC8vIE9ubHkg
YWxsb3cgdGhlIGxvY2F0aW9uIG9iamVjdCB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUg
c2FtZSBvcmlnaW4uCi0gICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgdGhpc09i
amVjdC0+aW1wbCgpLT5mcmFtZSgpKSkKKyAgICBpZiAoIWFsbG93QWNjZXNzVG9GcmFtZShleGVj
LCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkpKQogICAgICAgICByZXR1cm47CiAgICAgQmFz
ZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCBKU1ZhbHVlIEpTTG9jYXRpb246OmFzc2lnbihF
eGVjU3RhdGUqIGV4CiBKU1ZhbHVlIEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKLSAgICBp
ZiAoIWZyYW1lIHx8ICFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgZnJhbWUpKQorICAgIGlm
ICghZnJhbWUgfHwgIWFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBmcmFtZSkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGltcGwoKS0+
dG9TdHJpbmcoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTA0NDEwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw3ICsy
NDgsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkFjY2Vzc0Zyb21DdXJyCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKTsK
ICAgICBpZiAoZXhlYykKLSAgICAgICAgcmV0dXJuIGFsbG93c0FjY2Vzc0Zyb21GcmFtZShleGVj
LCBmcmFtZSk7CisgICAgICAgIHJldHVybiBhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgZnJhbWUp
OwogICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIDAgd2UncmUgaW4gYSBjYWxsIHBhdGgg
d2hlcmUgdGhlIERPTSBzZWN1cml0eSAKICAgICAvLyBjaGVjayBkb2Vzbid0IGFwcGx5IChlZy4g
cGFyc2VyKS4KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxMDQ0MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29y
a2luZyBjb3B5KQpAQCAtNTIyLDcgKzUyMiw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5
RGVzY3JpcHRvckJvZHkKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ci
KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXRoaXNPYmplY3Qt
PmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4
ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICghYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmpl
Y3QtPmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgfQpAQCAtMTc1MiwxNSAr
MTc1MiwxNSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIGNhc3RlZFRoaXMtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja05vZGVTZWN1cml0eSJ9
KSB7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiYWxsb3dBY2Nlc3NUb05vZGUifSkgewogICAgICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcGwgPSBzdGF0
aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNoZWNrTm9kZVNl
Y3VyaXR5KGV4ZWMsIGltcGwtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkpID8gIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiaW1w
bC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSIsICJjYXN0ZWRUaGlzIikgLiAiIDoganNVbmRl
ZmluZWQoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gYWxsb3dBY2Nlc3NUb05vZGUoZXhlYywgaW1wbC0+JGltcGxHZXR0ZXJGdW5jdGlv
bk5hbWUoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwg
JGltcGxDbGFzc05hbWUsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgpIiwgImNhc3Rl
ZFRoaXMiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNp
ZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tGcmFt
ZVNlY3VyaXR5In0pIHsKICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRG9jdW1l
bnQuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5k
aW5nLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICRpbXBsQ2xhc3NOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXBsLT5jb250ZW50RG9j
dW1lbnQoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwg
JGltcGxDbGFzc05hbWUsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgpIiwgImNhc3Rl
ZFRoaXMiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBhbGxvd0FjY2Vzc1RvTm9kZShleGVjLCBpbXBs
LT5jb250ZW50RG9jdW1lbnQoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFt
ZSgpIiwgImNhc3RlZFRoaXMiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgICAg
ICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkV2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIik7
CkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoIXN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+YWxsb3dzQWNjZXNz
RnJvbShleGVjKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
ICghYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0
aGlzT2JqZWN0KS0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWFsbG93QWNjZXNzVG9GcmFt
ZShleGVjLCBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKS0+ZnJh
bWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjA1Niw3ICsyMDU2LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1l
IGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoIXN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+YWxs
b3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFhbGxv
d3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmpl
Y3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBzdGF0aWNf
Y2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjE3MCw3ICsy
MTcwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJTVkdDaGVja1NlY3VyaXR5RG9jdW1lbnQifSBhbmQgISRmdW5jdGlvbi0+aXNTdGF0
aWMpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFj
aGVja05vZGVTZWN1cml0eShleGVjLCBpbXBsLT5nZXRTVkdEb2N1bWVudCgiIC4gKEB7JGZ1bmN0
aW9uLT5yYWlzZXNFeGNlcHRpb25zfSA/ICJlYyIgOiAiIikgLiIpKSlcbiIpOworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWFsbG93QWNjZXNzVG9Ob2Rl
KGV4ZWMsIGltcGwtPmdldFNWR0RvY3VtZW50KCIgLiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2Vw
dGlvbnN9ID8gImVjIiA6ICIiKSAuIikpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGlu
Zy5oIn0gPSAxOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiAxMDQ0MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQko
d29ya2luZyBjb3B5KQpAQCAtODgzLDEwICs4ODMsMTAgQEAgRU5ECiAgICAgfQogCiAgICAgIyBH
ZW5lcmF0ZSBzZWN1cml0eSBjaGVja3MgaWYgbmVjZXNzYXJ5Ci0gICAgaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrTm9kZVNlY3VyaXR5In0pIHsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoIVY4QmluZGluZ1NlY3Vy
aXR5OjpjaGVja05vZGVTZWN1cml0eShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPiRhdHRy
TmFtZSgpKSlcbiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG5cbiIpOworICAg
IGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJhbGxvd0Fj
Y2Vzc1RvTm9kZSJ9KSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYg
KCFWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dBY2Nlc3NUb05vZGUoVjhCaW5kaW5nU3RhdGU6Ok9u
bHkoKSwgaW1wLT4kYXR0ck5hbWUoKSkpXG4gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVl
PigpO1xuXG4iKTsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDaGVja0ZyYW1lU2VjdXJpdHkifSkgewotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNoZWNrTm9kZVNlY3Vy
aXR5KFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+Y29udGVudERvY3VtZW50KCkpKVxuICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcblxuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dBY2Nlc3NU
b05vZGUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5jb250ZW50RG9jdW1lbnQoKSkpXG4g
ICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuXG4iKTsKICAgICB9CiAKICAgICBt
eSAkdXNlRXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfTsK
QEAgLTE0MzQsNyArMTQzNCw3IEBAIEVORAogICAgIH0KICAgICBpZiAoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTVkdDaGVja1NlY3VyaXR5RG9jdW1lbnQifSkg
ewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgaWYgKCFWOEJp
bmRpbmdTZWN1cml0eTo6Y2hlY2tOb2RlU2VjdXJpdHkoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwg
aW1wLT5nZXRTVkdEb2N1bWVudChlYykpKQorICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmFs
bG93QWNjZXNzVG9Ob2RlKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+Z2V0U1ZHRG9jdW1l
bnQoZWMpKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogRU5ECiAg
ICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125199</attachid>
            <date>2012-02-02 15:38:35 -0800</date>
            <delta_ts>2012-02-02 19:23:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75796-20120202153834.patch</filename>
            <type>text/plain</type>
            <size>21126</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjU5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEyLTAyLTAyICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVuYW1lIGNoZWNrTm9kZVNlY3Vy
aXR5IGFuZCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUgdG8gaGF2ZSBzZW5zaWJsZSBuYW1lcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyByZXF1ZXN0ZWQg
YnkgRGFyaW4gQWRsZXIsIHRoaXMgcGF0Y2ggcmVuYW1lcyB0aGVzZSBmdW5jdGlvbnMgYmUKKyAg
ICAgICAgY2xlYXIgdGhhdCB3ZSdyZSBhc2tpbmcgd2hldGhlciB0aGUgYWNjZXNzIHNob3VsZCBi
ZSBhbGxvd2VkIHJhdGhlcgorICAgICAgICB0aGFuIGV4cGxpY2l0bHkgYWxsb3dpbmcgdGhlIGFj
Y2Vzcy4KKworICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5Lmg6Cisg
ICAgICAgIChCaW5kaW5nU2VjdXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6OjpzaG91bGRBbGxv
d0FjY2Vzc1RvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjo6OmFsbG93U2V0dGluZ0ZyYW1lU3Jj
VG9KYXZhc2NyaXB0VXJsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbGxv
d1NldHRpbmdKYXZhc2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eVNs
b3REZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cHV0RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlv
bjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjp0
b1N0cmluZ0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbkFjY2Vzc0Zyb21D
dXJyZW50T3JpZ2luKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keSk6Cisg
ICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRl
cik6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ip
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29udGVudERvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9iakludGVybmFsOjpjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6Z2V0U1ZHRG9jdW1lbnRDYWxsYmFjayk6CisKIDIw
MTItMDItMDIgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFR1
cm4gb24gQ1NTIEZpbHRlcnMgb24gV2luZG93cwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9CaW5kaW5nU2VjdXJpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5oCShyZXZpc2lvbiAxMDY1NjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENoZWNrIGlmIGl0
IGlzIHNhZmUgdG8gYWNjZXNzIHRoZSBnaXZlbiBub2RlIGZyb20gdGhlCiAgICAgLy8gY3VycmVu
dCBzZWN1cml0eSBjb250ZXh0LgotICAgIHN0YXRpYyBib29sIGFsbG93QWNjZXNzVG9Ob2RlKFN0
YXRlPEJpbmRpbmc+KiwgTm9kZSogdGFyZ2V0KTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxv
d0FjY2Vzc1RvTm9kZShTdGF0ZTxCaW5kaW5nPiosIE5vZGUqIHRhcmdldCk7CiAKICAgICBzdGF0
aWMgYm9vbCBhbGxvd1BvcFVwKFN0YXRlPEJpbmRpbmc+Kik7CiAgICAgc3RhdGljIGJvb2wgYWxs
b3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoU3RhdGU8QmluZGluZz4qLCBIVE1MRnJh
bWVFbGVtZW50QmFzZSosIGNvbnN0IFN0cmluZyYgdmFsdWUpOwpAQCAtMTAxLDcgKzEwMSw3IEBA
IGJvb2wgQmluZGluZ1NlY3VyaXR5PEJpbmRpbmc+OjpjYW5BY2Nlc3MKIH0KIAogdGVtcGxhdGUg
PGNsYXNzIEJpbmRpbmc+Ci1ib29sIEJpbmRpbmdTZWN1cml0eTxCaW5kaW5nPjo6YWxsb3dBY2Nl
c3NUb05vZGUoU3RhdGU8QmluZGluZz4qIHN0YXRlLCBOb2RlKiBub2RlKQorYm9vbCBCaW5kaW5n
U2VjdXJpdHk8QmluZGluZz46OnNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKFN0YXRlPEJpbmRpbmc+
KiBzdGF0ZSwgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIEJpbmRpbmdTZWN1cml0eTxCaW5kaW5nPjo6
YWxsb3dTZXR0CiB7CiAgICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSkpKSB7CiAgICAgICAgIE5vZGUqIGNvbnRlbnREb2Mg
PSBmcmFtZS0+Y29udGVudERvY3VtZW50KCk7Ci0gICAgICAgIGlmIChjb250ZW50RG9jICYmICFh
bGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29udGVudERvYykpCisgICAgICAgIGlmIChjb250ZW50
RG9jICYmICFzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29udGVudERvYykpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAxMDY1
NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsMTIgKzIxNiwxMiBAQCBET01XaW5kb3cqIGZpcnN0RE9NV2luZG93
KEV4ZWNTdGF0ZSogZXhlCiAgICAgcmV0dXJuIGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpKS0+aW1wbCgpOwogfQogCi1ib29sIGFsbG93QWNjZXNzVG9Ob2RlKEV4ZWNT
dGF0ZSogZXhlYywgTm9kZSogbm9kZSkKK2Jvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoRXhl
Y1N0YXRlKiBleGVjLCBOb2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlICYmIGFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpKTsKKyAgICByZXR1cm4g
bm9kZSAmJiBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgbm9kZS0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKSk7CiB9CiAKLWJvb2wgYWxsb3dBY2Nlc3NUb0ZyYW1lKEV4ZWNTdGF0ZSogZXhlYywg
RnJhbWUqIGZyYW1lKQorYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoRXhlY1N0YXRlKiBl
eGVjLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjI5LDcgKzIyOSw3IEBAIGJvb2wgYWxsb3dBY2Nlc3NUb0ZyYW1lKEV4ZWNTdGF0
ZSogZXhlYywKICAgICByZXR1cm4gd2luZG93ICYmIHdpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbShl
eGVjKTsKIH0KIAotYm9vbCBhbGxvd0FjY2Vzc1RvRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBGcmFt
ZSogZnJhbWUsIFN0cmluZyYgbWVzc2FnZSkKK2Jvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KEV4ZWNTdGF0ZSogZXhlYywgRnJhbWUqIGZyYW1lLCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDEwNjU2OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODEs
OSArMjgxLDkgQEAgZW51bSBQYXJhbWV0ZXJNaXNzaW5nUG9saWN5IHsKICAgICBKU0M6OkpTT2Jq
ZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVk
Jik7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbG93QWNjZXNzVG9Db250ZXh0KEpTQzo6
RXhlY1N0YXRlKiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIGJvb2wgYWxsb3dBY2Nl
c3NUb05vZGUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7Ci0gICAgYm9vbCBhbGxvd0FjY2Vzc1Rv
RnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSopOwotICAgIGJvb2wgYWxsb3dBY2Nlc3NUb0Zy
YW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqLCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIGJvb2wg
c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7CisgICAgYm9v
bCBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSopOworICAg
IGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqLCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSosIERPTVdpbmRvdyopOwogCiAgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGVzZSBmdW5jdGlvbnMgaW4gZmF2b3Igb2YgYWN0aXZlQ29udGV4dCBhbmQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTA2NTY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWxsb3dTZXR0aW5nSmF2YXNjcmlwCiB7CiAg
ICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyh2YWx1ZSkpKSB7CiAgICAgICAgIERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQgPSBpbXAt
PmNvbnRlbnREb2N1bWVudCgpOwotICAgICAgICBpZiAoY29udGVudERvY3VtZW50ICYmICFhbGxv
d0FjY2Vzc1RvTm9kZShleGVjLCBjb250ZW50RG9jdW1lbnQpKQorICAgICAgICBpZiAoY29udGVu
dERvY3VtZW50ICYmICFzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShleGVjLCBjb250ZW50RG9jdW1l
bnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNw
cAkocmV2aXNpb24gMTA2NTY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0
b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBib29sIEpTSGlz
dG9yeTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhCiAgICAgLy8gT3VyIGN1c3RvbSBjb2RlIGlz
IG9ubHkgbmVlZGVkIHRvIGltcGxlbWVudCB0aGUgV2luZG93IGNyb3NzLWRvbWFpbiBzY2hlbWUs
IHNvIGlmIGFjY2VzcyBpcwogICAgIC8vIGFsbG93ZWQsIHJldHVybiBmYWxzZSBzbyB0aGUgbm9y
bWFsIGxvb2t1cCB3aWxsIHRha2UgcGxhY2UuCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYg
KGFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCksIG1lc3NhZ2UpKQorICAg
IGlmIChzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgaW1wbCgpLT5mcmFtZSgpLCBtZXNz
YWdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ2hlY2sgZm9yIHRoZSBmZXcg
ZnVuY3Rpb25zIHRoYXQgd2UgYWxsb3csIGV2ZW4gd2hlbiBjYWxsZWQgY3Jvc3MtZG9tYWluLgpA
QCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IKICAgICB9CiAKICAgICAvLyBUaHJvdyBvdXQgYWxsIGNyb3NzIGRvbWFpbiBhY2Nlc3MKLSAg
ICBpZiAoIWFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCkpKQorICAgIGlm
ICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGltcGwoKS0+ZnJhbWUoKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgZm9yIHRoZSBmZXcgZnVuY3Rpb25zIHRo
YXQgd2UgYWxsb3csIGV2ZW4gd2hlbiBjYWxsZWQgY3Jvc3MtZG9tYWluLgpAQCAtMTQxLDcgKzE0
MSw3IEBAIGJvb2wgSlNIaXN0b3J5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IKIGJvb2wgSlNI
aXN0b3J5OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewogICAgIC8vIE9ubHkgYWxsb3cgcHV0dGluZyBi
eSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghYWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIGltcGwoKS0+ZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoZXhlYywgaW1wbCgpLT5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgSlNIaXN0b3J5OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGMKIHsKICAgICBKU0hpc3RvcnkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNIaXN0b3J5Kj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMg
aW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIGlmICghYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRo
aXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1Rv
RnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgSlNIaXN0b3J5Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2IKIHsKICAgICBKU0hpc3RvcnkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNIaXN0b3J5Kj4ob2JqZWN0KTsKICAgICAvLyBPbmx5IGFsbG93IHRoZSBoaXN0b3J5
IG9iamVjdCB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAg
aWYgKCFhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgp
KSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5p
bXBsKCktPmZyYW1lKCkpKQogICAgICAgICByZXR1cm47CiAgICAgQmFzZTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShy
ZXZpc2lvbiAxMDY1NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9u
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBib29sIEpTTG9jYXRp
b246OmdldE93blByb3BlcnR5U2xvdERlbGVnCiAgICAgLy8gT3VyIGN1c3RvbSBjb2RlIGlzIG9u
bHkgbmVlZGVkIHRvIGltcGxlbWVudCB0aGUgV2luZG93IGNyb3NzLWRvbWFpbiBzY2hlbWUsIHNv
IGlmIGFjY2VzcyBpcwogICAgIC8vIGFsbG93ZWQsIHJldHVybiBmYWxzZSBzbyB0aGUgbm9ybWFs
IGxvb2t1cCB3aWxsIHRha2UgcGxhY2UuCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKGFs
bG93QWNjZXNzVG9GcmFtZShleGVjLCBmcmFtZSwgbWVzc2FnZSkpCisgICAgaWYgKHNob3VsZEFs
bG93QWNjZXNzVG9GcmFtZShleGVjLCBmcmFtZSwgbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIENoZWNrIGZvciB0aGUgZmV3IGZ1bmN0aW9ucyB0aGF0IHdlIGFsbG93
LCBldmVuIHdoZW4gY2FsbGVkIGNyb3NzLWRvbWFpbi4KQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBK
U0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0bwogICAgIH0KICAgICAKICAgICAvLyB0
aHJvdyBvdXQgYWxsIGNyb3NzIGRvbWFpbiBhY2Nlc3MKLSAgICBpZiAoIWFsbG93QWNjZXNzVG9G
cmFtZShleGVjLCBmcmFtZSkpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhl
YywgZnJhbWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBDaGVjayBmb3Ig
dGhlIGZldyBmdW5jdGlvbnMgdGhhdCB3ZSBhbGxvdywgZXZlbiB3aGVuIGNhbGxlZCBjcm9zcy1k
b21haW4uCkBAIC0xMzQsNyArMTM0LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVP
ZikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBib29sIHNhbWVEb21haW5BY2Nlc3MgPSBh
bGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgZnJhbWUpOworICAgIGJvb2wgc2FtZURvbWFpbkFjY2Vz
cyA9IHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBmcmFtZSk7CiAKICAgICBjb25zdCBI
YXNoRW50cnkqIGVudHJ5ID0gSlNMb2NhdGlvbjo6c19pbmZvLnByb3BIYXNoVGFibGUoZXhlYykt
PmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFlbnRyeSkgewpAQCAtMTU2LDcg
KzE1Niw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiAKIHsKICAg
ICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihjZWxsKTsKICAg
ICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0g
ICAgaWYgKCFhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFt
ZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0
LT5pbXBsKCktPmZyYW1lKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBA
IC0xNjUsNyArMTY1LDcgQEAgdm9pZCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
TwogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KG9i
amVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgbG9jYXRpb24gb2JqZWN0IHRvIGVudW1lcmF0
ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIWFsbG93QWNjZXNzVG9G
cmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkpKQorICAgIGlmICghc2hvdWxk
QWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtMjcwLDcgKzI3MCw3IEBAIEpTVmFs
dWUgSlNMb2NhdGlvbjo6YXNzaWduKEV4ZWNTdGF0ZSogZXgKIEpTVmFsdWUgSlNMb2NhdGlvbjo6
dG9TdHJpbmdGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0g
aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWFsbG93QWNjZXNzVG9GcmFtZShl
eGVjLCBmcmFtZSkpCisgICAgaWYgKCFmcmFtZSB8fCAhc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIGZyYW1lKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgaW1wbCgpLT50b1N0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMDY1
NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6
Y2FuQWNjZXNzRnJvbUN1cnIKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpOwogICAgIGlmIChleGVjKQotICAgICAgICByZXR1cm4g
YWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHNob3VsZEFs
bG93QWNjZXNzVG9GcmFtZShleGVjLCBmcmFtZSk7CiAgICAgLy8gSWYgdGhlIGN1cnJlbnQgc3Rh
dGUgaXMgMCB3ZSdyZSBpbiBhIGNhbGwgcGF0aCB3aGVyZSB0aGUgRE9NIHNlY3VyaXR5IAogICAg
IC8vIGNoZWNrIGRvZXNuJ3QgYXBwbHkgKGVnLiBwYXJzZXIpLgogICAgIHJldHVybiB0cnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHJldmlzaW9uIDEwNjU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00OTksNyArNDk5LDcg
QEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keQogICAgICAgICBpZiAo
JGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICghdGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSlcbiIp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgp
KSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSlcbiIp
OwogICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
ZmFsc2U7XG4iKTsKICAgICB9CkBAIC0xNzAwLDcgKzE3MDAsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrQWNjZXNzVG9Ob2RlIn0pIHsKICAgICAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7CiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXBs
ID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBhbGxv
d0FjY2Vzc1RvTm9kZShleGVjLCBpbXBsLT4iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
IC4gIigpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAk
aW1wbENsYXNzTmFtZSwgImltcGwtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2FzdGVk
VGhpcyIpIC4gIiA6IGpzVW5kZWZpbmVkKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKGV4ZWMs
IGltcGwtPiIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKCkpID8gIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiaW1w
bC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSIsICJjYXN0ZWRUaGlzIikgLiAiIDoganNVbmRl
ZmluZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudExp
c3RlbmVyIikgewogICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFdmVudExpc3Rl
bmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOwpAQCAtMTg4OSw3ICsxODg5LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4o
dGhpc09iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBzdGF0
aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGNsYXNzTmFt
ZSo+KHRoaXNPYmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTIwMTcsNyArMjAxNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzdGF0aWNfY2FzdDwk
Y2xhc3NOYW1lKj4odGhpc09iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICghYWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHN0YXRpY19j
YXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmpl
Y3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTIxMzEsNyArMjEzMSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tBY2Nlc3NUb05vZGUi
fSBhbmQgISRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCFhbGxvd0FjY2Vzc1RvTm9kZShleGVjLCBpbXBsLT4iIC4g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKCIgLiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4
Y2VwdGlvbnN9ID8gImVjIiA6ICIiKSAuIikpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoZXhlYywg
aW1wbC0+IiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIigiIC4gKEB7JGZ1bmN0aW9u
LT5yYWlzZXNFeGNlcHRpb25zfSA/ICJlYyIgOiAiIikgLiIpKSlcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2
aXNpb24gMTA2NTY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTg2Niw3ICs4NjYsNyBAQCBFTkQKIAogICAg
ICMgR2VuZXJhdGUgc2VjdXJpdHkgY2hlY2tzIGlmIG5lY2Vzc2FyeQogICAgIGlmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0FjY2Vzc1RvTm9kZSJ9
KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFWOEJpbmRpbmdT
ZWN1cml0eTo6YWxsb3dBY2Nlc3NUb05vZGUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT4i
IC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIigpKSlcbiAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7XG5cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKFY4
QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+IiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFt
ZSAuICIoKSkpXG4gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuXG4iKTsKICAg
ICB9CiAKICAgICBteSAkdXNlRXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRlLT5nZXR0ZXJF
eGNlcHRpb25zfTsKQEAgLTE0MzQsNyArMTQzNCw3IEBAIEVORAogICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIik7CiAgICAgfQogICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrQWNjZXNzVG9Ob2Rl
In0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoIVY4QmluZGlu
Z1NlY3VyaXR5OjphbGxvd0FjY2Vzc1RvTm9kZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAt
PiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoZWMpKSlcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9Ob2RlKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+IiAuICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIihlYykpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIp
OwogRU5ECiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAJKHJl
dmlzaW9uIDEwNjU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0
LDcgQEAgYm9vbCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldE93blByb3BlcgogewogICAgIEpT
VGVzdEFjdGl2ZURPTU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01P
YmplY3QqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgJnNfaW5mbyk7Ci0gICAgaWYgKCFhbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVj
dC0+aW1wbCgpLT5mcmFtZSgpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShl
eGVjLCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RBY3RpdmVET01PYmpl
Y3QsIEJhc2U+KGV4ZWMsICZKU1Rlc3RBY3RpdmVET01PYmplY3RUYWJsZSwgdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAx
MDY1NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYyLDcgKzc2Miw3IEBAIEpTVmFsdWUganNUZXN0
T2JqQ29udGVudERvY3VtZW50KEV4ZWNTdGEKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFRlc3RP
YmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAg
ICByZXR1cm4gYWxsb3dBY2Nlc3NUb05vZGUoZXhlYywgaW1wbC0+Y29udGVudERvY3VtZW50KCkp
ID8gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1w
bC0+Y29udGVudERvY3VtZW50KCkpKSA6IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHNob3Vs
ZEFsbG93QWNjZXNzVG9Ob2RlKGV4ZWMsIGltcGwtPmNvbnRlbnREb2N1bWVudCgpKSA/IHRvSlMo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPmNvbnRl
bnREb2N1bWVudCgpKSkgOiBqc1VuZGVmaW5lZCgpOwogfQogCiAKQEAgLTE5MzksNyArMTkzOSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAg
VGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmICghYWxsb3dBY2Nlc3NUb05vZGUo
ZXhlYywgaW1wbC0+Z2V0U1ZHRG9jdW1lbnQoZWMpKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNj
ZXNzVG9Ob2RlKGV4ZWMsIGltcGwtPmdldFNWR0RvY3VtZW50KGVjKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIo
aW1wbC0+Z2V0U1ZHRG9jdW1lbnQoZWMpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAkocmV2aXNpb24gMTA2
NTY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2OSw3ICs3NjksNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbnRlbnREb2N1CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5j
b250ZW50RG9jdW1lbnQuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dB
Y2Nlc3NUb05vZGUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5jb250ZW50RG9jdW1lbnQo
KSkpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUo
VjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5jb250ZW50RG9jdW1lbnQoKSkpCiAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCiAgICAgcmV0dXJuIHRvVjgoaW1wLT5jb250
ZW50RG9jdW1lbnQoKSk7CkBAIC0xNDMzLDcgKzE0MzMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGdldFNWR0RvY3VtCiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7Ci0g
ICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dBY2Nlc3NUb05vZGUoVjhCaW5kaW5nU3Rh
dGU6Ok9ubHkoKSwgaW1wLT5nZXRTVkdEb2N1bWVudChlYykpKQorICAgIGlmICghVjhCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKFY4QmluZGluZ1N0YXRlOjpPbmx5KCks
IGltcC0+Z2V0U1ZHRG9jdW1lbnQoZWMpKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gcmVzdWx0ID0gaW1wLT5nZXRTVkdE
b2N1bWVudChlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>