<?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>83477</bug_id>
          
          <creation_ts>2012-04-09 09:25:17 -0700</creation_ts>
          <short_desc>[Texmap] Improve TextureMapperGL readability</short_desc>
          <delta_ts>2012-04-09 22:47:56 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>598327</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-09 09:25:17 -0700</bug_when>
    <thetext>[Texmap] Improve TextureMapperGL readability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598342</commentid>
    <comment_count>1</comment_count>
      <attachid>136240</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-09 09:38:33 -0700</bug_when>
    <thetext>Created attachment 136240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598350</commentid>
    <comment_count>2</comment_count>
      <attachid>136240</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-09 09:47:54 -0700</bug_when>
    <thetext>Comment on attachment 136240
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=136240&amp;action=review

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:53
&gt; +#define GL_CMD(...) do { __VA_ARGS__; ASSERT_ARG(__VA_ARGS__, !glGetError()); } while (0)

Is the do-while loop here necessary to allow the semicolon? Having two semicolons in a row and a semicolon following an orphan block is fine in C/C++.

For instance this compiles just fine for me:


int main(int argc, const char* argv[])
{
    {
        printf(&quot;hey\n&quot;);
        return 0;
    };
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598356</commentid>
    <comment_count>3</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-09 09:52:18 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 136240 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136240&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:53
&gt; &gt; +#define GL_CMD(...) do { __VA_ARGS__; ASSERT_ARG(__VA_ARGS__, !glGetError()); } while (0)
&gt; 
&gt; Is the do-while loop here necessary to allow the semicolon? Having two semicolons in a row and a semicolon following an orphan block is fine in C/C++.
&gt; 
&gt; For instance this compiles just fine for me:
&gt; 
&gt; 
&gt; int main(int argc, const char* argv[])
&gt; {
&gt;     {
&gt;         printf(&quot;hey\n&quot;);
&gt;         return 0;
&gt;     };
&gt; }

I copied that trick from Assertions.h :)
Orphan semi-colons might break if statements without a brace-block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598936</commentid>
    <comment_count>4</comment_count>
      <attachid>136384</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-09 20:03:32 -0700</bug_when>
    <thetext>Created attachment 136384
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598994</commentid>
    <comment_count>5</comment_count>
      <attachid>136384</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 21:49:26 -0700</bug_when>
    <thetext>Comment on attachment 136384
Patch for landing

Rejecting attachment 136384 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:

Hunk #13 FAILED at 445.
Hunk #14 succeeded at 500 (offset -7 lines).
Hunk #15 succeeded at 534 (offset -7 lines).
Hunk #16 succeeded at 564 (offset -7 lines).
Hunk #17 succeeded at 609 (offset -7 lines).
Hunk #18 succeeded at 637 (offset -7 lines).
3 out of 18 hunks FAILED -- saving rejects to file Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12371639</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599031</commentid>
    <comment_count>6</comment_count>
      <attachid>136384</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 22:47:51 -0700</bug_when>
    <thetext>Comment on attachment 136384
Patch for landing

Clearing flags on attachment: 136384

Committed r113684: &lt;http://trac.webkit.org/changeset/113684&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599032</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 22:47:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136240</attachid>
            <date>2012-04-09 09:38:33 -0700</date>
            <delta_ts>2012-04-09 20:03:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83477-20120409093830.patch</filename>
            <type>text/plain</type>
            <size>18997</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M2YjRhNDc5MGI4ODU4
NjA2ZjZiMjU2OWI0Njk2OWU1ZGZjMzZhNi4uZWZkYTEwNGFkYmM1YjM0ZTdlNzBhYmYxNzkzYWNj
OTEzNGU0NDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTA5ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1h
cF0gSW1wcm92ZSBUZXh0dXJlTWFwcGVyR0wgcmVhZGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNDc3CisKKyAgICAgICAgQ2hhbmdlIHRo
ZSBkZWJ1Z2dpbmcgbWFjcm9zIGZvciBUZXh0dXJlTWFwcGVyR0wsIHNvIHRoYXQgdGhlIEdMX0NN
RCBjYWxsIGNhbiBpbmNsdWRlIGEgc2VtaWNvbG9uLgorICAgICAgICBNb2RpZnkgc29tZSBpZiBi
bG9ja3MgdG8gaGF2ZSBhbiBlYXJseSByZXR1cm4uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTERhdGE6OlNoYXJlZEdMRGF0YTo6c2Npc3NvckNsaXAp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjph
cHBseUN1cnJlbnRDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTERhdGE6
OlNoYXJlZEdMRGF0YTo6flNoYXJlZEdMRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyR0xEYXRhOjppbml0aWFsaXplU3RlbmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyR0w6OmJlZ2luUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdMOjplbmRQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6
OmRyYXdUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6ZGlkUmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmluaXRpYWxpemVTdGVuY2lsKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6YmluZCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBUZXh0dXJlR0w6On5CaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckdMOjpiaW5kU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyR0w6OmJlZ2luQ2xpcCk6CisKIDIwMTItMDQtMDcgIE5vJ2FtIFJvc2VudGhhbCAg
PG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gTWFuYWdlIGdy
YXBoaWNzIGJ1ZmZlcnMgaW4gdGhlIHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmlu
ZGV4IDQxY2UyYWJkMDM5NjhjYjg5Yzg4Njg4MjhkNWRjMzA0YzQyODM3ZTguLjA5YWZhMzk3NzBl
YzMwZDVlOGUxZWZlNWIyYTgwN2IxZDZhN2M4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBA
IC01MCwyMyArNTAsOSBAQAogI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNlbmRpZgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWlubGluZSBzdGF0aWMgdm9pZCBkZWJ1Z0dMQ29tbWFuZChj
b25zdCBjaGFyKiBjb21tYW5kLCBpbnQgbGluZSkKLXsKLSAgICBjb25zdCBHTGVudW0gZXJyID0g
Z2xHZXRFcnJvcigpOwotICAgIGlmICghZXJyKQotICAgICAgICByZXR1cm47Ci0gICAgV1RGUmVw
b3J0RXJyb3IoX19GSUxFX18sIGxpbmUsIFdURl9QUkVUVFlfRlVOQ1RJT04sICJbVGV4dHVyZU1h
cHBlciBHTF0gQ29tbWFuZCBmYWlsZWQ6ICVzICgleClcbiIsIGNvbW1hbmQsIGVycik7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi0jZGVmaW5lIEdMX0NN
RCh4KSB7eCwgZGVidWdHTENvbW1hbmQoI3gsIF9fTElORV9fKTsgfQotI2Vsc2UKLSNkZWZpbmUg
R0xfQ01EKHgpIHg7Ci0jZW5kaWYKKyNkZWZpbmUgR0xfQ01EKC4uLikgZG8geyBfX1ZBX0FSR1Nf
XzsgQVNTRVJUX0FSRyhfX1ZBX0FSR1NfXywgIWdsR2V0RXJyb3IoKSk7IH0gd2hpbGUgKDApCiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICBz
dHJ1Y3QgU2hhcmVkR0xEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkR0xEYXRhPiB7CiAj
aWYgUExBVEZPUk0oUVQpICYmIFFUX1ZFUlNJT04gPj0gMHgwNTAwMDAKQEAgLTE1NywxOSArMTQz
LDE5IEBAIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIEdMaW50IHZpZXdwb3J0WzRdOwotICAgICAgICAgICAgR0xfQ01E
KGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZpZXdwb3J0KSkKLSAgICAgICAgICAgIEdMX0NN
RChnbFNjaXNzb3IocmVjdC54KCksIHZpZXdwb3J0WzNdIC0gcmVjdC5tYXhZKCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSkpCisgICAgICAgICAgICBHTF9DTUQoZ2xHZXRJbnRlZ2VydihH
TF9WSUVXUE9SVCwgdmlld3BvcnQpKTsKKyAgICAgICAgICAgIEdMX0NNRChnbFNjaXNzb3IocmVj
dC54KCksIHZpZXdwb3J0WzNdIC0gcmVjdC5tYXhZKCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBhcHBseUN1cnJlbnRDbGlwKCkKICAg
ICAgICAgewogICAgICAgICAgICAgc2Npc3NvckNsaXAoY2xpcFN0YXRlLnNjaXNzb3JCb3gpOwot
ICAgICAgICAgICAgR0xfQ01EKGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX0tFRVAp
KQotICAgICAgICAgICAgZ2xTdGVuY2lsRnVuYyhHTF9FUVVBTCwgY2xpcFN0YXRlLnN0ZW5jaWxJ
bmRleCAtIDEsIGNsaXBTdGF0ZS5zdGVuY2lsSW5kZXggLSAxKTsKKyAgICAgICAgICAgIEdMX0NN
RChnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9LRUVQKSk7CisgICAgICAgICAgICBH
TF9DTUQoZ2xTdGVuY2lsRnVuYyhHTF9FUVVBTCwgY2xpcFN0YXRlLnN0ZW5jaWxJbmRleCAtIDEs
IGNsaXBTdGF0ZS5zdGVuY2lsSW5kZXggLSAxKSk7CiAgICAgICAgICAgICBpZiAoY2xpcFN0YXRl
LnN0ZW5jaWxJbmRleCA9PSAxKQotICAgICAgICAgICAgICAgIGdsRGlzYWJsZShHTF9TVEVOQ0lM
X1RFU1QpOworICAgICAgICAgICAgICAgIEdMX0NNRChnbERpc2FibGUoR0xfU1RFTkNJTF9URVNU
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJ
TF9URVNUKTsKKyAgICAgICAgICAgICAgICBHTF9DTUQoZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNU
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlciB0ZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjsKQEAgLTE5MSw3ICsxNzcsNiBAQCBzdHJ1Y3QgVGV4dHVy
ZU1hcHBlckdMRGF0YSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gZW5kKTsKICAgICAgICAg
ICAgIGdsQ29udGV4dERhdGFNYXAoKS5yZW1vdmUoaXQpOwogICAgICAgICB9Ci0KICAgICB9Owog
CiAgICAgU2hhcmVkR0xEYXRhJiBzaGFyZWRHTERhdGEoKSBjb25zdApAQCAtMjMwLDggKzIxNSw4
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMRGF0YTo6aW5pdGlhbGl6ZVN0ZW5jaWwoKQogICAgIGlm
IChkaWRNb2RpZnlTdGVuY2lsKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbENsZWFyU3RlbmNp
bCgwKTsKLSAgICBnbENsZWFyKEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisgICAgR0xfQ01EKGds
Q2xlYXJTdGVuY2lsKDApKTsKKyAgICBHTF9DTUQoZ2xDbGVhcihHTF9TVEVOQ0lMX0JVRkZFUl9C
SVQpKTsKICAgICBkaWRNb2RpZnlTdGVuY2lsID0gdHJ1ZTsKIH0KIApAQCAtMjQ5LDcgKzIzNCw3
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpiZWdpblBhaW50aW5nKCkKICAgICBpZiAoIWluaXRp
YWxpemVPcGVuR0xTaGltcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnbEdldEludGVnZXJ2
KEdMX0NVUlJFTlRfUFJPR1JBTSwgJmRhdGEoKS5wcmV2aW91c1Byb2dyYW0pOworICAgIEdMX0NN
RChnbEdldEludGVnZXJ2KEdMX0NVUlJFTlRfUFJPR1JBTSwgJmRhdGEoKS5wcmV2aW91c1Byb2dy
YW0pKTsKICAgICBkYXRhKCkucHJldmlvdXNTY2lzc29yU3RhdGUgPSBnbElzRW5hYmxlZChHTF9T
Q0lTU09SX1RFU1QpOwogICAgIGRhdGEoKS5wcmV2aW91c0RlcHRoU3RhdGUgPSBnbElzRW5hYmxl
ZChHTF9ERVBUSF9URVNUKTsKICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CkBAIC0yNjEs
OSArMjQ2LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmJlZ2luUGFpbnRpbmcoKQogICAgIH0K
ICNlbmRpZgogICAgIGRhdGEoKS5kaWRNb2RpZnlTdGVuY2lsID0gZmFsc2U7Ci0gICAgZ2xEZXB0
aE1hc2soMCk7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgZGF0YSgpLnZpZXdwb3J0
KTsKLSAgICBnbEdldEludGVnZXJ2KEdMX1NDSVNTT1JfQk9YLCBkYXRhKCkucHJldmlvdXNTY2lz
c29yKTsKKyAgICBHTF9DTUQoZ2xEZXB0aE1hc2soMCkpOworICAgIEdMX0NNRChnbEdldEludGVn
ZXJ2KEdMX1ZJRVdQT1JULCBkYXRhKCkudmlld3BvcnQpKTsKKyAgICBHTF9DTUQoZ2xHZXRJbnRl
Z2VydihHTF9TQ0lTU09SX0JPWCwgZGF0YSgpLnByZXZpb3VzU2Npc3NvcikpOwogICAgIGRhdGEo
KS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhdGUuc3RlbmNpbEluZGV4ID0gMTsKICAgICBkYXRhKCku
c2hhcmVkR0xEYXRhKCkuY2xpcFN0YXRlLnNjaXNzb3JCb3ggPSBJbnRSZWN0KDAsIDAsIGRhdGEo
KS52aWV3cG9ydFsyXSwgZGF0YSgpLnZpZXdwb3J0WzNdKTsKICAgICBiaW5kU3VyZmFjZSgwKTsK
QEAgLTI4OSw3ICsyNzQsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZW5kUGFpbnRpbmcoKQog
ICAgIGVsc2UKICAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwogCi0KICNpZiBQTEFU
Rk9STShRVCkKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzIwLDEz
ICszMDQsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKHVpbnQzMl90IHRl
eHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJgogICAgIGVsc2UKICAgICAgICAgc2hh
ZGVySW5mbyA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
ci5nZXRTaGFkZXJQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpTaW1wbGUpOwog
Ci0gICAgR0xfQ01EKGdsVXNlUHJvZ3JhbShzaGFkZXJJbmZvLT5pZCgpKSkKLSAgICBHTF9DTUQo
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCi0g
ICAgR0xfQ01EKGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCkpCi0gICAgR0xfQ01EKGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSkpCi0gICAgR0xfQ01EKGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIDApKQorICAgIEdMX0NNRChnbFVzZVByb2dyYW0oc2hhZGVySW5m
by0+aWQoKSkpOworICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlcklu
Zm8tPnZlcnRleEF0dHJpYigpKSk7CisgICAgR0xfQ01EKGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCkpOworICAgIEdMX0NNRChnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUp
KTsKKyAgICBHTF9DTUQoZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCkpOwogICAgIGNv
bnN0IEdMZmxvYXQgdW5pdFJlY3RbXSA9IHswLCAwLCAxLCAwLCAxLCAxLCAwLCAxfTsKLSAgICBH
TF9DTUQoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHNoYWRlckluZm8tPnZlcnRleEF0dHJpYigpLCAy
LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHVuaXRSZWN0KSkKKyAgICBHTF9DTUQoZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKHNoYWRlckluZm8tPnZlcnRleEF0dHJpYigpLCAyLCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsIHVuaXRSZWN0KSk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3Rl
ZE1vZGVsVmlld01hdHJpeChtb2RlbFZpZXdNYXRyaXgpOwogICAgIC8vIENoZWNrIGlmIHRoZSB0
cmFuc2Zvcm1lZCB0YXJnZXQgcmVjdCBoYXMgdGhlIHNhbWUgc2hhcGUvZGltZW5zaW9ucyBhcyB0
aGUgZHJhd24gdGV4dHVyZSAoaS5lLiB0cmFuc2xhdGVkIG9ubHkpLgpAQCAtMzYzLDIyICszNDcs
MjIgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUs
IEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJgogICAgICAgICAwLCAwLCAxLCAwLAogICAgICAg
ICAwLCAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkgPyAxIDogMCwgMCwgMX07CiAKLSAgICBH
TF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlckluZm8tPm1hdHJpeFZhcmlhYmxlKCksIDEs
IEdMX0ZBTFNFLCBtNCkpCi0gICAgR0xfQ01EKGdsVW5pZm9ybU1hdHJpeDRmdihzaGFkZXJJbmZv
LT5zb3VyY2VNYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwgbTRzcmMpKQotICAgIEdMX0NN
RChnbFVuaWZvcm0xaShzaGFkZXJJbmZvLT5zb3VyY2VUZXh0dXJlVmFyaWFibGUoKSwgMCkpCisg
ICAgR0xfQ01EKGdsVW5pZm9ybU1hdHJpeDRmdihzaGFkZXJJbmZvLT5tYXRyaXhWYXJpYWJsZSgp
LCAxLCBHTF9GQUxTRSwgbTQpKTsKKyAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRl
ckluZm8tPnNvdXJjZU1hdHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNHNyYykpOworICAg
IEdMX0NNRChnbFVuaWZvcm0xaShzaGFkZXJJbmZvLT5zb3VyY2VUZXh0dXJlVmFyaWFibGUoKSwg
MCkpOwogCiAgICAgc2hhZGVySW5mby0+cHJlcGFyZShvcGFjaXR5LCBtYXNrVGV4dHVyZSk7CiAK
ICAgICBib29sIG5lZWRzQmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5kaW5nKSB8fCBv
cGFjaXR5IDwgMC45OSB8fCBtYXNrVGV4dHVyZTsKIAogICAgIGlmIChuZWVkc0JsZW5kaW5nKSB7
Ci0gICAgICAgIEdMX0NNRChnbEJsZW5kRnVuYyhHTF9PTkUsIEdMX09ORV9NSU5VU19TUkNfQUxQ
SEEpKQotICAgICAgICBHTF9DTUQoZ2xFbmFibGUoR0xfQkxFTkQpKQorICAgICAgICBHTF9DTUQo
Z2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKSk7CisgICAgICAgIEdM
X0NNRChnbEVuYWJsZShHTF9CTEVORCkpOwogICAgIH0gZWxzZQotICAgICAgICBHTF9DTUQoZ2xE
aXNhYmxlKEdMX0JMRU5EKSkKKyAgICAgICAgR0xfQ01EKGdsRGlzYWJsZShHTF9CTEVORCkpOwog
Ci0gICAgR0xfQ01EKGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpKQotICAgIEdM
X0NNRChnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIo
KSkpCisgICAgR0xfQ01EKGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpKTsKKyAg
ICBHTF9DTUQoZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVySW5mby0+dmVydGV4QXR0
cmliKCkpKTsKIH0KIAogY29uc3QgY2hhciogVGV4dHVyZU1hcHBlckdMOjp0eXBlKCkgY29uc3QK
QEAgLTQwMCwxOSArMzg0LDE5IEBAIGJvb2wgQml0bWFwVGV4dHVyZUdMOjpjYW5SZXVzZVdpdGgo
Y29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplLCBGbGFncykKIHZvaWQgQml0bWFwVGV4dHVyZUdM
OjpkaWRSZXNldCgpCiB7CiAgICAgaWYgKCFtX2lkKQotICAgICAgICBHTF9DTUQoZ2xHZW5UZXh0
dXJlcygxLCAmbV9pZCkpCi0KLSAgICBpZiAobV90ZXh0dXJlU2l6ZSAhPSBjb250ZW50U2l6ZSgp
KSB7Ci0gICAgICAgIG1fdGV4dHVyZVNpemUgPSBjb250ZW50U2l6ZSgpOwotICAgICAgICBHTF9D
TUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKSkKLSAgICAgICAgR0xfQ01EKGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJ
TkVBUikpCi0gICAgICAgIEdMX0NNRChnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpKQotICAgICAgICBHTF9DTUQoZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdF
KSkKLSAgICAgICAgR0xfQ01EKGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSkpCi0gICAgICAgIEdMX0NNRChnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3Rl
eHR1cmVTaXplLmhlaWdodCgpLCAwLCBHTF9CR1JBLCBERUZBVUxUX1RFWFRVUkVfUElYRUxfVFJB
TlNGRVJfVFlQRSwgMCkpCi0gICAgfQorICAgICAgICBHTF9DTUQoZ2xHZW5UZXh0dXJlcygxLCAm
bV9pZCkpOwogCiAgICAgbV9zdXJmYWNlTmVlZHNSZXNldCA9IHRydWU7CisgICAgaWYgKG1fdGV4
dHVyZVNpemUgPT0gY29udGVudFNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90ZXh0
dXJlU2l6ZSA9IGNvbnRlbnRTaXplKCk7CisgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbV9pZCkpOworICAgIEdMX0NNRChnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpKTsKKyAgICBHTF9DTUQoZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFS
KSk7CisgICAgR0xfQ01EKGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSkpOworICAgIEdMX0NNRChnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpKTsKKyAg
ICBHTF9DTUQoZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIG1fdGV4dHVy
ZVNpemUud2lkdGgoKSwgbV90ZXh0dXJlU2l6ZS5oZWlnaHQoKSwgMCwgR0xfQkdSQSwgREVGQVVM
VF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUsIDApKTsKIH0KIAogc3RhdGljIHZvaWQgc3dp
enpsZUJHUkFUb1JHQkEodWludDMyX3QqIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUsIGludCBz
dHJpZGUgPSAwKQpAQCAtNDUwLDcgKzQzNCw3IEBAIHN0YXRpYyBib29sIGRyaXZlclN1cHBvcnRz
U3ViSW1hZ2UoKQogdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZv
aWQqIGRhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3Vy
Y2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUpCiB7CiAgICAgR0x1aW50IGdsRm9ybWF0ID0gR0xf
UkdCQTsKLSAgICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKSkKKyAg
ICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKSk7CiAKICAgICBpZiAo
ZHJpdmVyU3VwcG9ydHNCR1JBU3dpenpsaW5nKCkpCiAgICAgICAgIGdsRm9ybWF0ID0gR0xfQkdS
QTsKQEAgLTQ1OCw3ICs0NDIsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVu
dHMoY29uc3Qgdm9pZCogZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdAogICAgICAgICBz
d2l6emxlQkdSQVRvUkdCQShzdGF0aWNfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGRhdGEpKSwgdGFyZ2V0UmVjdC5zaXplKCksIGJ5dGVzUGVyTGluZSAvIDQpOwogCiAgICAgaWYg
KGJ5dGVzUGVyTGluZSA9PSB0YXJnZXRSZWN0LndpZHRoKCkgLyA0ICYmIHNvdXJjZU9mZnNldCA9
PSBJbnRQb2ludDo6emVybygpKSB7Ci0gICAgICAgIEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0
LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBERUZBVUxUX1RFWFRVUkVf
UElYRUxfVFJBTlNGRVJfVFlQRSwgKGNvbnN0IGNoYXIqKWRhdGEpKQorICAgICAgICBHTF9DTUQo
Z2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdldFJlY3QueCgpLCB0YXJnZXRS
ZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLCBnbEZvcm1h
dCwgREVGQVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUsIChjb25zdCBjaGFyKilkYXRh
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2NywxOSArNDUxLDE5IEBAIHZvaWQg
Qml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBkYXRhLCBjb25zdCBJ
bnRSZWN0JiB0YXJnZXRSZWN0CiAgICAgICAgIGNvbnN0IGNoYXIqIGJpdHMgPSBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSk7CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGFyZ2V0
UmVjdC5oZWlnaHQoKTsgKyt5KSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyICpyb3cgPSBiaXRz
ICsgKChzb3VyY2VPZmZzZXQueSgpICsgeSkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQu
eCgpICogNCk7Ci0gICAgICAgICAgICBHTF9DTUQoZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSArIHksIHRhcmdldFJlY3Qud2lk
dGgoKSwgMSwgZ2xGb3JtYXQsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCBy
b3cpKQorICAgICAgICAgICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCkgKyB5LCB0YXJnZXRSZWN0LndpZHRoKCks
IDEsIGdsRm9ybWF0LCBERUZBVUxUX1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQRSwgcm93KSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgT3Bl
bkdMIHN1Yi1pbWFnZSBleHRlbnNpb24sIG5vdyB0aGF0IHdlIGtub3cgaXQncyBhdmFpbGFibGUu
Ci0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgYnl0ZXNQZXJMaW5lIC8g
NCk7Ci0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTLCBzb3VyY2VPZmZzZXQu
eSgpKTsKLSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgc291cmNlT2Zm
c2V0LngoKSk7Ci0gICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0
YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0
UmVjdC5oZWlnaHQoKSwgZ2xGb3JtYXQsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9U
WVBFLCAoY29uc3QgY2hhciopZGF0YSkpCi0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9X
X0xFTkdUSCwgMCk7Ci0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTLCAwKTsK
LSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgMCk7CisgICAgR0xfQ01E
KGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIGJ5dGVzUGVyTGluZSAvIDQpKTsK
KyAgICBHTF9DTUQoZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTLCBzb3VyY2VPZmZz
ZXQueSgpKSk7CisgICAgR0xfQ01EKGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxT
LCBzb3VyY2VPZmZzZXQueCgpKSk7CisgICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lk
dGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwgZ2xGb3JtYXQsIERFRkFVTFRfVEVYVFVSRV9QSVhF
TF9UUkFOU0ZFUl9UWVBFLCAoY29uc3QgY2hhciopZGF0YSkpOworICAgIEdMX0NNRChnbFBpeGVs
U3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RILCAwKSk7CisgICAgR0xfQ01EKGdsUGl4ZWxTdG9y
ZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgMCkpOworICAgIEdMX0NNRChnbFBpeGVsU3RvcmVpKEdM
X1VOUEFDS19TS0lQX1BJWEVMUywgMCkpOwogfQogCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBk
YXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBJbnRQb2ludCYgb2Zmc2V0KQpAQCAtNTI5LDMzICs1MTMsMzMgQEAgdm9pZCBCaXRtYXBUZXh0
dXJlR0w6OmluaXRpYWxpemVTdGVuY2lsKCkKICAgICBpZiAobV9yYm8pCiAgICAgICAgIHJldHVy
bjsKICAgICBHTF9DTUQoZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX3JibykpOwotICAgIEdMX0NN
RChnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX3JibykpCisgICAgR0xfQ01E
KGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fcmJvKSk7CiAjaWZkZWYgVEVY
TUFQX09QRU5HTF9FU18yCi0gICAgR0xfQ01EKGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5E
RVJCVUZGRVIsIEdMX1NURU5DSUxfSU5ERVg4LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4
dHVyZVNpemUuaGVpZ2h0KCkpKQorICAgIEdMX0NNRChnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xf
UkVOREVSQlVGRkVSLCBHTF9TVEVOQ0lMX0lOREVYOCwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBt
X3RleHR1cmVTaXplLmhlaWdodCgpKSk7CiAjZWxzZQotICAgIEdMX0NNRChnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSF9TVEVOQ0lMLCBtX3RleHR1cmVTaXpl
LndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCkpKQorICAgIEdMX0NNRChnbFJlbmRlcmJ1
ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSF9TVEVOQ0lMLCBtX3RleHR1cmVT
aXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCkpKTsKICNlbmRpZgotICAgIEdMX0NN
RChnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKSkKLSAgICBHTF9DTUQoZ2xG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hN
RU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fcmJvKSkKLSAgICBHTF9DTUQoZ2xDbGVhclN0ZW5jaWwo
MCkpCi0gICAgR0xfQ01EKGdsQ2xlYXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUKSkKKyAgICBHTF9D
TUQoZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgMCkpOworICAgIEdMX0NNRChn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9yYm8pKTsKKyAgICBHTF9DTUQoZ2xDbGVhclN0ZW5j
aWwoMCkpOworICAgIEdMX0NNRChnbENsZWFyKEdMX1NURU5DSUxfQlVGRkVSX0JJVCkpOwogfQog
CiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6YmluZCgpCiB7CiAgICAgaWYgKG1fc3VyZmFjZU5lZWRz
UmVzZXQgfHwgIW1fZmJvKSB7CiAgICAgICAgIGlmICghbV9mYm8pCi0gICAgICAgICAgICBHTF9D
TUQoZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKSkKLSAgICAgICAgR0xfQ01EKGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2ZibykpCi0gICAgICAgIEdMX0NNRChnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApKQotICAgICAgICBHTF9DTUQoZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVf
MkQsIGlkKCksIDApKQotICAgICAgICBHTF9DTUQoZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApKQot
ICAgICAgICBHTF9DTUQoZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKSkKKyAgICAgICAgICAg
IEdMX0NNRChnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9mYm8pKTsKKyAgICAgICAgR0xfQ01EKGds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2ZibykpOworICAgICAgICBHTF9DTUQo
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKSk7CisgICAgICAgIEdMX0NNRChnbEZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xf
VEVYVFVSRV8yRCwgaWQoKSwgMCkpOworICAgICAgICBHTF9DTUQoZ2xDbGVhckNvbG9yKDAsIDAs
IDAsIDApKTsKKyAgICAgICAgR0xfQ01EKGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCkpOwog
ICAgICAgICBtX3N1cmZhY2VOZWVkc1Jlc2V0ID0gZmFsc2U7CiAgICAgfSBlbHNlCi0gICAgICAg
IEdMX0NNRChnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pKQorICAgICAg
ICBHTF9DTUQoZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKSk7CiAKLSAg
ICBHTF9DTUQoZ2xWaWV3cG9ydCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgp
KSkKKyAgICBHTF9DTUQoZ2xWaWV3cG9ydCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhl
aWdodCgpKSk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5kYXRhKCkucHJvamVjdGlvbk1hdHJpeCA9
IGNyZWF0ZVByb2plY3Rpb25NYXRyaXgoc2l6ZSgpLCBmYWxzZSk7CiAgICAgbV90ZXh0dXJlTWFw
cGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgRmxvYXRSZWN0KEludFBvaW50
Ojp6ZXJvKCksIGNvbnRlbnRTaXplKCkpKTsKIH0KQEAgLTU2MywxMyArNTQ3LDEzIEBAIHZvaWQg
Qml0bWFwVGV4dHVyZUdMOjpiaW5kKCkKIEJpdG1hcFRleHR1cmVHTDo6fkJpdG1hcFRleHR1cmVH
TCgpCiB7CiAgICAgaWYgKG1faWQpCi0gICAgICAgIEdMX0NNRChnbERlbGV0ZVRleHR1cmVzKDEs
ICZtX2lkKSkKKyAgICAgICAgR0xfQ01EKGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1faWQpKTsKIAog
ICAgIGlmIChtX2ZibykKLSAgICAgICAgR0xfQ01EKGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZt
X2ZibykpCisgICAgICAgIEdMX0NNRChnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9mYm8pKTsK
IAogICAgIGlmIChtX3JibykKLSAgICAgICAgR0xfQ01EKGdsRGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmbV9yYm8pKQorICAgICAgICBHTF9DTUQoZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX3Ji
bykpOwogfQogCiBib29sIEJpdG1hcFRleHR1cmVHTDo6aXNWYWxpZCgpIGNvbnN0CkBAIC01OTMs
OSArNTc3LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmJpbmRTdXJmYWNlKEJpdG1hcFRleHR1
cmUgKnN1cmZhY2VQb2ludGVyKQogCiAgICAgaWYgKCFzdXJmYWNlKSB7CiAgICAgICAgIEludFNp
emUgdmlld3BvcnRTaXplKGRhdGEoKS52aWV3cG9ydFsyXSwgZGF0YSgpLnZpZXdwb3J0WzNdKTsK
LSAgICAgICAgR0xfQ01EKGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKSkKKyAg
ICAgICAgR0xfQ01EKGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKSk7CiAgICAg
ICAgIGRhdGEoKS5wcm9qZWN0aW9uTWF0cml4ID0gY3JlYXRlUHJvamVjdGlvbk1hdHJpeCh2aWV3
cG9ydFNpemUsIHRydWUpOwotICAgICAgICBHTF9DTUQoZ2xWaWV3cG9ydCgwLCAwLCB2aWV3cG9y
dFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSkKKyAgICAgICAgR0xfQ01EKGds
Vmlld3BvcnQoMCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQo
KSkpOwogICAgICAgICBpZiAoZGF0YSgpLmN1cnJlbnRTdXJmYWNlKQogICAgICAgICAgICAgZW5k
Q2xpcCgpOwogICAgICAgICBkYXRhKCkuY3VycmVudFN1cmZhY2UuY2xlYXIoKTsKQEAgLTYzOCwx
MCArNjIyLDEwIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpiZWdpbkNsaXAoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgY29uCiAKICAgICBSZWZQdHI8VGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0+IHNoYWRlckluZm8gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCku
dGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlcjo6U2ltcGxlKTsKIAotICAgIEdMX0NNRChnbFVzZVByb2dyYW0oc2hhZGVy
SW5mby0+aWQoKSkpCi0gICAgR0xfQ01EKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVy
SW5mby0+dmVydGV4QXR0cmliKCkpKQorICAgIEdMX0NNRChnbFVzZVByb2dyYW0oc2hhZGVySW5m
by0+aWQoKSkpOworICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlcklu
Zm8tPnZlcnRleEF0dHJpYigpKSk7CiAgICAgY29uc3QgR0xmbG9hdCB1bml0UmVjdFtdID0gezAs
IDAsIDEsIDAsIDEsIDEsIDAsIDF9OwotICAgIEdMX0NNRChnbFZlcnRleEF0dHJpYlBvaW50ZXIo
c2hhZGVySW5mby0+dmVydGV4QXR0cmliKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdW5p
dFJlY3QpKQorICAgIEdMX0NNRChnbFZlcnRleEF0dHJpYlBvaW50ZXIoc2hhZGVySW5mby0+dmVy
dGV4QXR0cmliKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdW5pdFJlY3QpKTsKIAogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGEo
KS5wcm9qZWN0aW9uTWF0cml4KQogICAgICAgICAgICAgLm11bHRpcGx5KG1vZGVsVmlld01hdHJp
eCkKQEAgLTY2NiwyNyArNjUwLDI3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpiZWdpbkNsaXAo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgY29uCiAKICAgICBp
bnQmIHN0ZW5jaWxJbmRleCA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhdGUuc3RlbmNp
bEluZGV4OwogCi0gICAgR0xfQ01EKGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCkpCisgICAgR0xf
Q01EKGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGRv
bid0IGRvIGFueSBhY3R1YWwgZHJhd2luZy4KLSAgICBHTF9DTUQoZ2xTdGVuY2lsRnVuYyhHTF9O
RVZFUiwgc3RlbmNpbEluZGV4LCBzdGVuY2lsSW5kZXgpKQorICAgIEdMX0NNRChnbFN0ZW5jaWxG
dW5jKEdMX05FVkVSLCBzdGVuY2lsSW5kZXgsIHN0ZW5jaWxJbmRleCkpOwogCiAgICAgLy8gT3Bl
cmF0ZSBvbmx5IG9uIHRoZSBzdGVuY2lsSW5kZXggYW5kIGFib3ZlLgotICAgIEdMX0NNRChnbFN0
ZW5jaWxNYXNrKDB4ZmYgJiB+KHN0ZW5jaWxJbmRleCAtIDEpKSkKKyAgICBHTF9DTUQoZ2xTdGVu
Y2lsTWFzaygweGZmICYgfihzdGVuY2lsSW5kZXggLSAxKSkpOwogCiAgICAgLy8gRmlyc3QgY2xl
YXIgdGhlIGVudGlyZSBidWZmZXIgYXQgdGhlIGN1cnJlbnQgaW5kZXguCi0gICAgR0xfQ01EKGds
VW5pZm9ybU1hdHJpeDRmdihzaGFkZXJJbmZvLT5tYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxT
RSwgbTRhbGwpKQotICAgIEdMX0NNRChnbFN0ZW5jaWxPcChHTF9aRVJPLCBHTF9aRVJPLCBHTF9a
RVJPKSkKLSAgICBHTF9DTUQoZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCkpCisg
ICAgR0xfQ01EKGdsVW5pZm9ybU1hdHJpeDRmdihzaGFkZXJJbmZvLT5tYXRyaXhWYXJpYWJsZSgp
LCAxLCBHTF9GQUxTRSwgbTRhbGwpKTsKKyAgICBHTF9DTUQoZ2xTdGVuY2lsT3AoR0xfWkVSTywg
R0xfWkVSTywgR0xfWkVSTykpOworICAgIEdMX0NNRChnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVf
RkFOLCAwLCA0KSk7CiAKICAgICAvLyBOb3cgYXBwbHkgdGhlIGN1cnJlbnQgaW5kZXggdG8gdGhl
IG5ldyBxdWFkLgotICAgIEdMX0NNRChnbFN0ZW5jaWxPcChHTF9SRVBMQUNFLCBHTF9SRVBMQUNF
LCBHTF9SRVBMQUNFKSkKLSAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlckluZm8t
Pm1hdHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNCkpCi0gICAgR0xfQ01EKGdsRHJhd0Fy
cmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpKQorICAgIEdMX0NNRChnbFN0ZW5jaWxPcChHTF9S
RVBMQUNFLCBHTF9SRVBMQUNFLCBHTF9SRVBMQUNFKSk7CisgICAgR0xfQ01EKGdsVW5pZm9ybU1h
dHJpeDRmdihzaGFkZXJJbmZvLT5tYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwgbTQpKTsK
KyAgICBHTF9DTUQoZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCkpOwogCiAgICAg
Ly8gQ2xlYXIgdGhlIHN0YXRlLgotICAgIEdMX0NNRChnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCi0gICAgR0xfQ01EKGdsU3RlbmNpbE1hc2so
MCkpCisgICAgR0xfQ01EKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlckluZm8tPnZl
cnRleEF0dHJpYigpKSk7CisgICAgR0xfQ01EKGdsU3RlbmNpbE1hc2soMCkpOwogCiAgICAgLy8g
SW5jcmVhc2Ugc3RlbmNpbEluZGV4IGFuZCBhcHBseSBzdGVuY2lsIHRlc3RpbmcuCiAgICAgc3Rl
bmNpbEluZGV4ICo9IDI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136384</attachid>
            <date>2012-04-09 20:03:32 -0700</date>
            <delta_ts>2012-04-09 22:47:51 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-83477-20120409200330.patch</filename>
            <type>text/plain</type>
            <size>18858</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5MWExNmE4NDY4Mjdh
ZjgzYzg1MGY5ZmVjNjA2YmZlOTQwZDI2NS4uZDRjNWY2NGZjZjNjZTFhMjhmMmU1ZTY5N2JmZGM1
Mjc5ODUyNDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTA5ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1h
cF0gSW1wcm92ZSBUZXh0dXJlTWFwcGVyR0wgcmVhZGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNDc3CisKKyAgICAgICAgQ2hhbmdlIHRo
ZSBkZWJ1Z2dpbmcgbWFjcm9zIGZvciBUZXh0dXJlTWFwcGVyR0wsIHNvIHRoYXQgdGhlIEdMX0NN
RCBjYWxsIGNhbiBpbmNsdWRlIGEgc2VtaWNvbG9uLgorICAgICAgICBNb2RpZnkgc29tZSBpZiBi
bG9ja3MgdG8gaGF2ZSBhbiBlYXJseSByZXR1cm4uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
dGluIFJvYmluc29uLgorCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OnNjaXNzb3JDbGlw
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTERhdGE6OlNoYXJlZEdMRGF0YTo6
YXBwbHlDdXJyZW50Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRh
OjpTaGFyZWRHTERhdGE6On5TaGFyZWRHTERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckdMRGF0YTo6aW5pdGlhbGl6ZVN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckdMOjpiZWdpblBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJHTDo6ZW5kUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdM
OjpkcmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmRpZFJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjppbml0aWFsaXplU3RlbmNpbCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmJpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZUdMOjp+Qml0bWFwVGV4dHVyZUdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHTDo6YmluZFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckdMOjpiZWdpbkNsaXApOgorCiAyMDEyLTA0LTA3ICBObydhbSBSb3NlbnRoYWwg
IDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1dLMl0gRW5hYmxlIHVzaW5n
IGEgc2luZ2xlIFNoYXJlYWJsZUJpdG1hcCBmb3IgbXVsdGlwbGUgdXBkYXRlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcAppbmRleCA4YTI1OTczNTQ4NTU0OWQ0YmU5MWYxYTdiNjJjYjIxYWNhZWEzMTdl
Li43Y2E2MWNjY2E1ZTc0Y2U5NjM3OWI2NjBhYmExMDZiYmE2NTJiZTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcApAQCAtNTAsMjMgKzUwLDkgQEAKICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+
CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1pbmxpbmUgc3RhdGljIHZvaWQgZGVi
dWdHTENvbW1hbmQoY29uc3QgY2hhciogY29tbWFuZCwgaW50IGxpbmUpCi17Ci0gICAgY29uc3Qg
R0xlbnVtIGVyciA9IGdsR2V0RXJyb3IoKTsKLSAgICBpZiAoIWVycikKLSAgICAgICAgcmV0dXJu
OwotICAgIFdURlJlcG9ydEVycm9yKF9fRklMRV9fLCBsaW5lLCBXVEZfUFJFVFRZX0ZVTkNUSU9O
LCAiW1RleHR1cmVNYXBwZXIgR0xdIENvbW1hbmQgZmFpbGVkOiAlcyAoJXgpXG4iLCBjb21tYW5k
LCBlcnIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi0jaWZuZGVmIE5ERUJVRwot
I2RlZmluZSBHTF9DTUQoeCkge3gsIGRlYnVnR0xDb21tYW5kKCN4LCBfX0xJTkVfXyk7IH0KLSNl
bHNlCi0jZGVmaW5lIEdMX0NNRCh4KSB4OwotI2VuZGlmCisjZGVmaW5lIEdMX0NNRCguLi4pIGRv
IHsgX19WQV9BUkdTX187IEFTU0VSVF9BUkcoX19WQV9BUkdTX18sICFnbEdldEVycm9yKCkpOyB9
IHdoaWxlICgwKQogCituYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgVGV4dHVyZU1hcHBlckdM
RGF0YSB7CiAgICAgc3RydWN0IFNoYXJlZEdMRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJl
ZEdMRGF0YT4gewogI2lmIFBMQVRGT1JNKFFUKSAmJiBRVF9WRVJTSU9OID49IDB4MDUwMDAwCkBA
IC0xNTcsMTkgKzE0MywxOSBAQCBzdHJ1Y3QgVGV4dHVyZU1hcHBlckdMRGF0YSB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBHTGludCB2aWV3cG9ydFs0XTsKLSAgICAg
ICAgICAgIEdMX0NNRChnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JULCB2aWV3cG9ydCkpCi0gICAg
ICAgICAgICBHTF9DTUQoZ2xTY2lzc29yKHJlY3QueCgpLCB2aWV3cG9ydFszXSAtIHJlY3QubWF4
WSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKQorICAgICAgICAgICAgR0xfQ01EKGds
R2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZpZXdwb3J0KSk7CisgICAgICAgICAgICBHTF9DTUQo
Z2xTY2lzc29yKHJlY3QueCgpLCB2aWV3cG9ydFszXSAtIHJlY3QubWF4WSgpLCByZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgYXBwbHlDdXJy
ZW50Q2xpcCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNjaXNzb3JDbGlwKGNsaXBTdGF0ZS5z
Y2lzc29yQm94KTsKLSAgICAgICAgICAgIEdMX0NNRChnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9L
RUVQLCBHTF9LRUVQKSkKLSAgICAgICAgICAgIGdsU3RlbmNpbEZ1bmMoR0xfRVFVQUwsIGNsaXBT
dGF0ZS5zdGVuY2lsSW5kZXggLSAxLCBjbGlwU3RhdGUuc3RlbmNpbEluZGV4IC0gMSk7CisgICAg
ICAgICAgICBHTF9DTUQoZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfS0VFUCkpOwor
ICAgICAgICAgICAgR0xfQ01EKGdsU3RlbmNpbEZ1bmMoR0xfRVFVQUwsIGNsaXBTdGF0ZS5zdGVu
Y2lsSW5kZXggLSAxLCBjbGlwU3RhdGUuc3RlbmNpbEluZGV4IC0gMSkpOwogICAgICAgICAgICAg
aWYgKGNsaXBTdGF0ZS5zdGVuY2lsSW5kZXggPT0gMSkKLSAgICAgICAgICAgICAgICBnbERpc2Fi
bGUoR0xfU1RFTkNJTF9URVNUKTsKKyAgICAgICAgICAgICAgICBHTF9DTUQoZ2xEaXNhYmxlKEdM
X1NURU5DSUxfVEVTVCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGdsRW5h
YmxlKEdMX1NURU5DSUxfVEVTVCk7CisgICAgICAgICAgICAgICAgR0xfQ01EKGdsRW5hYmxlKEdM
X1NURU5DSUxfVEVTVCkpOwogICAgICAgICB9CiAKICAgICAgICAgVGV4dHVyZU1hcHBlclNoYWRl
ck1hbmFnZXIgdGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI7CkBAIC0xOTEsNyArMTc3LDYgQEAg
c3RydWN0IFRleHR1cmVNYXBwZXJHTERhdGEgewogICAgICAgICAgICAgQVNTRVJUKGl0ICE9IGVu
ZCk7CiAgICAgICAgICAgICBnbENvbnRleHREYXRhTWFwKCkucmVtb3ZlKGl0KTsKICAgICAgICAg
fQotCiAgICAgfTsKIAogICAgIFNoYXJlZEdMRGF0YSYgc2hhcmVkR0xEYXRhKCkgY29uc3QKQEAg
LTIzMCw4ICsyMTUsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTERhdGE6OmluaXRpYWxpemVTdGVu
Y2lsKCkKICAgICBpZiAoZGlkTW9kaWZ5U3RlbmNpbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2xDbGVhclN0ZW5jaWwoMCk7Ci0gICAgZ2xDbGVhcihHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwor
ICAgIEdMX0NNRChnbENsZWFyU3RlbmNpbCgwKSk7CisgICAgR0xfQ01EKGdsQ2xlYXIoR0xfU1RF
TkNJTF9CVUZGRVJfQklUKSk7CiAgICAgZGlkTW9kaWZ5U3RlbmNpbCA9IHRydWU7CiB9CiAKQEAg
LTI0OSw3ICsyMzQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6YmVnaW5QYWludGluZygpCiAg
ICAgaWYgKCFpbml0aWFsaXplT3BlbkdMU2hpbXMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z2xHZXRJbnRlZ2VydihHTF9DVVJSRU5UX1BST0dSQU0sICZkYXRhKCkucHJldmlvdXNQcm9ncmFt
KTsKKyAgICBHTF9DTUQoZ2xHZXRJbnRlZ2VydihHTF9DVVJSRU5UX1BST0dSQU0sICZkYXRhKCku
cHJldmlvdXNQcm9ncmFtKSk7CiAgICAgZGF0YSgpLnByZXZpb3VzU2Npc3NvclN0YXRlID0gZ2xJ
c0VuYWJsZWQoR0xfU0NJU1NPUl9URVNUKTsKICAgICBkYXRhKCkucHJldmlvdXNEZXB0aFN0YXRl
ID0gZ2xJc0VuYWJsZWQoR0xfREVQVEhfVEVTVCk7CiAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RF
U1QpOwpAQCAtMjYxLDkgKzI0Niw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpiZWdpblBhaW50
aW5nKCkKICAgICB9CiAjZW5kaWYKICAgICBkYXRhKCkuZGlkTW9kaWZ5U3RlbmNpbCA9IGZhbHNl
OwotICAgIGdsRGVwdGhNYXNrKDApOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIGRh
dGEoKS52aWV3cG9ydCk7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9TQ0lTU09SX0JPWCwgZGF0YSgp
LnByZXZpb3VzU2Npc3Nvcik7CisgICAgR0xfQ01EKGdsRGVwdGhNYXNrKDApKTsKKyAgICBHTF9D
TUQoZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgZGF0YSgpLnZpZXdwb3J0KSk7CisgICAgR0xf
Q01EKGdsR2V0SW50ZWdlcnYoR0xfU0NJU1NPUl9CT1gsIGRhdGEoKS5wcmV2aW91c1NjaXNzb3Ip
KTsKICAgICBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YXRlLnN0ZW5jaWxJbmRleCA9IDE7
CiAgICAgZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGF0ZS5zY2lzc29yQm94ID0gSW50UmVj
dCgwLCAwLCBkYXRhKCkudmlld3BvcnRbMl0sIGRhdGEoKS52aWV3cG9ydFszXSk7CiAgICAgYmlu
ZFN1cmZhY2UoMCk7CkBAIC0yODksNyArMjc0LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmVu
ZFBhaW50aW5nKCkKICAgICBlbHNlCiAgICAgICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsK
IAotCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTMyMCwxMyArMzA0LDEzIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVy
ZSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYKICAgICBlbHNl
CiAgICAgICAgIHNoYWRlckluZm8gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBl
clNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
cjo6U2ltcGxlKTsKIAotICAgIEdMX0NNRChnbFVzZVByb2dyYW0oc2hhZGVySW5mby0+aWQoKSkp
Ci0gICAgR0xfQ01EKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVySW5mby0+dmVydGV4
QXR0cmliKCkpKQotICAgIEdMX0NNRChnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApKQotICAg
IEdMX0NNRChnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpKQotICAgIEdMX0NN
RChnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKSkKKyAgICBHTF9DTUQoZ2xVc2VQcm9n
cmFtKHNoYWRlckluZm8tPmlkKCkpKTsKKyAgICBHTF9DTUQoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpOworICAgIEdMX0NNRChnbEFjdGl2ZVRl
eHR1cmUoR0xfVEVYVFVSRTApKTsKKyAgICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCB0ZXh0dXJlKSk7CisgICAgR0xfQ01EKGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IDApKTsKICAgICBjb25zdCBHTGZsb2F0IHVuaXRSZWN0W10gPSB7MCwgMCwgMSwgMCwgMSwgMSwg
MCwgMX07Ci0gICAgR0xfQ01EKGdsVmVydGV4QXR0cmliUG9pbnRlcihzaGFkZXJJbmZvLT52ZXJ0
ZXhBdHRyaWIoKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB1bml0UmVjdCkpCisgICAgR0xf
Q01EKGdsVmVydGV4QXR0cmliUG9pbnRlcihzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSwgMiwg
R0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB1bml0UmVjdCkpOwogCiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggYWRqdXN0ZWRNb2RlbFZpZXdNYXRyaXgobW9kZWxWaWV3TWF0cml4KTsKICAgICAvLyBD
aGVjayBpZiB0aGUgdHJhbnNmb3JtZWQgdGFyZ2V0IHJlY3QgaGFzIHRoZSBzYW1lIHNoYXBlL2Rp
bWVuc2lvbnMgYXMgdGhlIGRyYXduIHRleHR1cmUgKGkuZS4gdHJhbnNsYXRlZCBvbmx5KS4KQEAg
LTM2MywyMiArMzQ3LDIyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSh1aW50
MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYKICAgICAgICAgMCwgMCwg
MSwgMCwKICAgICAgICAgMCwgKGZsYWdzICYgU2hvdWxkRmxpcFRleHR1cmUpID8gMSA6IDAsIDAs
IDF9OwogCi0gICAgR0xfQ01EKGdsVW5pZm9ybU1hdHJpeDRmdihzaGFkZXJJbmZvLT5tYXRyaXhW
YXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwgbTQpKQotICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0
ZnYoc2hhZGVySW5mby0+c291cmNlTWF0cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00c3Jj
KSkKLSAgICBHTF9DTUQoZ2xVbmlmb3JtMWkoc2hhZGVySW5mby0+c291cmNlVGV4dHVyZVZhcmlh
YmxlKCksIDApKQorICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+bWF0
cml4VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00KSk7CisgICAgR0xfQ01EKGdsVW5pZm9ybU1h
dHJpeDRmdihzaGFkZXJJbmZvLT5zb3VyY2VNYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwg
bTRzcmMpKTsKKyAgICBHTF9DTUQoZ2xVbmlmb3JtMWkoc2hhZGVySW5mby0+c291cmNlVGV4dHVy
ZVZhcmlhYmxlKCksIDApKTsKIAogICAgIHNoYWRlckluZm8tPnByZXBhcmUob3BhY2l0eSwgbWFz
a1RleHR1cmUpOwogCiAgICAgYm9vbCBuZWVkc0JsZW5kaW5nID0gKGZsYWdzICYgU3VwcG9ydHNC
bGVuZGluZykgfHwgb3BhY2l0eSA8IDAuOTkgfHwgbWFza1RleHR1cmU7CiAKICAgICBpZiAobmVl
ZHNCbGVuZGluZykgewotICAgICAgICBHTF9DTUQoZ2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVf
TUlOVVNfU1JDX0FMUEhBKSkKLSAgICAgICAgR0xfQ01EKGdsRW5hYmxlKEdMX0JMRU5EKSkKKyAg
ICAgICAgR0xfQ01EKGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSkp
OworICAgICAgICBHTF9DTUQoZ2xFbmFibGUoR0xfQkxFTkQpKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgR0xfQ01EKGdsRGlzYWJsZShHTF9CTEVORCkpCisgICAgICAgIEdMX0NNRChnbERpc2FibGUo
R0xfQkxFTkQpKTsKIAotICAgIEdMX0NNRChnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAw
LCA0KSkKLSAgICBHTF9DTUQoZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVySW5mby0+
dmVydGV4QXR0cmliKCkpKQorICAgIEdMX0NNRChnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFO
LCAwLCA0KSk7CisgICAgR0xfQ01EKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlcklu
Zm8tPnZlcnRleEF0dHJpYigpKSk7CiB9CiAKIGNvbnN0IGNoYXIqIFRleHR1cmVNYXBwZXJHTDo6
dHlwZSgpIGNvbnN0CkBAIC0zOTQsMTkgKzM3OCwxOSBAQCBib29sIEJpdG1hcFRleHR1cmVHTDo6
Y2FuUmV1c2VXaXRoKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgRmxhZ3MpCiB2b2lkIEJp
dG1hcFRleHR1cmVHTDo6ZGlkUmVzZXQoKQogewogICAgIGlmICghbV9pZCkKLSAgICAgICAgR0xf
Q01EKGdsR2VuVGV4dHVyZXMoMSwgJm1faWQpKQotCi0gICAgaWYgKG1fdGV4dHVyZVNpemUgIT0g
Y29udGVudFNpemUoKSkgewotICAgICAgICBtX3RleHR1cmVTaXplID0gY29udGVudFNpemUoKTsK
LSAgICAgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9pZCkpCi0gICAg
ICAgIEdMX0NNRChnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9MSU5FQVIpKQotICAgICAgICBHTF9DTUQoZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKSkKLSAgICAgICAgR0xf
Q01EKGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xf
Q0xBTVBfVE9fRURHRSkpCi0gICAgICAgIEdMX0NNRChnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpKQotICAgICAgICBHTF9D
TUQoZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIG1fdGV4dHVyZVNpemUu
d2lkdGgoKSwgbV90ZXh0dXJlU2l6ZS5oZWlnaHQoKSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgMCkpCi0gICAgfQorICAgICAgICBHTF9DTUQoZ2xHZW5UZXh0dXJlcygxLCAmbV9pZCkp
OwogCiAgICAgbV9zdXJmYWNlTmVlZHNSZXNldCA9IHRydWU7CisgICAgaWYgKG1fdGV4dHVyZVNp
emUgPT0gY29udGVudFNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90ZXh0dXJlU2l6
ZSA9IGNvbnRlbnRTaXplKCk7CisgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbV9pZCkpOworICAgIEdMX0NNRChnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpKTsKKyAgICBHTF9DTUQoZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKSk7Cisg
ICAgR0xfQ01EKGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVBfVE9fRURHRSkpOworICAgIEdMX0NNRChnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpKTsKKyAgICBHTF9D
TUQoZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIG1fdGV4dHVyZVNpemUu
d2lkdGgoKSwgbV90ZXh0dXJlU2l6ZS5oZWlnaHQoKSwgMCwgR0xfQkdSQSwgR0xfVU5TSUdORURf
QllURSwgMCkpOwogfQogCiBzdGF0aWMgdm9pZCBzd2l6emxlQkdSQVRvUkdCQSh1aW50MzJfdCog
ZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgaW50IHN0cmlkZSA9IDApCkBAIC00NDQsNyArNDI4
LDcgQEAgc3RhdGljIGJvb2wgZHJpdmVyU3VwcG9ydHNTdWJJbWFnZSgpCiB2b2lkIEJpdG1hcFRl
eHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCogZGF0YSwgY29uc3QgSW50UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGlu
ZSkKIHsKICAgICBHTHVpbnQgZ2xGb3JtYXQgPSBHTF9SR0JBOwotICAgIEdMX0NNRChnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1faWQpKQorICAgIEdMX0NNRChnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1faWQpKTsKIAogICAgIGlmIChkcml2ZXJTdXBwb3J0c0JHUkFTd2l6emxp
bmcoKSkKICAgICAgICAgZ2xGb3JtYXQgPSBHTF9CR1JBOwpAQCAtNDUyLDcgKzQzNiw3IEBAIHZv
aWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBkYXRhLCBjb25z
dCBJbnRSZWN0JiB0YXJnZXRSZWN0CiAgICAgICAgIHN3aXp6bGVCR1JBVG9SR0JBKHN0YXRpY19j
YXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLCB0YXJnZXRSZWN0LnNpemUo
KSwgYnl0ZXNQZXJMaW5lIC8gNCk7CiAKICAgICBpZiAoYnl0ZXNQZXJMaW5lID09IHRhcmdldFJl
Y3Qud2lkdGgoKSAvIDQgJiYgc291cmNlT2Zmc2V0ID09IEludFBvaW50Ojp6ZXJvKCkpIHsKLSAg
ICAgICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0
LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWln
aHQoKSwgZ2xGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIChjb25zdCBjaGFyKilkYXRhKSkKKyAg
ICAgICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0
LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWln
aHQoKSwgZ2xGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIChjb25zdCBjaGFyKilkYXRhKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2MSwxOSArNDQ1LDE5IEBAIHZvaWQgQml0bWFw
VGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBkYXRhLCBjb25zdCBJbnRSZWN0
JiB0YXJnZXRSZWN0CiAgICAgICAgIGNvbnN0IGNoYXIqIGJpdHMgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSk7CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGFyZ2V0UmVjdC5o
ZWlnaHQoKTsgKyt5KSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyICpyb3cgPSBiaXRzICsgKChz
b3VyY2VPZmZzZXQueSgpICsgeSkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICog
NCk7Ci0gICAgICAgICAgICBHTF9DTUQoZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSArIHksIHRhcmdldFJlY3Qud2lkdGgoKSwg
MSwgZ2xGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIHJvdykpCisgICAgICAgICAgICBHTF9DTUQo
Z2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdldFJlY3QueCgpLCB0YXJnZXRS
ZWN0LnkoKSArIHksIHRhcmdldFJlY3Qud2lkdGgoKSwgMSwgZ2xGb3JtYXQsIEdMX1VOU0lHTkVE
X0JZVEUsIHJvdykpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAv
LyBVc2UgdGhlIE9wZW5HTCBzdWItaW1hZ2UgZXh0ZW5zaW9uLCBub3cgdGhhdCB3ZSBrbm93IGl0
J3MgYXZhaWxhYmxlLgotICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIGJ5
dGVzUGVyTGluZSAvIDQpOwotICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywg
c291cmNlT2Zmc2V0LnkoKSk7Ci0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhF
TFMsIHNvdXJjZU9mZnNldC54KCkpOwotICAgIEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0Lndp
ZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAo
Y29uc3QgY2hhciopZGF0YSkpCi0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdU
SCwgMCk7Ci0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTLCAwKTsKLSAgICBn
bFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgMCk7CisgICAgR0xfQ01EKGdsUGl4
ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIGJ5dGVzUGVyTGluZSAvIDQpKTsKKyAgICBH
TF9DTUQoZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTLCBzb3VyY2VPZmZzZXQueSgp
KSk7CisgICAgR0xfQ01EKGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCBzb3Vy
Y2VPZmZzZXQueCgpKSk7CisgICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwg
dGFyZ2V0UmVjdC5oZWlnaHQoKSwgZ2xGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIChjb25zdCBj
aGFyKilkYXRhKSk7CisgICAgR0xfQ01EKGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5H
VEgsIDApKTsKKyAgICBHTF9DTUQoZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTLCAw
KSk7CisgICAgR0xfQ01EKGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCAwKSk7
CiB9CiAKIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2Us
IGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCkBAIC01
MjMsMzMgKzUwNywzMyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6aW5pdGlhbGl6ZVN0ZW5jaWwo
KQogICAgIGlmIChtX3JibykKICAgICAgICAgcmV0dXJuOwogICAgIEdMX0NNRChnbEdlblJlbmRl
cmJ1ZmZlcnMoMSwgJm1fcmJvKSk7Ci0gICAgR0xfQ01EKGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9S
RU5ERVJCVUZGRVIsIG1fcmJvKSkKKyAgICBHTF9DTUQoZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JF
TkRFUkJVRkZFUiwgbV9yYm8pKTsKICNpZmRlZiBURVhNQVBfT1BFTkdMX0VTXzIKLSAgICBHTF9D
TUQoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfU1RFTkNJTF9JTkRF
WDgsIG1fdGV4dHVyZVNpemUud2lkdGgoKSwgbV90ZXh0dXJlU2l6ZS5oZWlnaHQoKSkpCisgICAg
R0xfQ01EKGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1NURU5DSUxf
SU5ERVg4LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCkpKTsK
ICNlbHNlCi0gICAgR0xfQ01EKGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIs
IEdMX0RFUFRIX1NURU5DSUwsIG1fdGV4dHVyZVNpemUud2lkdGgoKSwgbV90ZXh0dXJlU2l6ZS5o
ZWlnaHQoKSkpCisgICAgR0xfQ01EKGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZG
RVIsIEdMX0RFUFRIX1NURU5DSUwsIG1fdGV4dHVyZVNpemUud2lkdGgoKSwgbV90ZXh0dXJlU2l6
ZS5oZWlnaHQoKSkpOwogI2VuZGlmCi0gICAgR0xfQ01EKGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9S
RU5ERVJCVUZGRVIsIDApKQotICAgIEdMX0NNRChnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9y
Ym8pKQotICAgIEdMX0NNRChnbENsZWFyU3RlbmNpbCgwKSkKLSAgICBHTF9DTUQoZ2xDbGVhcihH
TF9TVEVOQ0lMX0JVRkZFUl9CSVQpKQorICAgIEdMX0NNRChnbEJpbmRSZW5kZXJidWZmZXIoR0xf
UkVOREVSQlVGRkVSLCAwKSk7CisgICAgR0xfQ01EKGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBt
X3JibykpOworICAgIEdMX0NNRChnbENsZWFyU3RlbmNpbCgwKSk7CisgICAgR0xfQ01EKGdsQ2xl
YXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUKSk7CiB9CiAKIHZvaWQgQml0bWFwVGV4dHVyZUdMOjpi
aW5kKCkKIHsKICAgICBpZiAobV9zdXJmYWNlTmVlZHNSZXNldCB8fCAhbV9mYm8pIHsKICAgICAg
ICAgaWYgKCFtX2ZibykKLSAgICAgICAgICAgIEdMX0NNRChnbEdlbkZyYW1lYnVmZmVycygxLCAm
bV9mYm8pKQotICAgICAgICBHTF9DTUQoZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1fZmJvKSkKLSAgICAgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCkp
Ci0gICAgICAgIEdMX0NNRChnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgaWQoKSwgMCkpCi0gICAgICAgIEdM
X0NNRChnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCkpCi0gICAgICAgIEdMX0NNRChnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpKQorICAgICAgICAgICAgR0xfQ01EKGdsR2VuRnJhbWVidWZmZXJz
KDEsICZtX2ZibykpOworICAgICAgICBHTF9DTUQoZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1fZmJvKSk7CisgICAgICAgIEdMX0NNRChnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIDApKTsKKyAgICAgICAgR0xfQ01EKGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBpZCgpLCAwKSk7Cisg
ICAgICAgIEdMX0NNRChnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCkpOworICAgICAgICBHTF9DTUQo
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKSk7CiAgICAgICAgIG1fc3VyZmFjZU5lZWRzUmVz
ZXQgPSBmYWxzZTsKICAgICB9IGVsc2UKLSAgICAgICAgR0xfQ01EKGdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBtX2ZibykpCisgICAgICAgIEdMX0NNRChnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pKTsKIAotICAgIEdMX0NNRChnbFZpZXdwb3J0KDAsIDAs
IHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpKQorICAgIEdMX0NNRChnbFZpZXdwb3J0
KDAsIDAsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpKTsKICAgICBtX3RleHR1cmVN
YXBwZXItPmRhdGEoKS5wcm9qZWN0aW9uTWF0cml4ID0gY3JlYXRlUHJvamVjdGlvbk1hdHJpeChz
aXplKCksIGZhbHNlKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBGbG9hdFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudFNpemUoKSkp
OwogfQpAQCAtNTU3LDEzICs1NDEsMTMgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OmJpbmQoKQog
Qml0bWFwVGV4dHVyZUdMOjp+Qml0bWFwVGV4dHVyZUdMKCkKIHsKICAgICBpZiAobV9pZCkKLSAg
ICAgICAgR0xfQ01EKGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1faWQpKQorICAgICAgICBHTF9DTUQo
Z2xEZWxldGVUZXh0dXJlcygxLCAmbV9pZCkpOwogCiAgICAgaWYgKG1fZmJvKQotICAgICAgICBH
TF9DTUQoZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKSkKKyAgICAgICAgR0xfQ01EKGds
RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2ZibykpOwogCiAgICAgaWYgKG1fcmJvKQotICAgICAg
ICBHTF9DTUQoZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX3JibykpCisgICAgICAgIEdMX0NN
RChnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fcmJvKSk7CiB9CiAKIGJvb2wgQml0bWFwVGV4
dHVyZUdMOjppc1ZhbGlkKCkgY29uc3QKQEAgLTU4Nyw5ICs1NzEsOSBAQCB2b2lkIFRleHR1cmVN
YXBwZXJHTDo6YmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSAqc3VyZmFjZVBvaW50ZXIpCiAKICAg
ICBpZiAoIXN1cmZhY2UpIHsKICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoZGF0YSgpLnZp
ZXdwb3J0WzJdLCBkYXRhKCkudmlld3BvcnRbM10pOwotICAgICAgICBHTF9DTUQoZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApKQorICAgICAgICBHTF9DTUQoZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApKTsKICAgICAgICAgZGF0YSgpLnByb2plY3Rpb25NYXRy
aXggPSBjcmVhdGVQcm9qZWN0aW9uTWF0cml4KHZpZXdwb3J0U2l6ZSwgdHJ1ZSk7Ci0gICAgICAg
IEdMX0NNRChnbFZpZXdwb3J0KDAsIDAsIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNp
emUuaGVpZ2h0KCkpKQorICAgICAgICBHTF9DTUQoZ2xWaWV3cG9ydCgwLCAwLCB2aWV3cG9ydFNp
emUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSk7CiAgICAgICAgIGlmIChkYXRhKCku
Y3VycmVudFN1cmZhY2UpCiAgICAgICAgICAgICBlbmRDbGlwKCk7CiAgICAgICAgIGRhdGEoKS5j
dXJyZW50U3VyZmFjZS5jbGVhcigpOwpAQCAtNjMyLDEwICs2MTYsMTAgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyR0w6OmJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4LCBjb24KIAogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gc2hh
ZGVySW5mbyA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
ci5nZXRTaGFkZXJQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpTaW1wbGUpOwog
Ci0gICAgR0xfQ01EKGdsVXNlUHJvZ3JhbShzaGFkZXJJbmZvLT5pZCgpKSkKLSAgICBHTF9DTUQo
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCisg
ICAgR0xfQ01EKGdsVXNlUHJvZ3JhbShzaGFkZXJJbmZvLT5pZCgpKSk7CisgICAgR0xfQ01EKGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVySW5mby0+dmVydGV4QXR0cmliKCkpKTsKICAg
ICBjb25zdCBHTGZsb2F0IHVuaXRSZWN0W10gPSB7MCwgMCwgMSwgMCwgMSwgMSwgMCwgMX07Ci0g
ICAgR0xfQ01EKGdsVmVydGV4QXR0cmliUG9pbnRlcihzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIo
KSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB1bml0UmVjdCkpCisgICAgR0xfQ01EKGdsVmVy
dGV4QXR0cmliUG9pbnRlcihzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSwgMiwgR0xfRkxPQVQs
IEdMX0ZBTFNFLCAwLCB1bml0UmVjdCkpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoZGF0YSgpLnByb2plY3Rpb25NYXRyaXgpCiAgICAg
ICAgICAgICAubXVsdGlwbHkobW9kZWxWaWV3TWF0cml4KQpAQCAtNjYwLDI3ICs2NDQsMjcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW9kZWxWaWV3TWF0cml4LCBjb24KIAogICAgIGludCYgc3RlbmNpbEluZGV4ID0gZGF0YSgp
LnNoYXJlZEdMRGF0YSgpLmNsaXBTdGF0ZS5zdGVuY2lsSW5kZXg7CiAKLSAgICBHTF9DTUQoZ2xF
bmFibGUoR0xfU1RFTkNJTF9URVNUKSkKKyAgICBHTF9DTUQoZ2xFbmFibGUoR0xfU1RFTkNJTF9U
RVNUKSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgZG8gYW55IGFjdHVhbCBkcmF3aW5n
LgotICAgIEdMX0NNRChnbFN0ZW5jaWxGdW5jKEdMX05FVkVSLCBzdGVuY2lsSW5kZXgsIHN0ZW5j
aWxJbmRleCkpCisgICAgR0xfQ01EKGdsU3RlbmNpbEZ1bmMoR0xfTkVWRVIsIHN0ZW5jaWxJbmRl
eCwgc3RlbmNpbEluZGV4KSk7CiAKICAgICAvLyBPcGVyYXRlIG9ubHkgb24gdGhlIHN0ZW5jaWxJ
bmRleCBhbmQgYWJvdmUuCi0gICAgR0xfQ01EKGdsU3RlbmNpbE1hc2soMHhmZiAmIH4oc3RlbmNp
bEluZGV4IC0gMSkpKQorICAgIEdMX0NNRChnbFN0ZW5jaWxNYXNrKDB4ZmYgJiB+KHN0ZW5jaWxJ
bmRleCAtIDEpKSk7CiAKICAgICAvLyBGaXJzdCBjbGVhciB0aGUgZW50aXJlIGJ1ZmZlciBhdCB0
aGUgY3VycmVudCBpbmRleC4KLSAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlcklu
Zm8tPm1hdHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNGFsbCkpCi0gICAgR0xfQ01EKGds
U3RlbmNpbE9wKEdMX1pFUk8sIEdMX1pFUk8sIEdMX1pFUk8pKQotICAgIEdMX0NNRChnbERyYXdB
cnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KSkKKyAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4
NGZ2KHNoYWRlckluZm8tPm1hdHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNGFsbCkpOwor
ICAgIEdMX0NNRChnbFN0ZW5jaWxPcChHTF9aRVJPLCBHTF9aRVJPLCBHTF9aRVJPKSk7CisgICAg
R0xfQ01EKGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpKTsKIAogICAgIC8vIE5v
dyBhcHBseSB0aGUgY3VycmVudCBpbmRleCB0byB0aGUgbmV3IHF1YWQuCi0gICAgR0xfQ01EKGds
U3RlbmNpbE9wKEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UpKQotICAgIEdMX0NN
RChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+bWF0cml4VmFyaWFibGUoKSwgMSwgR0xf
RkFMU0UsIG00KSkKLSAgICBHTF9DTUQoZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwg
NCkpCisgICAgR0xfQ01EKGdsU3RlbmNpbE9wKEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UsIEdMX1JF
UExBQ0UpKTsKKyAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlckluZm8tPm1hdHJp
eFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNCkpOworICAgIEdMX0NNRChnbERyYXdBcnJheXMo
R0xfVFJJQU5HTEVfRkFOLCAwLCA0KSk7CiAKICAgICAvLyBDbGVhciB0aGUgc3RhdGUuCi0gICAg
R0xfQ01EKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlckluZm8tPnZlcnRleEF0dHJp
YigpKSkKLSAgICBHTF9DTUQoZ2xTdGVuY2lsTWFzaygwKSkKKyAgICBHTF9DTUQoZ2xEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkoc2hhZGVySW5mby0+dmVydGV4QXR0cmliKCkpKTsKKyAgICBHTF9D
TUQoZ2xTdGVuY2lsTWFzaygwKSk7CiAKICAgICAvLyBJbmNyZWFzZSBzdGVuY2lsSW5kZXggYW5k
IGFwcGx5IHN0ZW5jaWwgdGVzdGluZy4KICAgICBzdGVuY2lsSW5kZXggKj0gMjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>