<?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>101517</bug_id>
          
          <creation_ts>2012-11-07 15:31:49 -0800</creation_ts>
          <short_desc>[EFL][WK2] Rename variables, structures and functions of the MiniBrowser.</short_desc>
          <delta_ts>2012-11-14 02:44:54 -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>WebKit EFL</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="Byungwoo Lee">bw80.lee</reporter>
          <assigned_to name="Byungwoo Lee">bw80.lee</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>761109</commentid>
    <comment_count>0</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-07 15:31:49 -0800</bug_when>
    <thetext>Need to arrange the naming of the MiniBrowser source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761125</commentid>
    <comment_count>1</comment_count>
      <attachid>172885</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-07 15:44:42 -0800</bug_when>
    <thetext>Created attachment 172885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761203</commentid>
    <comment_count>2</comment_count>
      <attachid>172885</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-07 17:24:53 -0800</bug_when>
    <thetext>Comment on attachment 172885
Patch

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

Should we change existing naming ? Christophe, do you agree this change ?

&gt; Tools/MiniBrowser/efl/main.c:102
&gt; +static Browser_Window *find_window_with_elm_window(Evas_Object *elm_window)

browser_window_find is more close EFL style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761226</commentid>
    <comment_count>3</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-07 17:48:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 172885 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172885&amp;action=review
&gt; 
&gt; Should we change existing naming ? Christophe, do you agree this change ?
&gt; 
&gt; &gt; Tools/MiniBrowser/efl/main.c:102
&gt; &gt; +static Browser_Window *find_window_with_elm_window(Evas_Object *elm_window)
&gt; 
&gt; browser_window_find is more close EFL style.

Currently, browser_window_find() returns Browser_Window. and browser_view_find() also returns Browser_Window.

I thought that the name is confused, so I tried to change this.

I&apos;ll change the name to &apos;window_find_with_{ewk_view|elm_window}() and upload again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761256</commentid>
    <comment_count>4</comment_count>
      <attachid>172908</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-07 18:26:39 -0800</bug_when>
    <thetext>Created attachment 172908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761436</commentid>
    <comment_count>5</comment_count>
      <attachid>172948</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-08 00:50:39 -0800</bug_when>
    <thetext>Created attachment 172948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761437</commentid>
    <comment_count>6</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-08 00:51:18 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=172948) [details]
&gt; Patch

Fixed typo in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764133</commentid>
    <comment_count>7</comment_count>
      <attachid>173581</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-12 00:43:11 -0800</bug_when>
    <thetext>Created attachment 173581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764134</commentid>
    <comment_count>8</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-12 00:45:05 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=173581) [details]
&gt; Patch

Rebased with the latest source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766586</commentid>
    <comment_count>9</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-14 01:03:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 172885 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172885&amp;action=review
&gt; 
&gt; Should we change existing naming ? Christophe, do you agree this change ?

Christophe, do you agree this patch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766597</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-14 01:10:41 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 172885 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172885&amp;action=review
&gt; &gt; 
&gt; &gt; Should we change existing naming ? Christophe, do you agree this change ?
&gt; 
&gt; Christophe, do you agree this patch ?

Sure, LGTM. I also think a clean up was needed.
Personally, I would also like the file to be split because main.c is becoming too big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766599</commentid>
    <comment_count>11</comment_count>
      <attachid>173581</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-14 01:15:39 -0800</bug_when>
    <thetext>Comment on attachment 173581
Patch

looks nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766602</commentid>
    <comment_count>12</comment_count>
      <attachid>173581</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 01:18:50 -0800</bug_when>
    <thetext>Comment on attachment 173581
Patch

Rejecting attachment 173581 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:
25 succeeded at 819 (offset 5 lines).
Hunk #26 succeeded at 894 (offset 5 lines).
Hunk #27 succeeded at 905 (offset 5 lines).
Hunk #28 succeeded at 940 with fuzz 2 (offset 5 lines).
Hunk #29 succeeded at 974 (offset 5 lines).
Hunk #30 FAILED at 1026.
2 out of 30 hunks FAILED -- saving rejects to file Tools/MiniBrowser/efl/main.c.rej

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

Full output: http://queues.webkit.org/results/14815985</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766655</commentid>
    <comment_count>13</comment_count>
      <attachid>174115</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-14 02:09:34 -0800</bug_when>
    <thetext>Created attachment 174115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766657</commentid>
    <comment_count>14</comment_count>
      <attachid>174115</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-14 02:10:02 -0800</bug_when>
    <thetext>Comment on attachment 174115
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766682</commentid>
    <comment_count>15</comment_count>
      <attachid>174115</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 02:44:49 -0800</bug_when>
    <thetext>Comment on attachment 174115
Patch

Clearing flags on attachment: 174115

Committed r134583: &lt;http://trac.webkit.org/changeset/134583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766683</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 02:44:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172885</attachid>
            <date>2012-11-07 15:44:42 -0800</date>
            <delta_ts>2012-11-07 18:26:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101517-20121108084251.patch</filename>
            <type>text/plain</type>
            <size>41500</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODA5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzMwNGQwNTg0NGYxZDBlZDQ3OTg3ODM2MmYzYzA0MWYy
ZGVlYjZlYS4uZTA0ZjgxOGYxMWM1NTRkZjgzM2UxYzhmYjhhMmU3OGNkMThiMWE4MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDEyLTExLTA3ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIE1pbmlCcm93c2VyIHJlZmFjdG9yaW5nIGZvciB0aGUgY29uc2lz
dGFudCBuYW1pbmcuIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAxNTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVuYW1lIHZhcmlhYmxlcywgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIG9mIHRoZSBN
aW5pQnJvd3NlcgorICAgICAgICBmb3IgdGhlIGNvbnNpc3RhbnQgbmFtaW5nLgorCisgICAgICAg
ICogTWluaUJyb3dzZXIvZWZsL21haW4uYzoKKyAgICAgICAgKG1pbmlCcm93c2VyVmlld1NtYXJ0
Q2xhc3MpOgorICAgICAgICAoX0Jyb3dzZXJfV2luZG93KToKKyAgICAgICAgKGZpbmRfd2luZG93
X3dpdGhfZXdrX3ZpZXcpOgorICAgICAgICAod2luZG93X2ZyZWUpOgorICAgICAgICAodmlld19m
b2N1c19zZXQpOgorICAgICAgICAob25fbW91c2VfZG93bik6CisgICAgICAgIChvbl90aXRsZV9j
aGFuZ2VkKToKKyAgICAgICAgKG9uX3VybF9jaGFuZ2VkKToKKyAgICAgICAgKG9uX2JhY2tfZm9y
d2FyZF9saXN0X2NoYW5nZWQpOgorICAgICAgICAob25fbmV3X3dpbmRvdyk6CisgICAgICAgIChv
bl9jbG9zZV93aW5kb3cpOgorICAgICAgICAob25fcHJvZ3Jlc3MpOgorICAgICAgICAob25fZXJy
b3IpOgorICAgICAgICAob25fZG93bmxvYWRfcmVxdWVzdCk6CisgICAgICAgIChjbG9zZV9maWxl
X3BpY2tlcik6CisgICAgICAgIChvbl9maWxlcGlja2VyX3BhcmVudF9kZWxldGlvbik6CisgICAg
ICAgIChvbl9maWxlcGlja2VyX2RlbGV0aW9uKToKKyAgICAgICAgKG9uX2ZpbGVzZWxlY3Rvcl9k
b25lKToKKyAgICAgICAgKG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0KToKKyAgICAgICAgKG9uX2Rv
d25sb2FkX2ZpbmlzaGVkKToKKyAgICAgICAgKG9uX2Rvd25sb2FkX2ZhaWxlZCk6CisgICAgICAg
IChvbl9mYXZpY29uX3JlY2VpdmVkKToKKyAgICAgICAgKG9uX3ZpZXdfaWNvbl9jaGFuZ2VkKToK
KyAgICAgICAgKG9uX3VybF9iYXJfYWN0aXZhdGVkKToKKyAgICAgICAgKG9uX3VybF9iYXJfY2xp
Y2tlZCk6CisgICAgICAgIChvbl9iYWNrX2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAgKG9uX2Zv
cndhcmRfYnV0dG9uX2NsaWNrZWQpOgorICAgICAgICAob25fcmVmcmVzaF9idXR0b25fY2xpY2tl
ZCk6CisgICAgICAgIChvbl9qYXZhc2NyaXB0X2FsZXJ0KToKKyAgICAgICAgKG9uX2phdmFzY3Jp
cHRfY29uZmlybSk6CisgICAgICAgIChvbl9qYXZhc2NyaXB0X3Byb21wdCk6CisgICAgICAgIChh
dXRoX3BvcHVwX2Nsb3NlKToKKyAgICAgICAgKG9uX2F1dGhfY2FuY2VsKToKKyAgICAgICAgKG9u
X2F1dGhfb2spOgorICAgICAgICAob25fYXV0aGVudGljYXRpb25fcmVxdWVzdCk6CisgICAgICAg
IChvbl90b29sdGlwX3RleHRfc2V0KToKKyAgICAgICAgKG9uX3Rvb2x0aXBfdGV4dF91bnNldCk6
CisgICAgICAgIChvbl9ob21lX2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAgKG9uX3dpbmRvd19k
ZWxldGlvbik6CisgICAgICAgICh3aW5kb3dfY3JlYXRlKToKKwogMjAxMi0xMS0wNyAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBnYXJkZW4tby1tYXRpYyBz
aG91bGQgaGFuZGxlIGNvbmN1cnJlbnQgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IDFj
ZTRkMmVlMzFkMDJiY2UwY2IyNjU3YjFhY2M2YjhlYTI2YzQ1MDcuLmZiMjg1MjA0Y2Y0YTU4N2Jh
MjZlNzRjY2E0YzVkMTUzNjRiYWQyMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2Vm
bC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpAQCAtNDMsMjAgKzQz
LDMzIEBAIHN0YXRpYyBFaW5hX0Jvb2wgZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkID0gRUlOQV9G
QUxTRTsKIHN0YXRpYyBpbnQgd2luZG93X3dpZHRoID0gODAwOwogc3RhdGljIGludCB3aW5kb3df
aGVpZ2h0ID0gNjAwOwogCi1zdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIG1pbmlCcm93c2Vy
Vmlld1NtYXJ0Q2xhc3MoKQorc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzICptaW5pQnJvd3Nl
clZpZXdTbWFydENsYXNzKCkKIHsKICAgICBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgZXdr
Vmlld0NsYXNzID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04oIk1pbmlC
cm93c2VyX1ZpZXciKTsKICAgICByZXR1cm4gJmV3a1ZpZXdDbGFzczsKIH0KIAogdHlwZWRlZiBz
dHJ1Y3QgX0Jyb3dzZXJfV2luZG93IHsKLSAgICBFdmFzX09iamVjdCAqd2luZG93OwotICAgIEV2
YXNfT2JqZWN0ICp3ZWJ2aWV3OworICAgIEV2YXNfT2JqZWN0ICplbG1fd2luZG93OworICAgIEV2
YXNfT2JqZWN0ICpld2tfdmlldzsKICAgICBFdmFzX09iamVjdCAqdXJsX2JhcjsKICAgICBFdmFz
X09iamVjdCAqYmFja19idXR0b247CiAgICAgRXZhc19PYmplY3QgKmZvcndhcmRfYnV0dG9uOwog
fSBCcm93c2VyX1dpbmRvdzsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIEV2YXNfT2JqZWN0ICpw
YXJlbnQ7CisgICAgRXZhc19PYmplY3QgKmVsbV93aW5kb3c7CisgICAgRXdrX0ZpbGVfQ2hvb3Nl
cl9SZXF1ZXN0ICpyZXF1ZXN0OworfSBGaWxlX1NlbGVjdG9yX0RhdGE7CisKK3R5cGVkZWYgc3Ry
dWN0IHsKKyAgICBFdmFzX09iamVjdCAqcG9wdXA7CisgICAgRXdrX0F1dGhfUmVxdWVzdCAqcmVx
dWVzdDsKKyAgICBFdmFzX09iamVjdCAqdXNlcm5hbWVfZW50cnk7CisgICAgRXZhc19PYmplY3Qg
KnBhc3N3b3JkX2VudHJ5OworfSBBdXRoX0RhdGE7CisKIHN0YXRpYyBjb25zdCBFY29yZV9HZXRv
cHQgb3B0aW9ucyA9IHsKICAgICAiTWluaUJyb3dzZXIiLAogICAgICIlcHJvZyBbb3B0aW9uc10g
W3VybF0iLApAQCAtODYsNDMgKzk5LDQzIEBAIHN0YXRpYyBjb25zdCBFY29yZV9HZXRvcHQgb3B0
aW9ucyA9IHsKIAogc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKGNvbnN0IGNo
YXIgKnVybCk7CiAKLXN0YXRpYyBCcm93c2VyX1dpbmRvdyAqYnJvd3Nlcl93aW5kb3dfZmluZChF
dmFzX09iamVjdCAqd2luZG93KQorc3RhdGljIEJyb3dzZXJfV2luZG93ICpmaW5kX3dpbmRvd193
aXRoX2VsbV93aW5kb3coRXZhc19PYmplY3QgKmVsbV93aW5kb3cpCiB7CiAgICAgRWluYV9MaXN0
ICpsOwogICAgIHZvaWQgKmRhdGE7CiAKLSAgICBpZiAoIXdpbmRvdykKKyAgICBpZiAoIWVsbV93
aW5kb3cpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgRUlOQV9MSVNUX0ZPUkVBQ0god2lu
ZG93cywgbCwgZGF0YSkgewotICAgICAgICBCcm93c2VyX1dpbmRvdyAqYnJvd3Nlcl93aW5kb3cg
PSAoQnJvd3Nlcl9XaW5kb3cgKilkYXRhOwotICAgICAgICBpZiAoYnJvd3Nlcl93aW5kb3ctPndp
bmRvdyA9PSB3aW5kb3cpCi0gICAgICAgICAgICByZXR1cm4gYnJvd3Nlcl93aW5kb3c7CisgICAg
ICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKilkYXRhOworICAg
ICAgICBpZiAod2luZG93LT5lbG1fd2luZG93ID09IGVsbV93aW5kb3cpCisgICAgICAgICAgICBy
ZXR1cm4gd2luZG93OwogICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIEJyb3dz
ZXJfV2luZG93ICpicm93c2VyX3ZpZXdfZmluZChFdmFzX09iamVjdCAqdmlldykKK3N0YXRpYyBC
cm93c2VyX1dpbmRvdyAqZmluZF93aW5kb3dfd2l0aF9ld2tfdmlldyhFdmFzX09iamVjdCAqZXdr
X3ZpZXcpCiB7CiAgICAgRWluYV9MaXN0ICpsOwogICAgIHZvaWQgKmRhdGE7CiAKLSAgICBpZiAo
IXZpZXcpCisgICAgaWYgKCFld2tfdmlldykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBF
SU5BX0xJU1RfRk9SRUFDSCh3aW5kb3dzLCBsLCBkYXRhKSB7Ci0gICAgICAgIEJyb3dzZXJfV2lu
ZG93ICpicm93c2VyX3dpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKWRhdGE7Ci0gICAgICAgIGlm
IChicm93c2VyX3dpbmRvdy0+d2VidmlldyA9PSB2aWV3KQotICAgICAgICAgICAgcmV0dXJuIGJy
b3dzZXJfd2luZG93OworICAgICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJf
V2luZG93ICopZGF0YTsKKyAgICAgICAgaWYgKHdpbmRvdy0+ZXdrX3ZpZXcgPT0gZXdrX3ZpZXcp
CisgICAgICAgICAgICByZXR1cm4gd2luZG93OwogICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0K
IAogc3RhdGljIHZvaWQgd2luZG93X2ZyZWUoQnJvd3Nlcl9XaW5kb3cgKndpbmRvdykKIHsKLSAg
ICBldmFzX29iamVjdF9kZWwod2luZG93LT53ZWJ2aWV3KTsKKyAgICBldmFzX29iamVjdF9kZWwo
d2luZG93LT5ld2tfdmlldyk7CiAgICAgLyogVGhlIGVsbV93aW4gd2lsbCB0YWtlIGNhcmUgb2Yg
ZnJlZWluZyBpdHMgY2hpbGRyZW4gKi8KLSAgICBldmFzX29iamVjdF9kZWwod2luZG93LT53aW5k
b3cpOworICAgIGV2YXNfb2JqZWN0X2RlbCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGZyZWUo
d2luZG93KTsKIH0KIApAQCAtMTg4LDEyICsyMDEsMTIgQEAgdmlld19mb2N1c19zZXQoQnJvd3Nl
cl9XaW5kb3cgKndpbmRvdywgRWluYV9Cb29sIGZvY3VzKQogICAgIC8qIFdlIHN0ZWFsIGZvY3Vz
IGF3YXkgZnJvbSBlbG0ncyBmb2N1cyBtb2RlbCBhbmQgc3RhcnQgdG8gZG8gdGhpbmdzCiAgICAg
ICogbWFudWFsbHkgaGVyZSwgc28gZWxtIG5vdyBoYXMgbm8gY2x1ZSB3aGF0J3MgdXAuIFRlbGwg
ZWxtIHRoYXQgaXRzCiAgICAgICogdG9wbGV2ZWwgd2lkZ2V0IGlzIHRvIGJlIHVuZm9jdXNlZCBz
byBlbG0gZ2l2ZXMgdXAgdGhlIGZvY3VzICovCi0gICAgZWxtX29iamVjdF9mb2N1c19zZXQoZWxt
X29iamVjdF90b3Bfd2lkZ2V0X2dldCh3aW5kb3ctPndpbmRvdyksIEVJTkFfRkFMU0UpOwotICAg
IGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPndlYnZpZXcsIGZvY3VzKTsKKyAgICBlbG1f
b2JqZWN0X2ZvY3VzX3NldChlbG1fb2JqZWN0X3RvcF93aWRnZXRfZ2V0KHdpbmRvdy0+ZWxtX3dp
bmRvdyksIEVJTkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmV3
a192aWV3LCBmb2N1cyk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9tb3VzZV9kb3duKHZvaWQgKnVz
ZXJfZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8p
Citvbl9tb3VzZV9kb3duKHZvaWQgKnVzZXJfZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKmV3
a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cg
PSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3du
ICpldiA9IChFdmFzX0V2ZW50X01vdXNlX0Rvd24gKilldmVudF9pbmZvOwpAQCAtMjA0LDcgKzIx
Nyw3IEBAIG9uX21vdXNlX2Rvd24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICplLCBFdmFzX09iamVj
dCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKICAgICBpZiAoZXYtPmJ1dHRvbiA9PSAxKQog
ICAgICAgICB2aWV3X2ZvY3VzX3NldCh3aW5kb3csIEVJTkFfVFJVRSk7CiAgICAgZWxzZSBpZiAo
ZXYtPmJ1dHRvbiA9PSAyKQotICAgICAgICB2aWV3X2ZvY3VzX3NldCh3aW5kb3csICFldmFzX29i
amVjdF9mb2N1c19nZXQod2VidmlldykpOworICAgICAgICB2aWV3X2ZvY3VzX3NldCh3aW5kb3cs
ICFldmFzX29iamVjdF9mb2N1c19nZXQoZXdrX3ZpZXcpKTsKIH0KIAogc3RhdGljIHZvaWQKQEAg
LTIyOCw2MyArMjQxLDYzIEBAIHRpdGxlX3NldChFdmFzX09iamVjdCAqd2luZG93LCBjb25zdCBj
aGFyICp0aXRsZSwgaW50IHByb2dyZXNzKQogfQogCiBzdGF0aWMgdm9pZAotb25fdGl0bGVfY2hh
bmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9p
bmZvKQorb25fdGl0bGVfY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tf
dmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0g
KEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogICAgIGNvbnN0IGNoYXIgKnRpdGxlID0gKGNv
bnN0IGNoYXIgKilldmVudF9pbmZvOwogCi0gICAgdGl0bGVfc2V0KHdpbmRvdy0+d2luZG93LCB0
aXRsZSwgMTAwKTsKKyAgICB0aXRsZV9zZXQod2luZG93LT5lbG1fd2luZG93LCB0aXRsZSwgMTAw
KTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX3VybF9jaGFuZ2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZh
c19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl91cmxfY2hhbmdlZCh2b2lk
ICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsK
ICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRh
OwogCi0gICAgY2hhciAqdXJsID0gZWxtX2VudHJ5X3V0ZjhfdG9fbWFya3VwKGV3a192aWV3X3Vy
bF9nZXQod2luZG93LT53ZWJ2aWV3KSk7CisgICAgY2hhciAqdXJsID0gZWxtX2VudHJ5X3V0Zjhf
dG9fbWFya3VwKGV3a192aWV3X3VybF9nZXQod2luZG93LT5ld2tfdmlldykpOwogICAgIGVsbV9l
bnRyeV9lbnRyeV9zZXQod2luZG93LT51cmxfYmFyLCB1cmwpOwogCiAgICAgZnJlZSh1cmwpOwog
fQogCiBzdGF0aWMgdm9pZAotb25fYmFja19mb3J3YXJkX2xpc3RfY2hhbmdlZCh2b2lkICp1c2Vy
X2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQorb25fYmFja19m
b3J3YXJkX2xpc3RfY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmll
dywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJy
b3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCiAgICAgLyogVXBkYXRlIG5hdmlnYXRpb24gYnV0
dG9ucyBzdGF0ZSAqLwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+YmFja19i
dXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKHdlYnZpZXcpKTsKLSAgICBlbG1fb2JqZWN0
X2Rpc2FibGVkX3NldCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAhZXdrX3ZpZXdfZm9yd2FyZF9w
b3NzaWJsZSh3ZWJ2aWV3KSk7CisgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5i
YWNrX2J1dHRvbiwgIWV3a192aWV3X2JhY2tfcG9zc2libGUoZXdrX3ZpZXcpKTsKKyAgICBlbG1f
b2JqZWN0X2Rpc2FibGVkX3NldCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAhZXdrX3ZpZXdfZm9y
d2FyZF9wb3NzaWJsZShld2tfdmlldykpOwogfQogCiBzdGF0aWMgdm9pZAotb25fbmV3X3dpbmRv
dyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZv
KQorb25fbmV3X3dpbmRvdyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywg
dm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBFdmFzX09iamVjdCAqKm5ld192aWV3ID0gKEV2YXNf
T2JqZWN0ICoqKWV2ZW50X2luZm87CiAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRv
d19jcmVhdGUoTlVMTCk7Ci0gICAgKm5ld192aWV3ID0gd2luZG93LT53ZWJ2aWV3OworICAgICpu
ZXdfdmlldyA9IHdpbmRvdy0+ZXdrX3ZpZXc7CiAgICAgd2luZG93cyA9IGVpbmFfbGlzdF9hcHBl
bmQod2luZG93cywgd2luZG93KTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Nsb3NlX3dpbmRvdyh2
b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQor
b25fY2xvc2Vfd2luZG93KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2
b2lkICpldmVudF9pbmZvKQogewogICAgIHdpbmRvd19jbG9zZSgoQnJvd3Nlcl9XaW5kb3cgKil1
c2VyX2RhdGEpOwogfQogCiBzdGF0aWMgdm9pZAotb25fcHJvZ3Jlc3Modm9pZCAqdXNlcl9kYXRh
LCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKK29uX3Byb2dyZXNzKHZv
aWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQog
ewogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2Rh
dGE7CiAgICAgZG91YmxlIHByb2dyZXNzID0gKihkb3VibGUgKilldmVudF9pbmZvOwogCi0gICAg
dGl0bGVfc2V0KHdpbmRvdy0+d2luZG93LCBld2tfdmlld190aXRsZV9nZXQod2luZG93LT53ZWJ2
aWV3KSwgcHJvZ3Jlc3MgKiAxMDApOworICAgIHRpdGxlX3NldCh3aW5kb3ctPmVsbV93aW5kb3cs
IGV3a192aWV3X3RpdGxlX2dldCh3aW5kb3ctPmV3a192aWV3KSwgcHJvZ3Jlc3MgKiAxMDApOwog
fQogCiBzdGF0aWMgdm9pZAotb25fZXJyb3Iodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAq
d2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKK29uX2Vycm9yKHZvaWQgKnVzZXJfZGF0YSwgRXZh
c19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEVpbmFfU3RyYnVm
KiBidWZmZXI7CisgICAgRWluYV9TdHJidWYgKmJ1ZmZlcjsKICAgICBjb25zdCBFd2tfRXJyb3Ig
KmVycm9yID0gKGNvbnN0IEV3a19FcnJvciAqKWV2ZW50X2luZm87CiAKICAgICAvKiBUaGlzIGlz
IGEgY2FuY2VsbGF0aW9uLCBkbyBub3QgZGlzcGxheSB0aGUgZXJyb3IgcGFnZSAqLwpAQCAtMjk1
LDEyICszMDgsMTIgQEAgb25fZXJyb3Iodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vi
dmlldywgdm9pZCAqZXZlbnRfaW5mbykKICAgICBlaW5hX3N0cmJ1Zl9hcHBlbmRfcHJpbnRmKGJ1
ZmZlciwgIjxodG1sPjxib2R5PjxkaXYgc3R5bGU9XCJjb2xvcjojZmYwMDAwXCI+RVJST1IhPC9k
aXY+PGJyPjxkaXY+Q29kZTogJWQ8YnI+RGVzY3JpcHRpb246ICVzPGJyPlVSTDogJXM8L2Rpdj48
L2JvZHk8L2h0bWw+IiwKICAgICAgICAgZXdrX2Vycm9yX2NvZGVfZ2V0KGVycm9yKSwgZXdrX2Vy
cm9yX2Rlc2NyaXB0aW9uX2dldChlcnJvciksIGV3a19lcnJvcl91cmxfZ2V0KGVycm9yKSk7CiAK
LSAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYnZpZXcsIGVpbmFfc3RyYnVmX3N0cmlu
Z19nZXQoYnVmZmVyKSwgMCwgZXdrX2Vycm9yX3VybF9nZXQoZXJyb3IpKTsKKyAgICBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKGV3a192aWV3LCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KGJ1ZmZl
ciksIDAsIGV3a19lcnJvcl91cmxfZ2V0KGVycm9yKSk7CiAgICAgZWluYV9zdHJidWZfZnJlZShi
dWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZAotb25fZG93bmxvYWRfcmVxdWVzdCh2b2lkICp1c2Vy
X2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQorb25fZG93bmxv
YWRfcmVxdWVzdCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAq
ZXZlbnRfaW5mbykKIHsKICAgICBFd2tfRG93bmxvYWRfSm9iICpkb3dubG9hZCA9IChFd2tfRG93
bmxvYWRfSm9iICopZXZlbnRfaW5mbzsKIApAQCAtMzIxLDE4ICszMzQsMTIgQEAgb25fZG93bmxv
YWRfcmVxdWVzdCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpl
dmVudF9pbmZvKQogICAgIGVpbmFfc3RyYnVmX2ZyZWUoZGVzdGluYXRpb25fcGF0aCk7CiB9CiAK
LXR5cGVkZWYgc3RydWN0IHsKLSAgICBFdmFzX09iamVjdCAqcGFyZW50OwotICAgIEV2YXNfT2Jq
ZWN0ICp3aW5kb3c7Ci0gICAgRXdrX0ZpbGVfQ2hvb3Nlcl9SZXF1ZXN0ICpyZXF1ZXN0OwotfSBG
aWxlU2VsZWN0b3JEYXRhOwotCiBzdGF0aWMgdm9pZCBvbl9maWxlcGlja2VyX3BhcmVudF9kZWxl
dGlvbih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmV2YXMsIEV2YXNfT2JqZWN0ICp3aW5kb3csIHZv
aWQgKmV2ZW50KTsKIAotc3RhdGljIHZvaWQgY2xvc2VfZmlsZV9waWNrZXIoRmlsZVNlbGVjdG9y
RGF0YSogZnNfZGF0YSkKK3N0YXRpYyB2b2lkIGNsb3NlX2ZpbGVfcGlja2VyKEZpbGVfU2VsZWN0
b3JfRGF0YSAqZnNfZGF0YSkKIHsKICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwo
ZnNfZGF0YS0+cGFyZW50LCBFVkFTX0NBTExCQUNLX0RFTCwgb25fZmlsZXBpY2tlcl9wYXJlbnRf
ZGVsZXRpb24pOwotICAgIGV2YXNfb2JqZWN0X2RlbChmc19kYXRhLT53aW5kb3cpOworICAgIGV2
YXNfb2JqZWN0X2RlbChmc19kYXRhLT5lbG1fd2luZG93KTsKICAgICBld2tfb2JqZWN0X3VucmVm
KGZzX2RhdGEtPnJlcXVlc3QpOwogICAgIGZyZWUoZnNfZGF0YSk7CiB9CkBAIC0zNDAsMTkgKzM0
NywxOSBAQCBzdGF0aWMgdm9pZCBjbG9zZV9maWxlX3BpY2tlcihGaWxlU2VsZWN0b3JEYXRhKiBm
c19kYXRhKQogc3RhdGljIHZvaWQKIG9uX2ZpbGVwaWNrZXJfcGFyZW50X2RlbGV0aW9uKHZvaWQg
KnVzZXJfZGF0YSwgRXZhcyAqZXZhcywgRXZhc19PYmplY3QgKndpbmRvdywgdm9pZCAqZXZlbnQp
CiB7Ci0gICAgY2xvc2VfZmlsZV9waWNrZXIoKEZpbGVTZWxlY3RvckRhdGEgKil1c2VyX2RhdGEp
OworICAgIGNsb3NlX2ZpbGVfcGlja2VyKChGaWxlX1NlbGVjdG9yX0RhdGEgKil1c2VyX2RhdGEp
OwogfQogCiBzdGF0aWMgdm9pZAogb25fZmlsZXBpY2tlcl9kZWxldGlvbih2b2lkICp1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0ICp3aW5kb3csIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgY2xvc2Vf
ZmlsZV9waWNrZXIoKEZpbGVTZWxlY3RvckRhdGEgKil1c2VyX2RhdGEpOworICAgIGNsb3NlX2Zp
bGVfcGlja2VyKChGaWxlX1NlbGVjdG9yX0RhdGEgKil1c2VyX2RhdGEpOwogfQogCiBzdGF0aWMg
dm9pZAogb25fZmlsZXNlbGVjdG9yX2RvbmUodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAq
ZmlsZV9zZWxlY3Rvciwgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBGaWxlU2VsZWN0b3JEYXRh
ICpmc19kYXRhID0gKEZpbGVTZWxlY3RvckRhdGEgKil1c2VyX2RhdGE7CisgICAgRmlsZV9TZWxl
Y3Rvcl9EYXRhICpmc19kYXRhID0gKEZpbGVfU2VsZWN0b3JfRGF0YSAqKXVzZXJfZGF0YTsKIAog
ICAgIGNvbnN0IGNoYXIgKnNlbGVjdGVkID0gKGNvbnN0IGNoYXIgKilldmVudF9pbmZvOwogICAg
IGlmIChzZWxlY3RlZCAmJiAqc2VsZWN0ZWQpCkBAIC0zNjIsNDcgKzM2OSw0NyBAQCBvbl9maWxl
c2VsZWN0b3JfZG9uZSh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpmaWxlX3NlbGVjdG9y
LCB2b2lkICpldmVudF9pbgogfQogCiBzdGF0aWMgdm9pZAotb25fZmlsZV9jaG9vc2VyX3JlcXVl
c3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5m
bykKK29uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3Qg
KmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dzZXJfV2luZG93ICphcHBf
ZGF0YSA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBCcm93c2VyX1dpbmRvdyAq
d2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogICAgIEV3a19GaWxlX0Nob29z
ZXJfUmVxdWVzdCAqcmVxdWVzdCA9IChFd2tfRmlsZV9DaG9vc2VyX1JlcXVlc3QgKilldmVudF9p
bmZvOwogCiAgICAgLy8gU2hvdyBiYXNpYyBmaWxlIHBpY2tlciB3aGljaCBkb2VzIG5vdCBjdXJy
ZW50bHkgc3VwcG9ydCBtdWx0aXBsZSBmaWxlcwogICAgIC8vIG9yIE1JTUUgdHlwZSBmaWx0ZXJp
bmcuCi0gICAgRXZhc19PYmplY3QgKndpbmRvdyA9IGVsbV93aW5fYWRkKGFwcF9kYXRhLT53aW5k
b3csICJmaWxlLXBpY2tlci13aW5kb3ciLCBFTE1fV0lOX0RJQUxPR19CQVNJQyk7Ci0gICAgZWxt
X3dpbl90aXRsZV9zZXQod2luZG93LCAiRmlsZSBwaWNrZXIiKTsKLSAgICBlbG1fd2luX21vZGFs
X3NldCh3aW5kb3csIEVJTkFfVFJVRSk7CisgICAgRXZhc19PYmplY3QgKmVsbV93aW5kb3cgPSBl
bG1fd2luX2FkZCh3aW5kb3ctPmVsbV93aW5kb3csICJmaWxlLXBpY2tlci13aW5kb3ciLCBFTE1f
V0lOX0RJQUxPR19CQVNJQyk7CisgICAgZWxtX3dpbl90aXRsZV9zZXQoZWxtX3dpbmRvdywgIkZp
bGUgcGlja2VyIik7CisgICAgZWxtX3dpbl9tb2RhbF9zZXQoZWxtX3dpbmRvdywgRUlOQV9UUlVF
KTsKIAotICAgIEZpbGVTZWxlY3RvckRhdGEqIGZzX2RhdGEgPSAoRmlsZVNlbGVjdG9yRGF0YSop
bWFsbG9jKHNpemVvZihGaWxlU2VsZWN0b3JEYXRhKSk7Ci0gICAgZnNfZGF0YS0+cGFyZW50ID0g
YXBwX2RhdGEtPndpbmRvdzsKLSAgICBmc19kYXRhLT53aW5kb3cgPSB3aW5kb3c7CisgICAgRmls
ZV9TZWxlY3Rvcl9EYXRhICpmc19kYXRhID0gKEZpbGVfU2VsZWN0b3JfRGF0YSAqKW1hbGxvYyhz
aXplb2YoRmlsZV9TZWxlY3Rvcl9EYXRhKSk7CisgICAgZnNfZGF0YS0+cGFyZW50ID0gd2luZG93
LT5lbG1fd2luZG93OworICAgIGZzX2RhdGEtPmVsbV93aW5kb3cgPSBlbG1fd2luZG93OwogICAg
IGZzX2RhdGEtPnJlcXVlc3QgPSBld2tfb2JqZWN0X3JlZihyZXF1ZXN0KTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LCAiZGVsZXRlLHJlcXVlc3QiLCBvbl9maWxl
cGlja2VyX2RlbGV0aW9uLCBmc19kYXRhKTsKLSAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFj
a19hZGQoYXBwX2RhdGEtPndpbmRvdywgRVZBU19DQUxMQkFDS19ERUwsIG9uX2ZpbGVwaWNrZXJf
cGFyZW50X2RlbGV0aW9uLCBmc19kYXRhKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19hZGQoZWxtX3dpbmRvdywgImRlbGV0ZSxyZXF1ZXN0Iiwgb25fZmlsZXBpY2tlcl9kZWxldGlv
biwgZnNfZGF0YSk7CisgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+
ZWxtX3dpbmRvdywgRVZBU19DQUxMQkFDS19ERUwsIG9uX2ZpbGVwaWNrZXJfcGFyZW50X2RlbGV0
aW9uLCBmc19kYXRhKTsKIAotICAgIEV2YXNfT2JqZWN0ICpmaWxlX3NlbGVjdG9yID0gZWxtX2Zp
bGVzZWxlY3Rvcl9hZGQod2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqZmlsZV9zZWxlY3RvciA9
IGVsbV9maWxlc2VsZWN0b3JfYWRkKGVsbV93aW5kb3cpOwogICAgIGNvbnN0IGNoYXIgKmhvbWVf
cGF0aCA9IGdldGVudigiSE9NRSIpOwogICAgIGVsbV9maWxlc2VsZWN0b3JfcGF0aF9zZXQoZmls
ZV9zZWxlY3RvciwgaG9tZV9wYXRoID8gaG9tZV9wYXRoIDogIi9ob21lIik7CiAgICAgZXZhc19v
YmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoZmlsZV9zZWxlY3RvciwgRVZBU19ISU5UX0VYUEFO
RCwgRVZBU19ISU5UX0VYUEFORCk7Ci0gICAgZWxtX3dpbl9yZXNpemVfb2JqZWN0X2FkZCh3aW5k
b3csIGZpbGVfc2VsZWN0b3IpOworICAgIGVsbV93aW5fcmVzaXplX29iamVjdF9hZGQoZWxtX3dp
bmRvdywgZmlsZV9zZWxlY3Rvcik7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhmaWxlX3NlbGVjdG9y
KTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChmaWxlX3NlbGVjdG9yLCAi
ZG9uZSIsIG9uX2ZpbGVzZWxlY3Rvcl9kb25lLCBmc19kYXRhKTsKIAotICAgIGV2YXNfb2JqZWN0
X3Jlc2l6ZSh3aW5kb3csIDQwMCwgNDAwKTsKLSAgICBlbG1fd2luX2NlbnRlcih3aW5kb3csIEVJ
TkFfVFJVRSwgRUlOQV9UUlVFKTsKLSAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdyk7CisgICAg
ZXZhc19vYmplY3RfcmVzaXplKGVsbV93aW5kb3csIDQwMCwgNDAwKTsKKyAgICBlbG1fd2luX2Nl
bnRlcihlbG1fd2luZG93LCBFSU5BX1RSVUUsIEVJTkFfVFJVRSk7CisgICAgZXZhc19vYmplY3Rf
c2hvdyhlbG1fd2luZG93KTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2FkX2ZpbmlzaGVk
KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8p
Citvbl9kb3dubG9hZF9maW5pc2hlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tf
dmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBFd2tfRG93bmxvYWRfSm9iICpkb3dubG9h
ZCA9IChFd2tfRG93bmxvYWRfSm9iICopZXZlbnRfaW5mbzsKICAgICBpbmZvKCJEb3dubG9hZCBm
aW5pc2hlZDogJXNcbiIsICBld2tfZG93bmxvYWRfam9iX2Rlc3RpbmF0aW9uX2dldChkb3dubG9h
ZCkpOwogfQogCiBzdGF0aWMgdm9pZAotb25fZG93bmxvYWRfZmFpbGVkKHZvaWQgKnVzZXJfZGF0
YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9kb3dubG9hZF9m
YWlsZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50
X2luZm8pCiB7CiAgICAgaW5mbygiRG93bmxvYWQgZmFpbGVkIVxuIik7CiB9CkBAIC00MTAsMTIg
KzQxNywxMiBAQCBvbl9kb3dubG9hZF9mYWlsZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVj
dCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHN0YXRpYyB2b2lkCiBvbl9mYXZpY29uX3Jl
Y2VpdmVkKGNvbnN0IGNoYXIgKnBhZ2VfdXJsLCBFdmFzX09iamVjdCAqaWNvbiwgdm9pZCAqZXZl
bnRfaW5mbykKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5k
b3cgKilldmVudF9pbmZvOwotICAgIGlmIChzdHJjbXAocGFnZV91cmwsIGV3a192aWV3X3VybF9n
ZXQoYXBwX2RhdGEtPndlYnZpZXcpKSkKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJy
b3dzZXJfV2luZG93ICopZXZlbnRfaW5mbzsKKyAgICBpZiAoc3RyY21wKHBhZ2VfdXJsLCBld2tf
dmlld191cmxfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
LyogUmVtb3ZlIHByZXZpb3VzIGljb24gZnJvbSBVUkwgYmFyICovCi0gICAgRXZhc19PYmplY3Qg
Km9sZF9pY29uID0gZWxtX29iamVjdF9wYXJ0X2NvbnRlbnRfdW5zZXQoYXBwX2RhdGEtPnVybF9i
YXIsICJpY29uIik7CisgICAgRXZhc19PYmplY3QgKm9sZF9pY29uID0gZWxtX29iamVjdF9wYXJ0
X2NvbnRlbnRfdW5zZXQod2luZG93LT51cmxfYmFyLCAiaWNvbiIpOwogICAgIGlmIChvbGRfaWNv
bikgewogICAgICAgICBldmFzX29iamVjdF91bnJlZihvbGRfaWNvbik7CiAgICAgICAgIGV2YXNf
b2JqZWN0X2RlbChvbGRfaWNvbik7CkBAIC00MjgsMjIgKzQzNSwyMiBAQCBvbl9mYXZpY29uX3Jl
Y2VpdmVkKGNvbnN0IGNoYXIgKnBhZ2VfdXJsLCBFdmFzX09iamVjdCAqaWNvbiwgdm9pZCAqZXZl
bnRfaW5mbykKICAgICAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X21pbl9zZXQoaWNvbiwgNDgs
IDI0KTsKICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbGVkX3NldChpY29uLCBFSU5BX0ZB
TFNFKTsKICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoaWNvbiwgMjQsIDAsIDI0
LCAyNCk7Ci0gICAgICAgIGVsbV9vYmplY3RfcGFydF9jb250ZW50X3NldChhcHBfZGF0YS0+dXJs
X2JhciwgImljb24iLCBpY29uKTsKKyAgICAgICAgZWxtX29iamVjdF9wYXJ0X2NvbnRlbnRfc2V0
KHdpbmRvdy0+dXJsX2JhciwgImljb24iLCBpY29uKTsKICAgICAgICAgZXZhc19vYmplY3RfcmVm
KGljb24pOwogICAgIH0KIH0KIAogc3RhdGljIHZvaWQKLW9uX3ZpZXdfaWNvbl9jaGFuZ2VkKHZv
aWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitv
bl92aWV3X2ljb25fY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmll
dywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAo
QnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9
IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKICAgICAvKiBSZXRyaWV2ZSB0aGUgdmlldydz
IGZhdmljb24gKi8KLSAgICBFd2tfQ29udGV4dCAqY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRf
Z2V0KHdlYnZpZXcpOworICAgIEV3a19Db250ZXh0ICpjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4
dF9nZXQoZXdrX3ZpZXcpOwogICAgIEV3a19GYXZpY29uX0RhdGFiYXNlICppY29uX2RhdGFiYXNl
ID0gZXdrX2NvbnRleHRfZmF2aWNvbl9kYXRhYmFzZV9nZXQoY29udGV4dCk7CiAKLSAgICBjb25z
dCBjaGFyICpwYWdlX3VybCA9IGV3a192aWV3X3VybF9nZXQod2Vidmlldyk7Ci0gICAgRXZhcyAq
ZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHdlYnZpZXcpOwotICAgIGV3a19mYXZpY29uX2Rh
dGFiYXNlX2FzeW5jX2ljb25fZ2V0KGljb25fZGF0YWJhc2UsIHBhZ2VfdXJsLCBldmFzLCBvbl9m
YXZpY29uX3JlY2VpdmVkLCBhcHBfZGF0YSk7CisgICAgY29uc3QgY2hhciAqcGFnZV91cmwgPSBl
d2tfdmlld191cmxfZ2V0KGV3a192aWV3KTsKKyAgICBFdmFzICpldmFzID0gZXZhc19vYmplY3Rf
ZXZhc19nZXQoZXdrX3ZpZXcpOworICAgIGV3a19mYXZpY29uX2RhdGFiYXNlX2FzeW5jX2ljb25f
Z2V0KGljb25fZGF0YWJhc2UsIHBhZ2VfdXJsLCBldmFzLCBvbl9mYXZpY29uX3JlY2VpdmVkLCB3
aW5kb3cpOwogfQogCiBzdGF0aWMgaW50CkBAIC00NjQsNjMgKzQ3MSw2MyBAQCBxdWl0KEVpbmFf
Qm9vbCBzdWNjZXNzLCBjb25zdCBjaGFyICptc2cpCiBzdGF0aWMgdm9pZAogb25fdXJsX2Jhcl9h
Y3RpdmF0ZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqdXJsX2Jhciwgdm9pZCAqZXZl
bnRfaW5mbykKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5k
b3cgKil1c2VyX2RhdGE7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dp
bmRvdyAqKXVzZXJfZGF0YTsKIAogICAgIGNvbnN0IGNoYXIgKm1hcmt1cF91cmwgPSBlbG1fZW50
cnlfZW50cnlfZ2V0KHVybF9iYXIpOwogICAgIGNoYXIgKnVzZXJfdXJsID0gZWxtX2VudHJ5X21h
cmt1cF90b191dGY4KG1hcmt1cF91cmwpOwogICAgIGNoYXIgKnVybCA9IHVybF9mcm9tX3VzZXJf
aW5wdXQodXNlcl91cmwpOwotICAgIGV3a192aWV3X3VybF9zZXQoYXBwX2RhdGEtPndlYnZpZXcs
IHVybCk7CisgICAgZXdrX3ZpZXdfdXJsX3NldCh3aW5kb3ctPmV3a192aWV3LCB1cmwpOwogCiAg
ICAgZnJlZSh1c2VyX3VybCk7CiAgICAgZnJlZSh1cmwpOwogCiAgICAgLyogR2l2ZSBmb2N1cyBi
YWNrIHRvIHRoZSB2aWV3ICovCi0gICAgdmlld19mb2N1c19zZXQoYXBwX2RhdGEsIEVJTkFfVFJV
RSk7CisgICAgdmlld19mb2N1c19zZXQod2luZG93LCBFSU5BX1RSVUUpOwogfQogCiBzdGF0aWMg
dm9pZAogb25fdXJsX2Jhcl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKnVy
bF9iYXIsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRh
ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5k
b3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICAvKiBHcmFiIGZvY3VzIGZy
b20gdGhlIHZpZXcgKi8KLSAgICBldmFzX29iamVjdF9mb2N1c19zZXQoYXBwX2RhdGEtPndlYnZp
ZXcsIEVJTkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmV3a192
aWV3LCBFSU5BX0ZBTFNFKTsKICAgICBlbG1fb2JqZWN0X2ZvY3VzX3NldCh1cmxfYmFyLCBFSU5B
X1RSVUUpOwogfQogCiBzdGF0aWMgdm9pZAogb25fYmFja19idXR0b25fY2xpY2tlZCh2b2lkICp1
c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpiYWNrX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKIHsK
LSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2Rh
dGE7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJf
ZGF0YTsKIAotICAgIGV3a192aWV3X2JhY2soYXBwX2RhdGEtPndlYnZpZXcpOworICAgIGV3a192
aWV3X2JhY2sod2luZG93LT5ld2tfdmlldyk7CiAgICAgLyogVXBkYXRlIGJhY2sgYnV0dG9uIHN0
YXRlICovCi0gICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoYmFja19idXR0b24sICFld2tfdmll
d19iYWNrX3Bvc3NpYmxlKGFwcF9kYXRhLT53ZWJ2aWV3KSk7CisgICAgZWxtX29iamVjdF9kaXNh
YmxlZF9zZXQoYmFja19idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKHdpbmRvdy0+ZXdr
X3ZpZXcpKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2ZvcndhcmRfYnV0dG9uX2NsaWNrZWQodm9p
ZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZm9yd2FyZF9idXR0b24sIHZvaWQgKmV2ZW50X2lu
Zm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0gKEJyb3dzZXJfV2luZG93ICop
dXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cg
Kil1c2VyX2RhdGE7CiAKLSAgICBld2tfdmlld19mb3J3YXJkKGFwcF9kYXRhLT53ZWJ2aWV3KTsK
KyAgICBld2tfdmlld19mb3J3YXJkKHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIC8qIFVwZGF0ZSBm
b3J3YXJkIGJ1dHRvbiBzdGF0ZSAqLwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGZvcndh
cmRfYnV0dG9uLCAhZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShhcHBfZGF0YS0+d2Vidmlldykp
OworICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGZvcndhcmRfYnV0dG9uLCAhZXdrX3ZpZXdf
Zm9yd2FyZF9wb3NzaWJsZSh3aW5kb3ctPmV3a192aWV3KSk7CiB9CiAKIHN0YXRpYyB2b2lkCiBv
bl9yZWZyZXNoX2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKnJl
ZnJlc2hfYnV0dG9uLCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dzZXJfV2luZG93ICph
cHBfZGF0YSA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBCcm93c2VyX1dpbmRv
dyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCiAgICAgRXZhcyAqZXZh
cyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHJlZnJlc2hfYnV0dG9uKTsKICAgICBFaW5hX0Jvb2wg
Y3RybFByZXNzZWQgPSBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZhc19rZXlfbW9kaWZpZXJf
Z2V0KGV2YXMpLCAiQ29udHJvbCIpOwogICAgIGlmIChjdHJsUHJlc3NlZCkgewogICAgICAgICBp
bmZvKCJSZWxvYWRpbmcgYW5kIGJ5cGFzc2luZyBjYWNoZS4uLlxuIik7Ci0gICAgICAgIGV3a192
aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUoYXBwX2RhdGEtPndlYnZpZXcpOworICAgICAgICBld2tf
dmlld19yZWxvYWRfYnlwYXNzX2NhY2hlKHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGluZm8oIlJlbG9hZGluZy4uLlxuIik7Ci0gICAgICAgIGV3a192aWV3X3JlbG9h
ZChhcHBfZGF0YS0+d2Vidmlldyk7CisgICAgICAgIGV3a192aWV3X3JlbG9hZCh3aW5kb3ctPmV3
a192aWV3KTsKICAgICB9CiB9CiAKQEAgLTU0Miw5ICs1NDksOSBAQCBvbl9va19jbGlja2VkKHZv
aWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHN0YXRp
YyB2b2lkCiBvbl9qYXZhc2NyaXB0X2FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0RGF0
YSwgY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0g
YnJvd3Nlcl92aWV3X2ZpbmQoc21hcnREYXRhLT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAq
d2luZG93ID0gZmluZF93aW5kb3dfd2l0aF9ld2tfdmlldyhzbWFydERhdGEtPnNlbGYpOwogCi0g
ICAgRXZhc19PYmplY3QgKmFsZXJ0X3BvcHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPndpbmRv
dyk7CisgICAgRXZhc19PYmplY3QgKmFsZXJ0X3BvcHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ct
PmVsbV93aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGFsZXJ0
X3BvcHVwLCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBlbG1fb2Jq
ZWN0X3RleHRfc2V0KGFsZXJ0X3BvcHVwLCBtZXNzYWdlKTsKICAgICBlbG1fb2JqZWN0X3BhcnRf
dGV4dF9zZXQoYWxlcnRfcG9wdXAsICJ0aXRsZSx0ZXh0IiwgIkFsZXJ0Iik7CkBAIC01NjYsMTEg
KzU3MywxMSBAQCBvbl9qYXZhc2NyaXB0X2FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0
RGF0YSwgY29uc3QgY2hhciAqbWVzc2FnZSkKIHN0YXRpYyBFaW5hX0Jvb2wKIG9uX2phdmFzY3Jp
cHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1l
c3NhZ2UpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IGJyb3dzZXJfdmlld19maW5k
KHNtYXJ0RGF0YS0+c2VsZik7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IGZpbmRfd2lu
ZG93X3dpdGhfZXdrX3ZpZXcoc21hcnREYXRhLT5zZWxmKTsKIAogICAgIEVpbmFfQm9vbCBvayA9
IEVJTkFfRkFMU0U7CiAKLSAgICBFdmFzX09iamVjdCAqY29uZmlybV9wb3B1cCA9IGVsbV9wb3B1
cF9hZGQod2luZG93LT53aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICpjb25maXJtX3BvcHVwID0g
ZWxtX3BvcHVwX2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X3NpemVf
aGludF93ZWlnaHRfc2V0KGNvbmZpcm1fcG9wdXAsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElO
VF9FWFBBTkQpOwogICAgIGVsbV9vYmplY3RfdGV4dF9zZXQoY29uZmlybV9wb3B1cCwgbWVzc2Fn
ZSk7CiAgICAgZWxtX29iamVjdF9wYXJ0X3RleHRfc2V0KGNvbmZpcm1fcG9wdXAsICJ0aXRsZSx0
ZXh0IiwgIkNvbmZpcm1hdGlvbiIpOwpAQCAtNTk4LDI5ICs2MDUsMjkgQEAgb25famF2YXNjcmlw
dF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0RGF0YSwgY29uc3QgY2hhciAqbWVz
c2FnZSkKIHN0YXRpYyBjb25zdCBjaGFyICoKIG9uX2phdmFzY3JpcHRfcHJvbXB0KEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNtYXJ0RGF0YSwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAq
ZGVmYXVsdF92YWx1ZSkKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gYnJvd3Nlcl92
aWV3X2ZpbmQoc21hcnREYXRhLT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0g
ZmluZF93aW5kb3dfd2l0aF9ld2tfdmlldyhzbWFydERhdGEtPnNlbGYpOwogCiAgICAgRWluYV9C
b29sIG9rID0gRUlOQV9GQUxTRTsKIAotICAgIEV2YXNfT2JqZWN0ICpwcm9tcHRfcG9wdXAgPSBl
bG1fcG9wdXBfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqcHJvbXB0X3Bv
cHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0
X3NpemVfaGludF93ZWlnaHRfc2V0KHByb21wdF9wb3B1cCwgRVZBU19ISU5UX0VYUEFORCwgRVZB
U19ISU5UX0VYUEFORCk7CiAgICAgZWxtX29iamVjdF9wYXJ0X3RleHRfc2V0KHByb21wdF9wb3B1
cCwgInRpdGxlLHRleHQiLCAiUHJvbXB0Iik7CiAKICAgICAvKiBQb3B1cCBDb250ZW50ICovCi0g
ICAgRXZhc19PYmplY3QgKmJveCA9IGVsbV9ib3hfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAgICBF
dmFzX09iamVjdCAqYm94ID0gZWxtX2JveF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBl
bG1fYm94X3BhZGRpbmdfc2V0KGJveCwgMCwgNCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50
X3dlaWdodF9zZXQoYm94LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKICAg
ICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KGJveCwgRVZBU19ISU5UX0ZJTEwsIEVW
QVNfSElOVF9GSUxMKTsKICAgICBldmFzX29iamVjdF9zaG93KGJveCk7CiAKLSAgICBFdmFzX09i
amVjdCAqcHJvbXB0ID0gZWxtX2xhYmVsX2FkZCh3aW5kb3ctPndpbmRvdyk7CisgICAgRXZhc19P
YmplY3QgKnByb21wdCA9IGVsbV9sYWJlbF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBl
bG1fb2JqZWN0X3RleHRfc2V0KHByb21wdCwgbWVzc2FnZSk7CiAgICAgZXZhc19vYmplY3Rfc2l6
ZV9oaW50X3dlaWdodF9zZXQocHJvbXB0LCBFVkFTX0hJTlRfRVhQQU5ELCAwLjApOwogICAgIGV2
YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQocHJvbXB0LCBFVkFTX0hJTlRfRklMTCwgMC41
KTsKICAgICBlbG1fYm94X3BhY2tfZW5kKGJveCwgcHJvbXB0KTsKICAgICBldmFzX29iamVjdF9z
aG93KHByb21wdCk7CiAKLSAgICBFdmFzX09iamVjdCAqZW50cnkgPSBlbG1fZW50cnlfYWRkKHdp
bmRvdy0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqZW50cnkgPSBlbG1fZW50cnlfYWRkKHdp
bmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAgZWxtX2VudHJ5X3Njcm9sbGFibGVfc2V0KGVudHJ5LCBF
SU5BX1RSVUUpOwogICAgIGVsbV9lbnRyeV9zaW5nbGVfbGluZV9zZXQoZW50cnksIEVJTkFfVFJV
RSk7CiAgICAgZWxtX2VudHJ5X3RleHRfc3R5bGVfdXNlcl9wdXNoKGVudHJ5LCAiREVGQVVMVD0n
Zm9udF9zaXplPTE4JyIpOwpAQCAtNjU3LDMyICs2NjQsMjUgQEAgb25famF2YXNjcmlwdF9wcm9t
cHQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc21hcnREYXRhLCBjb25zdCBjaGFyICptZXNzYWdlLCBj
b25zdAogCiBzdGF0aWMgRWluYV9Cb29sIG9uX3dpbmRvd19nZW9tZXRyeV9nZXQoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QsIEV2YXNfQ29vcmQgKngsIEV2YXNfQ29vcmQgKnksIEV2YXNfQ29vcmQg
KndpZHRoLCBFdmFzX0Nvb3JkICpoZWlnaHQpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRv
dyA9IGJyb3dzZXJfdmlld19maW5kKHNkLT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2lu
ZG93ID0gZmluZF93aW5kb3dfd2l0aF9ld2tfdmlldyhzZC0+c2VsZik7CiAKLSAgICBldmFzX29i
amVjdF9nZW9tZXRyeV9nZXQod2luZG93LT53aW5kb3csIHgsIHksIHdpZHRoLCBoZWlnaHQpOwor
ICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldCh3aW5kb3ctPmVsbV93aW5kb3csIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwogCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAogc3RhdGljIEVpbmFf
Qm9vbCBvbl93aW5kb3dfZ2VvbWV0cnlfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFz
X0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWln
aHQpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IGJyb3dzZXJfdmlld19maW5kKHNk
LT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gZmluZF93aW5kb3dfd2l0aF9l
d2tfdmlldyhzZC0+c2VsZik7CiAKLSAgICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+d2luZG93
LCB4LCB5KTsKLSAgICBldmFzX29iamVjdF9yZXNpemUod2luZG93LT53aW5kb3csIHdpZHRoLCBo
ZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X21vdmUod2luZG93LT5lbG1fd2luZG93LCB4LCB5KTsK
KyAgICBldmFzX29iamVjdF9yZXNpemUod2luZG93LT5lbG1fd2luZG93LCB3aWR0aCwgaGVpZ2h0
KTsKIAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICBF
dmFzX09iamVjdCAqcG9wdXA7Ci0gICAgRXdrX0F1dGhfUmVxdWVzdCAqcmVxdWVzdDsKLSAgICBF
dmFzX09iamVjdCAqdXNlcm5hbWVfZW50cnk7Ci0gICAgRXZhc19PYmplY3QgKnBhc3N3b3JkX2Vu
dHJ5OwotfSBBdXRoRGF0YTsKLQogc3RhdGljIHZvaWQKLWF1dGhfcG9wdXBfY2xvc2UoQXV0aERh
dGEgKmF1dGhfZGF0YSkKK2F1dGhfcG9wdXBfY2xvc2UoQXV0aF9EYXRhICphdXRoX2RhdGEpCiB7
CiAgICAgZXdrX29iamVjdF91bnJlZihhdXRoX2RhdGEtPnJlcXVlc3QpOwogICAgIGV2YXNfb2Jq
ZWN0X2RlbChhdXRoX2RhdGEtPnBvcHVwKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCBhdXRoX3BvcHVw
X2Nsb3NlKEF1dGhEYXRhICphdXRoX2RhdGEpCiBzdGF0aWMgdm9pZAogb25fYXV0aF9jYW5jZWwo
dm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqb2JqLCB2b2lkICpldmVudF9pbmZvKQogewot
ICAgIEF1dGhEYXRhICphdXRoX2RhdGEgPSAoQXV0aERhdGEgKil1c2VyX2RhdGE7CisgICAgQXV0
aF9EYXRhICphdXRoX2RhdGEgPSAoQXV0aF9EYXRhICopdXNlcl9kYXRhOwogCiAgICAgZXdrX2F1
dGhfcmVxdWVzdF9jYW5jZWwoYXV0aF9kYXRhLT5yZXF1ZXN0KTsKIApAQCAtNzAyLDcgKzcwMiw3
IEBAIG9uX2F1dGhfY2FuY2VsKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9p
ZCAqZXZlbnRfaW5mbykKIHN0YXRpYyB2b2lkCiBvbl9hdXRoX29rKHZvaWQgKnVzZXJfZGF0YSwg
RXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBBdXRoRGF0YSAqYXV0
aF9kYXRhID0gKEF1dGhEYXRhICopdXNlcl9kYXRhOworICAgIEF1dGhfRGF0YSAqYXV0aF9kYXRh
ID0gKEF1dGhfRGF0YSAqKXVzZXJfZGF0YTsKIAogICAgIGNvbnN0IGNoYXIgKnVzZXJuYW1lID0g
ZWxtX2VudHJ5X2VudHJ5X2dldChhdXRoX2RhdGEtPnVzZXJuYW1lX2VudHJ5KTsKICAgICBjb25z
dCBjaGFyICpwYXNzd29yZCA9IGVsbV9lbnRyeV9lbnRyeV9nZXQoYXV0aF9kYXRhLT5wYXNzd29y
ZF9lbnRyeSk7CkBAIC03MTcsMTAgKzcxNywxMCBAQCBvbl9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0
KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKICAg
ICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwog
ICAgIEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3QgPSBld2tfb2JqZWN0X3JlZigoRXdrX0F1dGhf
UmVxdWVzdCAqKWV2ZW50X2luZm8pOwogCi0gICAgQXV0aERhdGEgKmF1dGhfZGF0YSA9IChBdXRo
RGF0YSAqKW1hbGxvYyhzaXplb2YoQXV0aERhdGEpKTsKKyAgICBBdXRoX0RhdGEgKmF1dGhfZGF0
YSA9IChBdXRoX0RhdGEgKiltYWxsb2Moc2l6ZW9mKEF1dGhfRGF0YSkpOwogICAgIGF1dGhfZGF0
YS0+cmVxdWVzdCA9IHJlcXVlc3Q7CiAKLSAgICBFdmFzX09iamVjdCAqYXV0aF9wb3B1cCA9IGVs
bV9wb3B1cF9hZGQod2luZG93LT53aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICphdXRoX3BvcHVw
ID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGF1dGhfZGF0YS0+cG9w
dXAgPSBhdXRoX3BvcHVwOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGF1
dGhfcG9wdXAsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwogICAgIGVsbV9v
YmplY3RfcGFydF90ZXh0X3NldChhdXRoX3BvcHVwLCAidGl0bGUsdGV4dCIsICJBdXRoZW50aWNh
dGlvbiBSZXF1aXJlZCIpOwpAQCAtNzM3LDggKzczNyw4IEBAIG9uX2F1dGhlbnRpY2F0aW9uX3Jl
cXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqb2JqLCB2b2lkICpldmVudF9pbmZv
KQogICAgIEV2YXNfT2JqZWN0ICpsYWJlbCA9IGVsbV9sYWJlbF9hZGQoYXV0aF9wb3B1cCk7CiAg
ICAgZWxtX2xhYmVsX2xpbmVfd3JhcF9zZXQobGFiZWwsIEVMTV9XUkFQX1dPUkQpOwogICAgIEVp
bmFfU3RyYnVmICphdXRoX3RleHQgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKLSAgICBjb25zdCBjaGFy
KiBob3N0ID0gZXdrX2F1dGhfcmVxdWVzdF9ob3N0X2dldChyZXF1ZXN0KTsKLSAgICBjb25zdCBj
aGFyKiByZWFsbSA9IGV3a19hdXRoX3JlcXVlc3RfcmVhbG1fZ2V0KHJlcXVlc3QpOworICAgIGNv
bnN0IGNoYXIgKmhvc3QgPSBld2tfYXV0aF9yZXF1ZXN0X2hvc3RfZ2V0KHJlcXVlc3QpOworICAg
IGNvbnN0IGNoYXIgKnJlYWxtID0gZXdrX2F1dGhfcmVxdWVzdF9yZWFsbV9nZXQocmVxdWVzdCk7
CiAgICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50ZihhdXRoX3RleHQsICJBIHVzZXJuYW1lIGFu
ZCBwYXNzd29yZCBhcmUgYmVpbmcgcmVxdWVzdGVkIGJ5ICVzLiBUaGUgc2l0ZSBzYXlzOiBcIiVz
XCIiLCBob3N0LCByZWFsbSA/IHJlYWxtIDogIiIpOwogICAgIGVsbV9vYmplY3RfdGV4dF9zZXQo
bGFiZWwsIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQoYXV0aF90ZXh0KSk7CiAgICAgZWluYV9zdHJi
dWZfZnJlZShhdXRoX3RleHQpOwpAQCAtODEyLDEwICs4MTIsMTAgQEAgc3RhdGljIHZvaWQKIG9u
X3Rvb2x0aXBfdGV4dF9zZXQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqb2JqLCB2b2lk
ICpldmVudF9pbmZvKQogewogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9X
aW5kb3cgKil1c2VyX2RhdGE7Ci0gICAgY29uc3QgY2hhciogbWVzc2FnZSA9IChjb25zdCBjaGFy
KilldmVudF9pbmZvOworICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UgPSAoY29uc3QgY2hhciopZXZl
bnRfaW5mbzsKIAotICAgIGVsbV9vYmplY3RfdG9vbHRpcF90ZXh0X3NldCh3aW5kb3ctPndlYnZp
ZXcsIG1lc3NhZ2UpOwotICAgIGVsbV9vYmplY3RfdG9vbHRpcF9zaG93KHdpbmRvdy0+d2Vidmll
dyk7CisgICAgZWxtX29iamVjdF90b29sdGlwX3RleHRfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIG1l
c3NhZ2UpOworICAgIGVsbV9vYmplY3RfdG9vbHRpcF9zaG93KHdpbmRvdy0+ZXdrX3ZpZXcpOwog
fQogCiBzdGF0aWMgdm9pZApAQCAtODIzLDIxICs4MjMsMjEgQEAgb25fdG9vbHRpcF90ZXh0X3Vu
c2V0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykK
IHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9k
YXRhOwogCi0gICAgZWxtX29iamVjdF90b29sdGlwX3Vuc2V0KHdpbmRvdy0+d2Vidmlldyk7Cisg
ICAgZWxtX29iamVjdF90b29sdGlwX3Vuc2V0KHdpbmRvdy0+ZXdrX3ZpZXcpOwogfQogCiBzdGF0
aWMgdm9pZAogb25faG9tZV9idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2Jq
ZWN0ICpob21lX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBCcm93c2VyX1dpbmRv
dyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAgQnJvd3Nlcl9X
aW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKIAotICAgIGV3a192
aWV3X3VybF9zZXQoYXBwX2RhdGEtPndlYnZpZXcsIERFRkFVTFRfVVJMKTsKKyAgICBld2tfdmll
d191cmxfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIERFRkFVTFRfVVJMKTsKIH0KIAogc3RhdGljIHZv
aWQKLW9uX3dpbmRvd19kZWxldGlvbih2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3aW5k
b3csIHZvaWQgKmV2ZW50X2luZm8pCitvbl93aW5kb3dfZGVsZXRpb24odm9pZCAqdXNlcl9kYXRh
LCBFdmFzX09iamVjdCAqZWxtX3dpbmRvdywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICB3aW5k
b3dfY2xvc2UoYnJvd3Nlcl93aW5kb3dfZmluZCh3aW5kb3cpKTsKKyAgICB3aW5kb3dfY2xvc2Uo
ZmluZF93aW5kb3dfd2l0aF9lbG1fd2luZG93KGVsbV93aW5kb3cpKTsKIH0KIAogc3RhdGljIEV2
YXNfT2JqZWN0ICoKQEAgLTg1OCwzMyArODU4LDMzIEBAIGNyZWF0ZV90b29sYmFyX2J1dHRvbihF
dmFzX09iamVjdCAqd2luZG93LCBjb25zdCBjaGFyICppY29uX25hbWUpCiAKIHN0YXRpYyBCcm93
c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShjb25zdCBjaGFyICp1cmwpCiB7Ci0gICAgQnJvd3Nl
cl9XaW5kb3cgKmFwcF9kYXRhID0gbWFsbG9jKHNpemVvZihCcm93c2VyX1dpbmRvdykpOwotICAg
IGlmICghYXBwX2RhdGEpIHsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gbWFsbG9jKHNp
emVvZihCcm93c2VyX1dpbmRvdykpOworICAgIGlmICghd2luZG93KSB7CiAgICAgICAgIGluZm8o
IkVSUk9SOiBjb3VsZCBub3QgY3JlYXRlIGJyb3dzZXIgd2luZG93LlxuIik7CiAgICAgICAgIHJl
dHVybiBOVUxMOwogICAgIH0KIAogICAgIC8qIENyZWF0ZSB3aW5kb3cgKi8KLSAgICBhcHBfZGF0
YS0+d2luZG93ID0gZWxtX3dpbl9hZGQoTlVMTCwgIm1pbmlicm93c2VyLXdpbmRvdyIsIEVMTV9X
SU5fQkFTSUMpOwotICAgIGVsbV93aW5fdGl0bGVfc2V0KGFwcF9kYXRhLT53aW5kb3csIEFQUF9O
QU1FKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndpbmRv
dywgImRlbGV0ZSxyZXF1ZXN0Iiwgb25fd2luZG93X2RlbGV0aW9uLCAmYXBwX2RhdGEpOworICAg
IHdpbmRvdy0+ZWxtX3dpbmRvdyA9IGVsbV93aW5fYWRkKE5VTEwsICJtaW5pYnJvd3Nlci13aW5k
b3ciLCBFTE1fV0lOX0JBU0lDKTsKKyAgICBlbG1fd2luX3RpdGxlX3NldCh3aW5kb3ctPmVsbV93
aW5kb3csIEFQUF9OQU1FKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2lu
ZG93LT5lbG1fd2luZG93LCAiZGVsZXRlLHJlcXVlc3QiLCBvbl93aW5kb3dfZGVsZXRpb24sICZ3
aW5kb3cpOwogCiAgICAgLyogQ3JlYXRlIHdpbmRvdyBiYWNrZ3JvdW5kICovCi0gICAgRXZhc19P
YmplY3QgKmJnID0gZWxtX2JnX2FkZChhcHBfZGF0YS0+d2luZG93KTsKKyAgICBFdmFzX09iamVj
dCAqYmcgPSBlbG1fYmdfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAgZWxtX2JnX2NvbG9y
X3NldChiZywgMTkzLCAxOTIsIDE5MSk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdo
dF9zZXQoYmcsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGVsbV93
aW5fcmVzaXplX29iamVjdF9hZGQoYXBwX2RhdGEtPndpbmRvdywgYmcpOworICAgIGVsbV93aW5f
cmVzaXplX29iamVjdF9hZGQod2luZG93LT5lbG1fd2luZG93LCBiZyk7CiAgICAgZXZhc19vYmpl
Y3Rfc2hvdyhiZyk7CiAKICAgICAvKiBDcmVhdGUgdmVydGljYWwgbGF5b3V0ICovCi0gICAgRXZh
c19PYmplY3QgKnZlcnRpY2FsX2xheW91dCA9IGVsbV9ib3hfYWRkKGFwcF9kYXRhLT53aW5kb3cp
OworICAgIEV2YXNfT2JqZWN0ICp2ZXJ0aWNhbF9sYXlvdXQgPSBlbG1fYm94X2FkZCh3aW5kb3ct
PmVsbV93aW5kb3cpOwogICAgIGVsbV9ib3hfcGFkZGluZ19zZXQodmVydGljYWxfbGF5b3V0LCAw
LCAyKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh2ZXJ0aWNhbF9sYXlv
dXQsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGVsbV93aW5fcmVz
aXplX29iamVjdF9hZGQoYXBwX2RhdGEtPndpbmRvdywgdmVydGljYWxfbGF5b3V0KTsKKyAgICBl
bG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdywgdmVydGljYWxfbGF5
b3V0KTsKICAgICBldmFzX29iamVjdF9zaG93KHZlcnRpY2FsX2xheW91dCk7CiAKICAgICAvKiBD
cmVhdGUgaG9yaXpvbnRhbCBsYXlvdXQgZm9yIHRvcCBiYXIgKi8KLSAgICBFdmFzX09iamVjdCAq
aG9yaXpvbnRhbF9sYXlvdXQgPSBlbG1fYm94X2FkZChhcHBfZGF0YS0+d2luZG93KTsKKyAgICBF
dmFzX09iamVjdCAqaG9yaXpvbnRhbF9sYXlvdXQgPSBlbG1fYm94X2FkZCh3aW5kb3ctPmVsbV93
aW5kb3cpOwogICAgIGVsbV9ib3hfaG9yaXpvbnRhbF9zZXQoaG9yaXpvbnRhbF9sYXlvdXQsIEVJ
TkFfVFJVRSk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoaG9yaXpvbnRh
bF9sYXlvdXQsIEVWQVNfSElOVF9FWFBBTkQsIDAuMCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9o
aW50X2FsaWduX3NldChob3Jpem9udGFsX2xheW91dCwgRVZBU19ISU5UX0ZJTEwsIDAuMCk7CkBA
IC04OTIsNTQgKzg5Miw1NCBAQCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUo
Y29uc3QgY2hhciAqdXJsKQogICAgIGV2YXNfb2JqZWN0X3Nob3coaG9yaXpvbnRhbF9sYXlvdXQp
OwogCiAgICAgLyogQ3JlYXRlIEJhY2sgYnV0dG9uICovCi0gICAgYXBwX2RhdGEtPmJhY2tfYnV0
dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKGFwcF9kYXRhLT53aW5kb3csICJhcnJvd19sZWZ0
Iik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT5iYWNrX2J1
dHRvbiwgImNsaWNrZWQiLCBvbl9iYWNrX2J1dHRvbl9jbGlja2VkLCBhcHBfZGF0YSk7Ci0gICAg
ZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoYXBwX2RhdGEtPmJhY2tfYnV0dG9uLCBFSU5BX1RSVUUp
OwotICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGFwcF9kYXRhLT5iYWNrX2J1
dHRvbiwgMC4wLCBFVkFTX0hJTlRfRVhQQU5EKTsKLSAgICBldmFzX29iamVjdF9zaXplX2hpbnRf
YWxpZ25fc2V0KGFwcF9kYXRhLT5iYWNrX2J1dHRvbiwgMC4wLCAwLjUpOwotICAgIGVsbV9ib3hf
cGFja19lbmQoaG9yaXpvbnRhbF9sYXlvdXQsIGFwcF9kYXRhLT5iYWNrX2J1dHRvbik7Ci0gICAg
ZXZhc19vYmplY3Rfc2hvdyhhcHBfZGF0YS0+YmFja19idXR0b24pOworICAgIHdpbmRvdy0+YmFj
a19idXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24od2luZG93LT5lbG1fd2luZG93LCAiYXJy
b3dfbGVmdCIpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmJh
Y2tfYnV0dG9uLCAiY2xpY2tlZCIsIG9uX2JhY2tfYnV0dG9uX2NsaWNrZWQsIHdpbmRvdyk7Cisg
ICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgRUlOQV9UUlVF
KTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5kb3ctPmJhY2tfYnV0
dG9uLCAwLjAsIEVWQVNfSElOVF9FWFBBTkQpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9h
bGlnbl9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgMC4wLCAwLjUpOworICAgIGVsbV9ib3hfcGFj
a19lbmQoaG9yaXpvbnRhbF9sYXlvdXQsIHdpbmRvdy0+YmFja19idXR0b24pOworICAgIGV2YXNf
b2JqZWN0X3Nob3cod2luZG93LT5iYWNrX2J1dHRvbik7CiAKICAgICAvKiBDcmVhdGUgRm9yd2Fy
ZCBidXR0b24gKi8KLSAgICBhcHBfZGF0YS0+Zm9yd2FyZF9idXR0b24gPSBjcmVhdGVfdG9vbGJh
cl9idXR0b24oYXBwX2RhdGEtPndpbmRvdywgImFycm93X3JpZ2h0Iik7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT5mb3J3YXJkX2J1dHRvbiwgImNsaWNrZWQi
LCBvbl9mb3J3YXJkX2J1dHRvbl9jbGlja2VkLCBhcHBfZGF0YSk7Ci0gICAgZWxtX29iamVjdF9k
aXNhYmxlZF9zZXQoYXBwX2RhdGEtPmZvcndhcmRfYnV0dG9uLCBFSU5BX1RSVUUpOwotICAgIGV2
YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGFwcF9kYXRhLT5mb3J3YXJkX2J1dHRvbiwg
MC4wLCBFVkFTX0hJTlRfRVhQQU5EKTsKLSAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25f
c2V0KGFwcF9kYXRhLT5mb3J3YXJkX2J1dHRvbiwgMC4wLCAwLjUpOwotICAgIGVsbV9ib3hfcGFj
a19lbmQoaG9yaXpvbnRhbF9sYXlvdXQsIGFwcF9kYXRhLT5mb3J3YXJkX2J1dHRvbik7Ci0gICAg
ZXZhc19vYmplY3Rfc2hvdyhhcHBfZGF0YS0+Zm9yd2FyZF9idXR0b24pOworICAgIHdpbmRvdy0+
Zm9yd2FyZF9idXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24od2luZG93LT5lbG1fd2luZG93
LCAiYXJyb3dfcmlnaHQiKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2lu
ZG93LT5mb3J3YXJkX2J1dHRvbiwgImNsaWNrZWQiLCBvbl9mb3J3YXJkX2J1dHRvbl9jbGlja2Vk
LCB3aW5kb3cpOworICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9i
dXR0b24sIEVJTkFfVFJVRSk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQo
d2luZG93LT5mb3J3YXJkX2J1dHRvbiwgMC4wLCBFVkFTX0hJTlRfRVhQQU5EKTsKKyAgICBldmFz
X29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIDAuMCwg
MC41KTsKKyAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCB3aW5kb3ctPmZv
cndhcmRfYnV0dG9uKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdy0+Zm9yd2FyZF9idXR0
b24pOwogCiAgICAgLyogQ3JlYXRlIFVSTCBiYXIgKi8KLSAgICBhcHBfZGF0YS0+dXJsX2JhciA9
IGVsbV9lbnRyeV9hZGQoYXBwX2RhdGEtPndpbmRvdyk7Ci0gICAgZWxtX2VudHJ5X3Njcm9sbGFi
bGVfc2V0KGFwcF9kYXRhLT51cmxfYmFyLCBFSU5BX1RSVUUpOwotICAgIGVsbV9lbnRyeV9zY3Jv
bGxiYXJfcG9saWN5X3NldChhcHBfZGF0YS0+dXJsX2JhciwgRUxNX1NDUk9MTEVSX1BPTElDWV9P
RkYsIEVMTV9TQ1JPTExFUl9QT0xJQ1lfT0ZGKTsKLSAgICBlbG1fZW50cnlfc2luZ2xlX2xpbmVf
c2V0KGFwcF9kYXRhLT51cmxfYmFyLCBFSU5BX1RSVUUpOwotICAgIGVsbV9lbnRyeV9jbnBfbW9k
ZV9zZXQoYXBwX2RhdGEtPnVybF9iYXIsIEVMTV9DTlBfTU9ERV9QTEFJTlRFWFQpOwotICAgIGVs
bV9lbnRyeV90ZXh0X3N0eWxlX3VzZXJfcHVzaChhcHBfZGF0YS0+dXJsX2JhciwgIkRFRkFVTFQ9
J2ZvbnRfc2l6ZT0xOCciKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBw
X2RhdGEtPnVybF9iYXIsICJhY3RpdmF0ZWQiLCBvbl91cmxfYmFyX2FjdGl2YXRlZCwgYXBwX2Rh
dGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+dXJsX2Jh
ciwgImNsaWNrZWQiLCBvbl91cmxfYmFyX2NsaWNrZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29i
amVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChhcHBfZGF0YS0+dXJsX2JhciwgRVZBU19ISU5UX0VY
UEFORCwgRVZBU19ISU5UX0VYUEFORCk7Ci0gICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWdu
X3NldChhcHBfZGF0YS0+dXJsX2JhciwgRVZBU19ISU5UX0ZJTEwsIEVWQVNfSElOVF9GSUxMKTsK
LSAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCBhcHBfZGF0YS0+dXJsX2Jh
cik7Ci0gICAgZXZhc19vYmplY3Rfc2hvdyhhcHBfZGF0YS0+dXJsX2Jhcik7CisgICAgd2luZG93
LT51cmxfYmFyID0gZWxtX2VudHJ5X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOworICAgIGVsbV9l
bnRyeV9zY3JvbGxhYmxlX3NldCh3aW5kb3ctPnVybF9iYXIsIEVJTkFfVFJVRSk7CisgICAgZWxt
X2VudHJ5X3Njcm9sbGJhcl9wb2xpY3lfc2V0KHdpbmRvdy0+dXJsX2JhciwgRUxNX1NDUk9MTEVS
X1BPTElDWV9PRkYsIEVMTV9TQ1JPTExFUl9QT0xJQ1lfT0ZGKTsKKyAgICBlbG1fZW50cnlfc2lu
Z2xlX2xpbmVfc2V0KHdpbmRvdy0+dXJsX2JhciwgRUlOQV9UUlVFKTsKKyAgICBlbG1fZW50cnlf
Y25wX21vZGVfc2V0KHdpbmRvdy0+dXJsX2JhciwgRUxNX0NOUF9NT0RFX1BMQUlOVEVYVCk7Cisg
ICAgZWxtX2VudHJ5X3RleHRfc3R5bGVfdXNlcl9wdXNoKHdpbmRvdy0+dXJsX2JhciwgIkRFRkFV
TFQ9J2ZvbnRfc2l6ZT0xOCciKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
d2luZG93LT51cmxfYmFyLCAiYWN0aXZhdGVkIiwgb25fdXJsX2Jhcl9hY3RpdmF0ZWQsIHdpbmRv
dyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+dXJsX2Jhciwg
ImNsaWNrZWQiLCBvbl91cmxfYmFyX2NsaWNrZWQsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rf
c2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT51cmxfYmFyLCBFVkFTX0hJTlRfRVhQQU5ELCBF
VkFTX0hJTlRfRVhQQU5EKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdp
bmRvdy0+dXJsX2JhciwgRVZBU19ISU5UX0ZJTEwsIEVWQVNfSElOVF9GSUxMKTsKKyAgICBlbG1f
Ym94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCB3aW5kb3ctPnVybF9iYXIpOworICAgIGV2
YXNfb2JqZWN0X3Nob3cod2luZG93LT51cmxfYmFyKTsKIAogICAgIC8qIENyZWF0ZSBSZWZyZXNo
IGJ1dHRvbiAqLwotICAgIEV2YXNfT2JqZWN0ICpyZWZyZXNoX2J1dHRvbiA9IGNyZWF0ZV90b29s
YmFyX2J1dHRvbihhcHBfZGF0YS0+d2luZG93LCAicmVmcmVzaCIpOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZChyZWZyZXNoX2J1dHRvbiwgImNsaWNrZWQiLCBvbl9yZWZyZXNo
X2J1dHRvbl9jbGlja2VkLCBhcHBfZGF0YSk7CisgICAgRXZhc19PYmplY3QgKnJlZnJlc2hfYnV0
dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdpbmRvdy0+ZWxtX3dpbmRvdywgInJlZnJlc2gi
KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQocmVmcmVzaF9idXR0b24sICJj
bGlja2VkIiwgb25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCwgd2luZG93KTsKICAgICBldmFzX29i
amVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChyZWZyZXNoX2J1dHRvbiwgMC4wLCBFVkFTX0hJTlRf
RVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHJlZnJlc2hfYnV0
dG9uLCAxLjAsIDAuNSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91dCwg
cmVmcmVzaF9idXR0b24pOwogICAgIGV2YXNfb2JqZWN0X3Nob3cocmVmcmVzaF9idXR0b24pOwog
CiAgICAgLyogQ3JlYXRlIEhvbWUgYnV0dG9uICovCi0gICAgRXZhc19PYmplY3QgKmhvbWVfYnV0
dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKGFwcF9kYXRhLT53aW5kb3csICJob21lIik7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGhvbWVfYnV0dG9uLCAiY2xpY2tlZCIs
IG9uX2hvbWVfYnV0dG9uX2NsaWNrZWQsIGFwcF9kYXRhKTsKKyAgICBFdmFzX09iamVjdCAqaG9t
ZV9idXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24od2luZG93LT5lbG1fd2luZG93LCAiaG9t
ZSIpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChob21lX2J1dHRvbiwgImNs
aWNrZWQiLCBvbl9ob21lX2J1dHRvbl9jbGlja2VkLCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0
X3NpemVfaGludF93ZWlnaHRfc2V0KGhvbWVfYnV0dG9uLCAwLjAsIEVWQVNfSElOVF9FWFBBTkQp
OwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQoaG9tZV9idXR0b24sIDEuMCwg
MC41KTsKICAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCBob21lX2J1dHRv
bik7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhob21lX2J1dHRvbik7CiAKLSAgICAvKiBDcmVhdGUg
d2VidmlldyAqLworICAgIC8qIENyZWF0ZSBld2tfdmlldyAqLwogICAgIEV3a19WaWV3X1NtYXJ0
X0NsYXNzICpld2tWaWV3Q2xhc3MgPSBtaW5pQnJvd3NlclZpZXdTbWFydENsYXNzKCk7CiAgICAg
ZXdrVmlld0NsYXNzLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IG9uX2phdmFzY3JpcHRfYWxlcnQ7
CiAgICAgZXdrVmlld0NsYXNzLT5ydW5famF2YXNjcmlwdF9jb25maXJtID0gb25famF2YXNjcmlw
dF9jb25maXJtOwpAQCAtOTQ3LDUwICs5NDcsNTAgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3
aW5kb3dfY3JlYXRlKGNvbnN0IGNoYXIgKnVybCkKICAgICBld2tWaWV3Q2xhc3MtPndpbmRvd19n
ZW9tZXRyeV9nZXQgPSBvbl93aW5kb3dfZ2VvbWV0cnlfZ2V0OwogICAgIGV3a1ZpZXdDbGFzcy0+
d2luZG93X2dlb21ldHJ5X3NldCA9IG9uX3dpbmRvd19nZW9tZXRyeV9zZXQ7CiAKLSAgICBFdmFz
ICpldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQoYXBwX2RhdGEtPndpbmRvdyk7CisgICAgRXZh
cyAqZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHdpbmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAg
RXZhc19TbWFydCAqc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmZXdrVmlld0NsYXNzLT5z
Yyk7Ci0gICAgYXBwX2RhdGEtPndlYnZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21h
cnQsIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkpOwotICAgIGV3a192aWV3X3RoZW1lX3NldChh
cHBfZGF0YS0+d2VidmlldywgVEhFTUVfRElSICIvZGVmYXVsdC5lZGoiKTsKKyAgICB3aW5kb3ct
PmV3a192aWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBld2tfY29udGV4dF9k
ZWZhdWx0X2dldCgpKTsKKyAgICBld2tfdmlld190aGVtZV9zZXQod2luZG93LT5ld2tfdmlldywg
VEhFTUVfRElSICIvZGVmYXVsdC5lZGoiKTsKIAotICAgIEV3a19TZXR0aW5ncyAqc2V0dGluZ3Mg
PSBld2tfdmlld19zZXR0aW5nc19nZXQoYXBwX2RhdGEtPndlYnZpZXcpOworICAgIEV3a19TZXR0
aW5ncyAqc2V0dGluZ3MgPSBld2tfdmlld19zZXR0aW5nc19nZXQod2luZG93LT5ld2tfdmlldyk7
CiAgICAgZXdrX3NldHRpbmdzX2ZpbGVfYWNjZXNzX2Zyb21fZmlsZV91cmxzX2FsbG93ZWRfc2V0
KHNldHRpbmdzLCBFSU5BX1RSVUUpOwogICAgIGV3a19zZXR0aW5nc19mcmFtZV9mbGF0dGVuaW5n
X2VuYWJsZWRfc2V0KHNldHRpbmdzLCBmcmFtZV9mbGF0dGVuaW5nX2VuYWJsZWQpOwogICAgIGV3
a19zZXR0aW5nc19kZXZlbG9wZXJfZXh0cmFzX2VuYWJsZWRfc2V0KHNldHRpbmdzLCBFSU5BX1RS
VUUpOwogICAgIGV3a19zZXR0aW5nc19wcmVmZXJyZWRfbWluaW11bV9jb250ZW50c193aWR0aF9z
ZXQoc2V0dGluZ3MsIDApOwogCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFw
cF9kYXRhLT53ZWJ2aWV3LCAiYXV0aGVudGljYXRpb24scmVxdWVzdCIsIG9uX2F1dGhlbnRpY2F0
aW9uX3JlcXVlc3QsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQoYXBwX2RhdGEtPndlYnZpZXcsICJjbG9zZSx3aW5kb3ciLCBvbl9jbG9zZV93aW5kb3csIGFw
cF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndl
YnZpZXcsICJjcmVhdGUsd2luZG93Iiwgb25fbmV3X3dpbmRvdywgYXBwX2RhdGEpOwotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImRvd25sb2Fk
LGZhaWxlZCIsIG9uX2Rvd25sb2FkX2ZhaWxlZCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImRvd25sb2FkLGZpbmlzaGVk
Iiwgb25fZG93bmxvYWRfZmluaXNoZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJkb3dubG9hZCxyZXF1ZXN0Iiwgb25f
ZG93bmxvYWRfcmVxdWVzdCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImZpbGUsY2hvb3NlcixyZXF1ZXN0Iiwgb25fZmls
ZV9jaG9vc2VyX3JlcXVlc3QsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJpY29uLGNoYW5nZWQiLCBvbl92aWV3X2ljb25f
Y2hhbmdlZCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChh
cHBfZGF0YS0+d2VidmlldywgImxvYWQsZXJyb3IiLCBvbl9lcnJvciwgYXBwX2RhdGEpOwotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImxvYWQs
cHJvZ3Jlc3MiLCBvbl9wcm9ncmVzcywgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgInRpdGxlLGNoYW5nZWQiLCBvbl90aXRs
ZV9jaGFuZ2VkLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KGFwcF9kYXRhLT53ZWJ2aWV3LCAidXJsLGNoYW5nZWQiLCBvbl91cmxfY2hhbmdlZCwgYXBwX2Rh
dGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2Vidmll
dywgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCBvbl9iYWNrX2ZvcndhcmRfbGlzdF9jaGFu
Z2VkLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9k
YXRhLT53ZWJ2aWV3LCAidG9vbHRpcCx0ZXh0LHNldCIsIG9uX3Rvb2x0aXBfdGV4dF9zZXQsIGFw
cF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndl
YnZpZXcsICJ0b29sdGlwLHRleHQsdW5zZXQiLCBvbl90b29sdGlwX3RleHRfdW5zZXQsIGFwcF9k
YXRhKTsKLQotICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2Vi
dmlldywgRVZBU19DQUxMQkFDS19LRVlfRE9XTiwgb25fa2V5X2Rvd24sIGFwcF9kYXRhKTsKLSAg
ICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsIEVWQVNf
Q0FMTEJBQ0tfTU9VU0VfRE9XTiwgb25fbW91c2VfZG93biwgYXBwX2RhdGEpOwotCi0gICAgZXZh
c19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoYXBwX2RhdGEtPndlYnZpZXcsIEVWQVNfSElO
VF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9h
bGlnbl9zZXQoYXBwX2RhdGEtPndlYnZpZXcsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklM
TCk7Ci0gICAgZWxtX2JveF9wYWNrX2VuZCh2ZXJ0aWNhbF9sYXlvdXQsIGFwcF9kYXRhLT53ZWJ2
aWV3KTsKLSAgICBldmFzX29iamVjdF9zaG93KGFwcF9kYXRhLT53ZWJ2aWV3KTsKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgImF1dGhlbnRpY2F0
aW9uLHJlcXVlc3QiLCBvbl9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0LCB3aW5kb3cpOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiY2xvc2Usd2lu
ZG93Iiwgb25fY2xvc2Vfd2luZG93LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiY3JlYXRlLHdpbmRvdyIsIG9uX25ld193aW5k
b3csIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+
ZXdrX3ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCBvbl9kb3dubG9hZF9mYWlsZWQsIHdpbmRvdyk7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJk
b3dubG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25sb2FkX2ZpbmlzaGVkLCB3aW5kb3cpOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiZG93bmxvYWQs
cmVxdWVzdCIsIG9uX2Rvd25sb2FkX3JlcXVlc3QsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJmaWxlLGNob29zZXIscmVxdWVz
dCIsIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiaWNvbixjaGFuZ2VkIiwgb25fdmll
d19pY29uX2NoYW5nZWQsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJsb2FkLGVycm9yIiwgb25fZXJyb3IsIHdpbmRvdyk7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJsb2Fk
LHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwgb25fdGl0bGVf
Y2hhbmdlZCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2lu
ZG93LT5ld2tfdmlldywgInVybCxjaGFuZ2VkIiwgb25fdXJsX2NoYW5nZWQsIHdpbmRvdyk7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJiYWNr
LGZvcndhcmQsbGlzdCxjaGFuZ2VkIiwgb25fYmFja19mb3J3YXJkX2xpc3RfY2hhbmdlZCwgd2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmll
dywgInRvb2x0aXAsdGV4dCxzZXQiLCBvbl90b29sdGlwX3RleHRfc2V0LCB3aW5kb3cpOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAidG9vbHRp
cCx0ZXh0LHVuc2V0Iiwgb25fdG9vbHRpcF90ZXh0X3Vuc2V0LCB3aW5kb3cpOworCisgICAgZXZh
c19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsIEVWQVNfQ0FMTEJB
Q0tfS0VZX0RPV04sIG9uX2tleV9kb3duLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X2V2ZW50
X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04s
IG9uX21vdXNlX2Rvd24sIHdpbmRvdyk7CisKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2Vp
Z2h0X3NldCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQ
QU5EKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+ZXdrX3Zp
ZXcsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CisgICAgZWxtX2JveF9wYWNrX2Vu
ZCh2ZXJ0aWNhbF9sYXlvdXQsIHdpbmRvdy0+ZXdrX3ZpZXcpOworICAgIGV2YXNfb2JqZWN0X3No
b3cod2luZG93LT5ld2tfdmlldyk7CiAKICAgICBpZiAodXJsKQotICAgICAgICBld2tfdmlld191
cmxfc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCB1cmwpOworICAgICAgICBld2tfdmlld191cmxfc2V0
KHdpbmRvdy0+ZXdrX3ZpZXcsIHVybCk7CiAKLSAgICBldmFzX29iamVjdF9yZXNpemUoYXBwX2Rh
dGEtPndpbmRvdywgd2luZG93X3dpZHRoLCB3aW5kb3dfaGVpZ2h0KTsKLSAgICBldmFzX29iamVj
dF9zaG93KGFwcF9kYXRhLT53aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZSh3aW5kb3ct
PmVsbV93aW5kb3csIHdpbmRvd193aWR0aCwgd2luZG93X2hlaWdodCk7CisgICAgZXZhc19vYmpl
Y3Rfc2hvdyh3aW5kb3ctPmVsbV93aW5kb3cpOwogCi0gICAgdmlld19mb2N1c19zZXQoYXBwX2Rh
dGEsIEVJTkFfVFJVRSk7CisgICAgdmlld19mb2N1c19zZXQod2luZG93LCBFSU5BX1RSVUUpOwog
Ci0gICAgcmV0dXJuIGFwcF9kYXRhOworICAgIHJldHVybiB3aW5kb3c7CiB9CiAKIHN0YXRpYyB2
b2lkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172908</attachid>
            <date>2012-11-07 18:26:39 -0800</date>
            <delta_ts>2012-11-08 00:50:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101517-20121108112449.patch</filename>
            <type>text/plain</type>
            <size>42482</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODMxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzMwNGQwNTg0NGYxZDBlZDQ3OTg3ODM2MmYzYzA0MWYy
ZGVlYjZlYS4uODQ0OWUzMTFhZmIzZjMxOGEyY2YxNjllYTUyOTY5MjQ1YTU1NDI0YyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcz
IEBACisyMDEyLTExLTA3ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIFJlbmFtZSB2YXJpYWJsZXMsIHN0cnVjdHVyZXMgYW5kIGZ1bmN0
aW9ucyBvZiB0aGUgTWluaUJyb3dzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDE1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWUgdmFyaWFibGVzLCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlv
bnMgb2YgdGhlIE1pbmlCcm93c2VyCisgICAgICAgIGZvciB0aGUgY29uc2lzdGFudCBuYW1pbmcu
CisKKyAgICAgICAgMSkgQnJvd3Nlcl9XaW5kb3cqIHthcHBfZGF0YXxicm93c2VyX3dpbmRvd3x3
aW5kb3d9IC0+IHdpbmRvdworCisgICAgICAgIDIpIEJyb3dzZXJfV2luZG93Ojp3ZWJ2aWV3IC0+
IEJyb3dzZXJfV2luZG93Ojpld2tfdmlldworICAgICAgICAgICAgIFRoZSB3ZWJraXQgQVBJIGZ1
bmN0aW9ucyBhcmUgZXdrX3ZpZXdfeHh4IG5vdCB3ZWJ2aWV3X3h4eC4KKyAgICAgICAgICAgICBT
byB1c2luZyBld2tfdmlldyB3aWxsIGJlIGJldHRlciB0aGFuIHdlYnZpZXcuCisKKyAgICAgICAg
MykgQnJvd3Nlcl9XaW5kb3c6OndpbmRvdyAtPiBCcm93c2VyX1dpbmRvdzo6ZWxtX3dpbmRvdwor
ICAgICAgICAgICAgIFRoZSBuYW1lIGlzIGNoYW5nZWQgdG8gYmUgZGlzdGluZ3Vpc2hlZCB3aXRo
ICdCcm93c2VyX1dpbmRvdyAqd2luZG93JworCisgICAgICAgIDQpIGJyb3dzZXJfe3dpbmRvd3x2
aWV3fV9maW5kKCkgLT4gd2luZG93X2ZpbmRfd2l0aF97ZWxtX3dpbmRvd3xld2tfdmlld30oKQor
ICAgICAgICAgICAgIFRoaXMgaXMgY2hhbmdlZCBiZWNhdXNlIHRoZSBuYW1lIG9mIHRoZSBmdW5j
dGlvbiBjYW4gYmUgY29uZnVzZWQuCisgICAgICAgICAgICAgQ3VycmVudGx5LCBicm93c2VyX3dp
bmRvd19maW5kKCkgcmV0dXJucyBCcm93c2VyX1dpbmRvdyouIEFuZAorICAgICAgICAgICAgIGJy
b3dzZXJfdmlld19maW5kKCkgYWxzbyByZXR1cm5zIEJyb3dzZXJfV2luZG93Ki4KKworICAgICAg
ICA1KSBGaWxlU2VsZWN0b3JEYXRhIC0+IEZpbGVfU2VsZWN0b3JfRGF0YSAvIEF1dGhEYXRhIC0+
IEF1dGhfRGF0YQorICAgICAgICAgICAgIFRoZSB0eXBlIGRlZmluaXRpb24gaXMgbW92ZWQgdG8g
dGhlIHRvcCBvZiB0aGUgc291cmNlIGZpbGUKKyAgICAgICAgICAgICBhbmQgdGhlIG5hbWUgaXMg
Y2hhbmdlZCB0byBmb2xsb3cgRUZMIHN0eWxlLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZs
L21haW4uYzoKKyAgICAgICAgKG1pbmlCcm93c2VyVmlld1NtYXJ0Q2xhc3MpOgorICAgICAgICAo
X0Jyb3dzZXJfV2luZG93KToKKyAgICAgICAgKHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcpOgor
ICAgICAgICAod2luZG93X2ZyZWUpOgorICAgICAgICAodmlld19mb2N1c19zZXQpOgorICAgICAg
ICAob25fbW91c2VfZG93bik6CisgICAgICAgIChvbl90aXRsZV9jaGFuZ2VkKToKKyAgICAgICAg
KG9uX3VybF9jaGFuZ2VkKToKKyAgICAgICAgKG9uX2JhY2tfZm9yd2FyZF9saXN0X2NoYW5nZWQp
OgorICAgICAgICAob25fbmV3X3dpbmRvdyk6CisgICAgICAgIChvbl9jbG9zZV93aW5kb3cpOgor
ICAgICAgICAob25fcHJvZ3Jlc3MpOgorICAgICAgICAob25fZXJyb3IpOgorICAgICAgICAob25f
ZG93bmxvYWRfcmVxdWVzdCk6CisgICAgICAgIChjbG9zZV9maWxlX3BpY2tlcik6CisgICAgICAg
IChvbl9maWxlcGlja2VyX3BhcmVudF9kZWxldGlvbik6CisgICAgICAgIChvbl9maWxlcGlja2Vy
X2RlbGV0aW9uKToKKyAgICAgICAgKG9uX2ZpbGVzZWxlY3Rvcl9kb25lKToKKyAgICAgICAgKG9u
X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0KToKKyAgICAgICAgKG9uX2Rvd25sb2FkX2ZpbmlzaGVkKToK
KyAgICAgICAgKG9uX2Rvd25sb2FkX2ZhaWxlZCk6CisgICAgICAgIChvbl9mYXZpY29uX3JlY2Vp
dmVkKToKKyAgICAgICAgKG9uX3ZpZXdfaWNvbl9jaGFuZ2VkKToKKyAgICAgICAgKG9uX3VybF9i
YXJfYWN0aXZhdGVkKToKKyAgICAgICAgKG9uX3VybF9iYXJfY2xpY2tlZCk6CisgICAgICAgIChv
bl9iYWNrX2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAgKG9uX2ZvcndhcmRfYnV0dG9uX2NsaWNr
ZWQpOgorICAgICAgICAob25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCk6CisgICAgICAgIChvbl9q
YXZhc2NyaXB0X2FsZXJ0KToKKyAgICAgICAgKG9uX2phdmFzY3JpcHRfY29uZmlybSk6CisgICAg
ICAgIChvbl9qYXZhc2NyaXB0X3Byb21wdCk6CisgICAgICAgIChhdXRoX3BvcHVwX2Nsb3NlKToK
KyAgICAgICAgKG9uX2F1dGhfY2FuY2VsKToKKyAgICAgICAgKG9uX2F1dGhfb2spOgorICAgICAg
ICAob25fYXV0aGVudGljYXRpb25fcmVxdWVzdCk6CisgICAgICAgIChvbl90b29sdGlwX3RleHRf
c2V0KToKKyAgICAgICAgKG9uX3Rvb2x0aXBfdGV4dF91bnNldCk6CisgICAgICAgIChvbl9ob21l
X2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAgKG9uX3dpbmRvd19kZWxldGlvbik6CisgICAgICAg
ICh3aW5kb3dfY3JlYXRlKToKKwogMjAxMi0xMS0wNyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBnYXJkZW4tby1tYXRpYyBzaG91bGQgaGFuZGxlIGNvbmN1
cnJlbnQgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMg
Yi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IDFjZTRkMmVlMzFkMDJiY2UwY2Iy
NjU3YjFhY2M2YjhlYTI2YzQ1MDcuLmMwMTM3NWY3MTdkYmE4YzhlOWI4NjliYzYyYTZkZjk2ZWYy
NWE1ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpAQCAtNDMsMjAgKzQzLDMzIEBAIHN0YXRpYyBFaW5h
X0Jvb2wgZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkID0gRUlOQV9GQUxTRTsKIHN0YXRpYyBpbnQg
d2luZG93X3dpZHRoID0gODAwOwogc3RhdGljIGludCB3aW5kb3dfaGVpZ2h0ID0gNjAwOwogCi1z
dGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIG1pbmlCcm93c2VyVmlld1NtYXJ0Q2xhc3MoKQor
c3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzICptaW5pQnJvd3NlclZpZXdTbWFydENsYXNzKCkK
IHsKICAgICBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgZXdrVmlld0NsYXNzID0gRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04oIk1pbmlCcm93c2VyX1ZpZXciKTsKICAg
ICByZXR1cm4gJmV3a1ZpZXdDbGFzczsKIH0KIAogdHlwZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJfV2lu
ZG93IHsKLSAgICBFdmFzX09iamVjdCAqd2luZG93OwotICAgIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3
OworICAgIEV2YXNfT2JqZWN0ICplbG1fd2luZG93OworICAgIEV2YXNfT2JqZWN0ICpld2tfdmll
dzsKICAgICBFdmFzX09iamVjdCAqdXJsX2JhcjsKICAgICBFdmFzX09iamVjdCAqYmFja19idXR0
b247CiAgICAgRXZhc19PYmplY3QgKmZvcndhcmRfYnV0dG9uOwogfSBCcm93c2VyX1dpbmRvdzsK
IAordHlwZWRlZiBzdHJ1Y3QgX0ZpbGVfU2VsZWN0b3JfRGF0YSB7CisgICAgRXZhc19PYmplY3Qg
KnBhcmVudDsKKyAgICBFdmFzX09iamVjdCAqZWxtX3dpbmRvdzsKKyAgICBFd2tfRmlsZV9DaG9v
c2VyX1JlcXVlc3QgKnJlcXVlc3Q7Cit9IEZpbGVfU2VsZWN0b3JfRGF0YTsKKwordHlwZWRlZiBz
dHJ1Y3QgX0F1dGhfRGF0YSB7CisgICAgRXZhc19PYmplY3QgKnBvcHVwOworICAgIEV3a19BdXRo
X1JlcXVlc3QgKnJlcXVlc3Q7CisgICAgRXZhc19PYmplY3QgKnVzZXJuYW1lX2VudHJ5OworICAg
IEV2YXNfT2JqZWN0ICpwYXNzd29yZF9lbnRyeTsKK30gQXV0aF9EYXRhOworCiBzdGF0aWMgY29u
c3QgRWNvcmVfR2V0b3B0IG9wdGlvbnMgPSB7CiAgICAgIk1pbmlCcm93c2VyIiwKICAgICAiJXBy
b2cgW29wdGlvbnNdIFt1cmxdIiwKQEAgLTg2LDQzICs5OSw0MyBAQCBzdGF0aWMgY29uc3QgRWNv
cmVfR2V0b3B0IG9wdGlvbnMgPSB7CiAKIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2Ny
ZWF0ZShjb25zdCBjaGFyICp1cmwpOwogCi1zdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKmJyb3dzZXJf
d2luZG93X2ZpbmQoRXZhc19PYmplY3QgKndpbmRvdykKK3N0YXRpYyBCcm93c2VyX1dpbmRvdyAq
d2luZG93X2ZpbmRfd2l0aF9lbG1fd2luZG93KEV2YXNfT2JqZWN0ICplbG1fd2luZG93KQogewog
ICAgIEVpbmFfTGlzdCAqbDsKICAgICB2b2lkICpkYXRhOwogCi0gICAgaWYgKCF3aW5kb3cpCisg
ICAgaWYgKCFlbG1fd2luZG93KQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIEVJTkFfTElT
VF9GT1JFQUNIKHdpbmRvd3MsIGwsIGRhdGEpIHsKLSAgICAgICAgQnJvd3Nlcl9XaW5kb3cgKmJy
b3dzZXJfd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopZGF0YTsKLSAgICAgICAgaWYgKGJyb3dz
ZXJfd2luZG93LT53aW5kb3cgPT0gd2luZG93KQotICAgICAgICAgICAgcmV0dXJuIGJyb3dzZXJf
d2luZG93OworICAgICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93
ICopZGF0YTsKKyAgICAgICAgaWYgKHdpbmRvdy0+ZWxtX3dpbmRvdyA9PSBlbG1fd2luZG93KQor
ICAgICAgICAgICAgcmV0dXJuIHdpbmRvdzsKICAgICB9CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAK
LXN0YXRpYyBCcm93c2VyX1dpbmRvdyAqYnJvd3Nlcl92aWV3X2ZpbmQoRXZhc19PYmplY3QgKnZp
ZXcpCitzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcoRXZh
c19PYmplY3QgKmV3a192aWV3KQogewogICAgIEVpbmFfTGlzdCAqbDsKICAgICB2b2lkICpkYXRh
OwogCi0gICAgaWYgKCF2aWV3KQorICAgIGlmICghZXdrX3ZpZXcpCiAgICAgICAgIHJldHVybiBO
VUxMOwogCiAgICAgRUlOQV9MSVNUX0ZPUkVBQ0god2luZG93cywgbCwgZGF0YSkgewotICAgICAg
ICBCcm93c2VyX1dpbmRvdyAqYnJvd3Nlcl93aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKilkYXRh
OwotICAgICAgICBpZiAoYnJvd3Nlcl93aW5kb3ctPndlYnZpZXcgPT0gdmlldykKLSAgICAgICAg
ICAgIHJldHVybiBicm93c2VyX3dpbmRvdzsKKyAgICAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRv
dyA9IChCcm93c2VyX1dpbmRvdyAqKWRhdGE7CisgICAgICAgIGlmICh3aW5kb3ctPmV3a192aWV3
ID09IGV3a192aWV3KQorICAgICAgICAgICAgcmV0dXJuIHdpbmRvdzsKICAgICB9CiAgICAgcmV0
dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIHdpbmRvd19mcmVlKEJyb3dzZXJfV2luZG93ICp3
aW5kb3cpCiB7Ci0gICAgZXZhc19vYmplY3RfZGVsKHdpbmRvdy0+d2Vidmlldyk7CisgICAgZXZh
c19vYmplY3RfZGVsKHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIC8qIFRoZSBlbG1fd2luIHdpbGwg
dGFrZSBjYXJlIG9mIGZyZWVpbmcgaXRzIGNoaWxkcmVuICovCi0gICAgZXZhc19vYmplY3RfZGVs
KHdpbmRvdy0+d2luZG93KTsKKyAgICBldmFzX29iamVjdF9kZWwod2luZG93LT5lbG1fd2luZG93
KTsKICAgICBmcmVlKHdpbmRvdyk7CiB9CiAKQEAgLTE4OCwxMiArMjAxLDEyIEBAIHZpZXdfZm9j
dXNfc2V0KEJyb3dzZXJfV2luZG93ICp3aW5kb3csIEVpbmFfQm9vbCBmb2N1cykKICAgICAvKiBX
ZSBzdGVhbCBmb2N1cyBhd2F5IGZyb20gZWxtJ3MgZm9jdXMgbW9kZWwgYW5kIHN0YXJ0IHRvIGRv
IHRoaW5ncwogICAgICAqIG1hbnVhbGx5IGhlcmUsIHNvIGVsbSBub3cgaGFzIG5vIGNsdWUgd2hh
dCdzIHVwLiBUZWxsIGVsbSB0aGF0IGl0cwogICAgICAqIHRvcGxldmVsIHdpZGdldCBpcyB0byBi
ZSB1bmZvY3VzZWQgc28gZWxtIGdpdmVzIHVwIHRoZSBmb2N1cyAqLwotICAgIGVsbV9vYmplY3Rf
Zm9jdXNfc2V0KGVsbV9vYmplY3RfdG9wX3dpZGdldF9nZXQod2luZG93LT53aW5kb3cpLCBFSU5B
X0ZBTFNFKTsKLSAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2luZG93LT53ZWJ2aWV3LCBmb2N1
cyk7CisgICAgZWxtX29iamVjdF9mb2N1c19zZXQoZWxtX29iamVjdF90b3Bfd2lkZ2V0X2dldCh3
aW5kb3ctPmVsbV93aW5kb3cpLCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19z
ZXQod2luZG93LT5ld2tfdmlldywgZm9jdXMpOwogfQogCiBzdGF0aWMgdm9pZAotb25fbW91c2Vf
ZG93bih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lk
ICpldmVudF9pbmZvKQorb25fbW91c2VfZG93bih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUsIEV2
YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dp
bmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogICAgIEV2YXNfRXZl
bnRfTW91c2VfRG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duICopZXZlbnRfaW5mbzsK
QEAgLTIwNCw3ICsyMTcsNyBAQCBvbl9tb3VzZV9kb3duKHZvaWQgKnVzZXJfZGF0YSwgRXZhcyAq
ZSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgaWYgKGV2LT5i
dXR0b24gPT0gMSkKICAgICAgICAgdmlld19mb2N1c19zZXQod2luZG93LCBFSU5BX1RSVUUpOwog
ICAgIGVsc2UgaWYgKGV2LT5idXR0b24gPT0gMikKLSAgICAgICAgdmlld19mb2N1c19zZXQod2lu
ZG93LCAhZXZhc19vYmplY3RfZm9jdXNfZ2V0KHdlYnZpZXcpKTsKKyAgICAgICAgdmlld19mb2N1
c19zZXQod2luZG93LCAhZXZhc19vYmplY3RfZm9jdXNfZ2V0KGV3a192aWV3KSk7CiB9CiAKIHN0
YXRpYyB2b2lkCkBAIC0yMjgsNjMgKzI0MSw2MyBAQCB0aXRsZV9zZXQoRXZhc19PYmplY3QgKndp
bmRvdywgY29uc3QgY2hhciAqdGl0bGUsIGludCBwcm9ncmVzcykKIH0KIAogc3RhdGljIHZvaWQK
LW9uX3RpdGxlX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywg
dm9pZCAqZXZlbnRfaW5mbykKK29uX3RpdGxlX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFz
X09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9XaW5k
b3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKICAgICBjb25zdCBjaGFy
ICp0aXRsZSA9IChjb25zdCBjaGFyICopZXZlbnRfaW5mbzsKIAotICAgIHRpdGxlX3NldCh3aW5k
b3ctPndpbmRvdywgdGl0bGUsIDEwMCk7CisgICAgdGl0bGVfc2V0KHdpbmRvdy0+ZWxtX3dpbmRv
dywgdGl0bGUsIDEwMCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl91cmxfY2hhbmdlZCh2b2lkICp1
c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQorb25fdXJs
X2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2
ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRv
dyAqKXVzZXJfZGF0YTsKIAotICAgIGNoYXIgKnVybCA9IGVsbV9lbnRyeV91dGY4X3RvX21hcmt1
cChld2tfdmlld191cmxfZ2V0KHdpbmRvdy0+d2VidmlldykpOworICAgIGNoYXIgKnVybCA9IGVs
bV9lbnRyeV91dGY4X3RvX21hcmt1cChld2tfdmlld191cmxfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcp
KTsKICAgICBlbG1fZW50cnlfZW50cnlfc2V0KHdpbmRvdy0+dXJsX2JhciwgdXJsKTsKIAogICAg
IGZyZWUodXJsKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2JhY2tfZm9yd2FyZF9saXN0X2NoYW5n
ZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5m
bykKK29uX2JhY2tfZm9yd2FyZF9saXN0X2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9XaW5kb3cg
KndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKIAogICAgIC8qIFVwZGF0ZSBu
YXZpZ2F0aW9uIGJ1dHRvbnMgc3RhdGUgKi8KLSAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldCh3
aW5kb3ctPmJhY2tfYnV0dG9uLCAhZXdrX3ZpZXdfYmFja19wb3NzaWJsZSh3ZWJ2aWV3KSk7Ci0g
ICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgIWV3a192
aWV3X2ZvcndhcmRfcG9zc2libGUod2VidmlldykpOworICAgIGVsbV9vYmplY3RfZGlzYWJsZWRf
c2V0KHdpbmRvdy0+YmFja19idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKGV3a192aWV3
KSk7CisgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwg
IWV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoZXdrX3ZpZXcpKTsKIH0KIAogc3RhdGljIHZvaWQK
LW9uX25ld193aW5kb3codm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9p
ZCAqZXZlbnRfaW5mbykKK29uX25ld193aW5kb3codm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVj
dCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgRXZhc19PYmplY3QgKipuZXdf
dmlldyA9IChFdmFzX09iamVjdCAqKilldmVudF9pbmZvOwogICAgIEJyb3dzZXJfV2luZG93ICp3
aW5kb3cgPSB3aW5kb3dfY3JlYXRlKE5VTEwpOwotICAgICpuZXdfdmlldyA9IHdpbmRvdy0+d2Vi
dmlldzsKKyAgICAqbmV3X3ZpZXcgPSB3aW5kb3ctPmV3a192aWV3OwogICAgIHdpbmRvd3MgPSBl
aW5hX2xpc3RfYXBwZW5kKHdpbmRvd3MsIHdpbmRvdyk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9j
bG9zZV93aW5kb3codm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAq
ZXZlbnRfaW5mbykKK29uX2Nsb3NlX3dpbmRvdyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0
ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICB3aW5kb3dfY2xvc2UoKEJyb3dz
ZXJfV2luZG93ICopdXNlcl9kYXRhKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX3Byb2dyZXNzKHZv
aWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitv
bl9wcm9ncmVzcyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAq
ZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2lu
ZG93ICopdXNlcl9kYXRhOwogICAgIGRvdWJsZSBwcm9ncmVzcyA9ICooZG91YmxlICopZXZlbnRf
aW5mbzsKIAotICAgIHRpdGxlX3NldCh3aW5kb3ctPndpbmRvdywgZXdrX3ZpZXdfdGl0bGVfZ2V0
KHdpbmRvdy0+d2VidmlldyksIHByb2dyZXNzICogMTAwKTsKKyAgICB0aXRsZV9zZXQod2luZG93
LT5lbG1fd2luZG93LCBld2tfdmlld190aXRsZV9nZXQod2luZG93LT5ld2tfdmlldyksIHByb2dy
ZXNzICogMTAwKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Vycm9yKHZvaWQgKnVzZXJfZGF0YSwg
RXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9lcnJvcih2b2lkICp1
c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAg
ICBFaW5hX1N0cmJ1ZiogYnVmZmVyOworICAgIEVpbmFfU3RyYnVmICpidWZmZXI7CiAgICAgY29u
c3QgRXdrX0Vycm9yICplcnJvciA9IChjb25zdCBFd2tfRXJyb3IgKilldmVudF9pbmZvOwogCiAg
ICAgLyogVGhpcyBpcyBhIGNhbmNlbGxhdGlvbiwgZG8gbm90IGRpc3BsYXkgdGhlIGVycm9yIHBh
Z2UgKi8KQEAgLTI5NSwxMiArMzA4LDEyIEBAIG9uX2Vycm9yKHZvaWQgKnVzZXJfZGF0YSwgRXZh
c19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgZWluYV9zdHJidWZfYXBw
ZW5kX3ByaW50ZihidWZmZXIsICI8aHRtbD48Ym9keT48ZGl2IHN0eWxlPVwiY29sb3I6I2ZmMDAw
MFwiPkVSUk9SITwvZGl2Pjxicj48ZGl2PkNvZGU6ICVkPGJyPkRlc2NyaXB0aW9uOiAlczxicj5V
Ukw6ICVzPC9kaXY+PC9ib2R5PC9odG1sPiIsCiAgICAgICAgIGV3a19lcnJvcl9jb2RlX2dldChl
cnJvciksIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZXJyb3IpLCBld2tfZXJyb3JfdXJsX2dl
dChlcnJvcikpOwogCi0gICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJ2aWV3LCBlaW5h
X3N0cmJ1Zl9zdHJpbmdfZ2V0KGJ1ZmZlciksIDAsIGV3a19lcnJvcl91cmxfZ2V0KGVycm9yKSk7
CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChld2tfdmlldywgZWluYV9zdHJidWZfc3Ry
aW5nX2dldChidWZmZXIpLCAwLCBld2tfZXJyb3JfdXJsX2dldChlcnJvcikpOwogICAgIGVpbmFf
c3RyYnVmX2ZyZWUoYnVmZmVyKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2FkX3JlcXVl
c3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5m
bykKK29uX2Rvd25sb2FkX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdr
X3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxv
YWQgPSAoRXdrX0Rvd25sb2FkX0pvYiAqKWV2ZW50X2luZm87CiAKQEAgLTMyMSwxOCArMzM0LDEy
IEBAIG9uX2Rvd25sb2FkX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vi
dmlldywgdm9pZCAqZXZlbnRfaW5mbykKICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGRlc3RpbmF0aW9u
X3BhdGgpOwogfQogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgRXZhc19PYmplY3QgKnBhcmVudDsK
LSAgICBFdmFzX09iamVjdCAqd2luZG93OwotICAgIEV3a19GaWxlX0Nob29zZXJfUmVxdWVzdCAq
cmVxdWVzdDsKLX0gRmlsZVNlbGVjdG9yRGF0YTsKLQogc3RhdGljIHZvaWQgb25fZmlsZXBpY2tl
cl9wYXJlbnRfZGVsZXRpb24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICpldmFzLCBFdmFzX09iamVj
dCAqd2luZG93LCB2b2lkICpldmVudCk7CiAKLXN0YXRpYyB2b2lkIGNsb3NlX2ZpbGVfcGlja2Vy
KEZpbGVTZWxlY3RvckRhdGEqIGZzX2RhdGEpCitzdGF0aWMgdm9pZCBjbG9zZV9maWxlX3BpY2tl
cihGaWxlX1NlbGVjdG9yX0RhdGEgKmZzX2RhdGEpCiB7CiAgICAgZXZhc19vYmplY3RfZXZlbnRf
Y2FsbGJhY2tfZGVsKGZzX2RhdGEtPnBhcmVudCwgRVZBU19DQUxMQkFDS19ERUwsIG9uX2ZpbGVw
aWNrZXJfcGFyZW50X2RlbGV0aW9uKTsKLSAgICBldmFzX29iamVjdF9kZWwoZnNfZGF0YS0+d2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9kZWwoZnNfZGF0YS0+ZWxtX3dpbmRvdyk7CiAgICAgZXdr
X29iamVjdF91bnJlZihmc19kYXRhLT5yZXF1ZXN0KTsKICAgICBmcmVlKGZzX2RhdGEpOwogfQpA
QCAtMzQwLDE5ICszNDcsMTkgQEAgc3RhdGljIHZvaWQgY2xvc2VfZmlsZV9waWNrZXIoRmlsZVNl
bGVjdG9yRGF0YSogZnNfZGF0YSkKIHN0YXRpYyB2b2lkCiBvbl9maWxlcGlja2VyX3BhcmVudF9k
ZWxldGlvbih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmV2YXMsIEV2YXNfT2JqZWN0ICp3aW5kb3cs
IHZvaWQgKmV2ZW50KQogewotICAgIGNsb3NlX2ZpbGVfcGlja2VyKChGaWxlU2VsZWN0b3JEYXRh
ICopdXNlcl9kYXRhKTsKKyAgICBjbG9zZV9maWxlX3BpY2tlcigoRmlsZV9TZWxlY3Rvcl9EYXRh
ICopdXNlcl9kYXRhKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2ZpbGVwaWNrZXJfZGVsZXRpb24o
dm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2luZG93LCB2b2lkICpldmVudF9pbmZvKQog
ewotICAgIGNsb3NlX2ZpbGVfcGlja2VyKChGaWxlU2VsZWN0b3JEYXRhICopdXNlcl9kYXRhKTsK
KyAgICBjbG9zZV9maWxlX3BpY2tlcigoRmlsZV9TZWxlY3Rvcl9EYXRhICopdXNlcl9kYXRhKTsK
IH0KIAogc3RhdGljIHZvaWQKIG9uX2ZpbGVzZWxlY3Rvcl9kb25lKHZvaWQgKnVzZXJfZGF0YSwg
RXZhc19PYmplY3QgKmZpbGVfc2VsZWN0b3IsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgRmls
ZVNlbGVjdG9yRGF0YSAqZnNfZGF0YSA9IChGaWxlU2VsZWN0b3JEYXRhICopdXNlcl9kYXRhOwor
ICAgIEZpbGVfU2VsZWN0b3JfRGF0YSAqZnNfZGF0YSA9IChGaWxlX1NlbGVjdG9yX0RhdGEgKil1
c2VyX2RhdGE7CiAKICAgICBjb25zdCBjaGFyICpzZWxlY3RlZCA9IChjb25zdCBjaGFyICopZXZl
bnRfaW5mbzsKICAgICBpZiAoc2VsZWN0ZWQgJiYgKnNlbGVjdGVkKQpAQCAtMzYyLDQ3ICszNjks
NDcgQEAgb25fZmlsZXNlbGVjdG9yX2RvbmUodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAq
ZmlsZV9zZWxlY3Rvciwgdm9pZCAqZXZlbnRfaW4KIH0KIAogc3RhdGljIHZvaWQKLW9uX2ZpbGVf
Y2hvb3Nlcl9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZv
aWQgKmV2ZW50X2luZm8pCitvbl9maWxlX2Nob29zZXJfcmVxdWVzdCh2b2lkICp1c2VyX2RhdGEs
IEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBCcm93c2Vy
X1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAgQnJv
d3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKICAgICBF
d2tfRmlsZV9DaG9vc2VyX1JlcXVlc3QgKnJlcXVlc3QgPSAoRXdrX0ZpbGVfQ2hvb3Nlcl9SZXF1
ZXN0ICopZXZlbnRfaW5mbzsKIAogICAgIC8vIFNob3cgYmFzaWMgZmlsZSBwaWNrZXIgd2hpY2gg
ZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgbXVsdGlwbGUgZmlsZXMKICAgICAvLyBvciBNSU1F
IHR5cGUgZmlsdGVyaW5nLgotICAgIEV2YXNfT2JqZWN0ICp3aW5kb3cgPSBlbG1fd2luX2FkZChh
cHBfZGF0YS0+d2luZG93LCAiZmlsZS1waWNrZXItd2luZG93IiwgRUxNX1dJTl9ESUFMT0dfQkFT
SUMpOwotICAgIGVsbV93aW5fdGl0bGVfc2V0KHdpbmRvdywgIkZpbGUgcGlja2VyIik7Ci0gICAg
ZWxtX3dpbl9tb2RhbF9zZXQod2luZG93LCBFSU5BX1RSVUUpOworICAgIEV2YXNfT2JqZWN0ICpl
bG1fd2luZG93ID0gZWxtX3dpbl9hZGQod2luZG93LT5lbG1fd2luZG93LCAiZmlsZS1waWNrZXIt
d2luZG93IiwgRUxNX1dJTl9ESUFMT0dfQkFTSUMpOworICAgIGVsbV93aW5fdGl0bGVfc2V0KGVs
bV93aW5kb3csICJGaWxlIHBpY2tlciIpOworICAgIGVsbV93aW5fbW9kYWxfc2V0KGVsbV93aW5k
b3csIEVJTkFfVFJVRSk7CiAKLSAgICBGaWxlU2VsZWN0b3JEYXRhKiBmc19kYXRhID0gKEZpbGVT
ZWxlY3RvckRhdGEqKW1hbGxvYyhzaXplb2YoRmlsZVNlbGVjdG9yRGF0YSkpOwotICAgIGZzX2Rh
dGEtPnBhcmVudCA9IGFwcF9kYXRhLT53aW5kb3c7Ci0gICAgZnNfZGF0YS0+d2luZG93ID0gd2lu
ZG93OworICAgIEZpbGVfU2VsZWN0b3JfRGF0YSAqZnNfZGF0YSA9IChGaWxlX1NlbGVjdG9yX0Rh
dGEgKiltYWxsb2Moc2l6ZW9mKEZpbGVfU2VsZWN0b3JfRGF0YSkpOworICAgIGZzX2RhdGEtPnBh
cmVudCA9IHdpbmRvdy0+ZWxtX3dpbmRvdzsKKyAgICBmc19kYXRhLT5lbG1fd2luZG93ID0gZWxt
X3dpbmRvdzsKICAgICBmc19kYXRhLT5yZXF1ZXN0ID0gZXdrX29iamVjdF9yZWYocmVxdWVzdCk7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdywgImRlbGV0ZSxyZXF1
ZXN0Iiwgb25fZmlsZXBpY2tlcl9kZWxldGlvbiwgZnNfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rf
ZXZlbnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53aW5kb3csIEVWQVNfQ0FMTEJBQ0tfREVMLCBv
bl9maWxlcGlja2VyX3BhcmVudF9kZWxldGlvbiwgZnNfZGF0YSk7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKGVsbV93aW5kb3csICJkZWxldGUscmVxdWVzdCIsIG9uX2ZpbGVw
aWNrZXJfZGVsZXRpb24sIGZzX2RhdGEpOworICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNr
X2FkZCh3aW5kb3ctPmVsbV93aW5kb3csIEVWQVNfQ0FMTEJBQ0tfREVMLCBvbl9maWxlcGlja2Vy
X3BhcmVudF9kZWxldGlvbiwgZnNfZGF0YSk7CiAKLSAgICBFdmFzX09iamVjdCAqZmlsZV9zZWxl
Y3RvciA9IGVsbV9maWxlc2VsZWN0b3JfYWRkKHdpbmRvdyk7CisgICAgRXZhc19PYmplY3QgKmZp
bGVfc2VsZWN0b3IgPSBlbG1fZmlsZXNlbGVjdG9yX2FkZChlbG1fd2luZG93KTsKICAgICBjb25z
dCBjaGFyICpob21lX3BhdGggPSBnZXRlbnYoIkhPTUUiKTsKICAgICBlbG1fZmlsZXNlbGVjdG9y
X3BhdGhfc2V0KGZpbGVfc2VsZWN0b3IsIGhvbWVfcGF0aCA/IGhvbWVfcGF0aCA6ICIvaG9tZSIp
OwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGZpbGVfc2VsZWN0b3IsIEVW
QVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGVsbV93aW5fcmVzaXplX29i
amVjdF9hZGQod2luZG93LCBmaWxlX3NlbGVjdG9yKTsKKyAgICBlbG1fd2luX3Jlc2l6ZV9vYmpl
Y3RfYWRkKGVsbV93aW5kb3csIGZpbGVfc2VsZWN0b3IpOwogICAgIGV2YXNfb2JqZWN0X3Nob3co
ZmlsZV9zZWxlY3Rvcik7CiAKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoZmls
ZV9zZWxlY3RvciwgImRvbmUiLCBvbl9maWxlc2VsZWN0b3JfZG9uZSwgZnNfZGF0YSk7CiAKLSAg
ICBldmFzX29iamVjdF9yZXNpemUod2luZG93LCA0MDAsIDQwMCk7Ci0gICAgZWxtX3dpbl9jZW50
ZXIod2luZG93LCBFSU5BX1RSVUUsIEVJTkFfVFJVRSk7Ci0gICAgZXZhc19vYmplY3Rfc2hvdyh3
aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShlbG1fd2luZG93LCA0MDAsIDQwMCk7Cisg
ICAgZWxtX3dpbl9jZW50ZXIoZWxtX3dpbmRvdywgRUlOQV9UUlVFLCBFSU5BX1RSVUUpOworICAg
IGV2YXNfb2JqZWN0X3Nob3coZWxtX3dpbmRvdyk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9kb3du
bG9hZF9maW5pc2hlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lk
ICpldmVudF9pbmZvKQorb25fZG93bmxvYWRfZmluaXNoZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFz
X09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgRXdrX0Rvd25sb2Fk
X0pvYiAqZG93bmxvYWQgPSAoRXdrX0Rvd25sb2FkX0pvYiAqKWV2ZW50X2luZm87CiAgICAgaW5m
bygiRG93bmxvYWQgZmluaXNoZWQ6ICVzXG4iLCAgZXdrX2Rvd25sb2FkX2pvYl9kZXN0aW5hdGlv
bl9nZXQoZG93bmxvYWQpKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2FkX2ZhaWxlZCh2
b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQor
b25fZG93bmxvYWRfZmFpbGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3
LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIGluZm8oIkRvd25sb2FkIGZhaWxlZCFcbiIpOwog
fQpAQCAtNDEwLDEyICs0MTcsMTIgQEAgb25fZG93bmxvYWRfZmFpbGVkKHZvaWQgKnVzZXJfZGF0
YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiBzdGF0aWMgdm9pZAog
b25fZmF2aWNvbl9yZWNlaXZlZChjb25zdCBjaGFyICpwYWdlX3VybCwgRXZhc19PYmplY3QgKmlj
b24sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0g
KEJyb3dzZXJfV2luZG93ICopZXZlbnRfaW5mbzsKLSAgICBpZiAoc3RyY21wKHBhZ2VfdXJsLCBl
d2tfdmlld191cmxfZ2V0KGFwcF9kYXRhLT53ZWJ2aWV3KSkpCisgICAgQnJvd3Nlcl9XaW5kb3cg
KndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKWV2ZW50X2luZm87CisgICAgaWYgKHN0cmNtcChw
YWdlX3VybCwgZXdrX3ZpZXdfdXJsX2dldCh3aW5kb3ctPmV3a192aWV3KSkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8qIFJlbW92ZSBwcmV2aW91cyBpY29uIGZyb20gVVJMIGJhciAqLwotICAg
IEV2YXNfT2JqZWN0ICpvbGRfaWNvbiA9IGVsbV9vYmplY3RfcGFydF9jb250ZW50X3Vuc2V0KGFw
cF9kYXRhLT51cmxfYmFyLCAiaWNvbiIpOworICAgIEV2YXNfT2JqZWN0ICpvbGRfaWNvbiA9IGVs
bV9vYmplY3RfcGFydF9jb250ZW50X3Vuc2V0KHdpbmRvdy0+dXJsX2JhciwgImljb24iKTsKICAg
ICBpZiAob2xkX2ljb24pIHsKICAgICAgICAgZXZhc19vYmplY3RfdW5yZWYob2xkX2ljb24pOwog
ICAgICAgICBldmFzX29iamVjdF9kZWwob2xkX2ljb24pOwpAQCAtNDI4LDIyICs0MzUsMjIgQEAg
b25fZmF2aWNvbl9yZWNlaXZlZChjb25zdCBjaGFyICpwYWdlX3VybCwgRXZhc19PYmplY3QgKmlj
b24sIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9taW5f
c2V0KGljb24sIDQ4LCAyNCk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxlZF9zZXQo
aWNvbiwgRUlOQV9GQUxTRSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KGlj
b24sIDI0LCAwLCAyNCwgMjQpOwotICAgICAgICBlbG1fb2JqZWN0X3BhcnRfY29udGVudF9zZXQo
YXBwX2RhdGEtPnVybF9iYXIsICJpY29uIiwgaWNvbik7CisgICAgICAgIGVsbV9vYmplY3RfcGFy
dF9jb250ZW50X3NldCh3aW5kb3ctPnVybF9iYXIsICJpY29uIiwgaWNvbik7CiAgICAgICAgIGV2
YXNfb2JqZWN0X3JlZihpY29uKTsKICAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl92aWV3X2lj
b25fY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpl
dmVudF9pbmZvKQorb25fdmlld19pY29uX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cg
KmFwcF9kYXRhID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2lu
ZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAgICAgLyogUmV0cmll
dmUgdGhlIHZpZXcncyBmYXZpY29uICovCi0gICAgRXdrX0NvbnRleHQgKmNvbnRleHQgPSBld2tf
dmlld19jb250ZXh0X2dldCh3ZWJ2aWV3KTsKKyAgICBFd2tfQ29udGV4dCAqY29udGV4dCA9IGV3
a192aWV3X2NvbnRleHRfZ2V0KGV3a192aWV3KTsKICAgICBFd2tfRmF2aWNvbl9EYXRhYmFzZSAq
aWNvbl9kYXRhYmFzZSA9IGV3a19jb250ZXh0X2Zhdmljb25fZGF0YWJhc2VfZ2V0KGNvbnRleHQp
OwogCi0gICAgY29uc3QgY2hhciAqcGFnZV91cmwgPSBld2tfdmlld191cmxfZ2V0KHdlYnZpZXcp
OwotICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3ZWJ2aWV3KTsKLSAgICBl
d2tfZmF2aWNvbl9kYXRhYmFzZV9hc3luY19pY29uX2dldChpY29uX2RhdGFiYXNlLCBwYWdlX3Vy
bCwgZXZhcywgb25fZmF2aWNvbl9yZWNlaXZlZCwgYXBwX2RhdGEpOworICAgIGNvbnN0IGNoYXIg
KnBhZ2VfdXJsID0gZXdrX3ZpZXdfdXJsX2dldChld2tfdmlldyk7CisgICAgRXZhcyAqZXZhcyA9
IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGV3a192aWV3KTsKKyAgICBld2tfZmF2aWNvbl9kYXRhYmFz
ZV9hc3luY19pY29uX2dldChpY29uX2RhdGFiYXNlLCBwYWdlX3VybCwgZXZhcywgb25fZmF2aWNv
bl9yZWNlaXZlZCwgd2luZG93KTsKIH0KIAogc3RhdGljIGludApAQCAtNDY0LDYzICs0NzEsNjMg
QEAgcXVpdChFaW5hX0Jvb2wgc3VjY2VzcywgY29uc3QgY2hhciAqbXNnKQogc3RhdGljIHZvaWQK
IG9uX3VybF9iYXJfYWN0aXZhdGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKnVybF9i
YXIsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0g
KEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cg
PSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICBjb25zdCBjaGFyICptYXJrdXBf
dXJsID0gZWxtX2VudHJ5X2VudHJ5X2dldCh1cmxfYmFyKTsKICAgICBjaGFyICp1c2VyX3VybCA9
IGVsbV9lbnRyeV9tYXJrdXBfdG9fdXRmOChtYXJrdXBfdXJsKTsKICAgICBjaGFyICp1cmwgPSB1
cmxfZnJvbV91c2VyX2lucHV0KHVzZXJfdXJsKTsKLSAgICBld2tfdmlld191cmxfc2V0KGFwcF9k
YXRhLT53ZWJ2aWV3LCB1cmwpOworICAgIGV3a192aWV3X3VybF9zZXQod2luZG93LT5ld2tfdmll
dywgdXJsKTsKIAogICAgIGZyZWUodXNlcl91cmwpOwogICAgIGZyZWUodXJsKTsKIAogICAgIC8q
IEdpdmUgZm9jdXMgYmFjayB0byB0aGUgdmlldyAqLwotICAgIHZpZXdfZm9jdXNfc2V0KGFwcF9k
YXRhLCBFSU5BX1RSVUUpOworICAgIHZpZXdfZm9jdXNfc2V0KHdpbmRvdywgRUlOQV9UUlVFKTsK
IH0KIAogc3RhdGljIHZvaWQKIG9uX3VybF9iYXJfY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2
YXNfT2JqZWN0ICp1cmxfYmFyLCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dzZXJfV2lu
ZG93ICphcHBfZGF0YSA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBCcm93c2Vy
X1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCiAgICAgLyog
R3JhYiBmb2N1cyBmcm9tIHRoZSB2aWV3ICovCi0gICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KGFw
cF9kYXRhLT53ZWJ2aWV3LCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQo
d2luZG93LT5ld2tfdmlldywgRUlOQV9GQUxTRSk7CiAgICAgZWxtX29iamVjdF9mb2N1c19zZXQo
dXJsX2JhciwgRUlOQV9UUlVFKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2JhY2tfYnV0dG9uX2Ns
aWNrZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqYmFja19idXR0b24sIHZvaWQgKmV2
ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0gKEJyb3dzZXJfV2lu
ZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9X
aW5kb3cgKil1c2VyX2RhdGE7CiAKLSAgICBld2tfdmlld19iYWNrKGFwcF9kYXRhLT53ZWJ2aWV3
KTsKKyAgICBld2tfdmlld19iYWNrKHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIC8qIFVwZGF0ZSBi
YWNrIGJ1dHRvbiBzdGF0ZSAqLwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGJhY2tfYnV0
dG9uLCAhZXdrX3ZpZXdfYmFja19wb3NzaWJsZShhcHBfZGF0YS0+d2VidmlldykpOworICAgIGVs
bV9vYmplY3RfZGlzYWJsZWRfc2V0KGJhY2tfYnV0dG9uLCAhZXdrX3ZpZXdfYmFja19wb3NzaWJs
ZSh3aW5kb3ctPmV3a192aWV3KSk7CiB9CiAKIHN0YXRpYyB2b2lkCiBvbl9mb3J3YXJkX2J1dHRv
bl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmZvcndhcmRfYnV0dG9uLCB2
b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dzZXJfV2luZG93ICphcHBfZGF0YSA9IChCcm93
c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJy
b3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCi0gICAgZXdrX3ZpZXdfZm9yd2FyZChhcHBfZGF0
YS0+d2Vidmlldyk7CisgICAgZXdrX3ZpZXdfZm9yd2FyZCh3aW5kb3ctPmV3a192aWV3KTsKICAg
ICAvKiBVcGRhdGUgZm9yd2FyZCBidXR0b24gc3RhdGUgKi8KLSAgICBlbG1fb2JqZWN0X2Rpc2Fi
bGVkX3NldChmb3J3YXJkX2J1dHRvbiwgIWV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoYXBwX2Rh
dGEtPndlYnZpZXcpKTsKKyAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldChmb3J3YXJkX2J1dHRv
biwgIWV3a192aWV3X2ZvcndhcmRfcG9zc2libGUod2luZG93LT5ld2tfdmlldykpOwogfQogCiBz
dGF0aWMgdm9pZAogb25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2
YXNfT2JqZWN0ICpyZWZyZXNoX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBCcm93
c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAg
QnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKIAog
ICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChyZWZyZXNoX2J1dHRvbik7CiAg
ICAgRWluYV9Cb29sIGN0cmxQcmVzc2VkID0gZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2YXNf
a2V5X21vZGlmaWVyX2dldChldmFzKSwgIkNvbnRyb2wiKTsKICAgICBpZiAoY3RybFByZXNzZWQp
IHsKICAgICAgICAgaW5mbygiUmVsb2FkaW5nIGFuZCBieXBhc3NpbmcgY2FjaGUuLi5cbiIpOwot
ICAgICAgICBld2tfdmlld19yZWxvYWRfYnlwYXNzX2NhY2hlKGFwcF9kYXRhLT53ZWJ2aWV3KTsK
KyAgICAgICAgZXdrX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZSh3aW5kb3ctPmV3a192aWV3KTsK
ICAgICB9IGVsc2UgewogICAgICAgICBpbmZvKCJSZWxvYWRpbmcuLi5cbiIpOwotICAgICAgICBl
d2tfdmlld19yZWxvYWQoYXBwX2RhdGEtPndlYnZpZXcpOworICAgICAgICBld2tfdmlld19yZWxv
YWQod2luZG93LT5ld2tfdmlldyk7CiAgICAgfQogfQogCkBAIC01NDIsOSArNTQ5LDkgQEAgb25f
b2tfY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50
X2luZm8pCiBzdGF0aWMgdm9pZAogb25famF2YXNjcmlwdF9hbGVydChFd2tfVmlld19TbWFydF9E
YXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7Ci0gICAgQnJvd3Nlcl9XaW5k
b3cgKndpbmRvdyA9IGJyb3dzZXJfdmlld19maW5kKHNtYXJ0RGF0YS0+c2VsZik7CisgICAgQnJv
d3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcoc21hcnREYXRh
LT5zZWxmKTsKIAotICAgIEV2YXNfT2JqZWN0ICphbGVydF9wb3B1cCA9IGVsbV9wb3B1cF9hZGQo
d2luZG93LT53aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICphbGVydF9wb3B1cCA9IGVsbV9wb3B1
cF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2Vp
Z2h0X3NldChhbGVydF9wb3B1cCwgRVZBU19ISU5UX0VYUEFORCwgRVZBU19ISU5UX0VYUEFORCk7
CiAgICAgZWxtX29iamVjdF90ZXh0X3NldChhbGVydF9wb3B1cCwgbWVzc2FnZSk7CiAgICAgZWxt
X29iamVjdF9wYXJ0X3RleHRfc2V0KGFsZXJ0X3BvcHVwLCAidGl0bGUsdGV4dCIsICJBbGVydCIp
OwpAQCAtNTY2LDExICs1NzMsMTEgQEAgb25famF2YXNjcmlwdF9hbGVydChFd2tfVmlld19TbWFy
dF9EYXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiBzdGF0aWMgRWluYV9Cb29s
CiBvbl9qYXZhc2NyaXB0X2NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc21hcnREYXRhLCBj
b25zdCBjaGFyICptZXNzYWdlKQogewotICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSBicm93
c2VyX3ZpZXdfZmluZChzbWFydERhdGEtPnNlbGYpOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5k
b3cgPSB3aW5kb3dfZmluZF93aXRoX2V3a192aWV3KHNtYXJ0RGF0YS0+c2VsZik7CiAKICAgICBF
aW5hX0Jvb2wgb2sgPSBFSU5BX0ZBTFNFOwogCi0gICAgRXZhc19PYmplY3QgKmNvbmZpcm1fcG9w
dXAgPSBlbG1fcG9wdXBfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqY29u
ZmlybV9wb3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBldmFz
X29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChjb25maXJtX3BvcHVwLCBFVkFTX0hJTlRfRVhQ
QU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBlbG1fb2JqZWN0X3RleHRfc2V0KGNvbmZpcm1f
cG9wdXAsIG1lc3NhZ2UpOwogICAgIGVsbV9vYmplY3RfcGFydF90ZXh0X3NldChjb25maXJtX3Bv
cHVwLCAidGl0bGUsdGV4dCIsICJDb25maXJtYXRpb24iKTsKQEAgLTU5OCwyOSArNjA1LDI5IEBA
IG9uX2phdmFzY3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIGNv
bnN0IGNoYXIgKm1lc3NhZ2UpCiBzdGF0aWMgY29uc3QgY2hhciAqCiBvbl9qYXZhc2NyaXB0X3By
b21wdChFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1lc3NhZ2Us
IGNvbnN0IGNoYXIgKmRlZmF1bHRfdmFsdWUpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRv
dyA9IGJyb3dzZXJfdmlld19maW5kKHNtYXJ0RGF0YS0+c2VsZik7CisgICAgQnJvd3Nlcl9XaW5k
b3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcoc21hcnREYXRhLT5zZWxmKTsK
IAogICAgIEVpbmFfQm9vbCBvayA9IEVJTkFfRkFMU0U7CiAKLSAgICBFdmFzX09iamVjdCAqcHJv
bXB0X3BvcHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPndpbmRvdyk7CisgICAgRXZhc19PYmpl
Y3QgKnByb21wdF9wb3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAg
ICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChwcm9tcHRfcG9wdXAsIEVWQVNfSElO
VF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwogICAgIGVsbV9vYmplY3RfcGFydF90ZXh0X3Nl
dChwcm9tcHRfcG9wdXAsICJ0aXRsZSx0ZXh0IiwgIlByb21wdCIpOwogCiAgICAgLyogUG9wdXAg
Q29udGVudCAqLwotICAgIEV2YXNfT2JqZWN0ICpib3ggPSBlbG1fYm94X2FkZCh3aW5kb3ctPndp
bmRvdyk7CisgICAgRXZhc19PYmplY3QgKmJveCA9IGVsbV9ib3hfYWRkKHdpbmRvdy0+ZWxtX3dp
bmRvdyk7CiAgICAgZWxtX2JveF9wYWRkaW5nX3NldChib3gsIDAsIDQpOwogICAgIGV2YXNfb2Jq
ZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGJveCwgRVZBU19ISU5UX0VYUEFORCwgRVZBU19ISU5U
X0VYUEFORCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldChib3gsIEVWQVNf
SElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhib3gpOwog
Ci0gICAgRXZhc19PYmplY3QgKnByb21wdCA9IGVsbV9sYWJlbF9hZGQod2luZG93LT53aW5kb3cp
OworICAgIEV2YXNfT2JqZWN0ICpwcm9tcHQgPSBlbG1fbGFiZWxfYWRkKHdpbmRvdy0+ZWxtX3dp
bmRvdyk7CiAgICAgZWxtX29iamVjdF90ZXh0X3NldChwcm9tcHQsIG1lc3NhZ2UpOwogICAgIGV2
YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KHByb21wdCwgRVZBU19ISU5UX0VYUEFORCwg
MC4wKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHByb21wdCwgRVZBU19I
SU5UX0ZJTEwsIDAuNSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZChib3gsIHByb21wdCk7CiAgICAg
ZXZhc19vYmplY3Rfc2hvdyhwcm9tcHQpOwogCi0gICAgRXZhc19PYmplY3QgKmVudHJ5ID0gZWxt
X2VudHJ5X2FkZCh3aW5kb3ctPndpbmRvdyk7CisgICAgRXZhc19PYmplY3QgKmVudHJ5ID0gZWxt
X2VudHJ5X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGVsbV9lbnRyeV9zY3JvbGxhYmxl
X3NldChlbnRyeSwgRUlOQV9UUlVFKTsKICAgICBlbG1fZW50cnlfc2luZ2xlX2xpbmVfc2V0KGVu
dHJ5LCBFSU5BX1RSVUUpOwogICAgIGVsbV9lbnRyeV90ZXh0X3N0eWxlX3VzZXJfcHVzaChlbnRy
eSwgIkRFRkFVTFQ9J2ZvbnRfc2l6ZT0xOCciKTsKQEAgLTY1NywzMiArNjY0LDI1IEBAIG9uX2ph
dmFzY3JpcHRfcHJvbXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0RGF0YSwgY29uc3QgY2hh
ciAqbWVzc2FnZSwgY29uc3QKIAogc3RhdGljIEVpbmFfQm9vbCBvbl93aW5kb3dfZ2VvbWV0cnlf
Z2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX0Nvb3JkICp4LCBFdmFzX0Nvb3JkICp5
LCBFdmFzX0Nvb3JkICp3aWR0aCwgRXZhc19Db29yZCAqaGVpZ2h0KQogewotICAgIEJyb3dzZXJf
V2luZG93ICp3aW5kb3cgPSBicm93c2VyX3ZpZXdfZmluZChzZC0+c2VsZik7CisgICAgQnJvd3Nl
cl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcoc2QtPnNlbGYpOwog
Ci0gICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHdpbmRvdy0+d2luZG93LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQod2luZG93LT5lbG1fd2lu
ZG93LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
IHN0YXRpYyBFaW5hX0Jvb2wgb25fd2luZG93X2dlb21ldHJ5X3NldChFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lkdGgsIEV2
YXNfQ29vcmQgaGVpZ2h0KQogewotICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSBicm93c2Vy
X3ZpZXdfZmluZChzZC0+c2VsZik7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRv
d19maW5kX3dpdGhfZXdrX3ZpZXcoc2QtPnNlbGYpOwogCi0gICAgZXZhc19vYmplY3RfbW92ZSh3
aW5kb3ctPndpbmRvdywgeCwgeSk7Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKHdpbmRvdy0+d2lu
ZG93LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+ZWxtX3dp
bmRvdywgeCwgeSk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKHdpbmRvdy0+ZWxtX3dpbmRvdywg
d2lkdGgsIGhlaWdodCk7CiAKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi10eXBlZGVmIHN0
cnVjdCB7Ci0gICAgRXZhc19PYmplY3QgKnBvcHVwOwotICAgIEV3a19BdXRoX1JlcXVlc3QgKnJl
cXVlc3Q7Ci0gICAgRXZhc19PYmplY3QgKnVzZXJuYW1lX2VudHJ5OwotICAgIEV2YXNfT2JqZWN0
ICpwYXNzd29yZF9lbnRyeTsKLX0gQXV0aERhdGE7Ci0KIHN0YXRpYyB2b2lkCi1hdXRoX3BvcHVw
X2Nsb3NlKEF1dGhEYXRhICphdXRoX2RhdGEpCithdXRoX3BvcHVwX2Nsb3NlKEF1dGhfRGF0YSAq
YXV0aF9kYXRhKQogewogICAgIGV3a19vYmplY3RfdW5yZWYoYXV0aF9kYXRhLT5yZXF1ZXN0KTsK
ICAgICBldmFzX29iamVjdF9kZWwoYXV0aF9kYXRhLT5wb3B1cCk7CkBAIC02OTIsNyArNjkyLDcg
QEAgYXV0aF9wb3B1cF9jbG9zZShBdXRoRGF0YSAqYXV0aF9kYXRhKQogc3RhdGljIHZvaWQKIG9u
X2F1dGhfY2FuY2VsKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZl
bnRfaW5mbykKIHsKLSAgICBBdXRoRGF0YSAqYXV0aF9kYXRhID0gKEF1dGhEYXRhICopdXNlcl9k
YXRhOworICAgIEF1dGhfRGF0YSAqYXV0aF9kYXRhID0gKEF1dGhfRGF0YSAqKXVzZXJfZGF0YTsK
IAogICAgIGV3a19hdXRoX3JlcXVlc3RfY2FuY2VsKGF1dGhfZGF0YS0+cmVxdWVzdCk7CiAKQEAg
LTcwMiw3ICs3MDIsNyBAQCBvbl9hdXRoX2NhbmNlbCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2Jq
ZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiBzdGF0aWMgdm9pZAogb25fYXV0aF9vayh2b2lk
ICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAg
QXV0aERhdGEgKmF1dGhfZGF0YSA9IChBdXRoRGF0YSAqKXVzZXJfZGF0YTsKKyAgICBBdXRoX0Rh
dGEgKmF1dGhfZGF0YSA9IChBdXRoX0RhdGEgKil1c2VyX2RhdGE7CiAKICAgICBjb25zdCBjaGFy
ICp1c2VybmFtZSA9IGVsbV9lbnRyeV9lbnRyeV9nZXQoYXV0aF9kYXRhLT51c2VybmFtZV9lbnRy
eSk7CiAgICAgY29uc3QgY2hhciAqcGFzc3dvcmQgPSBlbG1fZW50cnlfZW50cnlfZ2V0KGF1dGhf
ZGF0YS0+cGFzc3dvcmRfZW50cnkpOwpAQCAtNzE3LDEwICs3MTcsMTAgQEAgb25fYXV0aGVudGlj
YXRpb25fcmVxdWVzdCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2
ZW50X2luZm8pCiAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAq
KXVzZXJfZGF0YTsKICAgICBFd2tfQXV0aF9SZXF1ZXN0ICpyZXF1ZXN0ID0gZXdrX29iamVjdF9y
ZWYoKEV3a19BdXRoX1JlcXVlc3QgKilldmVudF9pbmZvKTsKIAotICAgIEF1dGhEYXRhICphdXRo
X2RhdGEgPSAoQXV0aERhdGEgKiltYWxsb2Moc2l6ZW9mKEF1dGhEYXRhKSk7CisgICAgQXV0aF9E
YXRhICphdXRoX2RhdGEgPSAoQXV0aF9EYXRhICopbWFsbG9jKHNpemVvZihBdXRoX0RhdGEpKTsK
ICAgICBhdXRoX2RhdGEtPnJlcXVlc3QgPSByZXF1ZXN0OwogCi0gICAgRXZhc19PYmplY3QgKmF1
dGhfcG9wdXAgPSBlbG1fcG9wdXBfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAgICBFdmFzX09iamVj
dCAqYXV0aF9wb3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBh
dXRoX2RhdGEtPnBvcHVwID0gYXV0aF9wb3B1cDsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRf
d2VpZ2h0X3NldChhdXRoX3BvcHVwLCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5E
KTsKICAgICBlbG1fb2JqZWN0X3BhcnRfdGV4dF9zZXQoYXV0aF9wb3B1cCwgInRpdGxlLHRleHQi
LCAiQXV0aGVudGljYXRpb24gUmVxdWlyZWQiKTsKQEAgLTczNyw4ICs3MzcsOCBAQCBvbl9hdXRo
ZW50aWNhdGlvbl9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9p
ZCAqZXZlbnRfaW5mbykKICAgICBFdmFzX09iamVjdCAqbGFiZWwgPSBlbG1fbGFiZWxfYWRkKGF1
dGhfcG9wdXApOwogICAgIGVsbV9sYWJlbF9saW5lX3dyYXBfc2V0KGxhYmVsLCBFTE1fV1JBUF9X
T1JEKTsKICAgICBFaW5hX1N0cmJ1ZiAqYXV0aF90ZXh0ID0gZWluYV9zdHJidWZfbmV3KCk7Ci0g
ICAgY29uc3QgY2hhciogaG9zdCA9IGV3a19hdXRoX3JlcXVlc3RfaG9zdF9nZXQocmVxdWVzdCk7
Ci0gICAgY29uc3QgY2hhciogcmVhbG0gPSBld2tfYXV0aF9yZXF1ZXN0X3JlYWxtX2dldChyZXF1
ZXN0KTsKKyAgICBjb25zdCBjaGFyICpob3N0ID0gZXdrX2F1dGhfcmVxdWVzdF9ob3N0X2dldChy
ZXF1ZXN0KTsKKyAgICBjb25zdCBjaGFyICpyZWFsbSA9IGV3a19hdXRoX3JlcXVlc3RfcmVhbG1f
Z2V0KHJlcXVlc3QpOwogICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmludGYoYXV0aF90ZXh0LCAi
QSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYXJlIGJlaW5nIHJlcXVlc3RlZCBieSAlcy4gVGhlIHNp
dGUgc2F5czogXCIlc1wiIiwgaG9zdCwgcmVhbG0gPyByZWFsbSA6ICIiKTsKICAgICBlbG1fb2Jq
ZWN0X3RleHRfc2V0KGxhYmVsLCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KGF1dGhfdGV4dCkpOwog
ICAgIGVpbmFfc3RyYnVmX2ZyZWUoYXV0aF90ZXh0KTsKQEAgLTgxMiwxMCArODEyLDEwIEBAIHN0
YXRpYyB2b2lkCiBvbl90b29sdGlwX3RleHRfc2V0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmpl
Y3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93
ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwotICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2Ug
PSAoY29uc3QgY2hhciopZXZlbnRfaW5mbzsKKyAgICBjb25zdCBjaGFyICptZXNzYWdlID0gKGNv
bnN0IGNoYXIqKWV2ZW50X2luZm87CiAKLSAgICBlbG1fb2JqZWN0X3Rvb2x0aXBfdGV4dF9zZXQo
d2luZG93LT53ZWJ2aWV3LCBtZXNzYWdlKTsKLSAgICBlbG1fb2JqZWN0X3Rvb2x0aXBfc2hvdyh3
aW5kb3ctPndlYnZpZXcpOworICAgIGVsbV9vYmplY3RfdG9vbHRpcF90ZXh0X3NldCh3aW5kb3ct
PmV3a192aWV3LCBtZXNzYWdlKTsKKyAgICBlbG1fb2JqZWN0X3Rvb2x0aXBfc2hvdyh3aW5kb3ct
PmV3a192aWV3KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTgyMywyMSArODIzLDIxIEBAIG9uX3Rv
b2x0aXBfdGV4dF91bnNldCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQg
KmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dp
bmRvdyAqKXVzZXJfZGF0YTsKIAotICAgIGVsbV9vYmplY3RfdG9vbHRpcF91bnNldCh3aW5kb3ct
PndlYnZpZXcpOworICAgIGVsbV9vYmplY3RfdG9vbHRpcF91bnNldCh3aW5kb3ctPmV3a192aWV3
KTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2hvbWVfYnV0dG9uX2NsaWNrZWQodm9pZCAqdXNlcl9k
YXRhLCBFdmFzX09iamVjdCAqaG9tZV9idXR0b24sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAg
QnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwor
ICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7
CiAKLSAgICBld2tfdmlld191cmxfc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCBERUZBVUxUX1VSTCk7
CisgICAgZXdrX3ZpZXdfdXJsX3NldCh3aW5kb3ctPmV3a192aWV3LCBERUZBVUxUX1VSTCk7CiB9
CiAKIHN0YXRpYyB2b2lkCi1vbl93aW5kb3dfZGVsZXRpb24odm9pZCAqdXNlcl9kYXRhLCBFdmFz
X09iamVjdCAqd2luZG93LCB2b2lkICpldmVudF9pbmZvKQorb25fd2luZG93X2RlbGV0aW9uKHZv
aWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmVsbV93aW5kb3csIHZvaWQgKmV2ZW50X2luZm8p
CiB7Ci0gICAgd2luZG93X2Nsb3NlKGJyb3dzZXJfd2luZG93X2ZpbmQod2luZG93KSk7CisgICAg
d2luZG93X2Nsb3NlKHdpbmRvd19maW5kX3dpdGhfZWxtX3dpbmRvdyhlbG1fd2luZG93KSk7CiB9
CiAKIHN0YXRpYyBFdmFzX09iamVjdCAqCkBAIC04NTgsMzMgKzg1OCwzMyBAQCBjcmVhdGVfdG9v
bGJhcl9idXR0b24oRXZhc19PYmplY3QgKndpbmRvdywgY29uc3QgY2hhciAqaWNvbl9uYW1lKQog
CiBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoY29uc3QgY2hhciAqdXJsKQog
ewotICAgIEJyb3dzZXJfV2luZG93ICphcHBfZGF0YSA9IG1hbGxvYyhzaXplb2YoQnJvd3Nlcl9X
aW5kb3cpKTsKLSAgICBpZiAoIWFwcF9kYXRhKSB7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRv
dyA9IG1hbGxvYyhzaXplb2YoQnJvd3Nlcl9XaW5kb3cpKTsKKyAgICBpZiAoIXdpbmRvdykgewog
ICAgICAgICBpbmZvKCJFUlJPUjogY291bGQgbm90IGNyZWF0ZSBicm93c2VyIHdpbmRvdy5cbiIp
OwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKiBDcmVhdGUgd2luZG93ICov
Ci0gICAgYXBwX2RhdGEtPndpbmRvdyA9IGVsbV93aW5fYWRkKE5VTEwsICJtaW5pYnJvd3Nlci13
aW5kb3ciLCBFTE1fV0lOX0JBU0lDKTsKLSAgICBlbG1fd2luX3RpdGxlX3NldChhcHBfZGF0YS0+
d2luZG93LCBBUFBfTkFNRSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFw
cF9kYXRhLT53aW5kb3csICJkZWxldGUscmVxdWVzdCIsIG9uX3dpbmRvd19kZWxldGlvbiwgJmFw
cF9kYXRhKTsKKyAgICB3aW5kb3ctPmVsbV93aW5kb3cgPSBlbG1fd2luX2FkZChOVUxMLCAibWlu
aWJyb3dzZXItd2luZG93IiwgRUxNX1dJTl9CQVNJQyk7CisgICAgZWxtX3dpbl90aXRsZV9zZXQo
d2luZG93LT5lbG1fd2luZG93LCBBUFBfTkFNRSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdywgImRlbGV0ZSxyZXF1ZXN0Iiwgb25fd2luZG93
X2RlbGV0aW9uLCAmd2luZG93KTsKIAogICAgIC8qIENyZWF0ZSB3aW5kb3cgYmFja2dyb3VuZCAq
LwotICAgIEV2YXNfT2JqZWN0ICpiZyA9IGVsbV9iZ19hZGQoYXBwX2RhdGEtPndpbmRvdyk7Cisg
ICAgRXZhc19PYmplY3QgKmJnID0gZWxtX2JnX2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAg
IGVsbV9iZ19jb2xvcl9zZXQoYmcsIDE5MywgMTkyLCAxOTEpOwogICAgIGV2YXNfb2JqZWN0X3Np
emVfaGludF93ZWlnaHRfc2V0KGJnLCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5E
KTsKLSAgICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKGFwcF9kYXRhLT53aW5kb3csIGJnKTsK
KyAgICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdywgYmcpOwog
ICAgIGV2YXNfb2JqZWN0X3Nob3coYmcpOwogCiAgICAgLyogQ3JlYXRlIHZlcnRpY2FsIGxheW91
dCAqLwotICAgIEV2YXNfT2JqZWN0ICp2ZXJ0aWNhbF9sYXlvdXQgPSBlbG1fYm94X2FkZChhcHBf
ZGF0YS0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqdmVydGljYWxfbGF5b3V0ID0gZWxtX2Jv
eF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBlbG1fYm94X3BhZGRpbmdfc2V0KHZlcnRp
Y2FsX2xheW91dCwgMCwgMik7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQo
dmVydGljYWxfbGF5b3V0LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKLSAg
ICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKGFwcF9kYXRhLT53aW5kb3csIHZlcnRpY2FsX2xh
eW91dCk7CisgICAgZWxtX3dpbl9yZXNpemVfb2JqZWN0X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cs
IHZlcnRpY2FsX2xheW91dCk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyh2ZXJ0aWNhbF9sYXlvdXQp
OwogCiAgICAgLyogQ3JlYXRlIGhvcml6b250YWwgbGF5b3V0IGZvciB0b3AgYmFyICovCi0gICAg
RXZhc19PYmplY3QgKmhvcml6b250YWxfbGF5b3V0ID0gZWxtX2JveF9hZGQoYXBwX2RhdGEtPndp
bmRvdyk7CisgICAgRXZhc19PYmplY3QgKmhvcml6b250YWxfbGF5b3V0ID0gZWxtX2JveF9hZGQo
d2luZG93LT5lbG1fd2luZG93KTsKICAgICBlbG1fYm94X2hvcml6b250YWxfc2V0KGhvcml6b250
YWxfbGF5b3V0LCBFSU5BX1RSVUUpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRf
c2V0KGhvcml6b250YWxfbGF5b3V0LCBFVkFTX0hJTlRfRVhQQU5ELCAwLjApOwogICAgIGV2YXNf
b2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQoaG9yaXpvbnRhbF9sYXlvdXQsIEVWQVNfSElOVF9G
SUxMLCAwLjApOwpAQCAtODkyLDU0ICs4OTIsNTQgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3
aW5kb3dfY3JlYXRlKGNvbnN0IGNoYXIgKnVybCkKICAgICBldmFzX29iamVjdF9zaG93KGhvcml6
b250YWxfbGF5b3V0KTsKIAogICAgIC8qIENyZWF0ZSBCYWNrIGJ1dHRvbiAqLwotICAgIGFwcF9k
YXRhLT5iYWNrX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbihhcHBfZGF0YS0+d2luZG93
LCAiYXJyb3dfbGVmdCIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBf
ZGF0YS0+YmFja19idXR0b24sICJjbGlja2VkIiwgb25fYmFja19idXR0b25fY2xpY2tlZCwgYXBw
X2RhdGEpOwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGFwcF9kYXRhLT5iYWNrX2J1dHRv
biwgRUlOQV9UUlVFKTsKLSAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChhcHBf
ZGF0YS0+YmFja19idXR0b24sIDAuMCwgRVZBU19ISU5UX0VYUEFORCk7Ci0gICAgZXZhc19vYmpl
Y3Rfc2l6ZV9oaW50X2FsaWduX3NldChhcHBfZGF0YS0+YmFja19idXR0b24sIDAuMCwgMC41KTsK
LSAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCBhcHBfZGF0YS0+YmFja19i
dXR0b24pOwotICAgIGV2YXNfb2JqZWN0X3Nob3coYXBwX2RhdGEtPmJhY2tfYnV0dG9uKTsKKyAg
ICB3aW5kb3ctPmJhY2tfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdpbmRvdy0+ZWxt
X3dpbmRvdywgImFycm93X2xlZnQiKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQod2luZG93LT5iYWNrX2J1dHRvbiwgImNsaWNrZWQiLCBvbl9iYWNrX2J1dHRvbl9jbGlja2Vk
LCB3aW5kb3cpOworICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+YmFja19idXR0
b24sIEVJTkFfVFJVRSk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2lu
ZG93LT5iYWNrX2J1dHRvbiwgMC4wLCBFVkFTX0hJTlRfRVhQQU5EKTsKKyAgICBldmFzX29iamVj
dF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+YmFja19idXR0b24sIDAuMCwgMC41KTsKKyAg
ICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCB3aW5kb3ctPmJhY2tfYnV0dG9u
KTsKKyAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdy0+YmFja19idXR0b24pOwogCiAgICAgLyog
Q3JlYXRlIEZvcndhcmQgYnV0dG9uICovCi0gICAgYXBwX2RhdGEtPmZvcndhcmRfYnV0dG9uID0g
Y3JlYXRlX3Rvb2xiYXJfYnV0dG9uKGFwcF9kYXRhLT53aW5kb3csICJhcnJvd19yaWdodCIpOwot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+Zm9yd2FyZF9idXR0
b24sICJjbGlja2VkIiwgb25fZm9yd2FyZF9idXR0b25fY2xpY2tlZCwgYXBwX2RhdGEpOwotICAg
IGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGFwcF9kYXRhLT5mb3J3YXJkX2J1dHRvbiwgRUlOQV9U
UlVFKTsKLSAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChhcHBfZGF0YS0+Zm9y
d2FyZF9idXR0b24sIDAuMCwgRVZBU19ISU5UX0VYUEFORCk7Ci0gICAgZXZhc19vYmplY3Rfc2l6
ZV9oaW50X2FsaWduX3NldChhcHBfZGF0YS0+Zm9yd2FyZF9idXR0b24sIDAuMCwgMC41KTsKLSAg
ICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCBhcHBfZGF0YS0+Zm9yd2FyZF9i
dXR0b24pOwotICAgIGV2YXNfb2JqZWN0X3Nob3coYXBwX2RhdGEtPmZvcndhcmRfYnV0dG9uKTsK
KyAgICB3aW5kb3ctPmZvcndhcmRfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdpbmRv
dy0+ZWxtX3dpbmRvdywgImFycm93X3JpZ2h0Iik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sICJjbGlja2VkIiwgb25fZm9yd2FyZF9i
dXR0b25fY2xpY2tlZCwgd2luZG93KTsKKyAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldCh3aW5k
b3ctPmZvcndhcmRfYnV0dG9uLCBFSU5BX1RSVUUpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGlu
dF93ZWlnaHRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIDAuMCwgRVZBU19ISU5UX0VYUEFO
RCk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldCh3aW5kb3ctPmZvcndhcmRf
YnV0dG9uLCAwLjAsIDAuNSk7CisgICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91
dCwgd2luZG93LT5mb3J3YXJkX2J1dHRvbik7CisgICAgZXZhc19vYmplY3Rfc2hvdyh3aW5kb3ct
PmZvcndhcmRfYnV0dG9uKTsKIAogICAgIC8qIENyZWF0ZSBVUkwgYmFyICovCi0gICAgYXBwX2Rh
dGEtPnVybF9iYXIgPSBlbG1fZW50cnlfYWRkKGFwcF9kYXRhLT53aW5kb3cpOwotICAgIGVsbV9l
bnRyeV9zY3JvbGxhYmxlX3NldChhcHBfZGF0YS0+dXJsX2JhciwgRUlOQV9UUlVFKTsKLSAgICBl
bG1fZW50cnlfc2Nyb2xsYmFyX3BvbGljeV9zZXQoYXBwX2RhdGEtPnVybF9iYXIsIEVMTV9TQ1JP
TExFUl9QT0xJQ1lfT0ZGLCBFTE1fU0NST0xMRVJfUE9MSUNZX09GRik7Ci0gICAgZWxtX2VudHJ5
X3NpbmdsZV9saW5lX3NldChhcHBfZGF0YS0+dXJsX2JhciwgRUlOQV9UUlVFKTsKLSAgICBlbG1f
ZW50cnlfY25wX21vZGVfc2V0KGFwcF9kYXRhLT51cmxfYmFyLCBFTE1fQ05QX01PREVfUExBSU5U
RVhUKTsKLSAgICBlbG1fZW50cnlfdGV4dF9zdHlsZV91c2VyX3B1c2goYXBwX2RhdGEtPnVybF9i
YXIsICJERUZBVUxUPSdmb250X3NpemU9MTgnIik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKGFwcF9kYXRhLT51cmxfYmFyLCAiYWN0aXZhdGVkIiwgb25fdXJsX2Jhcl9hY3Rp
dmF0ZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBw
X2RhdGEtPnVybF9iYXIsICJjbGlja2VkIiwgb25fdXJsX2Jhcl9jbGlja2VkLCBhcHBfZGF0YSk7
Ci0gICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoYXBwX2RhdGEtPnVybF9iYXIs
IEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGV2YXNfb2JqZWN0X3Np
emVfaGludF9hbGlnbl9zZXQoYXBwX2RhdGEtPnVybF9iYXIsIEVWQVNfSElOVF9GSUxMLCBFVkFT
X0hJTlRfRklMTCk7Ci0gICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91dCwgYXBw
X2RhdGEtPnVybF9iYXIpOwotICAgIGV2YXNfb2JqZWN0X3Nob3coYXBwX2RhdGEtPnVybF9iYXIp
OworICAgIHdpbmRvdy0+dXJsX2JhciA9IGVsbV9lbnRyeV9hZGQod2luZG93LT5lbG1fd2luZG93
KTsKKyAgICBlbG1fZW50cnlfc2Nyb2xsYWJsZV9zZXQod2luZG93LT51cmxfYmFyLCBFSU5BX1RS
VUUpOworICAgIGVsbV9lbnRyeV9zY3JvbGxiYXJfcG9saWN5X3NldCh3aW5kb3ctPnVybF9iYXIs
IEVMTV9TQ1JPTExFUl9QT0xJQ1lfT0ZGLCBFTE1fU0NST0xMRVJfUE9MSUNZX09GRik7CisgICAg
ZWxtX2VudHJ5X3NpbmdsZV9saW5lX3NldCh3aW5kb3ctPnVybF9iYXIsIEVJTkFfVFJVRSk7Cisg
ICAgZWxtX2VudHJ5X2NucF9tb2RlX3NldCh3aW5kb3ctPnVybF9iYXIsIEVMTV9DTlBfTU9ERV9Q
TEFJTlRFWFQpOworICAgIGVsbV9lbnRyeV90ZXh0X3N0eWxlX3VzZXJfcHVzaCh3aW5kb3ctPnVy
bF9iYXIsICJERUZBVUxUPSdmb250X3NpemU9MTgnIik7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKHdpbmRvdy0+dXJsX2JhciwgImFjdGl2YXRlZCIsIG9uX3VybF9iYXJfYWN0
aXZhdGVkLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5k
b3ctPnVybF9iYXIsICJjbGlja2VkIiwgb25fdXJsX2Jhcl9jbGlja2VkLCB3aW5kb3cpOworICAg
IGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KHdpbmRvdy0+dXJsX2JhciwgRVZBU19I
SU5UX0VYUEFORCwgRVZBU19ISU5UX0VYUEFORCk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50
X2FsaWduX3NldCh3aW5kb3ctPnVybF9iYXIsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklM
TCk7CisgICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91dCwgd2luZG93LT51cmxf
YmFyKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdy0+dXJsX2Jhcik7CiAKICAgICAvKiBD
cmVhdGUgUmVmcmVzaCBidXR0b24gKi8KLSAgICBFdmFzX09iamVjdCAqcmVmcmVzaF9idXR0b24g
PSBjcmVhdGVfdG9vbGJhcl9idXR0b24oYXBwX2RhdGEtPndpbmRvdywgInJlZnJlc2giKTsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQocmVmcmVzaF9idXR0b24sICJjbGlja2Vk
Iiwgb25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCwgYXBwX2RhdGEpOworICAgIEV2YXNfT2JqZWN0
ICpyZWZyZXNoX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbih3aW5kb3ctPmVsbV93aW5k
b3csICJyZWZyZXNoIik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHJlZnJl
c2hfYnV0dG9uLCAiY2xpY2tlZCIsIG9uX3JlZnJlc2hfYnV0dG9uX2NsaWNrZWQsIHdpbmRvdyk7
CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQocmVmcmVzaF9idXR0b24sIDAu
MCwgRVZBU19ISU5UX0VYUEFORCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3Nl
dChyZWZyZXNoX2J1dHRvbiwgMS4wLCAwLjUpOwogICAgIGVsbV9ib3hfcGFja19lbmQoaG9yaXpv
bnRhbF9sYXlvdXQsIHJlZnJlc2hfYnV0dG9uKTsKICAgICBldmFzX29iamVjdF9zaG93KHJlZnJl
c2hfYnV0dG9uKTsKIAogICAgIC8qIENyZWF0ZSBIb21lIGJ1dHRvbiAqLwotICAgIEV2YXNfT2Jq
ZWN0ICpob21lX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbihhcHBfZGF0YS0+d2luZG93
LCAiaG9tZSIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChob21lX2J1dHRv
biwgImNsaWNrZWQiLCBvbl9ob21lX2J1dHRvbl9jbGlja2VkLCBhcHBfZGF0YSk7CisgICAgRXZh
c19PYmplY3QgKmhvbWVfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdpbmRvdy0+ZWxt
X3dpbmRvdywgImhvbWUiKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoaG9t
ZV9idXR0b24sICJjbGlja2VkIiwgb25faG9tZV9idXR0b25fY2xpY2tlZCwgd2luZG93KTsKICAg
ICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChob21lX2J1dHRvbiwgMC4wLCBFVkFT
X0hJTlRfRVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KGhvbWVf
YnV0dG9uLCAxLjAsIDAuNSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91
dCwgaG9tZV9idXR0b24pOwogICAgIGV2YXNfb2JqZWN0X3Nob3coaG9tZV9idXR0b24pOwogCi0g
ICAgLyogQ3JlYXRlIHdlYnZpZXcgKi8KKyAgICAvKiBDcmVhdGUgZXdrX3ZpZXcgKi8KICAgICBF
d2tfVmlld19TbWFydF9DbGFzcyAqZXdrVmlld0NsYXNzID0gbWluaUJyb3dzZXJWaWV3U21hcnRD
bGFzcygpOwogICAgIGV3a1ZpZXdDbGFzcy0+cnVuX2phdmFzY3JpcHRfYWxlcnQgPSBvbl9qYXZh
c2NyaXB0X2FsZXJ0OwogICAgIGV3a1ZpZXdDbGFzcy0+cnVuX2phdmFzY3JpcHRfY29uZmlybSA9
IG9uX2phdmFzY3JpcHRfY29uZmlybTsKQEAgLTk0Nyw1MCArOTQ3LDUwIEBAIHN0YXRpYyBCcm93
c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShjb25zdCBjaGFyICp1cmwpCiAgICAgZXdrVmlld0Ns
YXNzLT53aW5kb3dfZ2VvbWV0cnlfZ2V0ID0gb25fd2luZG93X2dlb21ldHJ5X2dldDsKICAgICBl
d2tWaWV3Q2xhc3MtPndpbmRvd19nZW9tZXRyeV9zZXQgPSBvbl93aW5kb3dfZ2VvbWV0cnlfc2V0
OwogCi0gICAgRXZhcyAqZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGFwcF9kYXRhLT53aW5k
b3cpOworICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3aW5kb3ctPmVsbV93
aW5kb3cpOwogICAgIEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJmV3
a1ZpZXdDbGFzcy0+c2MpOwotICAgIGFwcF9kYXRhLT53ZWJ2aWV3ID0gZXdrX3ZpZXdfc21hcnRf
YWRkKGV2YXMsIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKLSAgICBld2tfdmll
d190aGVtZV9zZXQoYXBwX2RhdGEtPndlYnZpZXcsIFRIRU1FX0RJUiAiL2RlZmF1bHQuZWRqIik7
CisgICAgd2luZG93LT5ld2tfdmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwg
ZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdpbmRv
dy0+ZXdrX3ZpZXcsIFRIRU1FX0RJUiAiL2RlZmF1bHQuZWRqIik7CiAKLSAgICBFd2tfU2V0dGlu
Z3MgKnNldHRpbmdzID0gZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0KGFwcF9kYXRhLT53ZWJ2aWV3KTsK
KyAgICBFd2tfU2V0dGluZ3MgKnNldHRpbmdzID0gZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0KHdpbmRv
dy0+ZXdrX3ZpZXcpOwogICAgIGV3a19zZXR0aW5nc19maWxlX2FjY2Vzc19mcm9tX2ZpbGVfdXJs
c19hbGxvd2VkX3NldChzZXR0aW5ncywgRUlOQV9UUlVFKTsKICAgICBld2tfc2V0dGluZ3NfZnJh
bWVfZmxhdHRlbmluZ19lbmFibGVkX3NldChzZXR0aW5ncywgZnJhbWVfZmxhdHRlbmluZ19lbmFi
bGVkKTsKICAgICBld2tfc2V0dGluZ3NfZGV2ZWxvcGVyX2V4dHJhc19lbmFibGVkX3NldChzZXR0
aW5ncywgRUlOQV9UUlVFKTsKICAgICBld2tfc2V0dGluZ3NfcHJlZmVycmVkX21pbmltdW1fY29u
dGVudHNfd2lkdGhfc2V0KHNldHRpbmdzLCAwKTsKIAotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImF1dGhlbnRpY2F0aW9uLHJlcXVlc3QiLCBv
bl9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0LCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiY2xvc2Usd2luZG93Iiwgb25fY2xv
c2Vfd2luZG93LCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KGFwcF9kYXRhLT53ZWJ2aWV3LCAiY3JlYXRlLHdpbmRvdyIsIG9uX25ld193aW5kb3csIGFwcF9k
YXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZp
ZXcsICJkb3dubG9hZCxmYWlsZWQiLCBvbl9kb3dubG9hZF9mYWlsZWQsIGFwcF9kYXRhKTsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJkb3du
bG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25sb2FkX2ZpbmlzaGVkLCBhcHBfZGF0YSk7Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiZG93bmxvYWQs
cmVxdWVzdCIsIG9uX2Rvd25sb2FkX3JlcXVlc3QsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJmaWxlLGNob29zZXIscmVx
dWVzdCIsIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0LCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiaWNvbixjaGFuZ2VkIiwg
b25fdmlld19pY29uX2NoYW5nZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJsb2FkLGVycm9yIiwgb25fZXJyb3IsIGFw
cF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndl
YnZpZXcsICJsb2FkLHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcF9kYXRhKTsKLSAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJ0aXRsZSxjaGFu
Z2VkIiwgb25fdGl0bGVfY2hhbmdlZCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgInVybCxjaGFuZ2VkIiwgb25fdXJsX2No
YW5nZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBw
X2RhdGEtPndlYnZpZXcsICJiYWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIiwgb25fYmFja19mb3J3
YXJkX2xpc3RfY2hhbmdlZCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgInRvb2x0aXAsdGV4dCxzZXQiLCBvbl90b29sdGlw
X3RleHRfc2V0LCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KGFwcF9kYXRhLT53ZWJ2aWV3LCAidG9vbHRpcCx0ZXh0LHVuc2V0Iiwgb25fdG9vbHRpcF90ZXh0
X3Vuc2V0LCBhcHBfZGF0YSk7Ci0KLSAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQo
YXBwX2RhdGEtPndlYnZpZXcsIEVWQVNfQ0FMTEJBQ0tfS0VZX0RPV04sIG9uX2tleV9kb3duLCBh
cHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53
ZWJ2aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04sIG9uX21vdXNlX2Rvd24sIGFwcF9kYXRh
KTsKLQotICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGFwcF9kYXRhLT53ZWJ2
aWV3LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKLSAgICBldmFzX29iamVj
dF9zaXplX2hpbnRfYWxpZ25fc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCBFVkFTX0hJTlRfRklMTCwg
RVZBU19ISU5UX0ZJTEwpOwotICAgIGVsbV9ib3hfcGFja19lbmQodmVydGljYWxfbGF5b3V0LCBh
cHBfZGF0YS0+d2Vidmlldyk7Ci0gICAgZXZhc19vYmplY3Rfc2hvdyhhcHBfZGF0YS0+d2Vidmll
dyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcs
ICJhdXRoZW50aWNhdGlvbixyZXF1ZXN0Iiwgb25fYXV0aGVudGljYXRpb25fcmVxdWVzdCwgd2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmll
dywgImNsb3NlLHdpbmRvdyIsIG9uX2Nsb3NlX3dpbmRvdywgd2luZG93KTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgImNyZWF0ZSx3aW5kb3ci
LCBvbl9uZXdfd2luZG93LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZCh3aW5kb3ctPmV3a192aWV3LCAiZG93bmxvYWQsZmFpbGVkIiwgb25fZG93bmxvYWRfZmFp
bGVkLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ct
PmV3a192aWV3LCAiZG93bmxvYWQsZmluaXNoZWQiLCBvbl9kb3dubG9hZF9maW5pc2hlZCwgd2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmll
dywgImRvd25sb2FkLHJlcXVlc3QiLCBvbl9kb3dubG9hZF9yZXF1ZXN0LCB3aW5kb3cpOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiZmlsZSxj
aG9vc2VyLHJlcXVlc3QiLCBvbl9maWxlX2Nob29zZXJfcmVxdWVzdCwgd2luZG93KTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgImljb24sY2hh
bmdlZCIsIG9uX3ZpZXdfaWNvbl9jaGFuZ2VkLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAibG9hZCxlcnJvciIsIG9uX2Vycm9y
LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3
a192aWV3LCAibG9hZCxwcm9ncmVzcyIsIG9uX3Byb2dyZXNzLCB3aW5kb3cpOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAidGl0bGUsY2hhbmdl
ZCIsIG9uX3RpdGxlX2NoYW5nZWQsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJ1cmwsY2hhbmdlZCIsIG9uX3VybF9jaGFuZ2Vk
LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3
a192aWV3LCAiYmFjayxmb3J3YXJkLGxpc3QsY2hhbmdlZCIsIG9uX2JhY2tfZm9yd2FyZF9saXN0
X2NoYW5nZWQsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdp
bmRvdy0+ZXdrX3ZpZXcsICJ0b29sdGlwLHRleHQsc2V0Iiwgb25fdG9vbHRpcF90ZXh0X3NldCwg
d2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tf
dmlldywgInRvb2x0aXAsdGV4dCx1bnNldCIsIG9uX3Rvb2x0aXBfdGV4dF91bnNldCwgd2luZG93
KTsKKworICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3
LCBFVkFTX0NBTExCQUNLX0tFWV9ET1dOLCBvbl9rZXlfZG93biwgd2luZG93KTsKKyAgICBldmFz
X29iamVjdF9ldmVudF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19DQUxMQkFD
S19NT1VTRV9ET1dOLCBvbl9tb3VzZV9kb3duLCB3aW5kb3cpOworCisgICAgZXZhc19vYmplY3Rf
c2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5ld2tfdmlldywgRVZBU19ISU5UX0VYUEFORCwg
RVZBU19ISU5UX0VYUEFORCk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldCh3
aW5kb3ctPmV3a192aWV3LCBFVkFTX0hJTlRfRklMTCwgRVZBU19ISU5UX0ZJTEwpOworICAgIGVs
bV9ib3hfcGFja19lbmQodmVydGljYWxfbGF5b3V0LCB3aW5kb3ctPmV3a192aWV3KTsKKyAgICBl
dmFzX29iamVjdF9zaG93KHdpbmRvdy0+ZXdrX3ZpZXcpOwogCiAgICAgaWYgKHVybCkKLSAgICAg
ICAgZXdrX3ZpZXdfdXJsX3NldChhcHBfZGF0YS0+d2VidmlldywgdXJsKTsKKyAgICAgICAgZXdr
X3ZpZXdfdXJsX3NldCh3aW5kb3ctPmV3a192aWV3LCB1cmwpOwogCi0gICAgZXZhc19vYmplY3Rf
cmVzaXplKGFwcF9kYXRhLT53aW5kb3csIHdpbmRvd193aWR0aCwgd2luZG93X2hlaWdodCk7Ci0g
ICAgZXZhc19vYmplY3Rfc2hvdyhhcHBfZGF0YS0+d2luZG93KTsKKyAgICBldmFzX29iamVjdF9y
ZXNpemUod2luZG93LT5lbG1fd2luZG93LCB3aW5kb3dfd2lkdGgsIHdpbmRvd19oZWlnaHQpOwor
ICAgIGV2YXNfb2JqZWN0X3Nob3cod2luZG93LT5lbG1fd2luZG93KTsKIAotICAgIHZpZXdfZm9j
dXNfc2V0KGFwcF9kYXRhLCBFSU5BX1RSVUUpOworICAgIHZpZXdfZm9jdXNfc2V0KHdpbmRvdywg
RUlOQV9UUlVFKTsKIAotICAgIHJldHVybiBhcHBfZGF0YTsKKyAgICByZXR1cm4gd2luZG93Owog
fQogCiBzdGF0aWMgdm9pZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172948</attachid>
            <date>2012-11-08 00:50:39 -0800</date>
            <delta_ts>2012-11-12 00:43:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101517-20121108174848.patch</filename>
            <type>text/plain</type>
            <size>42488</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjIzMjgyYTdkMmQyZDMxZTU4Nzc4NGQyY2RjMGUxYWVk
ZGMyNWZjYS4uMDk2ZTk4YjlkM2JmYzQ1YWIyNjVjMzI4ZGRmZTY1NjA3MzI5M2E1NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcz
IEBACisyMDEyLTExLTA4ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIFJlbmFtZSB2YXJpYWJsZXMsIHN0cnVjdHVyZXMgYW5kIGZ1bmN0
aW9ucyBvZiB0aGUgTWluaUJyb3dzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDE1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWUgdmFyaWFibGVzLCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlv
bnMgb2YgdGhlIE1pbmlCcm93c2VyCisgICAgICAgIGZvciB0aGUgbmFtaW5nIGNvbnNpc3RlbmN5
LgorCisgICAgICAgIDEpIEJyb3dzZXJfV2luZG93KiB7YXBwX2RhdGF8YnJvd3Nlcl93aW5kb3d8
d2luZG93fSAtPiB3aW5kb3cKKworICAgICAgICAyKSBCcm93c2VyX1dpbmRvdzo6d2VidmlldyAt
PiBCcm93c2VyX1dpbmRvdzo6ZXdrX3ZpZXcKKyAgICAgICAgICAgICBUaGUgd2Via2l0IEFQSSBm
dW5jdGlvbnMgYXJlIGV3a192aWV3X3h4eCBub3Qgd2Vidmlld194eHguCisgICAgICAgICAgICAg
U28gdXNpbmcgZXdrX3ZpZXcgd2lsbCBiZSBiZXR0ZXIgdGhhbiB3ZWJ2aWV3LgorCisgICAgICAg
IDMpIEJyb3dzZXJfV2luZG93Ojp3aW5kb3cgLT4gQnJvd3Nlcl9XaW5kb3c6OmVsbV93aW5kb3cK
KyAgICAgICAgICAgICBUaGUgbmFtZSBpcyBjaGFuZ2VkIHRvIGJlIGRpc3Rpbmd1aXNoZWQgd2l0
aCAnQnJvd3Nlcl9XaW5kb3cgKndpbmRvdycKKworICAgICAgICA0KSBicm93c2VyX3t3aW5kb3d8
dmlld31fZmluZCgpIC0+IHdpbmRvd19maW5kX3dpdGhfe2VsbV93aW5kb3d8ZXdrX3ZpZXd9KCkK
KyAgICAgICAgICAgICBUaGlzIGlzIGNoYW5nZWQgYmVjYXVzZSB0aGUgbmFtZSBvZiB0aGUgZnVu
Y3Rpb24gY2FuIGJlIGNvbmZ1c2VkLgorICAgICAgICAgICAgIEN1cnJlbnRseSwgYnJvd3Nlcl93
aW5kb3dfZmluZCgpIHJldHVybnMgQnJvd3Nlcl9XaW5kb3cqLiBBbmQKKyAgICAgICAgICAgICBi
cm93c2VyX3ZpZXdfZmluZCgpIGFsc28gcmV0dXJucyBCcm93c2VyX1dpbmRvdyouCisKKyAgICAg
ICAgNSkgRmlsZVNlbGVjdG9yRGF0YSAtPiBGaWxlX1NlbGVjdG9yX0RhdGEgLyBBdXRoRGF0YSAt
PiBBdXRoX0RhdGEKKyAgICAgICAgICAgICBUaGUgdHlwZSBkZWZpbml0aW9uIGlzIG1vdmVkIHRv
IHRoZSB0b3Agb2YgdGhlIHNvdXJjZSBmaWxlCisgICAgICAgICAgICAgYW5kIHRoZSBuYW1lIGlz
IGNoYW5nZWQgdG8gZm9sbG93IEVGTCBzdHlsZS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2Vm
bC9tYWluLmM6CisgICAgICAgIChtaW5pQnJvd3NlclZpZXdTbWFydENsYXNzKToKKyAgICAgICAg
KF9Ccm93c2VyX1dpbmRvdyk6CisgICAgICAgICh3aW5kb3dfZmluZF93aXRoX2V3a192aWV3KToK
KyAgICAgICAgKHdpbmRvd19mcmVlKToKKyAgICAgICAgKHZpZXdfZm9jdXNfc2V0KToKKyAgICAg
ICAgKG9uX21vdXNlX2Rvd24pOgorICAgICAgICAob25fdGl0bGVfY2hhbmdlZCk6CisgICAgICAg
IChvbl91cmxfY2hhbmdlZCk6CisgICAgICAgIChvbl9iYWNrX2ZvcndhcmRfbGlzdF9jaGFuZ2Vk
KToKKyAgICAgICAgKG9uX25ld193aW5kb3cpOgorICAgICAgICAob25fY2xvc2Vfd2luZG93KToK
KyAgICAgICAgKG9uX3Byb2dyZXNzKToKKyAgICAgICAgKG9uX2Vycm9yKToKKyAgICAgICAgKG9u
X2Rvd25sb2FkX3JlcXVlc3QpOgorICAgICAgICAoY2xvc2VfZmlsZV9waWNrZXIpOgorICAgICAg
ICAob25fZmlsZXBpY2tlcl9wYXJlbnRfZGVsZXRpb24pOgorICAgICAgICAob25fZmlsZXBpY2tl
cl9kZWxldGlvbik6CisgICAgICAgIChvbl9maWxlc2VsZWN0b3JfZG9uZSk6CisgICAgICAgIChv
bl9maWxlX2Nob29zZXJfcmVxdWVzdCk6CisgICAgICAgIChvbl9kb3dubG9hZF9maW5pc2hlZCk6
CisgICAgICAgIChvbl9kb3dubG9hZF9mYWlsZWQpOgorICAgICAgICAob25fZmF2aWNvbl9yZWNl
aXZlZCk6CisgICAgICAgIChvbl92aWV3X2ljb25fY2hhbmdlZCk6CisgICAgICAgIChvbl91cmxf
YmFyX2FjdGl2YXRlZCk6CisgICAgICAgIChvbl91cmxfYmFyX2NsaWNrZWQpOgorICAgICAgICAo
b25fYmFja19idXR0b25fY2xpY2tlZCk6CisgICAgICAgIChvbl9mb3J3YXJkX2J1dHRvbl9jbGlj
a2VkKToKKyAgICAgICAgKG9uX3JlZnJlc2hfYnV0dG9uX2NsaWNrZWQpOgorICAgICAgICAob25f
amF2YXNjcmlwdF9hbGVydCk6CisgICAgICAgIChvbl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAg
ICAgICAob25famF2YXNjcmlwdF9wcm9tcHQpOgorICAgICAgICAoYXV0aF9wb3B1cF9jbG9zZSk6
CisgICAgICAgIChvbl9hdXRoX2NhbmNlbCk6CisgICAgICAgIChvbl9hdXRoX29rKToKKyAgICAg
ICAgKG9uX2F1dGhlbnRpY2F0aW9uX3JlcXVlc3QpOgorICAgICAgICAob25fdG9vbHRpcF90ZXh0
X3NldCk6CisgICAgICAgIChvbl90b29sdGlwX3RleHRfdW5zZXQpOgorICAgICAgICAob25faG9t
ZV9idXR0b25fY2xpY2tlZCk6CisgICAgICAgIChvbl93aW5kb3dfZGVsZXRpb24pOgorICAgICAg
ICAod2luZG93X2NyZWF0ZSk6CisKIDIwMTItMTEtMDggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25AaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFR1cm4gb24gV1RGX1VTRV9USUxFRF9CQUNL
SU5HX1NUT1JFIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9t
YWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IDFjZTRkMmVlMzFkMDJi
Y2UwY2IyNjU3YjFhY2M2YjhlYTI2YzQ1MDcuLmMwMTM3NWY3MTdkYmE4YzhlOWI4NjliYzYyYTZk
Zjk2ZWYyNWE1ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpAQCAtNDMsMjAgKzQzLDMzIEBAIHN0YXRp
YyBFaW5hX0Jvb2wgZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkID0gRUlOQV9GQUxTRTsKIHN0YXRp
YyBpbnQgd2luZG93X3dpZHRoID0gODAwOwogc3RhdGljIGludCB3aW5kb3dfaGVpZ2h0ID0gNjAw
OwogCi1zdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIG1pbmlCcm93c2VyVmlld1NtYXJ0Q2xh
c3MoKQorc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzICptaW5pQnJvd3NlclZpZXdTbWFydENs
YXNzKCkKIHsKICAgICBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgZXdrVmlld0NsYXNzID0g
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04oIk1pbmlCcm93c2VyX1ZpZXci
KTsKICAgICByZXR1cm4gJmV3a1ZpZXdDbGFzczsKIH0KIAogdHlwZWRlZiBzdHJ1Y3QgX0Jyb3dz
ZXJfV2luZG93IHsKLSAgICBFdmFzX09iamVjdCAqd2luZG93OwotICAgIEV2YXNfT2JqZWN0ICp3
ZWJ2aWV3OworICAgIEV2YXNfT2JqZWN0ICplbG1fd2luZG93OworICAgIEV2YXNfT2JqZWN0ICpl
d2tfdmlldzsKICAgICBFdmFzX09iamVjdCAqdXJsX2JhcjsKICAgICBFdmFzX09iamVjdCAqYmFj
a19idXR0b247CiAgICAgRXZhc19PYmplY3QgKmZvcndhcmRfYnV0dG9uOwogfSBCcm93c2VyX1dp
bmRvdzsKIAordHlwZWRlZiBzdHJ1Y3QgX0ZpbGVfU2VsZWN0b3JfRGF0YSB7CisgICAgRXZhc19P
YmplY3QgKnBhcmVudDsKKyAgICBFdmFzX09iamVjdCAqZWxtX3dpbmRvdzsKKyAgICBFd2tfRmls
ZV9DaG9vc2VyX1JlcXVlc3QgKnJlcXVlc3Q7Cit9IEZpbGVfU2VsZWN0b3JfRGF0YTsKKwordHlw
ZWRlZiBzdHJ1Y3QgX0F1dGhfRGF0YSB7CisgICAgRXZhc19PYmplY3QgKnBvcHVwOworICAgIEV3
a19BdXRoX1JlcXVlc3QgKnJlcXVlc3Q7CisgICAgRXZhc19PYmplY3QgKnVzZXJuYW1lX2VudHJ5
OworICAgIEV2YXNfT2JqZWN0ICpwYXNzd29yZF9lbnRyeTsKK30gQXV0aF9EYXRhOworCiBzdGF0
aWMgY29uc3QgRWNvcmVfR2V0b3B0IG9wdGlvbnMgPSB7CiAgICAgIk1pbmlCcm93c2VyIiwKICAg
ICAiJXByb2cgW29wdGlvbnNdIFt1cmxdIiwKQEAgLTg2LDQzICs5OSw0MyBAQCBzdGF0aWMgY29u
c3QgRWNvcmVfR2V0b3B0IG9wdGlvbnMgPSB7CiAKIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2lu
ZG93X2NyZWF0ZShjb25zdCBjaGFyICp1cmwpOwogCi1zdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKmJy
b3dzZXJfd2luZG93X2ZpbmQoRXZhc19PYmplY3QgKndpbmRvdykKK3N0YXRpYyBCcm93c2VyX1dp
bmRvdyAqd2luZG93X2ZpbmRfd2l0aF9lbG1fd2luZG93KEV2YXNfT2JqZWN0ICplbG1fd2luZG93
KQogewogICAgIEVpbmFfTGlzdCAqbDsKICAgICB2b2lkICpkYXRhOwogCi0gICAgaWYgKCF3aW5k
b3cpCisgICAgaWYgKCFlbG1fd2luZG93KQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIEVJ
TkFfTElTVF9GT1JFQUNIKHdpbmRvd3MsIGwsIGRhdGEpIHsKLSAgICAgICAgQnJvd3Nlcl9XaW5k
b3cgKmJyb3dzZXJfd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopZGF0YTsKLSAgICAgICAgaWYg
KGJyb3dzZXJfd2luZG93LT53aW5kb3cgPT0gd2luZG93KQotICAgICAgICAgICAgcmV0dXJuIGJy
b3dzZXJfd2luZG93OworICAgICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJf
V2luZG93ICopZGF0YTsKKyAgICAgICAgaWYgKHdpbmRvdy0+ZWxtX3dpbmRvdyA9PSBlbG1fd2lu
ZG93KQorICAgICAgICAgICAgcmV0dXJuIHdpbmRvdzsKICAgICB9CiAgICAgcmV0dXJuIE5VTEw7
CiB9CiAKLXN0YXRpYyBCcm93c2VyX1dpbmRvdyAqYnJvd3Nlcl92aWV3X2ZpbmQoRXZhc19PYmpl
Y3QgKnZpZXcpCitzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19maW5kX3dpdGhfZXdrX3Zp
ZXcoRXZhc19PYmplY3QgKmV3a192aWV3KQogewogICAgIEVpbmFfTGlzdCAqbDsKICAgICB2b2lk
ICpkYXRhOwogCi0gICAgaWYgKCF2aWV3KQorICAgIGlmICghZXdrX3ZpZXcpCiAgICAgICAgIHJl
dHVybiBOVUxMOwogCiAgICAgRUlOQV9MSVNUX0ZPUkVBQ0god2luZG93cywgbCwgZGF0YSkgewot
ICAgICAgICBCcm93c2VyX1dpbmRvdyAqYnJvd3Nlcl93aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cg
KilkYXRhOwotICAgICAgICBpZiAoYnJvd3Nlcl93aW5kb3ctPndlYnZpZXcgPT0gdmlldykKLSAg
ICAgICAgICAgIHJldHVybiBicm93c2VyX3dpbmRvdzsKKyAgICAgICAgQnJvd3Nlcl9XaW5kb3cg
KndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKWRhdGE7CisgICAgICAgIGlmICh3aW5kb3ctPmV3
a192aWV3ID09IGV3a192aWV3KQorICAgICAgICAgICAgcmV0dXJuIHdpbmRvdzsKICAgICB9CiAg
ICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIHdpbmRvd19mcmVlKEJyb3dzZXJfV2lu
ZG93ICp3aW5kb3cpCiB7Ci0gICAgZXZhc19vYmplY3RfZGVsKHdpbmRvdy0+d2Vidmlldyk7Cisg
ICAgZXZhc19vYmplY3RfZGVsKHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIC8qIFRoZSBlbG1fd2lu
IHdpbGwgdGFrZSBjYXJlIG9mIGZyZWVpbmcgaXRzIGNoaWxkcmVuICovCi0gICAgZXZhc19vYmpl
Y3RfZGVsKHdpbmRvdy0+d2luZG93KTsKKyAgICBldmFzX29iamVjdF9kZWwod2luZG93LT5lbG1f
d2luZG93KTsKICAgICBmcmVlKHdpbmRvdyk7CiB9CiAKQEAgLTE4OCwxMiArMjAxLDEyIEBAIHZp
ZXdfZm9jdXNfc2V0KEJyb3dzZXJfV2luZG93ICp3aW5kb3csIEVpbmFfQm9vbCBmb2N1cykKICAg
ICAvKiBXZSBzdGVhbCBmb2N1cyBhd2F5IGZyb20gZWxtJ3MgZm9jdXMgbW9kZWwgYW5kIHN0YXJ0
IHRvIGRvIHRoaW5ncwogICAgICAqIG1hbnVhbGx5IGhlcmUsIHNvIGVsbSBub3cgaGFzIG5vIGNs
dWUgd2hhdCdzIHVwLiBUZWxsIGVsbSB0aGF0IGl0cwogICAgICAqIHRvcGxldmVsIHdpZGdldCBp
cyB0byBiZSB1bmZvY3VzZWQgc28gZWxtIGdpdmVzIHVwIHRoZSBmb2N1cyAqLwotICAgIGVsbV9v
YmplY3RfZm9jdXNfc2V0KGVsbV9vYmplY3RfdG9wX3dpZGdldF9nZXQod2luZG93LT53aW5kb3cp
LCBFSU5BX0ZBTFNFKTsKLSAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2luZG93LT53ZWJ2aWV3
LCBmb2N1cyk7CisgICAgZWxtX29iamVjdF9mb2N1c19zZXQoZWxtX29iamVjdF90b3Bfd2lkZ2V0
X2dldCh3aW5kb3ctPmVsbV93aW5kb3cpLCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9m
b2N1c19zZXQod2luZG93LT5ld2tfdmlldywgZm9jdXMpOwogfQogCiBzdGF0aWMgdm9pZAotb25f
bW91c2VfZG93bih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3
LCB2b2lkICpldmVudF9pbmZvKQorb25fbW91c2VfZG93bih2b2lkICp1c2VyX2RhdGEsIEV2YXMg
KmUsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93
c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogICAgIEV2
YXNfRXZlbnRfTW91c2VfRG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duICopZXZlbnRf
aW5mbzsKQEAgLTIwNCw3ICsyMTcsNyBAQCBvbl9tb3VzZV9kb3duKHZvaWQgKnVzZXJfZGF0YSwg
RXZhcyAqZSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgaWYg
KGV2LT5idXR0b24gPT0gMSkKICAgICAgICAgdmlld19mb2N1c19zZXQod2luZG93LCBFSU5BX1RS
VUUpOwogICAgIGVsc2UgaWYgKGV2LT5idXR0b24gPT0gMikKLSAgICAgICAgdmlld19mb2N1c19z
ZXQod2luZG93LCAhZXZhc19vYmplY3RfZm9jdXNfZ2V0KHdlYnZpZXcpKTsKKyAgICAgICAgdmll
d19mb2N1c19zZXQod2luZG93LCAhZXZhc19vYmplY3RfZm9jdXNfZ2V0KGV3a192aWV3KSk7CiB9
CiAKIHN0YXRpYyB2b2lkCkBAIC0yMjgsNjMgKzI0MSw2MyBAQCB0aXRsZV9zZXQoRXZhc19PYmpl
Y3QgKndpbmRvdywgY29uc3QgY2hhciAqdGl0bGUsIGludCBwcm9ncmVzcykKIH0KIAogc3RhdGlj
IHZvaWQKLW9uX3RpdGxlX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vi
dmlldywgdm9pZCAqZXZlbnRfaW5mbykKK29uX3RpdGxlX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRh
LCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nl
cl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKICAgICBjb25z
dCBjaGFyICp0aXRsZSA9IChjb25zdCBjaGFyICopZXZlbnRfaW5mbzsKIAotICAgIHRpdGxlX3Nl
dCh3aW5kb3ctPndpbmRvdywgdGl0bGUsIDEwMCk7CisgICAgdGl0bGVfc2V0KHdpbmRvdy0+ZWxt
X3dpbmRvdywgdGl0bGUsIDEwMCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl91cmxfY2hhbmdlZCh2
b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQor
b25fdXJsX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZv
aWQgKmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2Vy
X1dpbmRvdyAqKXVzZXJfZGF0YTsKIAotICAgIGNoYXIgKnVybCA9IGVsbV9lbnRyeV91dGY4X3Rv
X21hcmt1cChld2tfdmlld191cmxfZ2V0KHdpbmRvdy0+d2VidmlldykpOworICAgIGNoYXIgKnVy
bCA9IGVsbV9lbnRyeV91dGY4X3RvX21hcmt1cChld2tfdmlld191cmxfZ2V0KHdpbmRvdy0+ZXdr
X3ZpZXcpKTsKICAgICBlbG1fZW50cnlfZW50cnlfc2V0KHdpbmRvdy0+dXJsX2JhciwgdXJsKTsK
IAogICAgIGZyZWUodXJsKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2JhY2tfZm9yd2FyZF9saXN0
X2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZl
bnRfaW5mbykKK29uX2JhY2tfZm9yd2FyZF9saXN0X2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBF
dmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9X
aW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKIAogICAgIC8qIFVw
ZGF0ZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgc3RhdGUgKi8KLSAgICBlbG1fb2JqZWN0X2Rpc2FibGVk
X3NldCh3aW5kb3ctPmJhY2tfYnV0dG9uLCAhZXdrX3ZpZXdfYmFja19wb3NzaWJsZSh3ZWJ2aWV3
KSk7Ci0gICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwg
IWV3a192aWV3X2ZvcndhcmRfcG9zc2libGUod2VidmlldykpOworICAgIGVsbV9vYmplY3RfZGlz
YWJsZWRfc2V0KHdpbmRvdy0+YmFja19idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKGV3
a192aWV3KSk7CisgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5mb3J3YXJkX2J1
dHRvbiwgIWV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoZXdrX3ZpZXcpKTsKIH0KIAogc3RhdGlj
IHZvaWQKLW9uX25ld193aW5kb3codm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmll
dywgdm9pZCAqZXZlbnRfaW5mbykKK29uX25ld193aW5kb3codm9pZCAqdXNlcl9kYXRhLCBFdmFz
X09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgRXZhc19PYmplY3Qg
KipuZXdfdmlldyA9IChFdmFzX09iamVjdCAqKilldmVudF9pbmZvOwogICAgIEJyb3dzZXJfV2lu
ZG93ICp3aW5kb3cgPSB3aW5kb3dfY3JlYXRlKE5VTEwpOwotICAgICpuZXdfdmlldyA9IHdpbmRv
dy0+d2VidmlldzsKKyAgICAqbmV3X3ZpZXcgPSB3aW5kb3ctPmV3a192aWV3OwogICAgIHdpbmRv
d3MgPSBlaW5hX2xpc3RfYXBwZW5kKHdpbmRvd3MsIHdpbmRvdyk7CiB9CiAKIHN0YXRpYyB2b2lk
Ci1vbl9jbG9zZV93aW5kb3codm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywg
dm9pZCAqZXZlbnRfaW5mbykKK29uX2Nsb3NlX3dpbmRvdyh2b2lkICp1c2VyX2RhdGEsIEV2YXNf
T2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICB3aW5kb3dfY2xvc2Uo
KEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX3Byb2dy
ZXNzKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2lu
Zm8pCitvbl9wcm9ncmVzcyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywg
dm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dz
ZXJfV2luZG93ICopdXNlcl9kYXRhOwogICAgIGRvdWJsZSBwcm9ncmVzcyA9ICooZG91YmxlICop
ZXZlbnRfaW5mbzsKIAotICAgIHRpdGxlX3NldCh3aW5kb3ctPndpbmRvdywgZXdrX3ZpZXdfdGl0
bGVfZ2V0KHdpbmRvdy0+d2VidmlldyksIHByb2dyZXNzICogMTAwKTsKKyAgICB0aXRsZV9zZXQo
d2luZG93LT5lbG1fd2luZG93LCBld2tfdmlld190aXRsZV9nZXQod2luZG93LT5ld2tfdmlldyks
IHByb2dyZXNzICogMTAwKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Vycm9yKHZvaWQgKnVzZXJf
ZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9lcnJvcih2
b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykK
IHsKLSAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyOworICAgIEVpbmFfU3RyYnVmICpidWZmZXI7CiAg
ICAgY29uc3QgRXdrX0Vycm9yICplcnJvciA9IChjb25zdCBFd2tfRXJyb3IgKilldmVudF9pbmZv
OwogCiAgICAgLyogVGhpcyBpcyBhIGNhbmNlbGxhdGlvbiwgZG8gbm90IGRpc3BsYXkgdGhlIGVy
cm9yIHBhZ2UgKi8KQEAgLTI5NSwxMiArMzA4LDEyIEBAIG9uX2Vycm9yKHZvaWQgKnVzZXJfZGF0
YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgZWluYV9zdHJi
dWZfYXBwZW5kX3ByaW50ZihidWZmZXIsICI8aHRtbD48Ym9keT48ZGl2IHN0eWxlPVwiY29sb3I6
I2ZmMDAwMFwiPkVSUk9SITwvZGl2Pjxicj48ZGl2PkNvZGU6ICVkPGJyPkRlc2NyaXB0aW9uOiAl
czxicj5VUkw6ICVzPC9kaXY+PC9ib2R5PC9odG1sPiIsCiAgICAgICAgIGV3a19lcnJvcl9jb2Rl
X2dldChlcnJvciksIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZXJyb3IpLCBld2tfZXJyb3Jf
dXJsX2dldChlcnJvcikpOwogCi0gICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJ2aWV3
LCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KGJ1ZmZlciksIDAsIGV3a19lcnJvcl91cmxfZ2V0KGVy
cm9yKSk7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChld2tfdmlldywgZWluYV9zdHJi
dWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCBld2tfZXJyb3JfdXJsX2dldChlcnJvcikpOwogICAg
IGVpbmFfc3RyYnVmX2ZyZWUoYnVmZmVyKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2Fk
X3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZl
bnRfaW5mbykKK29uX2Rvd25sb2FkX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVj
dCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgRXdrX0Rvd25sb2FkX0pvYiAq
ZG93bmxvYWQgPSAoRXdrX0Rvd25sb2FkX0pvYiAqKWV2ZW50X2luZm87CiAKQEAgLTMyMSwxOCAr
MzM0LDEyIEBAIG9uX2Rvd25sb2FkX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVj
dCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGRlc3Rp
bmF0aW9uX3BhdGgpOwogfQogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgRXZhc19PYmplY3QgKnBh
cmVudDsKLSAgICBFdmFzX09iamVjdCAqd2luZG93OwotICAgIEV3a19GaWxlX0Nob29zZXJfUmVx
dWVzdCAqcmVxdWVzdDsKLX0gRmlsZVNlbGVjdG9yRGF0YTsKLQogc3RhdGljIHZvaWQgb25fZmls
ZXBpY2tlcl9wYXJlbnRfZGVsZXRpb24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICpldmFzLCBFdmFz
X09iamVjdCAqd2luZG93LCB2b2lkICpldmVudCk7CiAKLXN0YXRpYyB2b2lkIGNsb3NlX2ZpbGVf
cGlja2VyKEZpbGVTZWxlY3RvckRhdGEqIGZzX2RhdGEpCitzdGF0aWMgdm9pZCBjbG9zZV9maWxl
X3BpY2tlcihGaWxlX1NlbGVjdG9yX0RhdGEgKmZzX2RhdGEpCiB7CiAgICAgZXZhc19vYmplY3Rf
ZXZlbnRfY2FsbGJhY2tfZGVsKGZzX2RhdGEtPnBhcmVudCwgRVZBU19DQUxMQkFDS19ERUwsIG9u
X2ZpbGVwaWNrZXJfcGFyZW50X2RlbGV0aW9uKTsKLSAgICBldmFzX29iamVjdF9kZWwoZnNfZGF0
YS0+d2luZG93KTsKKyAgICBldmFzX29iamVjdF9kZWwoZnNfZGF0YS0+ZWxtX3dpbmRvdyk7CiAg
ICAgZXdrX29iamVjdF91bnJlZihmc19kYXRhLT5yZXF1ZXN0KTsKICAgICBmcmVlKGZzX2RhdGEp
OwogfQpAQCAtMzQwLDE5ICszNDcsMTkgQEAgc3RhdGljIHZvaWQgY2xvc2VfZmlsZV9waWNrZXIo
RmlsZVNlbGVjdG9yRGF0YSogZnNfZGF0YSkKIHN0YXRpYyB2b2lkCiBvbl9maWxlcGlja2VyX3Bh
cmVudF9kZWxldGlvbih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmV2YXMsIEV2YXNfT2JqZWN0ICp3
aW5kb3csIHZvaWQgKmV2ZW50KQogewotICAgIGNsb3NlX2ZpbGVfcGlja2VyKChGaWxlU2VsZWN0
b3JEYXRhICopdXNlcl9kYXRhKTsKKyAgICBjbG9zZV9maWxlX3BpY2tlcigoRmlsZV9TZWxlY3Rv
cl9EYXRhICopdXNlcl9kYXRhKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2ZpbGVwaWNrZXJfZGVs
ZXRpb24odm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2luZG93LCB2b2lkICpldmVudF9p
bmZvKQogewotICAgIGNsb3NlX2ZpbGVfcGlja2VyKChGaWxlU2VsZWN0b3JEYXRhICopdXNlcl9k
YXRhKTsKKyAgICBjbG9zZV9maWxlX3BpY2tlcigoRmlsZV9TZWxlY3Rvcl9EYXRhICopdXNlcl9k
YXRhKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2ZpbGVzZWxlY3Rvcl9kb25lKHZvaWQgKnVzZXJf
ZGF0YSwgRXZhc19PYmplY3QgKmZpbGVfc2VsZWN0b3IsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0g
ICAgRmlsZVNlbGVjdG9yRGF0YSAqZnNfZGF0YSA9IChGaWxlU2VsZWN0b3JEYXRhICopdXNlcl9k
YXRhOworICAgIEZpbGVfU2VsZWN0b3JfRGF0YSAqZnNfZGF0YSA9IChGaWxlX1NlbGVjdG9yX0Rh
dGEgKil1c2VyX2RhdGE7CiAKICAgICBjb25zdCBjaGFyICpzZWxlY3RlZCA9IChjb25zdCBjaGFy
ICopZXZlbnRfaW5mbzsKICAgICBpZiAoc2VsZWN0ZWQgJiYgKnNlbGVjdGVkKQpAQCAtMzYyLDQ3
ICszNjksNDcgQEAgb25fZmlsZXNlbGVjdG9yX2RvbmUodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqZmlsZV9zZWxlY3Rvciwgdm9pZCAqZXZlbnRfaW4KIH0KIAogc3RhdGljIHZvaWQKLW9u
X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZp
ZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9maWxlX2Nob29zZXJfcmVxdWVzdCh2b2lkICp1c2Vy
X2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBC
cm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7Cisg
ICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsK
ICAgICBFd2tfRmlsZV9DaG9vc2VyX1JlcXVlc3QgKnJlcXVlc3QgPSAoRXdrX0ZpbGVfQ2hvb3Nl
cl9SZXF1ZXN0ICopZXZlbnRfaW5mbzsKIAogICAgIC8vIFNob3cgYmFzaWMgZmlsZSBwaWNrZXIg
d2hpY2ggZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgbXVsdGlwbGUgZmlsZXMKICAgICAvLyBv
ciBNSU1FIHR5cGUgZmlsdGVyaW5nLgotICAgIEV2YXNfT2JqZWN0ICp3aW5kb3cgPSBlbG1fd2lu
X2FkZChhcHBfZGF0YS0+d2luZG93LCAiZmlsZS1waWNrZXItd2luZG93IiwgRUxNX1dJTl9ESUFM
T0dfQkFTSUMpOwotICAgIGVsbV93aW5fdGl0bGVfc2V0KHdpbmRvdywgIkZpbGUgcGlja2VyIik7
Ci0gICAgZWxtX3dpbl9tb2RhbF9zZXQod2luZG93LCBFSU5BX1RSVUUpOworICAgIEV2YXNfT2Jq
ZWN0ICplbG1fd2luZG93ID0gZWxtX3dpbl9hZGQod2luZG93LT5lbG1fd2luZG93LCAiZmlsZS1w
aWNrZXItd2luZG93IiwgRUxNX1dJTl9ESUFMT0dfQkFTSUMpOworICAgIGVsbV93aW5fdGl0bGVf
c2V0KGVsbV93aW5kb3csICJGaWxlIHBpY2tlciIpOworICAgIGVsbV93aW5fbW9kYWxfc2V0KGVs
bV93aW5kb3csIEVJTkFfVFJVRSk7CiAKLSAgICBGaWxlU2VsZWN0b3JEYXRhKiBmc19kYXRhID0g
KEZpbGVTZWxlY3RvckRhdGEqKW1hbGxvYyhzaXplb2YoRmlsZVNlbGVjdG9yRGF0YSkpOwotICAg
IGZzX2RhdGEtPnBhcmVudCA9IGFwcF9kYXRhLT53aW5kb3c7Ci0gICAgZnNfZGF0YS0+d2luZG93
ID0gd2luZG93OworICAgIEZpbGVfU2VsZWN0b3JfRGF0YSAqZnNfZGF0YSA9IChGaWxlX1NlbGVj
dG9yX0RhdGEgKiltYWxsb2Moc2l6ZW9mKEZpbGVfU2VsZWN0b3JfRGF0YSkpOworICAgIGZzX2Rh
dGEtPnBhcmVudCA9IHdpbmRvdy0+ZWxtX3dpbmRvdzsKKyAgICBmc19kYXRhLT5lbG1fd2luZG93
ID0gZWxtX3dpbmRvdzsKICAgICBmc19kYXRhLT5yZXF1ZXN0ID0gZXdrX29iamVjdF9yZWYocmVx
dWVzdCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdywgImRlbGV0
ZSxyZXF1ZXN0Iiwgb25fZmlsZXBpY2tlcl9kZWxldGlvbiwgZnNfZGF0YSk7Ci0gICAgZXZhc19v
YmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53aW5kb3csIEVWQVNfQ0FMTEJBQ0tf
REVMLCBvbl9maWxlcGlja2VyX3BhcmVudF9kZWxldGlvbiwgZnNfZGF0YSk7CisgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGVsbV93aW5kb3csICJkZWxldGUscmVxdWVzdCIsIG9u
X2ZpbGVwaWNrZXJfZGVsZXRpb24sIGZzX2RhdGEpOworICAgIGV2YXNfb2JqZWN0X2V2ZW50X2Nh
bGxiYWNrX2FkZCh3aW5kb3ctPmVsbV93aW5kb3csIEVWQVNfQ0FMTEJBQ0tfREVMLCBvbl9maWxl
cGlja2VyX3BhcmVudF9kZWxldGlvbiwgZnNfZGF0YSk7CiAKLSAgICBFdmFzX09iamVjdCAqZmls
ZV9zZWxlY3RvciA9IGVsbV9maWxlc2VsZWN0b3JfYWRkKHdpbmRvdyk7CisgICAgRXZhc19PYmpl
Y3QgKmZpbGVfc2VsZWN0b3IgPSBlbG1fZmlsZXNlbGVjdG9yX2FkZChlbG1fd2luZG93KTsKICAg
ICBjb25zdCBjaGFyICpob21lX3BhdGggPSBnZXRlbnYoIkhPTUUiKTsKICAgICBlbG1fZmlsZXNl
bGVjdG9yX3BhdGhfc2V0KGZpbGVfc2VsZWN0b3IsIGhvbWVfcGF0aCA/IGhvbWVfcGF0aCA6ICIv
aG9tZSIpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGZpbGVfc2VsZWN0
b3IsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGVsbV93aW5fcmVz
aXplX29iamVjdF9hZGQod2luZG93LCBmaWxlX3NlbGVjdG9yKTsKKyAgICBlbG1fd2luX3Jlc2l6
ZV9vYmplY3RfYWRkKGVsbV93aW5kb3csIGZpbGVfc2VsZWN0b3IpOwogICAgIGV2YXNfb2JqZWN0
X3Nob3coZmlsZV9zZWxlY3Rvcik7CiAKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQoZmlsZV9zZWxlY3RvciwgImRvbmUiLCBvbl9maWxlc2VsZWN0b3JfZG9uZSwgZnNfZGF0YSk7
CiAKLSAgICBldmFzX29iamVjdF9yZXNpemUod2luZG93LCA0MDAsIDQwMCk7Ci0gICAgZWxtX3dp
bl9jZW50ZXIod2luZG93LCBFSU5BX1RSVUUsIEVJTkFfVFJVRSk7Ci0gICAgZXZhc19vYmplY3Rf
c2hvdyh3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShlbG1fd2luZG93LCA0MDAsIDQw
MCk7CisgICAgZWxtX3dpbl9jZW50ZXIoZWxtX3dpbmRvdywgRUlOQV9UUlVFLCBFSU5BX1RSVUUp
OworICAgIGV2YXNfb2JqZWN0X3Nob3coZWxtX3dpbmRvdyk7CiB9CiAKIHN0YXRpYyB2b2lkCi1v
bl9kb3dubG9hZF9maW5pc2hlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3
LCB2b2lkICpldmVudF9pbmZvKQorb25fZG93bmxvYWRfZmluaXNoZWQodm9pZCAqdXNlcl9kYXRh
LCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgRXdrX0Rv
d25sb2FkX0pvYiAqZG93bmxvYWQgPSAoRXdrX0Rvd25sb2FkX0pvYiAqKWV2ZW50X2luZm87CiAg
ICAgaW5mbygiRG93bmxvYWQgZmluaXNoZWQ6ICVzXG4iLCAgZXdrX2Rvd25sb2FkX2pvYl9kZXN0
aW5hdGlvbl9nZXQoZG93bmxvYWQpKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2FkX2Zh
aWxlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9p
bmZvKQorb25fZG93bmxvYWRfZmFpbGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3
a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIGluZm8oIkRvd25sb2FkIGZhaWxlZCFc
biIpOwogfQpAQCAtNDEwLDEyICs0MTcsMTIgQEAgb25fZG93bmxvYWRfZmFpbGVkKHZvaWQgKnVz
ZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiBzdGF0aWMg
dm9pZAogb25fZmF2aWNvbl9yZWNlaXZlZChjb25zdCBjaGFyICpwYWdlX3VybCwgRXZhc19PYmpl
Y3QgKmljb24sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9k
YXRhID0gKEJyb3dzZXJfV2luZG93ICopZXZlbnRfaW5mbzsKLSAgICBpZiAoc3RyY21wKHBhZ2Vf
dXJsLCBld2tfdmlld191cmxfZ2V0KGFwcF9kYXRhLT53ZWJ2aWV3KSkpCisgICAgQnJvd3Nlcl9X
aW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKWV2ZW50X2luZm87CisgICAgaWYgKHN0
cmNtcChwYWdlX3VybCwgZXdrX3ZpZXdfdXJsX2dldCh3aW5kb3ctPmV3a192aWV3KSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8qIFJlbW92ZSBwcmV2aW91cyBpY29uIGZyb20gVVJMIGJhciAq
LwotICAgIEV2YXNfT2JqZWN0ICpvbGRfaWNvbiA9IGVsbV9vYmplY3RfcGFydF9jb250ZW50X3Vu
c2V0KGFwcF9kYXRhLT51cmxfYmFyLCAiaWNvbiIpOworICAgIEV2YXNfT2JqZWN0ICpvbGRfaWNv
biA9IGVsbV9vYmplY3RfcGFydF9jb250ZW50X3Vuc2V0KHdpbmRvdy0+dXJsX2JhciwgImljb24i
KTsKICAgICBpZiAob2xkX2ljb24pIHsKICAgICAgICAgZXZhc19vYmplY3RfdW5yZWYob2xkX2lj
b24pOwogICAgICAgICBldmFzX29iamVjdF9kZWwob2xkX2ljb24pOwpAQCAtNDI4LDIyICs0MzUs
MjIgQEAgb25fZmF2aWNvbl9yZWNlaXZlZChjb25zdCBjaGFyICpwYWdlX3VybCwgRXZhc19PYmpl
Y3QgKmljb24sIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgICAgIGV2YXNfb2JqZWN0X3NpemVfaGlu
dF9taW5fc2V0KGljb24sIDQ4LCAyNCk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxl
ZF9zZXQoaWNvbiwgRUlOQV9GQUxTRSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxf
c2V0KGljb24sIDI0LCAwLCAyNCwgMjQpOwotICAgICAgICBlbG1fb2JqZWN0X3BhcnRfY29udGVu
dF9zZXQoYXBwX2RhdGEtPnVybF9iYXIsICJpY29uIiwgaWNvbik7CisgICAgICAgIGVsbV9vYmpl
Y3RfcGFydF9jb250ZW50X3NldCh3aW5kb3ctPnVybF9iYXIsICJpY29uIiwgaWNvbik7CiAgICAg
ICAgIGV2YXNfb2JqZWN0X3JlZihpY29uKTsKICAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl92
aWV3X2ljb25fY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2
b2lkICpldmVudF9pbmZvKQorb25fdmlld19pY29uX2NoYW5nZWQodm9pZCAqdXNlcl9kYXRhLCBF
dmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9X
aW5kb3cgKmFwcF9kYXRhID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dz
ZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAgICAgLyog
UmV0cmlldmUgdGhlIHZpZXcncyBmYXZpY29uICovCi0gICAgRXdrX0NvbnRleHQgKmNvbnRleHQg
PSBld2tfdmlld19jb250ZXh0X2dldCh3ZWJ2aWV3KTsKKyAgICBFd2tfQ29udGV4dCAqY29udGV4
dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KGV3a192aWV3KTsKICAgICBFd2tfRmF2aWNvbl9EYXRh
YmFzZSAqaWNvbl9kYXRhYmFzZSA9IGV3a19jb250ZXh0X2Zhdmljb25fZGF0YWJhc2VfZ2V0KGNv
bnRleHQpOwogCi0gICAgY29uc3QgY2hhciAqcGFnZV91cmwgPSBld2tfdmlld191cmxfZ2V0KHdl
YnZpZXcpOwotICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3ZWJ2aWV3KTsK
LSAgICBld2tfZmF2aWNvbl9kYXRhYmFzZV9hc3luY19pY29uX2dldChpY29uX2RhdGFiYXNlLCBw
YWdlX3VybCwgZXZhcywgb25fZmF2aWNvbl9yZWNlaXZlZCwgYXBwX2RhdGEpOworICAgIGNvbnN0
IGNoYXIgKnBhZ2VfdXJsID0gZXdrX3ZpZXdfdXJsX2dldChld2tfdmlldyk7CisgICAgRXZhcyAq
ZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGV3a192aWV3KTsKKyAgICBld2tfZmF2aWNvbl9k
YXRhYmFzZV9hc3luY19pY29uX2dldChpY29uX2RhdGFiYXNlLCBwYWdlX3VybCwgZXZhcywgb25f
ZmF2aWNvbl9yZWNlaXZlZCwgd2luZG93KTsKIH0KIAogc3RhdGljIGludApAQCAtNDY0LDYzICs0
NzEsNjMgQEAgcXVpdChFaW5hX0Jvb2wgc3VjY2VzcywgY29uc3QgY2hhciAqbXNnKQogc3RhdGlj
IHZvaWQKIG9uX3VybF9iYXJfYWN0aXZhdGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3Qg
KnVybF9iYXIsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9k
YXRhID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3
aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICBjb25zdCBjaGFyICpt
YXJrdXBfdXJsID0gZWxtX2VudHJ5X2VudHJ5X2dldCh1cmxfYmFyKTsKICAgICBjaGFyICp1c2Vy
X3VybCA9IGVsbV9lbnRyeV9tYXJrdXBfdG9fdXRmOChtYXJrdXBfdXJsKTsKICAgICBjaGFyICp1
cmwgPSB1cmxfZnJvbV91c2VyX2lucHV0KHVzZXJfdXJsKTsKLSAgICBld2tfdmlld191cmxfc2V0
KGFwcF9kYXRhLT53ZWJ2aWV3LCB1cmwpOworICAgIGV3a192aWV3X3VybF9zZXQod2luZG93LT5l
d2tfdmlldywgdXJsKTsKIAogICAgIGZyZWUodXNlcl91cmwpOwogICAgIGZyZWUodXJsKTsKIAog
ICAgIC8qIEdpdmUgZm9jdXMgYmFjayB0byB0aGUgdmlldyAqLwotICAgIHZpZXdfZm9jdXNfc2V0
KGFwcF9kYXRhLCBFSU5BX1RSVUUpOworICAgIHZpZXdfZm9jdXNfc2V0KHdpbmRvdywgRUlOQV9U
UlVFKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX3VybF9iYXJfY2xpY2tlZCh2b2lkICp1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0ICp1cmxfYmFyLCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dz
ZXJfV2luZG93ICphcHBfZGF0YSA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBC
cm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCiAg
ICAgLyogR3JhYiBmb2N1cyBmcm9tIHRoZSB2aWV3ICovCi0gICAgZXZhc19vYmplY3RfZm9jdXNf
c2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9mb2N1
c19zZXQod2luZG93LT5ld2tfdmlldywgRUlOQV9GQUxTRSk7CiAgICAgZWxtX29iamVjdF9mb2N1
c19zZXQodXJsX2JhciwgRUlOQV9UUlVFKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2JhY2tfYnV0
dG9uX2NsaWNrZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqYmFja19idXR0b24sIHZv
aWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0gKEJyb3dz
ZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJv
d3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKLSAgICBld2tfdmlld19iYWNrKGFwcF9kYXRhLT53
ZWJ2aWV3KTsKKyAgICBld2tfdmlld19iYWNrKHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIC8qIFVw
ZGF0ZSBiYWNrIGJ1dHRvbiBzdGF0ZSAqLwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGJh
Y2tfYnV0dG9uLCAhZXdrX3ZpZXdfYmFja19wb3NzaWJsZShhcHBfZGF0YS0+d2VidmlldykpOwor
ICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGJhY2tfYnV0dG9uLCAhZXdrX3ZpZXdfYmFja19w
b3NzaWJsZSh3aW5kb3ctPmV3a192aWV3KSk7CiB9CiAKIHN0YXRpYyB2b2lkCiBvbl9mb3J3YXJk
X2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmZvcndhcmRfYnV0
dG9uLCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dzZXJfV2luZG93ICphcHBfZGF0YSA9
IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93
ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCi0gICAgZXdrX3ZpZXdfZm9yd2FyZChh
cHBfZGF0YS0+d2Vidmlldyk7CisgICAgZXdrX3ZpZXdfZm9yd2FyZCh3aW5kb3ctPmV3a192aWV3
KTsKICAgICAvKiBVcGRhdGUgZm9yd2FyZCBidXR0b24gc3RhdGUgKi8KLSAgICBlbG1fb2JqZWN0
X2Rpc2FibGVkX3NldChmb3J3YXJkX2J1dHRvbiwgIWV3a192aWV3X2ZvcndhcmRfcG9zc2libGUo
YXBwX2RhdGEtPndlYnZpZXcpKTsKKyAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldChmb3J3YXJk
X2J1dHRvbiwgIWV3a192aWV3X2ZvcndhcmRfcG9zc2libGUod2luZG93LT5ld2tfdmlldykpOwog
fQogCiBzdGF0aWMgdm9pZAogb25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0ICpyZWZyZXNoX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAg
ICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7
CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0
YTsKIAogICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChyZWZyZXNoX2J1dHRv
bik7CiAgICAgRWluYV9Cb29sIGN0cmxQcmVzc2VkID0gZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0
KGV2YXNfa2V5X21vZGlmaWVyX2dldChldmFzKSwgIkNvbnRyb2wiKTsKICAgICBpZiAoY3RybFBy
ZXNzZWQpIHsKICAgICAgICAgaW5mbygiUmVsb2FkaW5nIGFuZCBieXBhc3NpbmcgY2FjaGUuLi5c
biIpOwotICAgICAgICBld2tfdmlld19yZWxvYWRfYnlwYXNzX2NhY2hlKGFwcF9kYXRhLT53ZWJ2
aWV3KTsKKyAgICAgICAgZXdrX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZSh3aW5kb3ctPmV3a192
aWV3KTsKICAgICB9IGVsc2UgewogICAgICAgICBpbmZvKCJSZWxvYWRpbmcuLi5cbiIpOwotICAg
ICAgICBld2tfdmlld19yZWxvYWQoYXBwX2RhdGEtPndlYnZpZXcpOworICAgICAgICBld2tfdmll
d19yZWxvYWQod2luZG93LT5ld2tfdmlldyk7CiAgICAgfQogfQogCkBAIC01NDIsOSArNTQ5LDkg
QEAgb25fb2tfY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQg
KmV2ZW50X2luZm8pCiBzdGF0aWMgdm9pZAogb25famF2YXNjcmlwdF9hbGVydChFd2tfVmlld19T
bWFydF9EYXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7Ci0gICAgQnJvd3Nl
cl9XaW5kb3cgKndpbmRvdyA9IGJyb3dzZXJfdmlld19maW5kKHNtYXJ0RGF0YS0+c2VsZik7Cisg
ICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcoc21h
cnREYXRhLT5zZWxmKTsKIAotICAgIEV2YXNfT2JqZWN0ICphbGVydF9wb3B1cCA9IGVsbV9wb3B1
cF9hZGQod2luZG93LT53aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICphbGVydF9wb3B1cCA9IGVs
bV9wb3B1cF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBldmFzX29iamVjdF9zaXplX2hp
bnRfd2VpZ2h0X3NldChhbGVydF9wb3B1cCwgRVZBU19ISU5UX0VYUEFORCwgRVZBU19ISU5UX0VY
UEFORCk7CiAgICAgZWxtX29iamVjdF90ZXh0X3NldChhbGVydF9wb3B1cCwgbWVzc2FnZSk7CiAg
ICAgZWxtX29iamVjdF9wYXJ0X3RleHRfc2V0KGFsZXJ0X3BvcHVwLCAidGl0bGUsdGV4dCIsICJB
bGVydCIpOwpAQCAtNTY2LDExICs1NzMsMTEgQEAgb25famF2YXNjcmlwdF9hbGVydChFd2tfVmll
d19TbWFydF9EYXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiBzdGF0aWMgRWlu
YV9Cb29sCiBvbl9qYXZhc2NyaXB0X2NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc21hcnRE
YXRhLCBjb25zdCBjaGFyICptZXNzYWdlKQogewotICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cg
PSBicm93c2VyX3ZpZXdfZmluZChzbWFydERhdGEtPnNlbGYpOworICAgIEJyb3dzZXJfV2luZG93
ICp3aW5kb3cgPSB3aW5kb3dfZmluZF93aXRoX2V3a192aWV3KHNtYXJ0RGF0YS0+c2VsZik7CiAK
ICAgICBFaW5hX0Jvb2wgb2sgPSBFSU5BX0ZBTFNFOwogCi0gICAgRXZhc19PYmplY3QgKmNvbmZp
cm1fcG9wdXAgPSBlbG1fcG9wdXBfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAgICBFdmFzX09iamVj
dCAqY29uZmlybV9wb3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAg
ICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChjb25maXJtX3BvcHVwLCBFVkFTX0hJ
TlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBlbG1fb2JqZWN0X3RleHRfc2V0KGNv
bmZpcm1fcG9wdXAsIG1lc3NhZ2UpOwogICAgIGVsbV9vYmplY3RfcGFydF90ZXh0X3NldChjb25m
aXJtX3BvcHVwLCAidGl0bGUsdGV4dCIsICJDb25maXJtYXRpb24iKTsKQEAgLTU5OCwyOSArNjA1
LDI5IEBAIG9uX2phdmFzY3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERh
dGEsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiBzdGF0aWMgY29uc3QgY2hhciAqCiBvbl9qYXZhc2Ny
aXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1l
c3NhZ2UsIGNvbnN0IGNoYXIgKmRlZmF1bHRfdmFsdWUpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cg
KndpbmRvdyA9IGJyb3dzZXJfdmlld19maW5kKHNtYXJ0RGF0YS0+c2VsZik7CisgICAgQnJvd3Nl
cl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcoc21hcnREYXRhLT5z
ZWxmKTsKIAogICAgIEVpbmFfQm9vbCBvayA9IEVJTkFfRkFMU0U7CiAKLSAgICBFdmFzX09iamVj
dCAqcHJvbXB0X3BvcHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPndpbmRvdyk7CisgICAgRXZh
c19PYmplY3QgKnByb21wdF9wb3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT5lbG1fd2luZG93
KTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChwcm9tcHRfcG9wdXAsIEVW
QVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwogICAgIGVsbV9vYmplY3RfcGFydF90
ZXh0X3NldChwcm9tcHRfcG9wdXAsICJ0aXRsZSx0ZXh0IiwgIlByb21wdCIpOwogCiAgICAgLyog
UG9wdXAgQ29udGVudCAqLwotICAgIEV2YXNfT2JqZWN0ICpib3ggPSBlbG1fYm94X2FkZCh3aW5k
b3ctPndpbmRvdyk7CisgICAgRXZhc19PYmplY3QgKmJveCA9IGVsbV9ib3hfYWRkKHdpbmRvdy0+
ZWxtX3dpbmRvdyk7CiAgICAgZWxtX2JveF9wYWRkaW5nX3NldChib3gsIDAsIDQpOwogICAgIGV2
YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGJveCwgRVZBU19ISU5UX0VYUEFORCwgRVZB
U19ISU5UX0VYUEFORCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldChib3gs
IEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhi
b3gpOwogCi0gICAgRXZhc19PYmplY3QgKnByb21wdCA9IGVsbV9sYWJlbF9hZGQod2luZG93LT53
aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICpwcm9tcHQgPSBlbG1fbGFiZWxfYWRkKHdpbmRvdy0+
ZWxtX3dpbmRvdyk7CiAgICAgZWxtX29iamVjdF90ZXh0X3NldChwcm9tcHQsIG1lc3NhZ2UpOwog
ICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KHByb21wdCwgRVZBU19ISU5UX0VY
UEFORCwgMC4wKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHByb21wdCwg
RVZBU19ISU5UX0ZJTEwsIDAuNSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZChib3gsIHByb21wdCk7
CiAgICAgZXZhc19vYmplY3Rfc2hvdyhwcm9tcHQpOwogCi0gICAgRXZhc19PYmplY3QgKmVudHJ5
ID0gZWxtX2VudHJ5X2FkZCh3aW5kb3ctPndpbmRvdyk7CisgICAgRXZhc19PYmplY3QgKmVudHJ5
ID0gZWxtX2VudHJ5X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGVsbV9lbnRyeV9zY3Jv
bGxhYmxlX3NldChlbnRyeSwgRUlOQV9UUlVFKTsKICAgICBlbG1fZW50cnlfc2luZ2xlX2xpbmVf
c2V0KGVudHJ5LCBFSU5BX1RSVUUpOwogICAgIGVsbV9lbnRyeV90ZXh0X3N0eWxlX3VzZXJfcHVz
aChlbnRyeSwgIkRFRkFVTFQ9J2ZvbnRfc2l6ZT0xOCciKTsKQEAgLTY1NywzMiArNjY0LDI1IEBA
IG9uX2phdmFzY3JpcHRfcHJvbXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0RGF0YSwgY29u
c3QgY2hhciAqbWVzc2FnZSwgY29uc3QKIAogc3RhdGljIEVpbmFfQm9vbCBvbl93aW5kb3dfZ2Vv
bWV0cnlfZ2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX0Nvb3JkICp4LCBFdmFzX0Nv
b3JkICp5LCBFdmFzX0Nvb3JkICp3aWR0aCwgRXZhc19Db29yZCAqaGVpZ2h0KQogewotICAgIEJy
b3dzZXJfV2luZG93ICp3aW5kb3cgPSBicm93c2VyX3ZpZXdfZmluZChzZC0+c2VsZik7CisgICAg
QnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcoc2QtPnNl
bGYpOwogCi0gICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHdpbmRvdy0+d2luZG93LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQod2luZG93LT5l
bG1fd2luZG93LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIHJldHVybiBFSU5BX1RSVUU7
CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgb25fd2luZG93X2dlb21ldHJ5X3NldChFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lk
dGgsIEV2YXNfQ29vcmQgaGVpZ2h0KQogewotICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSBi
cm93c2VyX3ZpZXdfZmluZChzZC0+c2VsZik7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9
IHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcoc2QtPnNlbGYpOwogCi0gICAgZXZhc19vYmplY3Rf
bW92ZSh3aW5kb3ctPndpbmRvdywgeCwgeSk7Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKHdpbmRv
dy0+d2luZG93LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+
ZWxtX3dpbmRvdywgeCwgeSk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKHdpbmRvdy0+ZWxtX3dp
bmRvdywgd2lkdGgsIGhlaWdodCk7CiAKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi10eXBl
ZGVmIHN0cnVjdCB7Ci0gICAgRXZhc19PYmplY3QgKnBvcHVwOwotICAgIEV3a19BdXRoX1JlcXVl
c3QgKnJlcXVlc3Q7Ci0gICAgRXZhc19PYmplY3QgKnVzZXJuYW1lX2VudHJ5OwotICAgIEV2YXNf
T2JqZWN0ICpwYXNzd29yZF9lbnRyeTsKLX0gQXV0aERhdGE7Ci0KIHN0YXRpYyB2b2lkCi1hdXRo
X3BvcHVwX2Nsb3NlKEF1dGhEYXRhICphdXRoX2RhdGEpCithdXRoX3BvcHVwX2Nsb3NlKEF1dGhf
RGF0YSAqYXV0aF9kYXRhKQogewogICAgIGV3a19vYmplY3RfdW5yZWYoYXV0aF9kYXRhLT5yZXF1
ZXN0KTsKICAgICBldmFzX29iamVjdF9kZWwoYXV0aF9kYXRhLT5wb3B1cCk7CkBAIC02OTIsNyAr
NjkyLDcgQEAgYXV0aF9wb3B1cF9jbG9zZShBdXRoRGF0YSAqYXV0aF9kYXRhKQogc3RhdGljIHZv
aWQKIG9uX2F1dGhfY2FuY2VsKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9p
ZCAqZXZlbnRfaW5mbykKIHsKLSAgICBBdXRoRGF0YSAqYXV0aF9kYXRhID0gKEF1dGhEYXRhICop
dXNlcl9kYXRhOworICAgIEF1dGhfRGF0YSAqYXV0aF9kYXRhID0gKEF1dGhfRGF0YSAqKXVzZXJf
ZGF0YTsKIAogICAgIGV3a19hdXRoX3JlcXVlc3RfY2FuY2VsKGF1dGhfZGF0YS0+cmVxdWVzdCk7
CiAKQEAgLTcwMiw3ICs3MDIsNyBAQCBvbl9hdXRoX2NhbmNlbCh2b2lkICp1c2VyX2RhdGEsIEV2
YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiBzdGF0aWMgdm9pZAogb25fYXV0aF9v
ayh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiB7
Ci0gICAgQXV0aERhdGEgKmF1dGhfZGF0YSA9IChBdXRoRGF0YSAqKXVzZXJfZGF0YTsKKyAgICBB
dXRoX0RhdGEgKmF1dGhfZGF0YSA9IChBdXRoX0RhdGEgKil1c2VyX2RhdGE7CiAKICAgICBjb25z
dCBjaGFyICp1c2VybmFtZSA9IGVsbV9lbnRyeV9lbnRyeV9nZXQoYXV0aF9kYXRhLT51c2VybmFt
ZV9lbnRyeSk7CiAgICAgY29uc3QgY2hhciAqcGFzc3dvcmQgPSBlbG1fZW50cnlfZW50cnlfZ2V0
KGF1dGhfZGF0YS0+cGFzc3dvcmRfZW50cnkpOwpAQCAtNzE3LDEwICs3MTcsMTAgQEAgb25fYXV0
aGVudGljYXRpb25fcmVxdWVzdCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZv
aWQgKmV2ZW50X2luZm8pCiAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dp
bmRvdyAqKXVzZXJfZGF0YTsKICAgICBFd2tfQXV0aF9SZXF1ZXN0ICpyZXF1ZXN0ID0gZXdrX29i
amVjdF9yZWYoKEV3a19BdXRoX1JlcXVlc3QgKilldmVudF9pbmZvKTsKIAotICAgIEF1dGhEYXRh
ICphdXRoX2RhdGEgPSAoQXV0aERhdGEgKiltYWxsb2Moc2l6ZW9mKEF1dGhEYXRhKSk7CisgICAg
QXV0aF9EYXRhICphdXRoX2RhdGEgPSAoQXV0aF9EYXRhICopbWFsbG9jKHNpemVvZihBdXRoX0Rh
dGEpKTsKICAgICBhdXRoX2RhdGEtPnJlcXVlc3QgPSByZXF1ZXN0OwogCi0gICAgRXZhc19PYmpl
Y3QgKmF1dGhfcG9wdXAgPSBlbG1fcG9wdXBfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAgICBFdmFz
X09iamVjdCAqYXV0aF9wb3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT5lbG1fd2luZG93KTsK
ICAgICBhdXRoX2RhdGEtPnBvcHVwID0gYXV0aF9wb3B1cDsKICAgICBldmFzX29iamVjdF9zaXpl
X2hpbnRfd2VpZ2h0X3NldChhdXRoX3BvcHVwLCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRf
RVhQQU5EKTsKICAgICBlbG1fb2JqZWN0X3BhcnRfdGV4dF9zZXQoYXV0aF9wb3B1cCwgInRpdGxl
LHRleHQiLCAiQXV0aGVudGljYXRpb24gUmVxdWlyZWQiKTsKQEAgLTczNyw4ICs3MzcsOCBAQCBv
bl9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9i
aiwgdm9pZCAqZXZlbnRfaW5mbykKICAgICBFdmFzX09iamVjdCAqbGFiZWwgPSBlbG1fbGFiZWxf
YWRkKGF1dGhfcG9wdXApOwogICAgIGVsbV9sYWJlbF9saW5lX3dyYXBfc2V0KGxhYmVsLCBFTE1f
V1JBUF9XT1JEKTsKICAgICBFaW5hX1N0cmJ1ZiAqYXV0aF90ZXh0ID0gZWluYV9zdHJidWZfbmV3
KCk7Ci0gICAgY29uc3QgY2hhciogaG9zdCA9IGV3a19hdXRoX3JlcXVlc3RfaG9zdF9nZXQocmVx
dWVzdCk7Ci0gICAgY29uc3QgY2hhciogcmVhbG0gPSBld2tfYXV0aF9yZXF1ZXN0X3JlYWxtX2dl
dChyZXF1ZXN0KTsKKyAgICBjb25zdCBjaGFyICpob3N0ID0gZXdrX2F1dGhfcmVxdWVzdF9ob3N0
X2dldChyZXF1ZXN0KTsKKyAgICBjb25zdCBjaGFyICpyZWFsbSA9IGV3a19hdXRoX3JlcXVlc3Rf
cmVhbG1fZ2V0KHJlcXVlc3QpOwogICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmludGYoYXV0aF90
ZXh0LCAiQSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYXJlIGJlaW5nIHJlcXVlc3RlZCBieSAlcy4g
VGhlIHNpdGUgc2F5czogXCIlc1wiIiwgaG9zdCwgcmVhbG0gPyByZWFsbSA6ICIiKTsKICAgICBl
bG1fb2JqZWN0X3RleHRfc2V0KGxhYmVsLCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KGF1dGhfdGV4
dCkpOwogICAgIGVpbmFfc3RyYnVmX2ZyZWUoYXV0aF90ZXh0KTsKQEAgLTgxMiwxMCArODEyLDEw
IEBAIHN0YXRpYyB2b2lkCiBvbl90b29sdGlwX3RleHRfc2V0KHZvaWQgKnVzZXJfZGF0YSwgRXZh
c19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAq
d2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwotICAgIGNvbnN0IGNoYXIqIG1l
c3NhZ2UgPSAoY29uc3QgY2hhciopZXZlbnRfaW5mbzsKKyAgICBjb25zdCBjaGFyICptZXNzYWdl
ID0gKGNvbnN0IGNoYXIqKWV2ZW50X2luZm87CiAKLSAgICBlbG1fb2JqZWN0X3Rvb2x0aXBfdGV4
dF9zZXQod2luZG93LT53ZWJ2aWV3LCBtZXNzYWdlKTsKLSAgICBlbG1fb2JqZWN0X3Rvb2x0aXBf
c2hvdyh3aW5kb3ctPndlYnZpZXcpOworICAgIGVsbV9vYmplY3RfdG9vbHRpcF90ZXh0X3NldCh3
aW5kb3ctPmV3a192aWV3LCBtZXNzYWdlKTsKKyAgICBlbG1fb2JqZWN0X3Rvb2x0aXBfc2hvdyh3
aW5kb3ctPmV3a192aWV3KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTgyMywyMSArODIzLDIxIEBA
IG9uX3Rvb2x0aXBfdGV4dF91bnNldCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmos
IHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93
c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKIAotICAgIGVsbV9vYmplY3RfdG9vbHRpcF91bnNldCh3
aW5kb3ctPndlYnZpZXcpOworICAgIGVsbV9vYmplY3RfdG9vbHRpcF91bnNldCh3aW5kb3ctPmV3
a192aWV3KTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2hvbWVfYnV0dG9uX2NsaWNrZWQodm9pZCAq
dXNlcl9kYXRhLCBFdmFzX09iamVjdCAqaG9tZV9idXR0b24sIHZvaWQgKmV2ZW50X2luZm8pCiB7
Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9k
YXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2Vy
X2RhdGE7CiAKLSAgICBld2tfdmlld191cmxfc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCBERUZBVUxU
X1VSTCk7CisgICAgZXdrX3ZpZXdfdXJsX3NldCh3aW5kb3ctPmV3a192aWV3LCBERUZBVUxUX1VS
TCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl93aW5kb3dfZGVsZXRpb24odm9pZCAqdXNlcl9kYXRh
LCBFdmFzX09iamVjdCAqd2luZG93LCB2b2lkICpldmVudF9pbmZvKQorb25fd2luZG93X2RlbGV0
aW9uKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmVsbV93aW5kb3csIHZvaWQgKmV2ZW50
X2luZm8pCiB7Ci0gICAgd2luZG93X2Nsb3NlKGJyb3dzZXJfd2luZG93X2ZpbmQod2luZG93KSk7
CisgICAgd2luZG93X2Nsb3NlKHdpbmRvd19maW5kX3dpdGhfZWxtX3dpbmRvdyhlbG1fd2luZG93
KSk7CiB9CiAKIHN0YXRpYyBFdmFzX09iamVjdCAqCkBAIC04NTgsMzMgKzg1OCwzMyBAQCBjcmVh
dGVfdG9vbGJhcl9idXR0b24oRXZhc19PYmplY3QgKndpbmRvdywgY29uc3QgY2hhciAqaWNvbl9u
YW1lKQogCiBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoY29uc3QgY2hhciAq
dXJsKQogewotICAgIEJyb3dzZXJfV2luZG93ICphcHBfZGF0YSA9IG1hbGxvYyhzaXplb2YoQnJv
d3Nlcl9XaW5kb3cpKTsKLSAgICBpZiAoIWFwcF9kYXRhKSB7CisgICAgQnJvd3Nlcl9XaW5kb3cg
KndpbmRvdyA9IG1hbGxvYyhzaXplb2YoQnJvd3Nlcl9XaW5kb3cpKTsKKyAgICBpZiAoIXdpbmRv
dykgewogICAgICAgICBpbmZvKCJFUlJPUjogY291bGQgbm90IGNyZWF0ZSBicm93c2VyIHdpbmRv
dy5cbiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKiBDcmVhdGUgd2lu
ZG93ICovCi0gICAgYXBwX2RhdGEtPndpbmRvdyA9IGVsbV93aW5fYWRkKE5VTEwsICJtaW5pYnJv
d3Nlci13aW5kb3ciLCBFTE1fV0lOX0JBU0lDKTsKLSAgICBlbG1fd2luX3RpdGxlX3NldChhcHBf
ZGF0YS0+d2luZG93LCBBUFBfTkFNRSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKGFwcF9kYXRhLT53aW5kb3csICJkZWxldGUscmVxdWVzdCIsIG9uX3dpbmRvd19kZWxldGlv
biwgJmFwcF9kYXRhKTsKKyAgICB3aW5kb3ctPmVsbV93aW5kb3cgPSBlbG1fd2luX2FkZChOVUxM
LCAibWluaWJyb3dzZXItd2luZG93IiwgRUxNX1dJTl9CQVNJQyk7CisgICAgZWxtX3dpbl90aXRs
ZV9zZXQod2luZG93LT5lbG1fd2luZG93LCBBUFBfTkFNRSk7CisgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdywgImRlbGV0ZSxyZXF1ZXN0Iiwgb25f
d2luZG93X2RlbGV0aW9uLCAmd2luZG93KTsKIAogICAgIC8qIENyZWF0ZSB3aW5kb3cgYmFja2dy
b3VuZCAqLwotICAgIEV2YXNfT2JqZWN0ICpiZyA9IGVsbV9iZ19hZGQoYXBwX2RhdGEtPndpbmRv
dyk7CisgICAgRXZhc19PYmplY3QgKmJnID0gZWxtX2JnX2FkZCh3aW5kb3ctPmVsbV93aW5kb3cp
OwogICAgIGVsbV9iZ19jb2xvcl9zZXQoYmcsIDE5MywgMTkyLCAxOTEpOwogICAgIGV2YXNfb2Jq
ZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGJnLCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRf
RVhQQU5EKTsKLSAgICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKGFwcF9kYXRhLT53aW5kb3cs
IGJnKTsKKyAgICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdywg
YmcpOwogICAgIGV2YXNfb2JqZWN0X3Nob3coYmcpOwogCiAgICAgLyogQ3JlYXRlIHZlcnRpY2Fs
IGxheW91dCAqLwotICAgIEV2YXNfT2JqZWN0ICp2ZXJ0aWNhbF9sYXlvdXQgPSBlbG1fYm94X2Fk
ZChhcHBfZGF0YS0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqdmVydGljYWxfbGF5b3V0ID0g
ZWxtX2JveF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBlbG1fYm94X3BhZGRpbmdfc2V0
KHZlcnRpY2FsX2xheW91dCwgMCwgMik7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdo
dF9zZXQodmVydGljYWxfbGF5b3V0LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5E
KTsKLSAgICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKGFwcF9kYXRhLT53aW5kb3csIHZlcnRp
Y2FsX2xheW91dCk7CisgICAgZWxtX3dpbl9yZXNpemVfb2JqZWN0X2FkZCh3aW5kb3ctPmVsbV93
aW5kb3csIHZlcnRpY2FsX2xheW91dCk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyh2ZXJ0aWNhbF9s
YXlvdXQpOwogCiAgICAgLyogQ3JlYXRlIGhvcml6b250YWwgbGF5b3V0IGZvciB0b3AgYmFyICov
Ci0gICAgRXZhc19PYmplY3QgKmhvcml6b250YWxfbGF5b3V0ID0gZWxtX2JveF9hZGQoYXBwX2Rh
dGEtPndpbmRvdyk7CisgICAgRXZhc19PYmplY3QgKmhvcml6b250YWxfbGF5b3V0ID0gZWxtX2Jv
eF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBlbG1fYm94X2hvcml6b250YWxfc2V0KGhv
cml6b250YWxfbGF5b3V0LCBFSU5BX1RSVUUpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93
ZWlnaHRfc2V0KGhvcml6b250YWxfbGF5b3V0LCBFVkFTX0hJTlRfRVhQQU5ELCAwLjApOwogICAg
IGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQoaG9yaXpvbnRhbF9sYXlvdXQsIEVWQVNf
SElOVF9GSUxMLCAwLjApOwpAQCAtODkyLDU0ICs4OTIsNTQgQEAgc3RhdGljIEJyb3dzZXJfV2lu
ZG93ICp3aW5kb3dfY3JlYXRlKGNvbnN0IGNoYXIgKnVybCkKICAgICBldmFzX29iamVjdF9zaG93
KGhvcml6b250YWxfbGF5b3V0KTsKIAogICAgIC8qIENyZWF0ZSBCYWNrIGJ1dHRvbiAqLwotICAg
IGFwcF9kYXRhLT5iYWNrX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbihhcHBfZGF0YS0+
d2luZG93LCAiYXJyb3dfbGVmdCIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZChhcHBfZGF0YS0+YmFja19idXR0b24sICJjbGlja2VkIiwgb25fYmFja19idXR0b25fY2xpY2tl
ZCwgYXBwX2RhdGEpOwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGFwcF9kYXRhLT5iYWNr
X2J1dHRvbiwgRUlOQV9UUlVFKTsKLSAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3Nl
dChhcHBfZGF0YS0+YmFja19idXR0b24sIDAuMCwgRVZBU19ISU5UX0VYUEFORCk7Ci0gICAgZXZh
c19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldChhcHBfZGF0YS0+YmFja19idXR0b24sIDAuMCwg
MC41KTsKLSAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCBhcHBfZGF0YS0+
YmFja19idXR0b24pOwotICAgIGV2YXNfb2JqZWN0X3Nob3coYXBwX2RhdGEtPmJhY2tfYnV0dG9u
KTsKKyAgICB3aW5kb3ctPmJhY2tfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdpbmRv
dy0+ZWxtX3dpbmRvdywgImFycm93X2xlZnQiKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19hZGQod2luZG93LT5iYWNrX2J1dHRvbiwgImNsaWNrZWQiLCBvbl9iYWNrX2J1dHRvbl9j
bGlja2VkLCB3aW5kb3cpOworICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+YmFj
a19idXR0b24sIEVJTkFfVFJVRSk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9z
ZXQod2luZG93LT5iYWNrX2J1dHRvbiwgMC4wLCBFVkFTX0hJTlRfRVhQQU5EKTsKKyAgICBldmFz
X29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+YmFja19idXR0b24sIDAuMCwgMC41
KTsKKyAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCB3aW5kb3ctPmJhY2tf
YnV0dG9uKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdy0+YmFja19idXR0b24pOwogCiAg
ICAgLyogQ3JlYXRlIEZvcndhcmQgYnV0dG9uICovCi0gICAgYXBwX2RhdGEtPmZvcndhcmRfYnV0
dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKGFwcF9kYXRhLT53aW5kb3csICJhcnJvd19yaWdo
dCIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+Zm9yd2Fy
ZF9idXR0b24sICJjbGlja2VkIiwgb25fZm9yd2FyZF9idXR0b25fY2xpY2tlZCwgYXBwX2RhdGEp
OwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGFwcF9kYXRhLT5mb3J3YXJkX2J1dHRvbiwg
RUlOQV9UUlVFKTsKLSAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChhcHBfZGF0
YS0+Zm9yd2FyZF9idXR0b24sIDAuMCwgRVZBU19ISU5UX0VYUEFORCk7Ci0gICAgZXZhc19vYmpl
Y3Rfc2l6ZV9oaW50X2FsaWduX3NldChhcHBfZGF0YS0+Zm9yd2FyZF9idXR0b24sIDAuMCwgMC41
KTsKLSAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCBhcHBfZGF0YS0+Zm9y
d2FyZF9idXR0b24pOwotICAgIGV2YXNfb2JqZWN0X3Nob3coYXBwX2RhdGEtPmZvcndhcmRfYnV0
dG9uKTsKKyAgICB3aW5kb3ctPmZvcndhcmRfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9u
KHdpbmRvdy0+ZWxtX3dpbmRvdywgImFycm93X3JpZ2h0Iik7CisgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sICJjbGlja2VkIiwgb25fZm9y
d2FyZF9idXR0b25fY2xpY2tlZCwgd2luZG93KTsKKyAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3Nl
dCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCBFSU5BX1RSVUUpOworICAgIGV2YXNfb2JqZWN0X3Np
emVfaGludF93ZWlnaHRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIDAuMCwgRVZBU19ISU5U
X0VYUEFORCk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldCh3aW5kb3ctPmZv
cndhcmRfYnV0dG9uLCAwLjAsIDAuNSk7CisgICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFs
X2xheW91dCwgd2luZG93LT5mb3J3YXJkX2J1dHRvbik7CisgICAgZXZhc19vYmplY3Rfc2hvdyh3
aW5kb3ctPmZvcndhcmRfYnV0dG9uKTsKIAogICAgIC8qIENyZWF0ZSBVUkwgYmFyICovCi0gICAg
YXBwX2RhdGEtPnVybF9iYXIgPSBlbG1fZW50cnlfYWRkKGFwcF9kYXRhLT53aW5kb3cpOwotICAg
IGVsbV9lbnRyeV9zY3JvbGxhYmxlX3NldChhcHBfZGF0YS0+dXJsX2JhciwgRUlOQV9UUlVFKTsK
LSAgICBlbG1fZW50cnlfc2Nyb2xsYmFyX3BvbGljeV9zZXQoYXBwX2RhdGEtPnVybF9iYXIsIEVM
TV9TQ1JPTExFUl9QT0xJQ1lfT0ZGLCBFTE1fU0NST0xMRVJfUE9MSUNZX09GRik7Ci0gICAgZWxt
X2VudHJ5X3NpbmdsZV9saW5lX3NldChhcHBfZGF0YS0+dXJsX2JhciwgRUlOQV9UUlVFKTsKLSAg
ICBlbG1fZW50cnlfY25wX21vZGVfc2V0KGFwcF9kYXRhLT51cmxfYmFyLCBFTE1fQ05QX01PREVf
UExBSU5URVhUKTsKLSAgICBlbG1fZW50cnlfdGV4dF9zdHlsZV91c2VyX3B1c2goYXBwX2RhdGEt
PnVybF9iYXIsICJERUZBVUxUPSdmb250X3NpemU9MTgnIik7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT51cmxfYmFyLCAiYWN0aXZhdGVkIiwgb25fdXJsX2Jh
cl9hY3RpdmF0ZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQoYXBwX2RhdGEtPnVybF9iYXIsICJjbGlja2VkIiwgb25fdXJsX2Jhcl9jbGlja2VkLCBhcHBf
ZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoYXBwX2RhdGEtPnVy
bF9iYXIsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGV2YXNfb2Jq
ZWN0X3NpemVfaGludF9hbGlnbl9zZXQoYXBwX2RhdGEtPnVybF9iYXIsIEVWQVNfSElOVF9GSUxM
LCBFVkFTX0hJTlRfRklMTCk7Ci0gICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91
dCwgYXBwX2RhdGEtPnVybF9iYXIpOwotICAgIGV2YXNfb2JqZWN0X3Nob3coYXBwX2RhdGEtPnVy
bF9iYXIpOworICAgIHdpbmRvdy0+dXJsX2JhciA9IGVsbV9lbnRyeV9hZGQod2luZG93LT5lbG1f
d2luZG93KTsKKyAgICBlbG1fZW50cnlfc2Nyb2xsYWJsZV9zZXQod2luZG93LT51cmxfYmFyLCBF
SU5BX1RSVUUpOworICAgIGVsbV9lbnRyeV9zY3JvbGxiYXJfcG9saWN5X3NldCh3aW5kb3ctPnVy
bF9iYXIsIEVMTV9TQ1JPTExFUl9QT0xJQ1lfT0ZGLCBFTE1fU0NST0xMRVJfUE9MSUNZX09GRik7
CisgICAgZWxtX2VudHJ5X3NpbmdsZV9saW5lX3NldCh3aW5kb3ctPnVybF9iYXIsIEVJTkFfVFJV
RSk7CisgICAgZWxtX2VudHJ5X2NucF9tb2RlX3NldCh3aW5kb3ctPnVybF9iYXIsIEVMTV9DTlBf
TU9ERV9QTEFJTlRFWFQpOworICAgIGVsbV9lbnRyeV90ZXh0X3N0eWxlX3VzZXJfcHVzaCh3aW5k
b3ctPnVybF9iYXIsICJERUZBVUxUPSdmb250X3NpemU9MTgnIik7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+dXJsX2JhciwgImFjdGl2YXRlZCIsIG9uX3VybF9i
YXJfYWN0aXZhdGVkLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZCh3aW5kb3ctPnVybF9iYXIsICJjbGlja2VkIiwgb25fdXJsX2Jhcl9jbGlja2VkLCB3aW5kb3cp
OworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KHdpbmRvdy0+dXJsX2Jhciwg
RVZBU19ISU5UX0VYUEFORCwgRVZBU19ISU5UX0VYUEFORCk7CisgICAgZXZhc19vYmplY3Rfc2l6
ZV9oaW50X2FsaWduX3NldCh3aW5kb3ctPnVybF9iYXIsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJ
TlRfRklMTCk7CisgICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91dCwgd2luZG93
LT51cmxfYmFyKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdy0+dXJsX2Jhcik7CiAKICAg
ICAvKiBDcmVhdGUgUmVmcmVzaCBidXR0b24gKi8KLSAgICBFdmFzX09iamVjdCAqcmVmcmVzaF9i
dXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24oYXBwX2RhdGEtPndpbmRvdywgInJlZnJlc2gi
KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQocmVmcmVzaF9idXR0b24sICJj
bGlja2VkIiwgb25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCwgYXBwX2RhdGEpOworICAgIEV2YXNf
T2JqZWN0ICpyZWZyZXNoX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbih3aW5kb3ctPmVs
bV93aW5kb3csICJyZWZyZXNoIik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHJlZnJlc2hfYnV0dG9uLCAiY2xpY2tlZCIsIG9uX3JlZnJlc2hfYnV0dG9uX2NsaWNrZWQsIHdp
bmRvdyk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQocmVmcmVzaF9idXR0
b24sIDAuMCwgRVZBU19ISU5UX0VYUEFORCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2Fs
aWduX3NldChyZWZyZXNoX2J1dHRvbiwgMS4wLCAwLjUpOwogICAgIGVsbV9ib3hfcGFja19lbmQo
aG9yaXpvbnRhbF9sYXlvdXQsIHJlZnJlc2hfYnV0dG9uKTsKICAgICBldmFzX29iamVjdF9zaG93
KHJlZnJlc2hfYnV0dG9uKTsKIAogICAgIC8qIENyZWF0ZSBIb21lIGJ1dHRvbiAqLwotICAgIEV2
YXNfT2JqZWN0ICpob21lX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbihhcHBfZGF0YS0+
d2luZG93LCAiaG9tZSIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChob21l
X2J1dHRvbiwgImNsaWNrZWQiLCBvbl9ob21lX2J1dHRvbl9jbGlja2VkLCBhcHBfZGF0YSk7Cisg
ICAgRXZhc19PYmplY3QgKmhvbWVfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdpbmRv
dy0+ZWxtX3dpbmRvdywgImhvbWUiKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQoaG9tZV9idXR0b24sICJjbGlja2VkIiwgb25faG9tZV9idXR0b25fY2xpY2tlZCwgd2luZG93
KTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChob21lX2J1dHRvbiwgMC4w
LCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0
KGhvbWVfYnV0dG9uLCAxLjAsIDAuNSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFs
X2xheW91dCwgaG9tZV9idXR0b24pOwogICAgIGV2YXNfb2JqZWN0X3Nob3coaG9tZV9idXR0b24p
OwogCi0gICAgLyogQ3JlYXRlIHdlYnZpZXcgKi8KKyAgICAvKiBDcmVhdGUgZXdrX3ZpZXcgKi8K
ICAgICBFd2tfVmlld19TbWFydF9DbGFzcyAqZXdrVmlld0NsYXNzID0gbWluaUJyb3dzZXJWaWV3
U21hcnRDbGFzcygpOwogICAgIGV3a1ZpZXdDbGFzcy0+cnVuX2phdmFzY3JpcHRfYWxlcnQgPSBv
bl9qYXZhc2NyaXB0X2FsZXJ0OwogICAgIGV3a1ZpZXdDbGFzcy0+cnVuX2phdmFzY3JpcHRfY29u
ZmlybSA9IG9uX2phdmFzY3JpcHRfY29uZmlybTsKQEAgLTk0Nyw1MCArOTQ3LDUwIEBAIHN0YXRp
YyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShjb25zdCBjaGFyICp1cmwpCiAgICAgZXdr
Vmlld0NsYXNzLT53aW5kb3dfZ2VvbWV0cnlfZ2V0ID0gb25fd2luZG93X2dlb21ldHJ5X2dldDsK
ICAgICBld2tWaWV3Q2xhc3MtPndpbmRvd19nZW9tZXRyeV9zZXQgPSBvbl93aW5kb3dfZ2VvbWV0
cnlfc2V0OwogCi0gICAgRXZhcyAqZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGFwcF9kYXRh
LT53aW5kb3cpOworICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3aW5kb3ct
PmVsbV93aW5kb3cpOwogICAgIEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19u
ZXcoJmV3a1ZpZXdDbGFzcy0+c2MpOwotICAgIGFwcF9kYXRhLT53ZWJ2aWV3ID0gZXdrX3ZpZXdf
c21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKLSAgICBl
d2tfdmlld190aGVtZV9zZXQoYXBwX2RhdGEtPndlYnZpZXcsIFRIRU1FX0RJUiAiL2RlZmF1bHQu
ZWRqIik7CisgICAgd2luZG93LT5ld2tfdmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBz
bWFydCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7CisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0
KHdpbmRvdy0+ZXdrX3ZpZXcsIFRIRU1FX0RJUiAiL2RlZmF1bHQuZWRqIik7CiAKLSAgICBFd2tf
U2V0dGluZ3MgKnNldHRpbmdzID0gZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0KGFwcF9kYXRhLT53ZWJ2
aWV3KTsKKyAgICBFd2tfU2V0dGluZ3MgKnNldHRpbmdzID0gZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0
KHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIGV3a19zZXR0aW5nc19maWxlX2FjY2Vzc19mcm9tX2Zp
bGVfdXJsc19hbGxvd2VkX3NldChzZXR0aW5ncywgRUlOQV9UUlVFKTsKICAgICBld2tfc2V0dGlu
Z3NfZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkX3NldChzZXR0aW5ncywgZnJhbWVfZmxhdHRlbmlu
Z19lbmFibGVkKTsKICAgICBld2tfc2V0dGluZ3NfZGV2ZWxvcGVyX2V4dHJhc19lbmFibGVkX3Nl
dChzZXR0aW5ncywgRUlOQV9UUlVFKTsKICAgICBld2tfc2V0dGluZ3NfcHJlZmVycmVkX21pbmlt
dW1fY29udGVudHNfd2lkdGhfc2V0KHNldHRpbmdzLCAwKTsKIAotICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImF1dGhlbnRpY2F0aW9uLHJlcXVl
c3QiLCBvbl9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0LCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiY2xvc2Usd2luZG93Iiwg
b25fY2xvc2Vfd2luZG93LCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiY3JlYXRlLHdpbmRvdyIsIG9uX25ld193aW5kb3cs
IGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEt
PndlYnZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCBvbl9kb3dubG9hZF9mYWlsZWQsIGFwcF9kYXRh
KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcs
ICJkb3dubG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25sb2FkX2ZpbmlzaGVkLCBhcHBfZGF0YSk7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiZG93
bmxvYWQscmVxdWVzdCIsIG9uX2Rvd25sb2FkX3JlcXVlc3QsIGFwcF9kYXRhKTsKLSAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJmaWxlLGNob29z
ZXIscmVxdWVzdCIsIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0LCBhcHBfZGF0YSk7Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiaWNvbixjaGFu
Z2VkIiwgb25fdmlld19pY29uX2NoYW5nZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJsb2FkLGVycm9yIiwgb25fZXJy
b3IsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2Rh
dGEtPndlYnZpZXcsICJsb2FkLHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIGFwcF9kYXRhKTsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJ0aXRs
ZSxjaGFuZ2VkIiwgb25fdGl0bGVfY2hhbmdlZCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgInVybCxjaGFuZ2VkIiwgb25f
dXJsX2NoYW5nZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQoYXBwX2RhdGEtPndlYnZpZXcsICJiYWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIiwgb25fYmFj
a19mb3J3YXJkX2xpc3RfY2hhbmdlZCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgInRvb2x0aXAsdGV4dCxzZXQiLCBvbl90
b29sdGlwX3RleHRfc2V0LCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAidG9vbHRpcCx0ZXh0LHVuc2V0Iiwgb25fdG9vbHRp
cF90ZXh0X3Vuc2V0LCBhcHBfZGF0YSk7Ci0KLSAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFj
a19hZGQoYXBwX2RhdGEtPndlYnZpZXcsIEVWQVNfQ0FMTEJBQ0tfS0VZX0RPV04sIG9uX2tleV9k
b3duLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGFwcF9k
YXRhLT53ZWJ2aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04sIG9uX21vdXNlX2Rvd24sIGFw
cF9kYXRhKTsKLQotICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGFwcF9kYXRh
LT53ZWJ2aWV3LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKLSAgICBldmFz
X29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCBFVkFTX0hJTlRf
RklMTCwgRVZBU19ISU5UX0ZJTEwpOwotICAgIGVsbV9ib3hfcGFja19lbmQodmVydGljYWxfbGF5
b3V0LCBhcHBfZGF0YS0+d2Vidmlldyk7Ci0gICAgZXZhc19vYmplY3Rfc2hvdyhhcHBfZGF0YS0+
d2Vidmlldyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdr
X3ZpZXcsICJhdXRoZW50aWNhdGlvbixyZXF1ZXN0Iiwgb25fYXV0aGVudGljYXRpb25fcmVxdWVz
dCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5l
d2tfdmlldywgImNsb3NlLHdpbmRvdyIsIG9uX2Nsb3NlX3dpbmRvdywgd2luZG93KTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgImNyZWF0ZSx3
aW5kb3ciLCBvbl9uZXdfd2luZG93LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiZG93bmxvYWQsZmFpbGVkIiwgb25fZG93bmxv
YWRfZmFpbGVkLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3
aW5kb3ctPmV3a192aWV3LCAiZG93bmxvYWQsZmluaXNoZWQiLCBvbl9kb3dubG9hZF9maW5pc2hl
ZCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5l
d2tfdmlldywgImRvd25sb2FkLHJlcXVlc3QiLCBvbl9kb3dubG9hZF9yZXF1ZXN0LCB3aW5kb3cp
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAi
ZmlsZSxjaG9vc2VyLHJlcXVlc3QiLCBvbl9maWxlX2Nob29zZXJfcmVxdWVzdCwgd2luZG93KTsK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgImlj
b24sY2hhbmdlZCIsIG9uX3ZpZXdfaWNvbl9jaGFuZ2VkLCB3aW5kb3cpOworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAibG9hZCxlcnJvciIsIG9u
X2Vycm9yLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5k
b3ctPmV3a192aWV3LCAibG9hZCxwcm9ncmVzcyIsIG9uX3Byb2dyZXNzLCB3aW5kb3cpOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAidGl0bGUs
Y2hhbmdlZCIsIG9uX3RpdGxlX2NoYW5nZWQsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJ1cmwsY2hhbmdlZCIsIG9uX3VybF9j
aGFuZ2VkLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5k
b3ctPmV3a192aWV3LCAiYmFjayxmb3J3YXJkLGxpc3QsY2hhbmdlZCIsIG9uX2JhY2tfZm9yd2Fy
ZF9saXN0X2NoYW5nZWQsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJ0b29sdGlwLHRleHQsc2V0Iiwgb25fdG9vbHRpcF90ZXh0
X3NldCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93
LT5ld2tfdmlldywgInRvb2x0aXAsdGV4dCx1bnNldCIsIG9uX3Rvb2x0aXBfdGV4dF91bnNldCwg
d2luZG93KTsKKworICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3
a192aWV3LCBFVkFTX0NBTExCQUNLX0tFWV9ET1dOLCBvbl9rZXlfZG93biwgd2luZG93KTsKKyAg
ICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19D
QUxMQkFDS19NT1VTRV9ET1dOLCBvbl9tb3VzZV9kb3duLCB3aW5kb3cpOworCisgICAgZXZhc19v
YmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5ld2tfdmlldywgRVZBU19ISU5UX0VY
UEFORCwgRVZBU19ISU5UX0VYUEFORCk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWdu
X3NldCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0hJTlRfRklMTCwgRVZBU19ISU5UX0ZJTEwpOwor
ICAgIGVsbV9ib3hfcGFja19lbmQodmVydGljYWxfbGF5b3V0LCB3aW5kb3ctPmV3a192aWV3KTsK
KyAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdy0+ZXdrX3ZpZXcpOwogCiAgICAgaWYgKHVybCkK
LSAgICAgICAgZXdrX3ZpZXdfdXJsX3NldChhcHBfZGF0YS0+d2VidmlldywgdXJsKTsKKyAgICAg
ICAgZXdrX3ZpZXdfdXJsX3NldCh3aW5kb3ctPmV3a192aWV3LCB1cmwpOwogCi0gICAgZXZhc19v
YmplY3RfcmVzaXplKGFwcF9kYXRhLT53aW5kb3csIHdpbmRvd193aWR0aCwgd2luZG93X2hlaWdo
dCk7Ci0gICAgZXZhc19vYmplY3Rfc2hvdyhhcHBfZGF0YS0+d2luZG93KTsKKyAgICBldmFzX29i
amVjdF9yZXNpemUod2luZG93LT5lbG1fd2luZG93LCB3aW5kb3dfd2lkdGgsIHdpbmRvd19oZWln
aHQpOworICAgIGV2YXNfb2JqZWN0X3Nob3cod2luZG93LT5lbG1fd2luZG93KTsKIAotICAgIHZp
ZXdfZm9jdXNfc2V0KGFwcF9kYXRhLCBFSU5BX1RSVUUpOworICAgIHZpZXdfZm9jdXNfc2V0KHdp
bmRvdywgRUlOQV9UUlVFKTsKIAotICAgIHJldHVybiBhcHBfZGF0YTsKKyAgICByZXR1cm4gd2lu
ZG93OwogfQogCiBzdGF0aWMgdm9pZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173581</attachid>
            <date>2012-11-12 00:43:11 -0800</date>
            <delta_ts>2012-11-14 02:09:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101517-20121112174114.patch</filename>
            <type>text/plain</type>
            <size>48568</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGRhNTc2MGM0ZWEwNjlkOGU0ZDQyYTE4ZTU2YWUxNGI4
NmFmOTk3Zi4uOGRjY2Y1YTRjZjI0ZTExZjU4MzJiOWVlZGQ2NTQ2NTQyNjJiNWVkNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgy
IEBACisyMDEyLTExLTEyICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIFJlbmFtZSB2YXJpYWJsZXMsIHN0cnVjdHVyZXMgYW5kIGZ1bmN0
aW9ucyBvZiB0aGUgTWluaUJyb3dzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDE1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWUgdmFyaWFibGVzLCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlv
bnMgb2YgdGhlIE1pbmlCcm93c2VyCisgICAgICAgIGZvciB0aGUgbmFtaW5nIGNvbnNpc3RlbmN5
LgorCisgICAgICAgIDEpIEJyb3dzZXJfV2luZG93KiB7YXBwX2RhdGF8YnJvd3Nlcl93aW5kb3d8
d2luZG93fSAtPiB3aW5kb3cKKworICAgICAgICAyKSBCcm93c2VyX1dpbmRvdzo6d2VidmlldyAt
PiBCcm93c2VyX1dpbmRvdzo6ZXdrX3ZpZXcKKyAgICAgICAgICAgICBUaGUgd2Via2l0IEFQSSBm
dW5jdGlvbnMgYXJlIGV3a192aWV3X3h4eCBub3Qgd2Vidmlld194eHguCisgICAgICAgICAgICAg
U28gdXNpbmcgZXdrX3ZpZXcgd2lsbCBiZSBiZXR0ZXIgdGhhbiB3ZWJ2aWV3LgorCisgICAgICAg
IDMpIEJyb3dzZXJfV2luZG93Ojp3aW5kb3cgLT4gQnJvd3Nlcl9XaW5kb3c6OmVsbV93aW5kb3cK
KyAgICAgICAgICAgICBUaGUgbmFtZSBpcyBjaGFuZ2VkIHRvIGJlIGRpc3Rpbmd1aXNoZWQgd2l0
aCAnQnJvd3Nlcl9XaW5kb3cgKndpbmRvdycKKworICAgICAgICA0KSBicm93c2VyX3t3aW5kb3d8
dmlld31fZmluZCgpIC0+IHdpbmRvd19maW5kX3dpdGhfe2VsbV93aW5kb3d8ZXdrX3ZpZXd9KCkK
KyAgICAgICAgICAgICBUaGlzIGlzIGNoYW5nZWQgYmVjYXVzZSB0aGUgbmFtZSBvZiB0aGUgZnVu
Y3Rpb24gY2FuIGJlIGNvbmZ1c2VkLgorICAgICAgICAgICAgIEN1cnJlbnRseSwgYnJvd3Nlcl93
aW5kb3dfZmluZCgpIHJldHVybnMgQnJvd3Nlcl9XaW5kb3cqLiBBbmQKKyAgICAgICAgICAgICBi
cm93c2VyX3ZpZXdfZmluZCgpIGFsc28gcmV0dXJucyBCcm93c2VyX1dpbmRvdyouCisKKyAgICAg
ICAgNSkgRmlsZVNlbGVjdG9yRGF0YSAtPiBGaWxlX1NlbGVjdG9yX0RhdGEgLyBBdXRoRGF0YSAt
PiBBdXRoX0RhdGEKKyAgICAgICAgICAgICBUaGUgdHlwZSBkZWZpbml0aW9uIGlzIG1vdmVkIHRv
IHRoZSB0b3Agb2YgdGhlIHNvdXJjZSBmaWxlCisgICAgICAgICAgICAgYW5kIHRoZSBuYW1lIGlz
IGNoYW5nZWQgdG8gZm9sbG93IEVGTCBzdHlsZS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2Vm
bC9tYWluLmM6CisgICAgICAgIChtaW5pQnJvd3NlclZpZXdTbWFydENsYXNzKToKKyAgICAgICAg
KF9Ccm93c2VyX1dpbmRvdyk6CisgICAgICAgIChfRmlsZV9TZWxlY3Rvcl9EYXRhKToKKyAgICAg
ICAgKF9BdXRoX0RhdGEpOgorICAgICAgICAod2luZG93X2ZpbmRfd2l0aF9ld2tfdmlldyk6Cisg
ICAgICAgICh3aW5kb3dfZnJlZSk6CisgICAgICAgIChvbl9rZXlfZG93bik6CisgICAgICAgICh2
aWV3X2ZvY3VzX3NldCk6CisgICAgICAgIChvbl9tb3VzZV9kb3duKToKKyAgICAgICAgKHRpdGxl
X3NldCk6CisgICAgICAgIChvbl90aXRsZV9jaGFuZ2VkKToKKyAgICAgICAgKG9uX3VybF9jaGFu
Z2VkKToKKyAgICAgICAgKG9uX2JhY2tfZm9yd2FyZF9saXN0X2NoYW5nZWQpOgorICAgICAgICAo
b25fbmV3X3dpbmRvdyk6CisgICAgICAgIChvbl9jbG9zZV93aW5kb3cpOgorICAgICAgICAob25f
cHJvZ3Jlc3MpOgorICAgICAgICAob25fZXJyb3IpOgorICAgICAgICAob25fZG93bmxvYWRfcmVx
dWVzdCk6CisgICAgICAgIChjbG9zZV9maWxlX3BpY2tlcik6CisgICAgICAgIChvbl9maWxlcGlj
a2VyX3BhcmVudF9kZWxldGlvbik6CisgICAgICAgIChvbl9maWxlcGlja2VyX2RlbGV0aW9uKToK
KyAgICAgICAgKG9uX2ZpbGVzZWxlY3Rvcl9kb25lKToKKyAgICAgICAgKG9uX2ZpbGVfY2hvb3Nl
cl9yZXF1ZXN0KToKKyAgICAgICAgKG9uX2Rvd25sb2FkX2ZpbmlzaGVkKToKKyAgICAgICAgKG9u
X2Rvd25sb2FkX2ZhaWxlZCk6CisgICAgICAgIChvbl9mYXZpY29uX3JlY2VpdmVkKToKKyAgICAg
ICAgKG9uX3ZpZXdfaWNvbl9jaGFuZ2VkKToKKyAgICAgICAgKG9uX3VybF9iYXJfYWN0aXZhdGVk
KToKKyAgICAgICAgKG9uX3VybF9iYXJfY2xpY2tlZCk6CisgICAgICAgIChvbl9iYWNrX2J1dHRv
bl9jbGlja2VkKToKKyAgICAgICAgKG9uX2ZvcndhcmRfYnV0dG9uX2NsaWNrZWQpOgorICAgICAg
ICAob25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCk6CisgICAgICAgIChvbl9qYXZhc2NyaXB0X2Fs
ZXJ0KToKKyAgICAgICAgKG9uX2phdmFzY3JpcHRfY29uZmlybSk6CisgICAgICAgIChvbl9qYXZh
c2NyaXB0X3Byb21wdCk6CisgICAgICAgIChvbl93aW5kb3dfZ2VvbWV0cnlfZ2V0KToKKyAgICAg
ICAgKG9uX3dpbmRvd19nZW9tZXRyeV9zZXQpOgorICAgICAgICAob25fZnVsbHNjcmVlbl9kZW55
KToKKyAgICAgICAgKG9uX2Z1bGxzY3JlZW5fZW50ZXIpOgorICAgICAgICAob25fZnVsbHNjcmVl
bl9leGl0KToKKyAgICAgICAgKGF1dGhfcG9wdXBfY2xvc2UpOgorICAgICAgICAob25fYXV0aF9j
YW5jZWwpOgorICAgICAgICAob25fYXV0aF9vayk6CisgICAgICAgIChvbl9hdXRoZW50aWNhdGlv
bl9yZXF1ZXN0KToKKyAgICAgICAgKG9uX3Rvb2x0aXBfdGV4dF9zZXQpOgorICAgICAgICAob25f
dG9vbHRpcF90ZXh0X3Vuc2V0KToKKyAgICAgICAgKG9uX2hvbWVfYnV0dG9uX2NsaWNrZWQpOgor
ICAgICAgICAob25fd2luZG93X2RlbGV0aW9uKToKKyAgICAgICAgKHdpbmRvd19jcmVhdGUpOgor
CiAyMDEyLTExLTExICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBDaGFuZ2UgYnVpbGQgY29uZ3JhdHVsYXRpb24gbWVzc2FnZSBpbiBFRkwKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwv
bWFpbi5jCmluZGV4IGU5ODJhNzExNzQzMGY3M2JkMDFkZTYzZTk1ODVhODNlM2E5YmY4YjkuLjU4
YzMwNjNhNzhjNGQ2NzVjM2U3NGVkNDE2YmY2YWNkM2NmOWQ4OTMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4u
YwpAQCAtNDQsMjAgKzQ0LDMzIEBAIHN0YXRpYyBFaW5hX0Jvb2wgZnJhbWVfZmxhdHRlbmluZ19l
bmFibGVkID0gRUlOQV9GQUxTRTsKIHN0YXRpYyBpbnQgd2luZG93X3dpZHRoID0gODAwOwogc3Rh
dGljIGludCB3aW5kb3dfaGVpZ2h0ID0gNjAwOwogCi1zdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xh
c3MqIG1pbmlCcm93c2VyVmlld1NtYXJ0Q2xhc3MoKQorc3RhdGljIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzICptaW5pQnJvd3NlclZpZXdTbWFydENsYXNzKCkKIHsKICAgICBzdGF0aWMgRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgZXdrVmlld0NsYXNzID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1F
X1ZFUlNJT04oIk1pbmlCcm93c2VyX1ZpZXciKTsKICAgICByZXR1cm4gJmV3a1ZpZXdDbGFzczsK
IH0KIAogdHlwZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJfV2luZG93IHsKLSAgICBFdmFzX09iamVjdCAq
d2luZG93OwotICAgIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3OworICAgIEV2YXNfT2JqZWN0ICplbG1f
d2luZG93OworICAgIEV2YXNfT2JqZWN0ICpld2tfdmlldzsKICAgICBFdmFzX09iamVjdCAqdXJs
X2JhcjsKICAgICBFdmFzX09iamVjdCAqYmFja19idXR0b247CiAgICAgRXZhc19PYmplY3QgKmZv
cndhcmRfYnV0dG9uOwogfSBCcm93c2VyX1dpbmRvdzsKIAordHlwZWRlZiBzdHJ1Y3QgX0ZpbGVf
U2VsZWN0b3JfRGF0YSB7CisgICAgQnJvd3Nlcl9XaW5kb3cqIHBhcmVudDsKKyAgICBFdmFzX09i
amVjdCAqZWxtX3dpbmRvdzsKKyAgICBFd2tfRmlsZV9DaG9vc2VyX1JlcXVlc3QgKnJlcXVlc3Q7
Cit9IEZpbGVfU2VsZWN0b3JfRGF0YTsKKwordHlwZWRlZiBzdHJ1Y3QgX0F1dGhfRGF0YSB7Cisg
ICAgRXZhc19PYmplY3QgKnBvcHVwOworICAgIEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3Q7Cisg
ICAgRXZhc19PYmplY3QgKnVzZXJuYW1lX2VudHJ5OworICAgIEV2YXNfT2JqZWN0ICpwYXNzd29y
ZF9lbnRyeTsKK30gQXV0aF9EYXRhOworCiBzdGF0aWMgY29uc3QgRWNvcmVfR2V0b3B0IG9wdGlv
bnMgPSB7CiAgICAgIk1pbmlCcm93c2VyIiwKICAgICAiJXByb2cgW29wdGlvbnNdIFt1cmxdIiwK
QEAgLTg5LDQzICsxMDIsNDMgQEAgc3RhdGljIGNvbnN0IEVjb3JlX0dldG9wdCBvcHRpb25zID0g
ewogCiBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoY29uc3QgY2hhciAqdXJs
KTsKIAotc3RhdGljIEJyb3dzZXJfV2luZG93ICpicm93c2VyX3dpbmRvd19maW5kKEV2YXNfT2Jq
ZWN0ICp3aW5kb3cpCitzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19maW5kX3dpdGhfZWxt
X3dpbmRvdyhFdmFzX09iamVjdCAqZWxtX3dpbmRvdykKIHsKICAgICBFaW5hX0xpc3QgKmw7CiAg
ICAgdm9pZCAqZGF0YTsKIAotICAgIGlmICghd2luZG93KQorICAgIGlmICghZWxtX3dpbmRvdykK
ICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBFSU5BX0xJU1RfRk9SRUFDSCh3aW5kb3dzLCBs
LCBkYXRhKSB7Ci0gICAgICAgIEJyb3dzZXJfV2luZG93ICpicm93c2VyX3dpbmRvdyA9IChCcm93
c2VyX1dpbmRvdyAqKWRhdGE7Ci0gICAgICAgIGlmIChicm93c2VyX3dpbmRvdy0+d2luZG93ID09
IHdpbmRvdykKLSAgICAgICAgICAgIHJldHVybiBicm93c2VyX3dpbmRvdzsKKyAgICAgICAgQnJv
d3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKWRhdGE7CisgICAgICAgIGlm
ICh3aW5kb3ctPmVsbV93aW5kb3cgPT0gZWxtX3dpbmRvdykKKyAgICAgICAgICAgIHJldHVybiB3
aW5kb3c7CiAgICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgQnJvd3Nlcl9XaW5k
b3cgKmJyb3dzZXJfdmlld19maW5kKEV2YXNfT2JqZWN0ICp2aWV3KQorc3RhdGljIEJyb3dzZXJf
V2luZG93ICp3aW5kb3dfZmluZF93aXRoX2V3a192aWV3KEV2YXNfT2JqZWN0ICpld2tfdmlldykK
IHsKICAgICBFaW5hX0xpc3QgKmw7CiAgICAgdm9pZCAqZGF0YTsKIAotICAgIGlmICghdmlldykK
KyAgICBpZiAoIWV3a192aWV3KQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIEVJTkFfTElT
VF9GT1JFQUNIKHdpbmRvd3MsIGwsIGRhdGEpIHsKLSAgICAgICAgQnJvd3Nlcl9XaW5kb3cgKmJy
b3dzZXJfd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopZGF0YTsKLSAgICAgICAgaWYgKGJyb3dz
ZXJfd2luZG93LT53ZWJ2aWV3ID09IHZpZXcpCi0gICAgICAgICAgICByZXR1cm4gYnJvd3Nlcl93
aW5kb3c7CisgICAgICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cg
KilkYXRhOworICAgICAgICBpZiAod2luZG93LT5ld2tfdmlldyA9PSBld2tfdmlldykKKyAgICAg
ICAgICAgIHJldHVybiB3aW5kb3c7CiAgICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0
aWMgdm9pZCB3aW5kb3dfZnJlZShCcm93c2VyX1dpbmRvdyAqd2luZG93KQogewotICAgIGV2YXNf
b2JqZWN0X2RlbCh3aW5kb3ctPndlYnZpZXcpOworICAgIGV2YXNfb2JqZWN0X2RlbCh3aW5kb3ct
PmV3a192aWV3KTsKICAgICAvKiBUaGUgZWxtX3dpbiB3aWxsIHRha2UgY2FyZSBvZiBmcmVlaW5n
IGl0cyBjaGlsZHJlbiAqLwotICAgIGV2YXNfb2JqZWN0X2RlbCh3aW5kb3ctPndpbmRvdyk7Cisg
ICAgZXZhc19vYmplY3RfZGVsKHdpbmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAgZnJlZSh3aW5kb3cp
OwogfQogCkBAIC0xMzksNyArMTUyLDcgQEAgc3RhdGljIHZvaWQgd2luZG93X2Nsb3NlKEJyb3dz
ZXJfV2luZG93ICp3aW5kb3cpCiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9rZXlfZG93bih2b2lkICp1
c2VyX2RhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZv
KQorb25fa2V5X2Rvd24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqZXdr
X3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9
IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKICAgICBFdmFzX0V2ZW50X0tleV9Eb3duICpl
diA9IChFdmFzX0V2ZW50X0tleV9Eb3duKikgZXZlbnRfaW5mbzsKQEAgLTE1NCwyNiArMTY3LDI2
IEBAIG9uX2tleV9kb3duKHZvaWQgKnVzZXJfZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKndl
YnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiAKICAgICBpZiAoIXN0cmNtcChldi0+a2V5LCAiRjEi
KSkgewogICAgICAgICBpbmZvKCJCYWNrIChGMSkgd2FzIHByZXNzZWRcbiIpOwotICAgICAgICBp
ZiAoIWV3a192aWV3X2JhY2sod2VidmlldykpCisgICAgICAgIGlmICghZXdrX3ZpZXdfYmFjayhl
d2tfdmlldykpCiAgICAgICAgICAgICBpbmZvKCJCYWNrIGlnbm9yZWQ6IE5vIGJhY2sgaGlzdG9y
eVxuIik7CiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJGMiIpKSB7CiAgICAgICAg
IGluZm8oIkZvcndhcmQgKEYyKSB3YXMgcHJlc3NlZFxuIik7Ci0gICAgICAgIGlmICghZXdrX3Zp
ZXdfZm9yd2FyZCh3ZWJ2aWV3KSkKKyAgICAgICAgaWYgKCFld2tfdmlld19mb3J3YXJkKGV3a192
aWV3KSkKICAgICAgICAgICAgIGluZm8oIkZvcndhcmQgaWdub3JlZDogTm8gZm9yd2FyZCBoaXN0
b3J5XG4iKTsKICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYtPmtleSwgIkYzIikpIHsKICAgICAg
ICAgY3VycmVudEVuY29kaW5nID0gKGN1cnJlbnRFbmNvZGluZyArIDEpICUgKHNpemVvZihlbmNv
ZGluZ3MpIC8gc2l6ZW9mKGVuY29kaW5nc1swXSkpOwogICAgICAgICBpbmZvKCJTZXQgZW5jb2Rp
bmcgKEYzKSBwcmVzc2VkLiBOZXcgZW5jb2RpbmcgdG8gJXMiLCBlbmNvZGluZ3NbY3VycmVudEVu
Y29kaW5nXSk7Ci0gICAgICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldCh3
ZWJ2aWV3LCBlbmNvZGluZ3NbY3VycmVudEVuY29kaW5nXSk7CisgICAgICAgIGV3a192aWV3X3Nl
dHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChld2tfdmlldywgZW5jb2RpbmdzW2N1cnJlbnRFbmNv
ZGluZ10pOwogICAgIH0gZWxzZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiRjUiKSkgewogICAgICAg
ICBpbmZvKCJSZWxvYWQgKEY1KSB3YXMgcHJlc3NlZCwgcmVsb2FkaW5nLlxuIik7Ci0gICAgICAg
IGV3a192aWV3X3JlbG9hZCh3ZWJ2aWV3KTsKKyAgICAgICAgZXdrX3ZpZXdfcmVsb2FkKGV3a192
aWV3KTsKICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYtPmtleSwgIkY2IikpIHsKICAgICAgICAg
aW5mbygiU3RvcCAoRjYpIHdhcyBwcmVzc2VkLCBzdG9wIGxvYWRpbmcuXG4iKTsKLSAgICAgICAg
ZXdrX3ZpZXdfc3RvcCh3ZWJ2aWV3KTsKKyAgICAgICAgZXdrX3ZpZXdfc3RvcChld2tfdmlldyk7
CiAgICAgfSBlbHNlIGlmICAoIXN0cmNtcChldi0+a2V5LCAiRjciKSkgewotICAgICAgICBFd2tf
UGFnaW5hdGlvbl9Nb2RlIG1vZGUgPSAgZXdrX3ZpZXdfcGFnaW5hdGlvbl9tb2RlX2dldCh3ZWJ2
aWV3KTsKKyAgICAgICAgRXdrX1BhZ2luYXRpb25fTW9kZSBtb2RlID0gIGV3a192aWV3X3BhZ2lu
YXRpb25fbW9kZV9nZXQoZXdrX3ZpZXcpOwogICAgICAgICBtb2RlID0gKCsrbW9kZSkgJSAoRVdL
X1BBR0lOQVRJT05fTU9ERV9CT1RUT01fVE9fVE9QICsgMSk7Ci0gICAgICAgIGlmIChld2tfdmll
d19wYWdpbmF0aW9uX21vZGVfc2V0KHdlYnZpZXcsIG1vZGUpKQorICAgICAgICBpZiAoZXdrX3Zp
ZXdfcGFnaW5hdGlvbl9tb2RlX3NldChld2tfdmlldywgbW9kZSkpCiAgICAgICAgICAgICBpbmZv
KCJDaGFuZ2UgUGFnaW5hdGlvbiBNb2RlIChGNykgd2FzIHByZXNzZWQsIGNoYW5nZWQgdG86ICVk
XG4iLCBtb2RlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW5mbygiQ2hhbmdlIFBhZ2lu
YXRpb24gTW9kZSAoRjcpIHdhcyBwcmVzc2VkLCBidXQgTk9UIGNoYW5nZWQhIik7CkBAIC0xODMs
MTAgKzE5NiwxMCBAQCBvbl9rZXlfZG93bih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUsIEV2YXNf
T2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQogICAgICAgICB3aW5kb3dzID0gZWlu
YV9saXN0X2FwcGVuZCh3aW5kb3dzLCB3aW5kb3cpOwogICAgIH0gZWxzZSBpZiAoIXN0cmNtcChl
di0+a2V5LCAiaSIpICYmIGN0cmxQcmVzc2VkKSB7CiAgICAgICAgIGluZm8oIlNob3cgSW5zcGVj
dG9yIChDdHJsK2kpIHdhcyBwcmVzc2VkLlxuIik7Ci0gICAgICAgIGV3a192aWV3X2luc3BlY3Rv
cl9zaG93KHdlYnZpZXcpOworICAgICAgICBld2tfdmlld19pbnNwZWN0b3Jfc2hvdyhld2tfdmll
dyk7CiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJFc2NhcGUiKSkgewotICAgICAg
ICBpZiAoZWxtX3dpbl9mdWxsc2NyZWVuX2dldCh3aW5kb3ctPndpbmRvdykpCi0gICAgICAgICAg
ICBld2tfdmlld19mdWxsc2NyZWVuX2V4aXQod2Vidmlldyk7CisgICAgICAgIGlmIChlbG1fd2lu
X2Z1bGxzY3JlZW5fZ2V0KHdpbmRvdy0+ZWxtX3dpbmRvdykpCisgICAgICAgICAgICBld2tfdmll
d19mdWxsc2NyZWVuX2V4aXQoZXdrX3ZpZXcpOwogICAgIH0KIH0KIApAQCAtMTk2LDEyICsyMDks
MTIgQEAgdmlld19mb2N1c19zZXQoQnJvd3Nlcl9XaW5kb3cgKndpbmRvdywgRWluYV9Cb29sIGZv
Y3VzKQogICAgIC8qIFdlIHN0ZWFsIGZvY3VzIGF3YXkgZnJvbSBlbG0ncyBmb2N1cyBtb2RlbCBh
bmQgc3RhcnQgdG8gZG8gdGhpbmdzCiAgICAgICogbWFudWFsbHkgaGVyZSwgc28gZWxtIG5vdyBo
YXMgbm8gY2x1ZSB3aGF0J3MgdXAuIFRlbGwgZWxtIHRoYXQgaXRzCiAgICAgICogdG9wbGV2ZWwg
d2lkZ2V0IGlzIHRvIGJlIHVuZm9jdXNlZCBzbyBlbG0gZ2l2ZXMgdXAgdGhlIGZvY3VzICovCi0g
ICAgZWxtX29iamVjdF9mb2N1c19zZXQoZWxtX29iamVjdF90b3Bfd2lkZ2V0X2dldCh3aW5kb3ct
PndpbmRvdyksIEVJTkFfRkFMU0UpOwotICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ct
PndlYnZpZXcsIGZvY3VzKTsKKyAgICBlbG1fb2JqZWN0X2ZvY3VzX3NldChlbG1fb2JqZWN0X3Rv
cF93aWRnZXRfZ2V0KHdpbmRvdy0+ZWxtX3dpbmRvdyksIEVJTkFfRkFMU0UpOworICAgIGV2YXNf
b2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmV3a192aWV3LCBmb2N1cyk7CiB9CiAKIHN0YXRpYyB2
b2lkCi1vbl9tb3VzZV9kb3duKHZvaWQgKnVzZXJfZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3Qg
KndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9tb3VzZV9kb3duKHZvaWQgKnVzZXJfZGF0
YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewog
ICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7
CiAgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldiA9IChFdmFzX0V2ZW50X01vdXNlX0Rvd24g
KilldmVudF9pbmZvOwpAQCAtMjEyLDE2ICsyMjUsMTYgQEAgb25fbW91c2VfZG93bih2b2lkICp1
c2VyX2RhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZv
KQogICAgIGlmIChldi0+YnV0dG9uID09IDEpCiAgICAgICAgIHZpZXdfZm9jdXNfc2V0KHdpbmRv
dywgRUlOQV9UUlVFKTsKICAgICBlbHNlIGlmIChldi0+YnV0dG9uID09IDIpCi0gICAgICAgIHZp
ZXdfZm9jdXNfc2V0KHdpbmRvdywgIWV2YXNfb2JqZWN0X2ZvY3VzX2dldCh3ZWJ2aWV3KSk7Cisg
ICAgICAgIHZpZXdfZm9jdXNfc2V0KHdpbmRvdywgIWV2YXNfb2JqZWN0X2ZvY3VzX2dldChld2tf
dmlldykpOwogfQogCiBzdGF0aWMgdm9pZAotdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICp3aW5kb3cs
IGNvbnN0IGNoYXIgKnRpdGxlLCBpbnQgcHJvZ3Jlc3MpCit0aXRsZV9zZXQoRXZhc19PYmplY3Qg
KmVsbV93aW5kb3csIGNvbnN0IGNoYXIgKnRpdGxlLCBpbnQgcHJvZ3Jlc3MpCiB7CiAgICAgRWlu
YV9TdHJidWYgKmJ1ZmZlcjsKIAogICAgIGlmICghdGl0bGUgfHwgISp0aXRsZSkgewotICAgICAg
ICBlbG1fd2luX3RpdGxlX3NldCh3aW5kb3csIEFQUF9OQU1FKTsKKyAgICAgICAgZWxtX3dpbl90
aXRsZV9zZXQoZWxtX3dpbmRvdywgQVBQX05BTUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yMzEsNjggKzI0NCw2OCBAQCB0aXRsZV9zZXQoRXZhc19PYmplY3QgKndpbmRvdywgY29u
c3QgY2hhciAqdGl0bGUsIGludCBwcm9ncmVzcykKICAgICBlbHNlCiAgICAgICAgIGVpbmFfc3Ry
YnVmX2FwcGVuZF9wcmludGYoYnVmZmVyLCAiJXMgLSAlcyIsIHRpdGxlLCBBUFBfTkFNRSk7CiAK
LSAgICBlbG1fd2luX3RpdGxlX3NldCh3aW5kb3csIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQoYnVm
ZmVyKSk7CisgICAgZWxtX3dpbl90aXRsZV9zZXQoZWxtX3dpbmRvdywgZWluYV9zdHJidWZfc3Ry
aW5nX2dldChidWZmZXIpKTsKICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CiB9CiAKIHN0
YXRpYyB2b2lkCi1vbl90aXRsZV9jaGFuZ2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3Qg
KndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl90aXRsZV9jaGFuZ2VkKHZvaWQgKnVzZXJf
ZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIEJy
b3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAgICAg
Y29uc3QgY2hhciAqdGl0bGUgPSAoY29uc3QgY2hhciAqKWV2ZW50X2luZm87CiAKLSAgICB0aXRs
ZV9zZXQod2luZG93LT53aW5kb3csIHRpdGxlLCAxMDApOworICAgIHRpdGxlX3NldCh3aW5kb3ct
PmVsbV93aW5kb3csIHRpdGxlLCAxMDApOwogfQogCiBzdGF0aWMgdm9pZAotb25fdXJsX2NoYW5n
ZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5m
bykKK29uX3VybF9jaGFuZ2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3
LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJv
d3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKLSAgICBjaGFyICp1cmwgPSBlbG1fZW50cnlfdXRm
OF90b19tYXJrdXAoZXdrX3ZpZXdfdXJsX2dldCh3aW5kb3ctPndlYnZpZXcpKTsKKyAgICBjaGFy
ICp1cmwgPSBlbG1fZW50cnlfdXRmOF90b19tYXJrdXAoZXdrX3ZpZXdfdXJsX2dldCh3aW5kb3ct
PmV3a192aWV3KSk7CiAgICAgZWxtX2VudHJ5X2VudHJ5X3NldCh3aW5kb3ctPnVybF9iYXIsIHVy
bCk7CiAKICAgICBmcmVlKHVybCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9iYWNrX2ZvcndhcmRf
bGlzdF9jaGFuZ2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQg
KmV2ZW50X2luZm8pCitvbl9iYWNrX2ZvcndhcmRfbGlzdF9jaGFuZ2VkKHZvaWQgKnVzZXJfZGF0
YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIEJyb3dz
ZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICAv
KiBVcGRhdGUgbmF2aWdhdGlvbiBidXR0b25zIHN0YXRlICovCi0gICAgZWxtX29iamVjdF9kaXNh
YmxlZF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgIWV3a192aWV3X2JhY2tfcG9zc2libGUod2Vi
dmlldykpOwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0
b24sICFld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKHdlYnZpZXcpKTsKKyAgICBlbG1fb2JqZWN0
X2Rpc2FibGVkX3NldCh3aW5kb3ctPmJhY2tfYnV0dG9uLCAhZXdrX3ZpZXdfYmFja19wb3NzaWJs
ZShld2tfdmlldykpOworICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+Zm9yd2Fy
ZF9idXR0b24sICFld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKGV3a192aWV3KSk7CiB9CiAKIHN0
YXRpYyB2b2lkCi1vbl9uZXdfd2luZG93KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndl
YnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9uZXdfd2luZG93KHZvaWQgKnVzZXJfZGF0YSwg
RXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIEV2YXNfT2Jq
ZWN0ICoqbmV3X3ZpZXcgPSAoRXZhc19PYmplY3QgKiopZXZlbnRfaW5mbzsKICAgICBCcm93c2Vy
X1dpbmRvdyAqd2luZG93ID0gd2luZG93X2NyZWF0ZShOVUxMKTsKLSAgICAqbmV3X3ZpZXcgPSB3
aW5kb3ctPndlYnZpZXc7CisgICAgKm5ld192aWV3ID0gd2luZG93LT5ld2tfdmlldzsKICAgICB3
aW5kb3dzID0gZWluYV9saXN0X2FwcGVuZCh3aW5kb3dzLCB3aW5kb3cpOwogfQogCiBzdGF0aWMg
dm9pZAotb25fY2xvc2Vfd2luZG93KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZp
ZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9jbG9zZV93aW5kb3codm9pZCAqdXNlcl9kYXRhLCBF
dmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgd2luZG93X2Ns
b3NlKChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9w
cm9ncmVzcyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVu
dF9pbmZvKQorb25fcHJvZ3Jlc3Modm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdrX3Zp
ZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChC
cm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKICAgICBkb3VibGUgcHJvZ3Jlc3MgPSAqKGRvdWJs
ZSAqKWV2ZW50X2luZm87CiAKLSAgICB0aXRsZV9zZXQod2luZG93LT53aW5kb3csIGV3a192aWV3
X3RpdGxlX2dldCh3aW5kb3ctPndlYnZpZXcpLCBwcm9ncmVzcyAqIDEwMCk7CisgICAgdGl0bGVf
c2V0KHdpbmRvdy0+ZWxtX3dpbmRvdywgZXdrX3ZpZXdfdGl0bGVfZ2V0KHdpbmRvdy0+ZXdrX3Zp
ZXcpLCBwcm9ncmVzcyAqIDEwMCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9lcnJvcih2b2lkICp1
c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQorb25fZXJy
b3Iodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2lu
Zm8pCiB7Ci0gICAgRWluYV9TdHJidWYqIGJ1ZmZlcjsKKyAgICBFaW5hX1N0cmJ1ZiAqYnVmZmVy
OwogICAgIGNvbnN0IEV3a19FcnJvciAqZXJyb3IgPSAoY29uc3QgRXdrX0Vycm9yICopZXZlbnRf
aW5mbzsKIAogICAgIC8qIFRoaXMgaXMgYSBjYW5jZWxsYXRpb24sIGRvIG5vdCBkaXNwbGF5IHRo
ZSBlcnJvciBwYWdlICovCkBAIC0zMDMsMTIgKzMxNiwxMiBAQCBvbl9lcnJvcih2b2lkICp1c2Vy
X2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQogICAgIGVpbmFf
c3RyYnVmX2FwcGVuZF9wcmludGYoYnVmZmVyLCAiPGh0bWw+PGJvZHk+PGRpdiBzdHlsZT1cImNv
bG9yOiNmZjAwMDBcIj5FUlJPUiE8L2Rpdj48YnI+PGRpdj5Db2RlOiAlZDxicj5EZXNjcmlwdGlv
bjogJXM8YnI+VVJMOiAlczwvZGl2PjwvYm9keTwvaHRtbD4iLAogICAgICAgICBld2tfZXJyb3Jf
Y29kZV9nZXQoZXJyb3IpLCBld2tfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGVycm9yKSwgZXdrX2Vy
cm9yX3VybF9nZXQoZXJyb3IpKTsKIAotICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2Vi
dmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCBld2tfZXJyb3JfdXJsX2dl
dChlcnJvcikpOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQoZXdrX3ZpZXcsIGVpbmFf
c3RyYnVmX3N0cmluZ19nZXQoYnVmZmVyKSwgMCwgZXdrX2Vycm9yX3VybF9nZXQoZXJyb3IpKTsK
ICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9kb3du
bG9hZF9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQg
KmV2ZW50X2luZm8pCitvbl9kb3dubG9hZF9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19P
YmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIEV3a19Eb3dubG9hZF9K
b2IgKmRvd25sb2FkID0gKEV3a19Eb3dubG9hZF9Kb2IgKilldmVudF9pbmZvOwogCkBAIC0zMjks
MzggKzM0MiwzMiBAQCBvbl9kb3dubG9hZF9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19P
YmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgZWluYV9zdHJidWZfZnJlZShk
ZXN0aW5hdGlvbl9wYXRoKTsKIH0KIAotdHlwZWRlZiBzdHJ1Y3QgewotICAgIEV2YXNfT2JqZWN0
ICpwYXJlbnQ7Ci0gICAgRXZhc19PYmplY3QgKndpbmRvdzsKLSAgICBFd2tfRmlsZV9DaG9vc2Vy
X1JlcXVlc3QgKnJlcXVlc3Q7Ci19IEZpbGVTZWxlY3RvckRhdGE7Ci0KLXN0YXRpYyB2b2lkIG9u
X2ZpbGVwaWNrZXJfcGFyZW50X2RlbGV0aW9uKHZvaWQgKnVzZXJfZGF0YSwgRXZhcyAqZXZhcywg
RXZhc19PYmplY3QgKndpbmRvdywgdm9pZCAqZXZlbnQpOworc3RhdGljIHZvaWQgb25fZmlsZXBp
Y2tlcl9wYXJlbnRfZGVsZXRpb24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICpldmFzLCBFdmFzX09i
amVjdCAqZWxtX3dpbmRvdywgdm9pZCAqZXZlbnQpOwogCi1zdGF0aWMgdm9pZCBjbG9zZV9maWxl
X3BpY2tlcihGaWxlU2VsZWN0b3JEYXRhKiBmc19kYXRhKQorc3RhdGljIHZvaWQgY2xvc2VfZmls
ZV9waWNrZXIoRmlsZV9TZWxlY3Rvcl9EYXRhICpmc19kYXRhKQogewotICAgIGV2YXNfb2JqZWN0
X2V2ZW50X2NhbGxiYWNrX2RlbChmc19kYXRhLT5wYXJlbnQsIEVWQVNfQ0FMTEJBQ0tfREVMLCBv
bl9maWxlcGlja2VyX3BhcmVudF9kZWxldGlvbik7Ci0gICAgZXZhc19vYmplY3RfZGVsKGZzX2Rh
dGEtPndpbmRvdyk7CisgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfZGVsKGZzX2RhdGEt
PnBhcmVudC0+ZWxtX3dpbmRvdywgRVZBU19DQUxMQkFDS19ERUwsIG9uX2ZpbGVwaWNrZXJfcGFy
ZW50X2RlbGV0aW9uKTsKKyAgICBldmFzX29iamVjdF9kZWwoZnNfZGF0YS0+ZWxtX3dpbmRvdyk7
CiAgICAgZXdrX29iamVjdF91bnJlZihmc19kYXRhLT5yZXF1ZXN0KTsKICAgICBmcmVlKGZzX2Rh
dGEpOwogfQogCiBzdGF0aWMgdm9pZAotb25fZmlsZXBpY2tlcl9wYXJlbnRfZGVsZXRpb24odm9p
ZCAqdXNlcl9kYXRhLCBFdmFzICpldmFzLCBFdmFzX09iamVjdCAqd2luZG93LCB2b2lkICpldmVu
dCkKK29uX2ZpbGVwaWNrZXJfcGFyZW50X2RlbGV0aW9uKHZvaWQgKnVzZXJfZGF0YSwgRXZhcyAq
ZXZhcywgRXZhc19PYmplY3QgKmVsbV93aW5kb3csIHZvaWQgKmV2ZW50KQogewotICAgIGNsb3Nl
X2ZpbGVfcGlja2VyKChGaWxlU2VsZWN0b3JEYXRhICopdXNlcl9kYXRhKTsKKyAgICBjbG9zZV9m
aWxlX3BpY2tlcigoRmlsZV9TZWxlY3Rvcl9EYXRhICopdXNlcl9kYXRhKTsKIH0KIAogc3RhdGlj
IHZvaWQKIG9uX2ZpbGVwaWNrZXJfZGVsZXRpb24odm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVj
dCAqd2luZG93LCB2b2lkICpldmVudF9pbmZvKQogewotICAgIGNsb3NlX2ZpbGVfcGlja2VyKChG
aWxlU2VsZWN0b3JEYXRhICopdXNlcl9kYXRhKTsKKyAgICBjbG9zZV9maWxlX3BpY2tlcigoRmls
ZV9TZWxlY3Rvcl9EYXRhICopdXNlcl9kYXRhKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2ZpbGVz
ZWxlY3Rvcl9kb25lKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmZpbGVfc2VsZWN0b3Is
IHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgRmlsZVNlbGVjdG9yRGF0YSAqZnNfZGF0YSA9IChG
aWxlU2VsZWN0b3JEYXRhICopdXNlcl9kYXRhOworICAgIEZpbGVfU2VsZWN0b3JfRGF0YSAqZnNf
ZGF0YSA9IChGaWxlX1NlbGVjdG9yX0RhdGEgKil1c2VyX2RhdGE7CiAKICAgICBjb25zdCBjaGFy
ICpzZWxlY3RlZCA9IChjb25zdCBjaGFyICopZXZlbnRfaW5mbzsKICAgICBpZiAoc2VsZWN0ZWQg
JiYgKnNlbGVjdGVkKQpAQCAtMzcwLDQ3ICszNzcsNDcgQEAgb25fZmlsZXNlbGVjdG9yX2RvbmUo
dm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZmlsZV9zZWxlY3Rvciwgdm9pZCAqZXZlbnRf
aW4KIH0KIAogc3RhdGljIHZvaWQKLW9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0KHZvaWQgKnVzZXJf
ZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9maWxlX2No
b29zZXJfcmVxdWVzdCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9p
ZCAqZXZlbnRfaW5mbykKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nl
cl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93
c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKICAgICBFd2tfRmlsZV9DaG9vc2VyX1JlcXVlc3QgKnJl
cXVlc3QgPSAoRXdrX0ZpbGVfQ2hvb3Nlcl9SZXF1ZXN0ICopZXZlbnRfaW5mbzsKIAogICAgIC8v
IFNob3cgYmFzaWMgZmlsZSBwaWNrZXIgd2hpY2ggZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQg
bXVsdGlwbGUgZmlsZXMKICAgICAvLyBvciBNSU1FIHR5cGUgZmlsdGVyaW5nLgotICAgIEV2YXNf
T2JqZWN0ICp3aW5kb3cgPSBlbG1fd2luX2FkZChhcHBfZGF0YS0+d2luZG93LCAiZmlsZS1waWNr
ZXItd2luZG93IiwgRUxNX1dJTl9ESUFMT0dfQkFTSUMpOwotICAgIGVsbV93aW5fdGl0bGVfc2V0
KHdpbmRvdywgIkZpbGUgcGlja2VyIik7Ci0gICAgZWxtX3dpbl9tb2RhbF9zZXQod2luZG93LCBF
SU5BX1RSVUUpOworICAgIEV2YXNfT2JqZWN0ICplbG1fd2luZG93ID0gZWxtX3dpbl9hZGQod2lu
ZG93LT5lbG1fd2luZG93LCAiZmlsZS1waWNrZXItd2luZG93IiwgRUxNX1dJTl9ESUFMT0dfQkFT
SUMpOworICAgIGVsbV93aW5fdGl0bGVfc2V0KGVsbV93aW5kb3csICJGaWxlIHBpY2tlciIpOwor
ICAgIGVsbV93aW5fbW9kYWxfc2V0KGVsbV93aW5kb3csIEVJTkFfVFJVRSk7CiAKLSAgICBGaWxl
U2VsZWN0b3JEYXRhKiBmc19kYXRhID0gKEZpbGVTZWxlY3RvckRhdGEqKW1hbGxvYyhzaXplb2Yo
RmlsZVNlbGVjdG9yRGF0YSkpOwotICAgIGZzX2RhdGEtPnBhcmVudCA9IGFwcF9kYXRhLT53aW5k
b3c7Ci0gICAgZnNfZGF0YS0+d2luZG93ID0gd2luZG93OworICAgIEZpbGVfU2VsZWN0b3JfRGF0
YSAqZnNfZGF0YSA9IChGaWxlX1NlbGVjdG9yX0RhdGEgKiltYWxsb2Moc2l6ZW9mKEZpbGVfU2Vs
ZWN0b3JfRGF0YSkpOworICAgIGZzX2RhdGEtPnBhcmVudCA9IHdpbmRvdzsKKyAgICBmc19kYXRh
LT5lbG1fd2luZG93ID0gZWxtX3dpbmRvdzsKICAgICBmc19kYXRhLT5yZXF1ZXN0ID0gZXdrX29i
amVjdF9yZWYocmVxdWVzdCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdp
bmRvdywgImRlbGV0ZSxyZXF1ZXN0Iiwgb25fZmlsZXBpY2tlcl9kZWxldGlvbiwgZnNfZGF0YSk7
Ci0gICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53aW5kb3csIEVW
QVNfQ0FMTEJBQ0tfREVMLCBvbl9maWxlcGlja2VyX3BhcmVudF9kZWxldGlvbiwgZnNfZGF0YSk7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGVsbV93aW5kb3csICJkZWxldGUs
cmVxdWVzdCIsIG9uX2ZpbGVwaWNrZXJfZGVsZXRpb24sIGZzX2RhdGEpOworICAgIGV2YXNfb2Jq
ZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmVsbV93aW5kb3csIEVWQVNfQ0FMTEJBQ0tf
REVMLCBvbl9maWxlcGlja2VyX3BhcmVudF9kZWxldGlvbiwgZnNfZGF0YSk7CiAKLSAgICBFdmFz
X09iamVjdCAqZmlsZV9zZWxlY3RvciA9IGVsbV9maWxlc2VsZWN0b3JfYWRkKHdpbmRvdyk7Cisg
ICAgRXZhc19PYmplY3QgKmZpbGVfc2VsZWN0b3IgPSBlbG1fZmlsZXNlbGVjdG9yX2FkZChlbG1f
d2luZG93KTsKICAgICBjb25zdCBjaGFyICpob21lX3BhdGggPSBnZXRlbnYoIkhPTUUiKTsKICAg
ICBlbG1fZmlsZXNlbGVjdG9yX3BhdGhfc2V0KGZpbGVfc2VsZWN0b3IsIGhvbWVfcGF0aCA/IGhv
bWVfcGF0aCA6ICIvaG9tZSIpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0
KGZpbGVfc2VsZWN0b3IsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAg
IGVsbV93aW5fcmVzaXplX29iamVjdF9hZGQod2luZG93LCBmaWxlX3NlbGVjdG9yKTsKKyAgICBl
bG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKGVsbV93aW5kb3csIGZpbGVfc2VsZWN0b3IpOwogICAg
IGV2YXNfb2JqZWN0X3Nob3coZmlsZV9zZWxlY3Rvcik7CiAKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19hZGQoZmlsZV9zZWxlY3RvciwgImRvbmUiLCBvbl9maWxlc2VsZWN0b3JfZG9u
ZSwgZnNfZGF0YSk7CiAKLSAgICBldmFzX29iamVjdF9yZXNpemUod2luZG93LCA0MDAsIDQwMCk7
Ci0gICAgZWxtX3dpbl9jZW50ZXIod2luZG93LCBFSU5BX1RSVUUsIEVJTkFfVFJVRSk7Ci0gICAg
ZXZhc19vYmplY3Rfc2hvdyh3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShlbG1fd2lu
ZG93LCA0MDAsIDQwMCk7CisgICAgZWxtX3dpbl9jZW50ZXIoZWxtX3dpbmRvdywgRUlOQV9UUlVF
LCBFSU5BX1RSVUUpOworICAgIGV2YXNfb2JqZWN0X3Nob3coZWxtX3dpbmRvdyk7CiB9CiAKIHN0
YXRpYyB2b2lkCi1vbl9kb3dubG9hZF9maW5pc2hlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2Jq
ZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQorb25fZG93bmxvYWRfZmluaXNoZWQodm9p
ZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7
CiAgICAgRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWQgPSAoRXdrX0Rvd25sb2FkX0pvYiAqKWV2
ZW50X2luZm87CiAgICAgaW5mbygiRG93bmxvYWQgZmluaXNoZWQ6ICVzXG4iLCAgZXdrX2Rvd25s
b2FkX2pvYl9kZXN0aW5hdGlvbl9nZXQoZG93bmxvYWQpKTsKIH0KIAogc3RhdGljIHZvaWQKLW9u
X2Rvd25sb2FkX2ZhaWxlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2
b2lkICpldmVudF9pbmZvKQorb25fZG93bmxvYWRfZmFpbGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZh
c19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIGluZm8oIkRvd25s
b2FkIGZhaWxlZCFcbiIpOwogfQpAQCAtNDE4LDEyICs0MjUsMTIgQEAgb25fZG93bmxvYWRfZmFp
bGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2lu
Zm8pCiBzdGF0aWMgdm9pZAogb25fZmF2aWNvbl9yZWNlaXZlZChjb25zdCBjaGFyICpwYWdlX3Vy
bCwgRXZhc19PYmplY3QgKmljb24sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9X
aW5kb3cgKmFwcF9kYXRhID0gKEJyb3dzZXJfV2luZG93ICopZXZlbnRfaW5mbzsKLSAgICBpZiAo
c3RyY21wKHBhZ2VfdXJsLCBld2tfdmlld191cmxfZ2V0KGFwcF9kYXRhLT53ZWJ2aWV3KSkpCisg
ICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKWV2ZW50X2luZm87
CisgICAgaWYgKHN0cmNtcChwYWdlX3VybCwgZXdrX3ZpZXdfdXJsX2dldCh3aW5kb3ctPmV3a192
aWV3KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8qIFJlbW92ZSBwcmV2aW91cyBpY29uIGZy
b20gVVJMIGJhciAqLwotICAgIEV2YXNfT2JqZWN0ICpvbGRfaWNvbiA9IGVsbV9vYmplY3RfcGFy
dF9jb250ZW50X3Vuc2V0KGFwcF9kYXRhLT51cmxfYmFyLCAiaWNvbiIpOworICAgIEV2YXNfT2Jq
ZWN0ICpvbGRfaWNvbiA9IGVsbV9vYmplY3RfcGFydF9jb250ZW50X3Vuc2V0KHdpbmRvdy0+dXJs
X2JhciwgImljb24iKTsKICAgICBpZiAob2xkX2ljb24pIHsKICAgICAgICAgZXZhc19vYmplY3Rf
dW5yZWYob2xkX2ljb24pOwogICAgICAgICBldmFzX29iamVjdF9kZWwob2xkX2ljb24pOwpAQCAt
NDM2LDIyICs0NDMsMjIgQEAgb25fZmF2aWNvbl9yZWNlaXZlZChjb25zdCBjaGFyICpwYWdlX3Vy
bCwgRXZhc19PYmplY3QgKmljb24sIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgICAgIGV2YXNfb2Jq
ZWN0X3NpemVfaGludF9taW5fc2V0KGljb24sIDQ4LCAyNCk7CiAgICAgICAgIGV2YXNfb2JqZWN0
X2ltYWdlX2ZpbGxlZF9zZXQoaWNvbiwgRUlOQV9GQUxTRSk7CiAgICAgICAgIGV2YXNfb2JqZWN0
X2ltYWdlX2ZpbGxfc2V0KGljb24sIDI0LCAwLCAyNCwgMjQpOwotICAgICAgICBlbG1fb2JqZWN0
X3BhcnRfY29udGVudF9zZXQoYXBwX2RhdGEtPnVybF9iYXIsICJpY29uIiwgaWNvbik7CisgICAg
ICAgIGVsbV9vYmplY3RfcGFydF9jb250ZW50X3NldCh3aW5kb3ctPnVybF9iYXIsICJpY29uIiwg
aWNvbik7CiAgICAgICAgIGV2YXNfb2JqZWN0X3JlZihpY29uKTsKICAgICB9CiB9CiAKIHN0YXRp
YyB2b2lkCi1vbl92aWV3X2ljb25fY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0
ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQorb25fdmlld19pY29uX2NoYW5nZWQodm9pZCAq
dXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0g
ICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRh
OworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2Rh
dGE7CiAgICAgLyogUmV0cmlldmUgdGhlIHZpZXcncyBmYXZpY29uICovCi0gICAgRXdrX0NvbnRl
eHQgKmNvbnRleHQgPSBld2tfdmlld19jb250ZXh0X2dldCh3ZWJ2aWV3KTsKKyAgICBFd2tfQ29u
dGV4dCAqY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KGV3a192aWV3KTsKICAgICBFd2tf
RmF2aWNvbl9EYXRhYmFzZSAqaWNvbl9kYXRhYmFzZSA9IGV3a19jb250ZXh0X2Zhdmljb25fZGF0
YWJhc2VfZ2V0KGNvbnRleHQpOwogCi0gICAgY29uc3QgY2hhciAqcGFnZV91cmwgPSBld2tfdmll
d191cmxfZ2V0KHdlYnZpZXcpOwotICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dl
dCh3ZWJ2aWV3KTsKLSAgICBld2tfZmF2aWNvbl9kYXRhYmFzZV9hc3luY19pY29uX2dldChpY29u
X2RhdGFiYXNlLCBwYWdlX3VybCwgZXZhcywgb25fZmF2aWNvbl9yZWNlaXZlZCwgYXBwX2RhdGEp
OworICAgIGNvbnN0IGNoYXIgKnBhZ2VfdXJsID0gZXdrX3ZpZXdfdXJsX2dldChld2tfdmlldyk7
CisgICAgRXZhcyAqZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGV3a192aWV3KTsKKyAgICBl
d2tfZmF2aWNvbl9kYXRhYmFzZV9hc3luY19pY29uX2dldChpY29uX2RhdGFiYXNlLCBwYWdlX3Vy
bCwgZXZhcywgb25fZmF2aWNvbl9yZWNlaXZlZCwgd2luZG93KTsKIH0KIAogc3RhdGljIGludApA
QCAtNDcyLDYzICs0NzksNjMgQEAgcXVpdChFaW5hX0Jvb2wgc3VjY2VzcywgY29uc3QgY2hhciAq
bXNnKQogc3RhdGljIHZvaWQKIG9uX3VybF9iYXJfYWN0aXZhdGVkKHZvaWQgKnVzZXJfZGF0YSwg
RXZhc19PYmplY3QgKnVybF9iYXIsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9X
aW5kb3cgKmFwcF9kYXRhID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dz
ZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICBj
b25zdCBjaGFyICptYXJrdXBfdXJsID0gZWxtX2VudHJ5X2VudHJ5X2dldCh1cmxfYmFyKTsKICAg
ICBjaGFyICp1c2VyX3VybCA9IGVsbV9lbnRyeV9tYXJrdXBfdG9fdXRmOChtYXJrdXBfdXJsKTsK
ICAgICBjaGFyICp1cmwgPSB1cmxfZnJvbV91c2VyX2lucHV0KHVzZXJfdXJsKTsKLSAgICBld2tf
dmlld191cmxfc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCB1cmwpOworICAgIGV3a192aWV3X3VybF9z
ZXQod2luZG93LT5ld2tfdmlldywgdXJsKTsKIAogICAgIGZyZWUodXNlcl91cmwpOwogICAgIGZy
ZWUodXJsKTsKIAogICAgIC8qIEdpdmUgZm9jdXMgYmFjayB0byB0aGUgdmlldyAqLwotICAgIHZp
ZXdfZm9jdXNfc2V0KGFwcF9kYXRhLCBFSU5BX1RSVUUpOworICAgIHZpZXdfZm9jdXNfc2V0KHdp
bmRvdywgRUlOQV9UUlVFKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX3VybF9iYXJfY2xpY2tlZCh2
b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp1cmxfYmFyLCB2b2lkICpldmVudF9pbmZvKQog
ewotICAgIEJyb3dzZXJfV2luZG93ICphcHBfZGF0YSA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJf
ZGF0YTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNl
cl9kYXRhOwogCiAgICAgLyogR3JhYiBmb2N1cyBmcm9tIHRoZSB2aWV3ICovCi0gICAgZXZhc19v
YmplY3RfZm9jdXNfc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCBFSU5BX0ZBTFNFKTsKKyAgICBldmFz
X29iamVjdF9mb2N1c19zZXQod2luZG93LT5ld2tfdmlldywgRUlOQV9GQUxTRSk7CiAgICAgZWxt
X29iamVjdF9mb2N1c19zZXQodXJsX2JhciwgRUlOQV9UUlVFKTsKIH0KIAogc3RhdGljIHZvaWQK
IG9uX2JhY2tfYnV0dG9uX2NsaWNrZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqYmFj
a19idXR0b24sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9k
YXRhID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3
aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKLSAgICBld2tfdmlld19iYWNr
KGFwcF9kYXRhLT53ZWJ2aWV3KTsKKyAgICBld2tfdmlld19iYWNrKHdpbmRvdy0+ZXdrX3ZpZXcp
OwogICAgIC8qIFVwZGF0ZSBiYWNrIGJ1dHRvbiBzdGF0ZSAqLwotICAgIGVsbV9vYmplY3RfZGlz
YWJsZWRfc2V0KGJhY2tfYnV0dG9uLCAhZXdrX3ZpZXdfYmFja19wb3NzaWJsZShhcHBfZGF0YS0+
d2VidmlldykpOworICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGJhY2tfYnV0dG9uLCAhZXdr
X3ZpZXdfYmFja19wb3NzaWJsZSh3aW5kb3ctPmV3a192aWV3KSk7CiB9CiAKIHN0YXRpYyB2b2lk
CiBvbl9mb3J3YXJkX2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3Qg
KmZvcndhcmRfYnV0dG9uLCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dzZXJfV2luZG93
ICphcHBfZGF0YSA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBCcm93c2VyX1dp
bmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCi0gICAgZXdrX3Zp
ZXdfZm9yd2FyZChhcHBfZGF0YS0+d2Vidmlldyk7CisgICAgZXdrX3ZpZXdfZm9yd2FyZCh3aW5k
b3ctPmV3a192aWV3KTsKICAgICAvKiBVcGRhdGUgZm9yd2FyZCBidXR0b24gc3RhdGUgKi8KLSAg
ICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldChmb3J3YXJkX2J1dHRvbiwgIWV3a192aWV3X2Zvcndh
cmRfcG9zc2libGUoYXBwX2RhdGEtPndlYnZpZXcpKTsKKyAgICBlbG1fb2JqZWN0X2Rpc2FibGVk
X3NldChmb3J3YXJkX2J1dHRvbiwgIWV3a192aWV3X2ZvcndhcmRfcG9zc2libGUod2luZG93LT5l
d2tfdmlldykpOwogfQogCiBzdGF0aWMgdm9pZAogb25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCh2
b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpyZWZyZXNoX2J1dHRvbiwgdm9pZCAqZXZlbnRf
aW5mbykKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5kb3cg
Kil1c2VyX2RhdGE7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRv
dyAqKXVzZXJfZGF0YTsKIAogICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChy
ZWZyZXNoX2J1dHRvbik7CiAgICAgRWluYV9Cb29sIGN0cmxQcmVzc2VkID0gZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KGV2YXNfa2V5X21vZGlmaWVyX2dldChldmFzKSwgIkNvbnRyb2wiKTsKICAg
ICBpZiAoY3RybFByZXNzZWQpIHsKICAgICAgICAgaW5mbygiUmVsb2FkaW5nIGFuZCBieXBhc3Np
bmcgY2FjaGUuLi5cbiIpOwotICAgICAgICBld2tfdmlld19yZWxvYWRfYnlwYXNzX2NhY2hlKGFw
cF9kYXRhLT53ZWJ2aWV3KTsKKyAgICAgICAgZXdrX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZSh3
aW5kb3ctPmV3a192aWV3KTsKICAgICB9IGVsc2UgewogICAgICAgICBpbmZvKCJSZWxvYWRpbmcu
Li5cbiIpOwotICAgICAgICBld2tfdmlld19yZWxvYWQoYXBwX2RhdGEtPndlYnZpZXcpOworICAg
ICAgICBld2tfdmlld19yZWxvYWQod2luZG93LT5ld2tfdmlldyk7CiAgICAgfQogfQogCkBAIC01
NTAsOSArNTU3LDkgQEAgb25fb2tfY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0
ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiBzdGF0aWMgdm9pZAogb25famF2YXNjcmlwdF9hbGVy
dChFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7
Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IGJyb3dzZXJfdmlld19maW5kKHNtYXJ0RGF0
YS0+c2VsZik7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhf
ZXdrX3ZpZXcoc21hcnREYXRhLT5zZWxmKTsKIAotICAgIEV2YXNfT2JqZWN0ICphbGVydF9wb3B1
cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT53aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICphbGVy
dF9wb3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBldmFzX29i
amVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChhbGVydF9wb3B1cCwgRVZBU19ISU5UX0VYUEFORCwg
RVZBU19ISU5UX0VYUEFORCk7CiAgICAgZWxtX29iamVjdF90ZXh0X3NldChhbGVydF9wb3B1cCwg
bWVzc2FnZSk7CiAgICAgZWxtX29iamVjdF9wYXJ0X3RleHRfc2V0KGFsZXJ0X3BvcHVwLCAidGl0
bGUsdGV4dCIsICJBbGVydCIpOwpAQCAtNTc0LDExICs1ODEsMTEgQEAgb25famF2YXNjcmlwdF9h
bGVydChFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1lc3NhZ2Up
CiBzdGF0aWMgRWluYV9Cb29sCiBvbl9qYXZhc2NyaXB0X2NvbmZpcm0oRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc21hcnREYXRhLCBjb25zdCBjaGFyICptZXNzYWdlKQogewotICAgIEJyb3dzZXJfV2lu
ZG93ICp3aW5kb3cgPSBicm93c2VyX3ZpZXdfZmluZChzbWFydERhdGEtPnNlbGYpOworICAgIEJy
b3dzZXJfV2luZG93ICp3aW5kb3cgPSB3aW5kb3dfZmluZF93aXRoX2V3a192aWV3KHNtYXJ0RGF0
YS0+c2VsZik7CiAKICAgICBFaW5hX0Jvb2wgb2sgPSBFSU5BX0ZBTFNFOwogCi0gICAgRXZhc19P
YmplY3QgKmNvbmZpcm1fcG9wdXAgPSBlbG1fcG9wdXBfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAg
ICBFdmFzX09iamVjdCAqY29uZmlybV9wb3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT5lbG1f
d2luZG93KTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChjb25maXJtX3Bv
cHVwLCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBlbG1fb2JqZWN0
X3RleHRfc2V0KGNvbmZpcm1fcG9wdXAsIG1lc3NhZ2UpOwogICAgIGVsbV9vYmplY3RfcGFydF90
ZXh0X3NldChjb25maXJtX3BvcHVwLCAidGl0bGUsdGV4dCIsICJDb25maXJtYXRpb24iKTsKQEAg
LTYwNiwyOSArNjEzLDI5IEBAIG9uX2phdmFzY3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9E
YXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiBzdGF0aWMgY29uc3QgY2hhciAq
CiBvbl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIGNv
bnN0IGNoYXIgKm1lc3NhZ2UsIGNvbnN0IGNoYXIgKmRlZmF1bHRfdmFsdWUpCiB7Ci0gICAgQnJv
d3Nlcl9XaW5kb3cgKndpbmRvdyA9IGJyb3dzZXJfdmlld19maW5kKHNtYXJ0RGF0YS0+c2VsZik7
CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXco
c21hcnREYXRhLT5zZWxmKTsKIAogICAgIEVpbmFfQm9vbCBvayA9IEVJTkFfRkFMU0U7CiAKLSAg
ICBFdmFzX09iamVjdCAqcHJvbXB0X3BvcHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPndpbmRv
dyk7CisgICAgRXZhc19PYmplY3QgKnByb21wdF9wb3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93
LT5lbG1fd2luZG93KTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChwcm9t
cHRfcG9wdXAsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwogICAgIGVsbV9v
YmplY3RfcGFydF90ZXh0X3NldChwcm9tcHRfcG9wdXAsICJ0aXRsZSx0ZXh0IiwgIlByb21wdCIp
OwogCiAgICAgLyogUG9wdXAgQ29udGVudCAqLwotICAgIEV2YXNfT2JqZWN0ICpib3ggPSBlbG1f
Ym94X2FkZCh3aW5kb3ctPndpbmRvdyk7CisgICAgRXZhc19PYmplY3QgKmJveCA9IGVsbV9ib3hf
YWRkKHdpbmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAgZWxtX2JveF9wYWRkaW5nX3NldChib3gsIDAs
IDQpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGJveCwgRVZBU19ISU5U
X0VYUEFORCwgRVZBU19ISU5UX0VYUEFORCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2Fs
aWduX3NldChib3gsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CiAgICAgZXZhc19v
YmplY3Rfc2hvdyhib3gpOwogCi0gICAgRXZhc19PYmplY3QgKnByb21wdCA9IGVsbV9sYWJlbF9h
ZGQod2luZG93LT53aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICpwcm9tcHQgPSBlbG1fbGFiZWxf
YWRkKHdpbmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAgZWxtX29iamVjdF90ZXh0X3NldChwcm9tcHQs
IG1lc3NhZ2UpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KHByb21wdCwg
RVZBU19ISU5UX0VYUEFORCwgMC4wKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25f
c2V0KHByb21wdCwgRVZBU19ISU5UX0ZJTEwsIDAuNSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZChi
b3gsIHByb21wdCk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhwcm9tcHQpOwogCi0gICAgRXZhc19P
YmplY3QgKmVudHJ5ID0gZWxtX2VudHJ5X2FkZCh3aW5kb3ctPndpbmRvdyk7CisgICAgRXZhc19P
YmplY3QgKmVudHJ5ID0gZWxtX2VudHJ5X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGVs
bV9lbnRyeV9zY3JvbGxhYmxlX3NldChlbnRyeSwgRUlOQV9UUlVFKTsKICAgICBlbG1fZW50cnlf
c2luZ2xlX2xpbmVfc2V0KGVudHJ5LCBFSU5BX1RSVUUpOwogICAgIGVsbV9lbnRyeV90ZXh0X3N0
eWxlX3VzZXJfcHVzaChlbnRyeSwgIkRFRkFVTFQ9J2ZvbnRfc2l6ZT0xOCciKTsKQEAgLTY2NSwy
NSArNjcyLDI1IEBAIG9uX2phdmFzY3JpcHRfcHJvbXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNt
YXJ0RGF0YSwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QKIAogc3RhdGljIEVpbmFfQm9vbCBv
bl93aW5kb3dfZ2VvbWV0cnlfZ2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX0Nvb3Jk
ICp4LCBFdmFzX0Nvb3JkICp5LCBFdmFzX0Nvb3JkICp3aWR0aCwgRXZhc19Db29yZCAqaGVpZ2h0
KQogewotICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSBicm93c2VyX3ZpZXdfZmluZChzZC0+
c2VsZik7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhfZXdr
X3ZpZXcoc2QtPnNlbGYpOwogCi0gICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHdpbmRvdy0+
d2luZG93LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9n
ZXQod2luZG93LT5lbG1fd2luZG93LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIHJldHVy
biBFSU5BX1RSVUU7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgb25fd2luZG93X2dlb21ldHJ5X3Nl
dChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2
YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KQogewotICAgIEJyb3dzZXJfV2luZG93
ICp3aW5kb3cgPSBicm93c2VyX3ZpZXdfZmluZChzZC0+c2VsZik7CisgICAgQnJvd3Nlcl9XaW5k
b3cgKndpbmRvdyA9IHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcoc2QtPnNlbGYpOwogCi0gICAg
ZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPndpbmRvdywgeCwgeSk7Ci0gICAgZXZhc19vYmplY3Rf
cmVzaXplKHdpbmRvdy0+d2luZG93LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9t
b3ZlKHdpbmRvdy0+ZWxtX3dpbmRvdywgeCwgeSk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKHdp
bmRvdy0+ZWxtX3dpbmRvdywgd2lkdGgsIGhlaWdodCk7CiAKICAgICByZXR1cm4gRUlOQV9UUlVF
OwogfQogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgRXZhc19PYmplY3QgKndlYnZpZXc7CisgICAg
RXZhc19PYmplY3QgKmV3a192aWV3OwogICAgIEV2YXNfT2JqZWN0ICpwZXJtaXNzaW9uX3BvcHVw
OwogfSBQZXJtaXNzaW9uRGF0YTsKIApAQCAtNzAxLDIwICs3MDgsMjAgQEAgb25fZnVsbHNjcmVl
bl9kZW55KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5m
bykKIHsKICAgICBQZXJtaXNzaW9uRGF0YSAqcGVybWlzc2lvbl9kYXRhID0gKFBlcm1pc3Npb25E
YXRhICopdXNlcl9kYXRhOwogCi0gICAgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KHBlcm1pc3Np
b25fZGF0YS0+d2Vidmlldyk7CisgICAgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KHBlcm1pc3Np
b25fZGF0YS0+ZXdrX3ZpZXcpOwogICAgIGV2YXNfb2JqZWN0X2RlbChwZXJtaXNzaW9uX2RhdGEt
PnBlcm1pc3Npb25fcG9wdXApOwogICAgIGZyZWUocGVybWlzc2lvbl9kYXRhKTsKIH0KIAogc3Rh
dGljIEVpbmFfQm9vbCBvbl9mdWxsc2NyZWVuX2VudGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBFd2tfU2VjdXJpdHlfT3JpZ2luICpvcmlnaW4pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndp
bmRvdyA9IGJyb3dzZXJfdmlld19maW5kKHNkLT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAq
d2luZG93ID0gd2luZG93X2ZpbmRfd2l0aF9ld2tfdmlldyhzZC0+c2VsZik7CiAKICAgICAvKiBH
byBmdWxsc2NyZWVuICovCi0gICAgZWxtX3dpbl9mdWxsc2NyZWVuX3NldCh3aW5kb3ctPndpbmRv
dywgRUlOQV9UUlVFKTsKKyAgICBlbG1fd2luX2Z1bGxzY3JlZW5fc2V0KHdpbmRvdy0+ZWxtX3dp
bmRvdywgRUlOQV9UUlVFKTsKIAogICAgIC8qIFNob3cgdXNlciBwb3B1cCAqLwotICAgIEV2YXNf
T2JqZWN0ICpwZXJtaXNzaW9uX3BvcHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPndpbmRvdyk7
CisgICAgRXZhc19PYmplY3QgKnBlcm1pc3Npb25fcG9wdXAgPSBlbG1fcG9wdXBfYWRkKHdpbmRv
dy0+ZWxtX3dpbmRvdyk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQocGVy
bWlzc2lvbl9wb3B1cCwgRVZBU19ISU5UX0VYUEFORCwgRVZBU19ISU5UX0VYUEFORCk7CiAKICAg
ICBFaW5hX1N0cmJ1ZiAqbWVzc2FnZSA9IGVpbmFfc3RyYnVmX25ldygpOwpAQCAtNzI1LDcgKzcz
Miw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgb25fZnVsbHNjcmVlbl9lbnRlcihFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgRXdrX1NlY3VyaXR5X09yaWdpCiAKICAgICAvKiBQb3B1cCBidXR0b25zICov
CiAgICAgUGVybWlzc2lvbkRhdGEgKnBlcm1pc3Npb25fZGF0YSA9IChQZXJtaXNzaW9uRGF0YSAq
KW1hbGxvYyhzaXplb2YoUGVybWlzc2lvbkRhdGEpKTsKLSAgICBwZXJtaXNzaW9uX2RhdGEtPndl
YnZpZXcgPSB3aW5kb3ctPndlYnZpZXc7CisgICAgcGVybWlzc2lvbl9kYXRhLT5ld2tfdmlldyA9
IHdpbmRvdy0+ZXdrX3ZpZXc7CiAgICAgcGVybWlzc2lvbl9kYXRhLT5wZXJtaXNzaW9uX3BvcHVw
ID0gcGVybWlzc2lvbl9wb3B1cDsKICAgICBFdmFzX09iamVjdCAqYWNjZXB0X2J1dHRvbiA9IGVs
bV9idXR0b25fYWRkKHBlcm1pc3Npb25fcG9wdXApOwogICAgIGVsbV9vYmplY3RfdGV4dF9zZXQo
YWNjZXB0X2J1dHRvbiwgIkFjY2VwdCIpOwpAQCAtNzQ0LDIyICs3NTEsMTUgQEAgc3RhdGljIEVp
bmFfQm9vbCBvbl9mdWxsc2NyZWVuX2VudGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tf
U2VjdXJpdHlfT3JpZ2kKIAogc3RhdGljIEVpbmFfQm9vbCBvbl9mdWxsc2NyZWVuX2V4aXQoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IGJy
b3dzZXJfdmlld19maW5kKHNkLT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0g
d2luZG93X2ZpbmRfd2l0aF9ld2tfdmlldyhzZC0+c2VsZik7CiAKLSAgICBlbG1fd2luX2Z1bGxz
Y3JlZW5fc2V0KHdpbmRvdy0+d2luZG93LCBFSU5BX0ZBTFNFKTsKKyAgICBlbG1fd2luX2Z1bGxz
Y3JlZW5fc2V0KHdpbmRvdy0+ZWxtX3dpbmRvdywgRUlOQV9GQUxTRSk7CiAKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgRXZhc19PYmplY3QgKnBvcHVw
OwotICAgIEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3Q7Ci0gICAgRXZhc19PYmplY3QgKnVzZXJu
YW1lX2VudHJ5OwotICAgIEV2YXNfT2JqZWN0ICpwYXNzd29yZF9lbnRyeTsKLX0gQXV0aERhdGE7
Ci0KIHN0YXRpYyB2b2lkCi1hdXRoX3BvcHVwX2Nsb3NlKEF1dGhEYXRhICphdXRoX2RhdGEpCith
dXRoX3BvcHVwX2Nsb3NlKEF1dGhfRGF0YSAqYXV0aF9kYXRhKQogewogICAgIGV3a19vYmplY3Rf
dW5yZWYoYXV0aF9kYXRhLT5yZXF1ZXN0KTsKICAgICBldmFzX29iamVjdF9kZWwoYXV0aF9kYXRh
LT5wb3B1cCk7CkBAIC03NjksNyArNzY5LDcgQEAgYXV0aF9wb3B1cF9jbG9zZShBdXRoRGF0YSAq
YXV0aF9kYXRhKQogc3RhdGljIHZvaWQKIG9uX2F1dGhfY2FuY2VsKHZvaWQgKnVzZXJfZGF0YSwg
RXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBBdXRoRGF0YSAqYXV0
aF9kYXRhID0gKEF1dGhEYXRhICopdXNlcl9kYXRhOworICAgIEF1dGhfRGF0YSAqYXV0aF9kYXRh
ID0gKEF1dGhfRGF0YSAqKXVzZXJfZGF0YTsKIAogICAgIGV3a19hdXRoX3JlcXVlc3RfY2FuY2Vs
KGF1dGhfZGF0YS0+cmVxdWVzdCk7CiAKQEAgLTc3OSw3ICs3NzksNyBAQCBvbl9hdXRoX2NhbmNl
bCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiBz
dGF0aWMgdm9pZAogb25fYXV0aF9vayh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmos
IHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQXV0aERhdGEgKmF1dGhfZGF0YSA9IChBdXRoRGF0
YSAqKXVzZXJfZGF0YTsKKyAgICBBdXRoX0RhdGEgKmF1dGhfZGF0YSA9IChBdXRoX0RhdGEgKil1
c2VyX2RhdGE7CiAKICAgICBjb25zdCBjaGFyICp1c2VybmFtZSA9IGVsbV9lbnRyeV9lbnRyeV9n
ZXQoYXV0aF9kYXRhLT51c2VybmFtZV9lbnRyeSk7CiAgICAgY29uc3QgY2hhciAqcGFzc3dvcmQg
PSBlbG1fZW50cnlfZW50cnlfZ2V0KGF1dGhfZGF0YS0+cGFzc3dvcmRfZW50cnkpOwpAQCAtNzk0
LDEwICs3OTQsMTAgQEAgb25fYXV0aGVudGljYXRpb25fcmVxdWVzdCh2b2lkICp1c2VyX2RhdGEs
IEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgQnJvd3Nlcl9XaW5kb3cg
KndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKICAgICBFd2tfQXV0aF9SZXF1
ZXN0ICpyZXF1ZXN0ID0gZXdrX29iamVjdF9yZWYoKEV3a19BdXRoX1JlcXVlc3QgKilldmVudF9p
bmZvKTsKIAotICAgIEF1dGhEYXRhICphdXRoX2RhdGEgPSAoQXV0aERhdGEgKiltYWxsb2Moc2l6
ZW9mKEF1dGhEYXRhKSk7CisgICAgQXV0aF9EYXRhICphdXRoX2RhdGEgPSAoQXV0aF9EYXRhICop
bWFsbG9jKHNpemVvZihBdXRoX0RhdGEpKTsKICAgICBhdXRoX2RhdGEtPnJlcXVlc3QgPSByZXF1
ZXN0OwogCi0gICAgRXZhc19PYmplY3QgKmF1dGhfcG9wdXAgPSBlbG1fcG9wdXBfYWRkKHdpbmRv
dy0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqYXV0aF9wb3B1cCA9IGVsbV9wb3B1cF9hZGQo
d2luZG93LT5lbG1fd2luZG93KTsKICAgICBhdXRoX2RhdGEtPnBvcHVwID0gYXV0aF9wb3B1cDsK
ICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChhdXRoX3BvcHVwLCBFVkFTX0hJ
TlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBlbG1fb2JqZWN0X3BhcnRfdGV4dF9z
ZXQoYXV0aF9wb3B1cCwgInRpdGxlLHRleHQiLCAiQXV0aGVudGljYXRpb24gUmVxdWlyZWQiKTsK
QEAgLTgxNCw4ICs4MTQsOCBAQCBvbl9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0KHZvaWQgKnVzZXJf
ZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKICAgICBFdmFzX09iamVj
dCAqbGFiZWwgPSBlbG1fbGFiZWxfYWRkKGF1dGhfcG9wdXApOwogICAgIGVsbV9sYWJlbF9saW5l
X3dyYXBfc2V0KGxhYmVsLCBFTE1fV1JBUF9XT1JEKTsKICAgICBFaW5hX1N0cmJ1ZiAqYXV0aF90
ZXh0ID0gZWluYV9zdHJidWZfbmV3KCk7Ci0gICAgY29uc3QgY2hhciogaG9zdCA9IGV3a19hdXRo
X3JlcXVlc3RfaG9zdF9nZXQocmVxdWVzdCk7Ci0gICAgY29uc3QgY2hhciogcmVhbG0gPSBld2tf
YXV0aF9yZXF1ZXN0X3JlYWxtX2dldChyZXF1ZXN0KTsKKyAgICBjb25zdCBjaGFyICpob3N0ID0g
ZXdrX2F1dGhfcmVxdWVzdF9ob3N0X2dldChyZXF1ZXN0KTsKKyAgICBjb25zdCBjaGFyICpyZWFs
bSA9IGV3a19hdXRoX3JlcXVlc3RfcmVhbG1fZ2V0KHJlcXVlc3QpOwogICAgIGVpbmFfc3RyYnVm
X2FwcGVuZF9wcmludGYoYXV0aF90ZXh0LCAiQSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYXJlIGJl
aW5nIHJlcXVlc3RlZCBieSAlcy4gVGhlIHNpdGUgc2F5czogXCIlc1wiIiwgaG9zdCwgcmVhbG0g
PyByZWFsbSA6ICIiKTsKICAgICBlbG1fb2JqZWN0X3RleHRfc2V0KGxhYmVsLCBlaW5hX3N0cmJ1
Zl9zdHJpbmdfZ2V0KGF1dGhfdGV4dCkpOwogICAgIGVpbmFfc3RyYnVmX2ZyZWUoYXV0aF90ZXh0
KTsKQEAgLTg4OSwxMCArODg5LDEwIEBAIHN0YXRpYyB2b2lkCiBvbl90b29sdGlwX3RleHRfc2V0
KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHsK
ICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRh
OwotICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UgPSAoY29uc3QgY2hhciopZXZlbnRfaW5mbzsKKyAg
ICBjb25zdCBjaGFyICptZXNzYWdlID0gKGNvbnN0IGNoYXIqKWV2ZW50X2luZm87CiAKLSAgICBl
bG1fb2JqZWN0X3Rvb2x0aXBfdGV4dF9zZXQod2luZG93LT53ZWJ2aWV3LCBtZXNzYWdlKTsKLSAg
ICBlbG1fb2JqZWN0X3Rvb2x0aXBfc2hvdyh3aW5kb3ctPndlYnZpZXcpOworICAgIGVsbV9vYmpl
Y3RfdG9vbHRpcF90ZXh0X3NldCh3aW5kb3ctPmV3a192aWV3LCBtZXNzYWdlKTsKKyAgICBlbG1f
b2JqZWN0X3Rvb2x0aXBfc2hvdyh3aW5kb3ctPmV3a192aWV3KTsKIH0KIAogc3RhdGljIHZvaWQK
QEAgLTkwMCwyMSArOTAwLDIxIEBAIG9uX3Rvb2x0aXBfdGV4dF91bnNldCh2b2lkICp1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgQnJvd3Nlcl9X
aW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKIAotICAgIGVsbV9v
YmplY3RfdG9vbHRpcF91bnNldCh3aW5kb3ctPndlYnZpZXcpOworICAgIGVsbV9vYmplY3RfdG9v
bHRpcF91bnNldCh3aW5kb3ctPmV3a192aWV3KTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2hvbWVf
YnV0dG9uX2NsaWNrZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqaG9tZV9idXR0b24s
IHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0gKEJy
b3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAo
QnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKLSAgICBld2tfdmlld191cmxfc2V0KGFwcF9k
YXRhLT53ZWJ2aWV3LCBERUZBVUxUX1VSTCk7CisgICAgZXdrX3ZpZXdfdXJsX3NldCh3aW5kb3ct
PmV3a192aWV3LCBERUZBVUxUX1VSTCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl93aW5kb3dfZGVs
ZXRpb24odm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2luZG93LCB2b2lkICpldmVudF9p
bmZvKQorb25fd2luZG93X2RlbGV0aW9uKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmVs
bV93aW5kb3csIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgd2luZG93X2Nsb3NlKGJyb3dzZXJf
d2luZG93X2ZpbmQod2luZG93KSk7CisgICAgd2luZG93X2Nsb3NlKHdpbmRvd19maW5kX3dpdGhf
ZWxtX3dpbmRvdyhlbG1fd2luZG93KSk7CiB9CiAKIHN0YXRpYyBFdmFzX09iamVjdCAqCkBAIC05
MzUsMzMgKzkzNSwzMyBAQCBjcmVhdGVfdG9vbGJhcl9idXR0b24oRXZhc19PYmplY3QgKndpbmRv
dywgY29uc3QgY2hhciAqaWNvbl9uYW1lKQogCiBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRv
d19jcmVhdGUoY29uc3QgY2hhciAqdXJsKQogewotICAgIEJyb3dzZXJfV2luZG93ICphcHBfZGF0
YSA9IG1hbGxvYyhzaXplb2YoQnJvd3Nlcl9XaW5kb3cpKTsKLSAgICBpZiAoIWFwcF9kYXRhKSB7
CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IG1hbGxvYyhzaXplb2YoQnJvd3Nlcl9XaW5k
b3cpKTsKKyAgICBpZiAoIXdpbmRvdykgewogICAgICAgICBpbmZvKCJFUlJPUjogY291bGQgbm90
IGNyZWF0ZSBicm93c2VyIHdpbmRvdy5cbiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9
CiAKICAgICAvKiBDcmVhdGUgd2luZG93ICovCi0gICAgYXBwX2RhdGEtPndpbmRvdyA9IGVsbV93
aW5fYWRkKE5VTEwsICJtaW5pYnJvd3Nlci13aW5kb3ciLCBFTE1fV0lOX0JBU0lDKTsKLSAgICBl
bG1fd2luX3RpdGxlX3NldChhcHBfZGF0YS0+d2luZG93LCBBUFBfTkFNRSk7Ci0gICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53aW5kb3csICJkZWxldGUscmVxdWVz
dCIsIG9uX3dpbmRvd19kZWxldGlvbiwgJmFwcF9kYXRhKTsKKyAgICB3aW5kb3ctPmVsbV93aW5k
b3cgPSBlbG1fd2luX2FkZChOVUxMLCAibWluaWJyb3dzZXItd2luZG93IiwgRUxNX1dJTl9CQVNJ
Qyk7CisgICAgZWxtX3dpbl90aXRsZV9zZXQod2luZG93LT5lbG1fd2luZG93LCBBUFBfTkFNRSk7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdywg
ImRlbGV0ZSxyZXF1ZXN0Iiwgb25fd2luZG93X2RlbGV0aW9uLCAmd2luZG93KTsKIAogICAgIC8q
IENyZWF0ZSB3aW5kb3cgYmFja2dyb3VuZCAqLwotICAgIEV2YXNfT2JqZWN0ICpiZyA9IGVsbV9i
Z19hZGQoYXBwX2RhdGEtPndpbmRvdyk7CisgICAgRXZhc19PYmplY3QgKmJnID0gZWxtX2JnX2Fk
ZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGVsbV9iZ19jb2xvcl9zZXQoYmcsIDE5MywgMTky
LCAxOTEpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGJnLCBFVkFTX0hJ
TlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKLSAgICBlbG1fd2luX3Jlc2l6ZV9vYmplY3Rf
YWRkKGFwcF9kYXRhLT53aW5kb3csIGJnKTsKKyAgICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRk
KHdpbmRvdy0+ZWxtX3dpbmRvdywgYmcpOwogICAgIGV2YXNfb2JqZWN0X3Nob3coYmcpOwogCiAg
ICAgLyogQ3JlYXRlIHZlcnRpY2FsIGxheW91dCAqLwotICAgIEV2YXNfT2JqZWN0ICp2ZXJ0aWNh
bF9sYXlvdXQgPSBlbG1fYm94X2FkZChhcHBfZGF0YS0+d2luZG93KTsKKyAgICBFdmFzX09iamVj
dCAqdmVydGljYWxfbGF5b3V0ID0gZWxtX2JveF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAg
ICBlbG1fYm94X3BhZGRpbmdfc2V0KHZlcnRpY2FsX2xheW91dCwgMCwgMik7CiAgICAgZXZhc19v
YmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQodmVydGljYWxfbGF5b3V0LCBFVkFTX0hJTlRfRVhQ
QU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKLSAgICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKGFw
cF9kYXRhLT53aW5kb3csIHZlcnRpY2FsX2xheW91dCk7CisgICAgZWxtX3dpbl9yZXNpemVfb2Jq
ZWN0X2FkZCh3aW5kb3ctPmVsbV93aW5kb3csIHZlcnRpY2FsX2xheW91dCk7CiAgICAgZXZhc19v
YmplY3Rfc2hvdyh2ZXJ0aWNhbF9sYXlvdXQpOwogCiAgICAgLyogQ3JlYXRlIGhvcml6b250YWwg
bGF5b3V0IGZvciB0b3AgYmFyICovCi0gICAgRXZhc19PYmplY3QgKmhvcml6b250YWxfbGF5b3V0
ID0gZWxtX2JveF9hZGQoYXBwX2RhdGEtPndpbmRvdyk7CisgICAgRXZhc19PYmplY3QgKmhvcml6
b250YWxfbGF5b3V0ID0gZWxtX2JveF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBlbG1f
Ym94X2hvcml6b250YWxfc2V0KGhvcml6b250YWxfbGF5b3V0LCBFSU5BX1RSVUUpOwogICAgIGV2
YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGhvcml6b250YWxfbGF5b3V0LCBFVkFTX0hJ
TlRfRVhQQU5ELCAwLjApOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQoaG9y
aXpvbnRhbF9sYXlvdXQsIEVWQVNfSElOVF9GSUxMLCAwLjApOwpAQCAtOTY5LDU0ICs5NjksNTQg
QEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKGNvbnN0IGNoYXIgKnVybCkK
ICAgICBldmFzX29iamVjdF9zaG93KGhvcml6b250YWxfbGF5b3V0KTsKIAogICAgIC8qIENyZWF0
ZSBCYWNrIGJ1dHRvbiAqLwotICAgIGFwcF9kYXRhLT5iYWNrX2J1dHRvbiA9IGNyZWF0ZV90b29s
YmFyX2J1dHRvbihhcHBfZGF0YS0+d2luZG93LCAiYXJyb3dfbGVmdCIpOwotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+YmFja19idXR0b24sICJjbGlja2VkIiwg
b25fYmFja19idXR0b25fY2xpY2tlZCwgYXBwX2RhdGEpOwotICAgIGVsbV9vYmplY3RfZGlzYWJs
ZWRfc2V0KGFwcF9kYXRhLT5iYWNrX2J1dHRvbiwgRUlOQV9UUlVFKTsKLSAgICBldmFzX29iamVj
dF9zaXplX2hpbnRfd2VpZ2h0X3NldChhcHBfZGF0YS0+YmFja19idXR0b24sIDAuMCwgRVZBU19I
SU5UX0VYUEFORCk7Ci0gICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldChhcHBfZGF0
YS0+YmFja19idXR0b24sIDAuMCwgMC41KTsKLSAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250
YWxfbGF5b3V0LCBhcHBfZGF0YS0+YmFja19idXR0b24pOwotICAgIGV2YXNfb2JqZWN0X3Nob3co
YXBwX2RhdGEtPmJhY2tfYnV0dG9uKTsKKyAgICB3aW5kb3ctPmJhY2tfYnV0dG9uID0gY3JlYXRl
X3Rvb2xiYXJfYnV0dG9uKHdpbmRvdy0+ZWxtX3dpbmRvdywgImFycm93X2xlZnQiKTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5iYWNrX2J1dHRvbiwgImNsaWNr
ZWQiLCBvbl9iYWNrX2J1dHRvbl9jbGlja2VkLCB3aW5kb3cpOworICAgIGVsbV9vYmplY3RfZGlz
YWJsZWRfc2V0KHdpbmRvdy0+YmFja19idXR0b24sIEVJTkFfVFJVRSk7CisgICAgZXZhc19vYmpl
Y3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgMC4wLCBFVkFTX0hJ
TlRfRVhQQU5EKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+
YmFja19idXR0b24sIDAuMCwgMC41KTsKKyAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxf
bGF5b3V0LCB3aW5kb3ctPmJhY2tfYnV0dG9uKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdpbmRv
dy0+YmFja19idXR0b24pOwogCiAgICAgLyogQ3JlYXRlIEZvcndhcmQgYnV0dG9uICovCi0gICAg
YXBwX2RhdGEtPmZvcndhcmRfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKGFwcF9kYXRh
LT53aW5kb3csICJhcnJvd19yaWdodCIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChhcHBfZGF0YS0+Zm9yd2FyZF9idXR0b24sICJjbGlja2VkIiwgb25fZm9yd2FyZF9idXR0
b25fY2xpY2tlZCwgYXBwX2RhdGEpOwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGFwcF9k
YXRhLT5mb3J3YXJkX2J1dHRvbiwgRUlOQV9UUlVFKTsKLSAgICBldmFzX29iamVjdF9zaXplX2hp
bnRfd2VpZ2h0X3NldChhcHBfZGF0YS0+Zm9yd2FyZF9idXR0b24sIDAuMCwgRVZBU19ISU5UX0VY
UEFORCk7Ci0gICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldChhcHBfZGF0YS0+Zm9y
d2FyZF9idXR0b24sIDAuMCwgMC41KTsKLSAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxf
bGF5b3V0LCBhcHBfZGF0YS0+Zm9yd2FyZF9idXR0b24pOwotICAgIGV2YXNfb2JqZWN0X3Nob3co
YXBwX2RhdGEtPmZvcndhcmRfYnV0dG9uKTsKKyAgICB3aW5kb3ctPmZvcndhcmRfYnV0dG9uID0g
Y3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdpbmRvdy0+ZWxtX3dpbmRvdywgImFycm93X3JpZ2h0Iik7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+Zm9yd2FyZF9idXR0
b24sICJjbGlja2VkIiwgb25fZm9yd2FyZF9idXR0b25fY2xpY2tlZCwgd2luZG93KTsKKyAgICBl
bG1fb2JqZWN0X2Rpc2FibGVkX3NldCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCBFSU5BX1RSVUUp
OworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9i
dXR0b24sIDAuMCwgRVZBU19ISU5UX0VYUEFORCk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50
X2FsaWduX3NldCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAwLjAsIDAuNSk7CisgICAgZWxtX2Jv
eF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91dCwgd2luZG93LT5mb3J3YXJkX2J1dHRvbik7Cisg
ICAgZXZhc19vYmplY3Rfc2hvdyh3aW5kb3ctPmZvcndhcmRfYnV0dG9uKTsKIAogICAgIC8qIENy
ZWF0ZSBVUkwgYmFyICovCi0gICAgYXBwX2RhdGEtPnVybF9iYXIgPSBlbG1fZW50cnlfYWRkKGFw
cF9kYXRhLT53aW5kb3cpOwotICAgIGVsbV9lbnRyeV9zY3JvbGxhYmxlX3NldChhcHBfZGF0YS0+
dXJsX2JhciwgRUlOQV9UUlVFKTsKLSAgICBlbG1fZW50cnlfc2Nyb2xsYmFyX3BvbGljeV9zZXQo
YXBwX2RhdGEtPnVybF9iYXIsIEVMTV9TQ1JPTExFUl9QT0xJQ1lfT0ZGLCBFTE1fU0NST0xMRVJf
UE9MSUNZX09GRik7Ci0gICAgZWxtX2VudHJ5X3NpbmdsZV9saW5lX3NldChhcHBfZGF0YS0+dXJs
X2JhciwgRUlOQV9UUlVFKTsKLSAgICBlbG1fZW50cnlfY25wX21vZGVfc2V0KGFwcF9kYXRhLT51
cmxfYmFyLCBFTE1fQ05QX01PREVfUExBSU5URVhUKTsKLSAgICBlbG1fZW50cnlfdGV4dF9zdHls
ZV91c2VyX3B1c2goYXBwX2RhdGEtPnVybF9iYXIsICJERUZBVUxUPSdmb250X3NpemU9MTgnIik7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT51cmxfYmFyLCAi
YWN0aXZhdGVkIiwgb25fdXJsX2Jhcl9hY3RpdmF0ZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPnVybF9iYXIsICJjbGlja2VkIiwgb25f
dXJsX2Jhcl9jbGlja2VkLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dl
aWdodF9zZXQoYXBwX2RhdGEtPnVybF9iYXIsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9F
WFBBTkQpOwotICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQoYXBwX2RhdGEtPnVy
bF9iYXIsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7Ci0gICAgZWxtX2JveF9wYWNr
X2VuZChob3Jpem9udGFsX2xheW91dCwgYXBwX2RhdGEtPnVybF9iYXIpOwotICAgIGV2YXNfb2Jq
ZWN0X3Nob3coYXBwX2RhdGEtPnVybF9iYXIpOworICAgIHdpbmRvdy0+dXJsX2JhciA9IGVsbV9l
bnRyeV9hZGQod2luZG93LT5lbG1fd2luZG93KTsKKyAgICBlbG1fZW50cnlfc2Nyb2xsYWJsZV9z
ZXQod2luZG93LT51cmxfYmFyLCBFSU5BX1RSVUUpOworICAgIGVsbV9lbnRyeV9zY3JvbGxiYXJf
cG9saWN5X3NldCh3aW5kb3ctPnVybF9iYXIsIEVMTV9TQ1JPTExFUl9QT0xJQ1lfT0ZGLCBFTE1f
U0NST0xMRVJfUE9MSUNZX09GRik7CisgICAgZWxtX2VudHJ5X3NpbmdsZV9saW5lX3NldCh3aW5k
b3ctPnVybF9iYXIsIEVJTkFfVFJVRSk7CisgICAgZWxtX2VudHJ5X2NucF9tb2RlX3NldCh3aW5k
b3ctPnVybF9iYXIsIEVMTV9DTlBfTU9ERV9QTEFJTlRFWFQpOworICAgIGVsbV9lbnRyeV90ZXh0
X3N0eWxlX3VzZXJfcHVzaCh3aW5kb3ctPnVybF9iYXIsICJERUZBVUxUPSdmb250X3NpemU9MTgn
Iik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+dXJsX2Jhciwg
ImFjdGl2YXRlZCIsIG9uX3VybF9iYXJfYWN0aXZhdGVkLCB3aW5kb3cpOworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPnVybF9iYXIsICJjbGlja2VkIiwgb25fdXJs
X2Jhcl9jbGlja2VkLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRf
c2V0KHdpbmRvdy0+dXJsX2JhciwgRVZBU19ISU5UX0VYUEFORCwgRVZBU19ISU5UX0VYUEFORCk7
CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldCh3aW5kb3ctPnVybF9iYXIsIEVW
QVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CisgICAgZWxtX2JveF9wYWNrX2VuZChob3Jp
em9udGFsX2xheW91dCwgd2luZG93LT51cmxfYmFyKTsKKyAgICBldmFzX29iamVjdF9zaG93KHdp
bmRvdy0+dXJsX2Jhcik7CiAKICAgICAvKiBDcmVhdGUgUmVmcmVzaCBidXR0b24gKi8KLSAgICBF
dmFzX09iamVjdCAqcmVmcmVzaF9idXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24oYXBwX2Rh
dGEtPndpbmRvdywgInJlZnJlc2giKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQocmVmcmVzaF9idXR0b24sICJjbGlja2VkIiwgb25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCwg
YXBwX2RhdGEpOworICAgIEV2YXNfT2JqZWN0ICpyZWZyZXNoX2J1dHRvbiA9IGNyZWF0ZV90b29s
YmFyX2J1dHRvbih3aW5kb3ctPmVsbV93aW5kb3csICJyZWZyZXNoIik7CisgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKHJlZnJlc2hfYnV0dG9uLCAiY2xpY2tlZCIsIG9uX3JlZnJl
c2hfYnV0dG9uX2NsaWNrZWQsIHdpbmRvdyk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dl
aWdodF9zZXQocmVmcmVzaF9idXR0b24sIDAuMCwgRVZBU19ISU5UX0VYUEFORCk7CiAgICAgZXZh
c19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldChyZWZyZXNoX2J1dHRvbiwgMS4wLCAwLjUpOwog
ICAgIGVsbV9ib3hfcGFja19lbmQoaG9yaXpvbnRhbF9sYXlvdXQsIHJlZnJlc2hfYnV0dG9uKTsK
ICAgICBldmFzX29iamVjdF9zaG93KHJlZnJlc2hfYnV0dG9uKTsKIAogICAgIC8qIENyZWF0ZSBI
b21lIGJ1dHRvbiAqLwotICAgIEV2YXNfT2JqZWN0ICpob21lX2J1dHRvbiA9IGNyZWF0ZV90b29s
YmFyX2J1dHRvbihhcHBfZGF0YS0+d2luZG93LCAiaG9tZSIpOwotICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZChob21lX2J1dHRvbiwgImNsaWNrZWQiLCBvbl9ob21lX2J1dHRvbl9j
bGlja2VkLCBhcHBfZGF0YSk7CisgICAgRXZhc19PYmplY3QgKmhvbWVfYnV0dG9uID0gY3JlYXRl
X3Rvb2xiYXJfYnV0dG9uKHdpbmRvdy0+ZWxtX3dpbmRvdywgImhvbWUiKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQoaG9tZV9idXR0b24sICJjbGlja2VkIiwgb25faG9tZV9i
dXR0b25fY2xpY2tlZCwgd2luZG93KTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0
X3NldChob21lX2J1dHRvbiwgMC4wLCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBldmFzX29iamVj
dF9zaXplX2hpbnRfYWxpZ25fc2V0KGhvbWVfYnV0dG9uLCAxLjAsIDAuNSk7CiAgICAgZWxtX2Jv
eF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91dCwgaG9tZV9idXR0b24pOwogICAgIGV2YXNfb2Jq
ZWN0X3Nob3coaG9tZV9idXR0b24pOwogCi0gICAgLyogQ3JlYXRlIHdlYnZpZXcgKi8KKyAgICAv
KiBDcmVhdGUgZXdrX3ZpZXcgKi8KICAgICBFd2tfVmlld19TbWFydF9DbGFzcyAqZXdrVmlld0Ns
YXNzID0gbWluaUJyb3dzZXJWaWV3U21hcnRDbGFzcygpOwogICAgIGV3a1ZpZXdDbGFzcy0+cnVu
X2phdmFzY3JpcHRfYWxlcnQgPSBvbl9qYXZhc2NyaXB0X2FsZXJ0OwogICAgIGV3a1ZpZXdDbGFz
cy0+cnVuX2phdmFzY3JpcHRfY29uZmlybSA9IG9uX2phdmFzY3JpcHRfY29uZmlybTsKQEAgLTEw
MjYsNTEgKzEwMjYsNTEgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKGNv
bnN0IGNoYXIgKnVybCkKICAgICBld2tWaWV3Q2xhc3MtPmZ1bGxzY3JlZW5fZW50ZXIgPSBvbl9m
dWxsc2NyZWVuX2VudGVyOwogICAgIGV3a1ZpZXdDbGFzcy0+ZnVsbHNjcmVlbl9leGl0ID0gb25f
ZnVsbHNjcmVlbl9leGl0OwogCi0gICAgRXZhcyAqZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0
KGFwcF9kYXRhLT53aW5kb3cpOworICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dl
dCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19zbWFy
dF9jbGFzc19uZXcoJmV3a1ZpZXdDbGFzcy0+c2MpOwotICAgIGFwcF9kYXRhLT53ZWJ2aWV3ID0g
ZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgp
KTsKLSAgICBld2tfdmlld190aGVtZV9zZXQoYXBwX2RhdGEtPndlYnZpZXcsIFRIRU1FX0RJUiAi
L2RlZmF1bHQuZWRqIik7CisgICAgd2luZG93LT5ld2tfdmlldyA9IGV3a192aWV3X3NtYXJ0X2Fk
ZChldmFzLCBzbWFydCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7CisgICAgZXdrX3ZpZXdf
dGhlbWVfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIFRIRU1FX0RJUiAiL2RlZmF1bHQuZWRqIik7CiAK
LSAgICBFd2tfU2V0dGluZ3MgKnNldHRpbmdzID0gZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0KGFwcF9k
YXRhLT53ZWJ2aWV3KTsKKyAgICBFd2tfU2V0dGluZ3MgKnNldHRpbmdzID0gZXdrX3ZpZXdfc2V0
dGluZ3NfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIGV3a19zZXR0aW5nc19maWxlX2FjY2Vz
c19mcm9tX2ZpbGVfdXJsc19hbGxvd2VkX3NldChzZXR0aW5ncywgRUlOQV9UUlVFKTsKICAgICBl
d2tfc2V0dGluZ3NfZW5jb2RpbmdfZGV0ZWN0b3JfZW5hYmxlZF9zZXQoc2V0dGluZ3MsIGVuY29k
aW5nX2RldGVjdG9yX2VuYWJsZWQpOwogICAgIGV3a19zZXR0aW5nc19mcmFtZV9mbGF0dGVuaW5n
X2VuYWJsZWRfc2V0KHNldHRpbmdzLCBmcmFtZV9mbGF0dGVuaW5nX2VuYWJsZWQpOwogICAgIGV3
a19zZXR0aW5nc19kZXZlbG9wZXJfZXh0cmFzX2VuYWJsZWRfc2V0KHNldHRpbmdzLCBFSU5BX1RS
VUUpOwogICAgIGV3a19zZXR0aW5nc19wcmVmZXJyZWRfbWluaW11bV9jb250ZW50c193aWR0aF9z
ZXQoc2V0dGluZ3MsIDApOwogCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFw
cF9kYXRhLT53ZWJ2aWV3LCAiYXV0aGVudGljYXRpb24scmVxdWVzdCIsIG9uX2F1dGhlbnRpY2F0
aW9uX3JlcXVlc3QsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQoYXBwX2RhdGEtPndlYnZpZXcsICJjbG9zZSx3aW5kb3ciLCBvbl9jbG9zZV93aW5kb3csIGFw
cF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndl
YnZpZXcsICJjcmVhdGUsd2luZG93Iiwgb25fbmV3X3dpbmRvdywgYXBwX2RhdGEpOwotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImRvd25sb2Fk
LGZhaWxlZCIsIG9uX2Rvd25sb2FkX2ZhaWxlZCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImRvd25sb2FkLGZpbmlzaGVk
Iiwgb25fZG93bmxvYWRfZmluaXNoZWQsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJkb3dubG9hZCxyZXF1ZXN0Iiwgb25f
ZG93bmxvYWRfcmVxdWVzdCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImZpbGUsY2hvb3NlcixyZXF1ZXN0Iiwgb25fZmls
ZV9jaG9vc2VyX3JlcXVlc3QsIGFwcF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJpY29uLGNoYW5nZWQiLCBvbl92aWV3X2ljb25f
Y2hhbmdlZCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChh
cHBfZGF0YS0+d2VidmlldywgImxvYWQsZXJyb3IiLCBvbl9lcnJvciwgYXBwX2RhdGEpOwotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImxvYWQs
cHJvZ3Jlc3MiLCBvbl9wcm9ncmVzcywgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgInRpdGxlLGNoYW5nZWQiLCBvbl90aXRs
ZV9jaGFuZ2VkLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KGFwcF9kYXRhLT53ZWJ2aWV3LCAidXJsLGNoYW5nZWQiLCBvbl91cmxfY2hhbmdlZCwgYXBwX2Rh
dGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2Vidmll
dywgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCBvbl9iYWNrX2ZvcndhcmRfbGlzdF9jaGFu
Z2VkLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9k
YXRhLT53ZWJ2aWV3LCAidG9vbHRpcCx0ZXh0LHNldCIsIG9uX3Rvb2x0aXBfdGV4dF9zZXQsIGFw
cF9kYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndl
YnZpZXcsICJ0b29sdGlwLHRleHQsdW5zZXQiLCBvbl90b29sdGlwX3RleHRfdW5zZXQsIGFwcF9k
YXRhKTsKLQotICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2Vi
dmlldywgRVZBU19DQUxMQkFDS19LRVlfRE9XTiwgb25fa2V5X2Rvd24sIGFwcF9kYXRhKTsKLSAg
ICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsIEVWQVNf
Q0FMTEJBQ0tfTU9VU0VfRE9XTiwgb25fbW91c2VfZG93biwgYXBwX2RhdGEpOwotCi0gICAgZXZh
c19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoYXBwX2RhdGEtPndlYnZpZXcsIEVWQVNfSElO
VF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9h
bGlnbl9zZXQoYXBwX2RhdGEtPndlYnZpZXcsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklM
TCk7Ci0gICAgZWxtX2JveF9wYWNrX2VuZCh2ZXJ0aWNhbF9sYXlvdXQsIGFwcF9kYXRhLT53ZWJ2
aWV3KTsKLSAgICBldmFzX29iamVjdF9zaG93KGFwcF9kYXRhLT53ZWJ2aWV3KTsKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgImF1dGhlbnRpY2F0
aW9uLHJlcXVlc3QiLCBvbl9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0LCB3aW5kb3cpOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiY2xvc2Usd2lu
ZG93Iiwgb25fY2xvc2Vfd2luZG93LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiY3JlYXRlLHdpbmRvdyIsIG9uX25ld193aW5k
b3csIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+
ZXdrX3ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCBvbl9kb3dubG9hZF9mYWlsZWQsIHdpbmRvdyk7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJk
b3dubG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25sb2FkX2ZpbmlzaGVkLCB3aW5kb3cpOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiZG93bmxvYWQs
cmVxdWVzdCIsIG9uX2Rvd25sb2FkX3JlcXVlc3QsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJmaWxlLGNob29zZXIscmVxdWVz
dCIsIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiaWNvbixjaGFuZ2VkIiwgb25fdmll
d19pY29uX2NoYW5nZWQsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJsb2FkLGVycm9yIiwgb25fZXJyb3IsIHdpbmRvdyk7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJsb2Fk
LHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwgb25fdGl0bGVf
Y2hhbmdlZCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2lu
ZG93LT5ld2tfdmlldywgInVybCxjaGFuZ2VkIiwgb25fdXJsX2NoYW5nZWQsIHdpbmRvdyk7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJiYWNr
LGZvcndhcmQsbGlzdCxjaGFuZ2VkIiwgb25fYmFja19mb3J3YXJkX2xpc3RfY2hhbmdlZCwgd2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmll
dywgInRvb2x0aXAsdGV4dCxzZXQiLCBvbl90b29sdGlwX3RleHRfc2V0LCB3aW5kb3cpOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAidG9vbHRp
cCx0ZXh0LHVuc2V0Iiwgb25fdG9vbHRpcF90ZXh0X3Vuc2V0LCB3aW5kb3cpOworCisgICAgZXZh
c19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsIEVWQVNfQ0FMTEJB
Q0tfS0VZX0RPV04sIG9uX2tleV9kb3duLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X2V2ZW50
X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04s
IG9uX21vdXNlX2Rvd24sIHdpbmRvdyk7CisKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2Vp
Z2h0X3NldCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQ
QU5EKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+ZXdrX3Zp
ZXcsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CisgICAgZWxtX2JveF9wYWNrX2Vu
ZCh2ZXJ0aWNhbF9sYXlvdXQsIHdpbmRvdy0+ZXdrX3ZpZXcpOworICAgIGV2YXNfb2JqZWN0X3No
b3cod2luZG93LT5ld2tfdmlldyk7CiAKICAgICBpZiAodXJsKQotICAgICAgICBld2tfdmlld191
cmxfc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCB1cmwpOworICAgICAgICBld2tfdmlld191cmxfc2V0
KHdpbmRvdy0+ZXdrX3ZpZXcsIHVybCk7CiAKLSAgICBldmFzX29iamVjdF9yZXNpemUoYXBwX2Rh
dGEtPndpbmRvdywgd2luZG93X3dpZHRoLCB3aW5kb3dfaGVpZ2h0KTsKLSAgICBldmFzX29iamVj
dF9zaG93KGFwcF9kYXRhLT53aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZSh3aW5kb3ct
PmVsbV93aW5kb3csIHdpbmRvd193aWR0aCwgd2luZG93X2hlaWdodCk7CisgICAgZXZhc19vYmpl
Y3Rfc2hvdyh3aW5kb3ctPmVsbV93aW5kb3cpOwogCi0gICAgdmlld19mb2N1c19zZXQoYXBwX2Rh
dGEsIEVJTkFfVFJVRSk7CisgICAgdmlld19mb2N1c19zZXQod2luZG93LCBFSU5BX1RSVUUpOwog
Ci0gICAgcmV0dXJuIGFwcF9kYXRhOworICAgIHJldHVybiB3aW5kb3c7CiB9CiAKIHN0YXRpYyB2
b2lkCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174115</attachid>
            <date>2012-11-14 02:09:34 -0800</date>
            <delta_ts>2012-11-14 02:44:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101517-20121114190734.patch</filename>
            <type>text/plain</type>
            <size>49263</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NTc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmU2MTkyN2U2MmU1ZTA3NTRjYzNmMDFhMjI0M2QwMzIx
NjY1OGRjMi4uMzlkNGMwZTBiNTk4YmRkNGUzMWUzYTJhNTc4ODVhMzY1NjU1NzlmNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgy
IEBACisyMDEyLTExLTE0ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIFJlbmFtZSB2YXJpYWJsZXMsIHN0cnVjdHVyZXMgYW5kIGZ1bmN0
aW9ucyBvZiB0aGUgTWluaUJyb3dzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDE1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBL
aW0uCisKKyAgICAgICAgUmVuYW1lIHZhcmlhYmxlcywgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25z
IG9mIHRoZSBNaW5pQnJvd3NlcgorICAgICAgICBmb3IgdGhlIG5hbWluZyBjb25zaXN0ZW5jeS4K
KworICAgICAgICAxKSBCcm93c2VyX1dpbmRvdyoge2FwcF9kYXRhfGJyb3dzZXJfd2luZG93fHdp
bmRvd30gLT4gd2luZG93CisKKyAgICAgICAgMikgQnJvd3Nlcl9XaW5kb3c6OndlYnZpZXcgLT4g
QnJvd3Nlcl9XaW5kb3c6OmV3a192aWV3CisgICAgICAgICAgICAgVGhlIHdlYmtpdCBBUEkgZnVu
Y3Rpb25zIGFyZSBld2tfdmlld194eHggbm90IHdlYnZpZXdfeHh4LgorICAgICAgICAgICAgIFNv
IHVzaW5nIGV3a192aWV3IHdpbGwgYmUgYmV0dGVyIHRoYW4gd2Vidmlldy4KKworICAgICAgICAz
KSBCcm93c2VyX1dpbmRvdzo6d2luZG93IC0+IEJyb3dzZXJfV2luZG93OjplbG1fd2luZG93Cisg
ICAgICAgICAgICAgVGhlIG5hbWUgaXMgY2hhbmdlZCB0byBiZSBkaXN0aW5ndWlzaGVkIHdpdGgg
J0Jyb3dzZXJfV2luZG93ICp3aW5kb3cnCisKKyAgICAgICAgNCkgYnJvd3Nlcl97d2luZG93fHZp
ZXd9X2ZpbmQoKSAtPiB3aW5kb3dfZmluZF93aXRoX3tlbG1fd2luZG93fGV3a192aWV3fSgpCisg
ICAgICAgICAgICAgVGhpcyBpcyBjaGFuZ2VkIGJlY2F1c2UgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0
aW9uIGNhbiBiZSBjb25mdXNlZC4KKyAgICAgICAgICAgICBDdXJyZW50bHksIGJyb3dzZXJfd2lu
ZG93X2ZpbmQoKSByZXR1cm5zIEJyb3dzZXJfV2luZG93Ki4gQW5kCisgICAgICAgICAgICAgYnJv
d3Nlcl92aWV3X2ZpbmQoKSBhbHNvIHJldHVybnMgQnJvd3Nlcl9XaW5kb3cqLgorCisgICAgICAg
IDUpIEZpbGVTZWxlY3RvckRhdGEgLT4gRmlsZV9TZWxlY3Rvcl9EYXRhIC8gQXV0aERhdGEgLT4g
QXV0aF9EYXRhCisgICAgICAgICAgICAgVGhlIHR5cGUgZGVmaW5pdGlvbiBpcyBtb3ZlZCB0byB0
aGUgdG9wIG9mIHRoZSBzb3VyY2UgZmlsZQorICAgICAgICAgICAgIGFuZCB0aGUgbmFtZSBpcyBj
aGFuZ2VkIHRvIGZvbGxvdyBFRkwgc3R5bGUuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwv
bWFpbi5jOgorICAgICAgICAobWluaUJyb3dzZXJWaWV3U21hcnRDbGFzcyk6CisgICAgICAgIChf
QnJvd3Nlcl9XaW5kb3cpOgorICAgICAgICAoX0ZpbGVfU2VsZWN0b3JfRGF0YSk6CisgICAgICAg
IChfQXV0aF9EYXRhKToKKyAgICAgICAgKHdpbmRvd19maW5kX3dpdGhfZXdrX3ZpZXcpOgorICAg
ICAgICAod2luZG93X2ZyZWUpOgorICAgICAgICAob25fa2V5X2Rvd24pOgorICAgICAgICAodmll
d19mb2N1c19zZXQpOgorICAgICAgICAob25fbW91c2VfZG93bik6CisgICAgICAgICh0aXRsZV9z
ZXQpOgorICAgICAgICAob25fdGl0bGVfY2hhbmdlZCk6CisgICAgICAgIChvbl91cmxfY2hhbmdl
ZCk6CisgICAgICAgIChvbl9iYWNrX2ZvcndhcmRfbGlzdF9jaGFuZ2VkKToKKyAgICAgICAgKG9u
X25ld193aW5kb3cpOgorICAgICAgICAob25fY2xvc2Vfd2luZG93KToKKyAgICAgICAgKG9uX3By
b2dyZXNzKToKKyAgICAgICAgKG9uX2Vycm9yKToKKyAgICAgICAgKG9uX2Rvd25sb2FkX3JlcXVl
c3QpOgorICAgICAgICAoY2xvc2VfZmlsZV9waWNrZXIpOgorICAgICAgICAob25fZmlsZXBpY2tl
cl9wYXJlbnRfZGVsZXRpb24pOgorICAgICAgICAob25fZmlsZXBpY2tlcl9kZWxldGlvbik6Cisg
ICAgICAgIChvbl9maWxlc2VsZWN0b3JfZG9uZSk6CisgICAgICAgIChvbl9maWxlX2Nob29zZXJf
cmVxdWVzdCk6CisgICAgICAgIChvbl9kb3dubG9hZF9maW5pc2hlZCk6CisgICAgICAgIChvbl9k
b3dubG9hZF9mYWlsZWQpOgorICAgICAgICAob25fZmF2aWNvbl9yZWNlaXZlZCk6CisgICAgICAg
IChvbl92aWV3X2ljb25fY2hhbmdlZCk6CisgICAgICAgIChvbl91cmxfYmFyX2FjdGl2YXRlZCk6
CisgICAgICAgIChvbl91cmxfYmFyX2NsaWNrZWQpOgorICAgICAgICAob25fYmFja19idXR0b25f
Y2xpY2tlZCk6CisgICAgICAgIChvbl9mb3J3YXJkX2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAg
KG9uX3JlZnJlc2hfYnV0dG9uX2NsaWNrZWQpOgorICAgICAgICAob25famF2YXNjcmlwdF9hbGVy
dCk6CisgICAgICAgIChvbl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAgICAob25famF2YXNj
cmlwdF9wcm9tcHQpOgorICAgICAgICAob25fd2luZG93X2dlb21ldHJ5X2dldCk6CisgICAgICAg
IChvbl93aW5kb3dfZ2VvbWV0cnlfc2V0KToKKyAgICAgICAgKG9uX2Z1bGxzY3JlZW5fZGVueSk6
CisgICAgICAgIChvbl9mdWxsc2NyZWVuX2VudGVyKToKKyAgICAgICAgKG9uX2Z1bGxzY3JlZW5f
ZXhpdCk6CisgICAgICAgIChhdXRoX3BvcHVwX2Nsb3NlKToKKyAgICAgICAgKG9uX2F1dGhfY2Fu
Y2VsKToKKyAgICAgICAgKG9uX2F1dGhfb2spOgorICAgICAgICAob25fYXV0aGVudGljYXRpb25f
cmVxdWVzdCk6CisgICAgICAgIChvbl90b29sdGlwX3RleHRfc2V0KToKKyAgICAgICAgKG9uX3Rv
b2x0aXBfdGV4dF91bnNldCk6CisgICAgICAgIChvbl9ob21lX2J1dHRvbl9jbGlja2VkKToKKyAg
ICAgICAgKG9uX3dpbmRvd19kZWxldGlvbik6CisgICAgICAgICh3aW5kb3dfY3JlYXRlKToKKwog
MjAxMi0xMS0xNCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVs
LmNvbT4KIAogICAgICAgICB3ZWJraXRweTogVXBkYXRlIHRoZSBFRkwgbGlzdCBvZiBib3RzCmRp
ZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dz
ZXIvZWZsL21haW4uYwppbmRleCBlZjIwYWQ2NTA4ODEzZTI1NGEyZWNlM2NkZjlkZTJlYTNiNjZl
Mzc2Li45MmQzZjJmZjlmM2U0MjZjYTVhODk3MTMxMGEzODQ1NjZhMDRjODdkIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2Vm
bC9tYWluLmMKQEAgLTQ3LDIwICs0NywzMyBAQCBzdGF0aWMgaW50IHdpbmRvd19oZWlnaHQgPSA2
MDA7CiAgKiBzY2FsZSBmYWN0b3IgdW5sZXNzIGl0J3MgcmVxdWlyZWQgYnkgdGhlIFVzZXIuICov
CiBzdGF0aWMgZG91YmxlIGRldmljZV9waXhlbF9yYXRpbyA9IDA7CiAKLXN0YXRpYyBFd2tfVmll
d19TbWFydF9DbGFzcyogbWluaUJyb3dzZXJWaWV3U21hcnRDbGFzcygpCitzdGF0aWMgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MgKm1pbmlCcm93c2VyVmlld1NtYXJ0Q2xhc3MoKQogewogICAgIHN0YXRp
YyBFd2tfVmlld19TbWFydF9DbGFzcyBld2tWaWV3Q2xhc3MgPSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX05BTUVfVkVSU0lPTigiTWluaUJyb3dzZXJfVmlldyIpOwogICAgIHJldHVybiAmZXdr
Vmlld0NsYXNzOwogfQogCiB0eXBlZGVmIHN0cnVjdCBfQnJvd3Nlcl9XaW5kb3cgewotICAgIEV2
YXNfT2JqZWN0ICp3aW5kb3c7Ci0gICAgRXZhc19PYmplY3QgKndlYnZpZXc7CisgICAgRXZhc19P
YmplY3QgKmVsbV93aW5kb3c7CisgICAgRXZhc19PYmplY3QgKmV3a192aWV3OwogICAgIEV2YXNf
T2JqZWN0ICp1cmxfYmFyOwogICAgIEV2YXNfT2JqZWN0ICpiYWNrX2J1dHRvbjsKICAgICBFdmFz
X09iamVjdCAqZm9yd2FyZF9idXR0b247CiB9IEJyb3dzZXJfV2luZG93OwogCit0eXBlZGVmIHN0
cnVjdCBfRmlsZV9TZWxlY3Rvcl9EYXRhIHsKKyAgICBCcm93c2VyX1dpbmRvdyogcGFyZW50Owor
ICAgIEV2YXNfT2JqZWN0ICplbG1fd2luZG93OworICAgIEV3a19GaWxlX0Nob29zZXJfUmVxdWVz
dCAqcmVxdWVzdDsKK30gRmlsZV9TZWxlY3Rvcl9EYXRhOworCit0eXBlZGVmIHN0cnVjdCBfQXV0
aF9EYXRhIHsKKyAgICBFdmFzX09iamVjdCAqcG9wdXA7CisgICAgRXdrX0F1dGhfUmVxdWVzdCAq
cmVxdWVzdDsKKyAgICBFdmFzX09iamVjdCAqdXNlcm5hbWVfZW50cnk7CisgICAgRXZhc19PYmpl
Y3QgKnBhc3N3b3JkX2VudHJ5OworfSBBdXRoX0RhdGE7CisKIHN0YXRpYyBjb25zdCBFY29yZV9H
ZXRvcHQgb3B0aW9ucyA9IHsKICAgICAiTWluaUJyb3dzZXIiLAogICAgICIlcHJvZyBbb3B0aW9u
c10gW3VybF0iLApAQCAtOTQsNDMgKzEwNyw0MyBAQCBzdGF0aWMgY29uc3QgRWNvcmVfR2V0b3B0
IG9wdGlvbnMgPSB7CiAKIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShjb25z
dCBjaGFyICp1cmwsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKLXN0YXRpYyBCcm93c2VyX1dp
bmRvdyAqYnJvd3Nlcl93aW5kb3dfZmluZChFdmFzX09iamVjdCAqd2luZG93KQorc3RhdGljIEJy
b3dzZXJfV2luZG93ICp3aW5kb3dfZmluZF93aXRoX2VsbV93aW5kb3coRXZhc19PYmplY3QgKmVs
bV93aW5kb3cpCiB7CiAgICAgRWluYV9MaXN0ICpsOwogICAgIHZvaWQgKmRhdGE7CiAKLSAgICBp
ZiAoIXdpbmRvdykKKyAgICBpZiAoIWVsbV93aW5kb3cpCiAgICAgICAgIHJldHVybiBOVUxMOwog
CiAgICAgRUlOQV9MSVNUX0ZPUkVBQ0god2luZG93cywgbCwgZGF0YSkgewotICAgICAgICBCcm93
c2VyX1dpbmRvdyAqYnJvd3Nlcl93aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKilkYXRhOwotICAg
ICAgICBpZiAoYnJvd3Nlcl93aW5kb3ctPndpbmRvdyA9PSB3aW5kb3cpCi0gICAgICAgICAgICBy
ZXR1cm4gYnJvd3Nlcl93aW5kb3c7CisgICAgICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAo
QnJvd3Nlcl9XaW5kb3cgKilkYXRhOworICAgICAgICBpZiAod2luZG93LT5lbG1fd2luZG93ID09
IGVsbV93aW5kb3cpCisgICAgICAgICAgICByZXR1cm4gd2luZG93OwogICAgIH0KICAgICByZXR1
cm4gTlVMTDsKIH0KIAotc3RhdGljIEJyb3dzZXJfV2luZG93ICpicm93c2VyX3ZpZXdfZmluZChF
dmFzX09iamVjdCAqdmlldykKK3N0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2ZpbmRfd2l0
aF9ld2tfdmlldyhFdmFzX09iamVjdCAqZXdrX3ZpZXcpCiB7CiAgICAgRWluYV9MaXN0ICpsOwog
ICAgIHZvaWQgKmRhdGE7CiAKLSAgICBpZiAoIXZpZXcpCisgICAgaWYgKCFld2tfdmlldykKICAg
ICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBFSU5BX0xJU1RfRk9SRUFDSCh3aW5kb3dzLCBsLCBk
YXRhKSB7Ci0gICAgICAgIEJyb3dzZXJfV2luZG93ICpicm93c2VyX3dpbmRvdyA9IChCcm93c2Vy
X1dpbmRvdyAqKWRhdGE7Ci0gICAgICAgIGlmIChicm93c2VyX3dpbmRvdy0+d2VidmlldyA9PSB2
aWV3KQotICAgICAgICAgICAgcmV0dXJuIGJyb3dzZXJfd2luZG93OworICAgICAgICBCcm93c2Vy
X1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopZGF0YTsKKyAgICAgICAgaWYgKHdp
bmRvdy0+ZXdrX3ZpZXcgPT0gZXdrX3ZpZXcpCisgICAgICAgICAgICByZXR1cm4gd2luZG93Owog
ICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQgd2luZG93X2ZyZWUoQnJv
d3Nlcl9XaW5kb3cgKndpbmRvdykKIHsKLSAgICBldmFzX29iamVjdF9kZWwod2luZG93LT53ZWJ2
aWV3KTsKKyAgICBldmFzX29iamVjdF9kZWwod2luZG93LT5ld2tfdmlldyk7CiAgICAgLyogVGhl
IGVsbV93aW4gd2lsbCB0YWtlIGNhcmUgb2YgZnJlZWluZyBpdHMgY2hpbGRyZW4gKi8KLSAgICBl
dmFzX29iamVjdF9kZWwod2luZG93LT53aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X2RlbCh3aW5k
b3ctPmVsbV93aW5kb3cpOwogICAgIGZyZWUod2luZG93KTsKIH0KIApAQCAtMTQ0LDcgKzE1Nyw3
IEBAIHN0YXRpYyB2b2lkIHdpbmRvd19jbG9zZShCcm93c2VyX1dpbmRvdyAqd2luZG93KQogfQog
CiBzdGF0aWMgdm9pZAotb25fa2V5X2Rvd24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICplLCBFdmFz
X09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKK29uX2tleV9kb3duKHZvaWQgKnVz
ZXJfZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZv
KQogewogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2Vy
X2RhdGE7CiAgICAgRXZhc19FdmVudF9LZXlfRG93biAqZXYgPSAoRXZhc19FdmVudF9LZXlfRG93
biopIGV2ZW50X2luZm87CkBAIC0xNTksMjYgKzE3MiwyNiBAQCBvbl9rZXlfZG93bih2b2lkICp1
c2VyX2RhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZv
KQogCiAgICAgaWYgKCFzdHJjbXAoZXYtPmtleSwgIkYxIikpIHsKICAgICAgICAgaW5mbygiQmFj
ayAoRjEpIHdhcyBwcmVzc2VkXG4iKTsKLSAgICAgICAgaWYgKCFld2tfdmlld19iYWNrKHdlYnZp
ZXcpKQorICAgICAgICBpZiAoIWV3a192aWV3X2JhY2soZXdrX3ZpZXcpKQogICAgICAgICAgICAg
aW5mbygiQmFjayBpZ25vcmVkOiBObyBiYWNrIGhpc3RvcnlcbiIpOwogICAgIH0gZWxzZSBpZiAo
IXN0cmNtcChldi0+a2V5LCAiRjIiKSkgewogICAgICAgICBpbmZvKCJGb3J3YXJkIChGMikgd2Fz
IHByZXNzZWRcbiIpOwotICAgICAgICBpZiAoIWV3a192aWV3X2ZvcndhcmQod2VidmlldykpCisg
ICAgICAgIGlmICghZXdrX3ZpZXdfZm9yd2FyZChld2tfdmlldykpCiAgICAgICAgICAgICBpbmZv
KCJGb3J3YXJkIGlnbm9yZWQ6IE5vIGZvcndhcmQgaGlzdG9yeVxuIik7CiAgICAgfSBlbHNlIGlm
ICghc3RyY21wKGV2LT5rZXksICJGMyIpKSB7CiAgICAgICAgIGN1cnJlbnRFbmNvZGluZyA9IChj
dXJyZW50RW5jb2RpbmcgKyAxKSAlIChzaXplb2YoZW5jb2RpbmdzKSAvIHNpemVvZihlbmNvZGlu
Z3NbMF0pKTsKICAgICAgICAgaW5mbygiU2V0IGVuY29kaW5nIChGMykgcHJlc3NlZC4gTmV3IGVu
Y29kaW5nIHRvICVzIiwgZW5jb2RpbmdzW2N1cnJlbnRFbmNvZGluZ10pOwotICAgICAgICBld2tf
dmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQod2VidmlldywgZW5jb2RpbmdzW2N1cnJl
bnRFbmNvZGluZ10pOworICAgICAgICBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9z
ZXQoZXdrX3ZpZXcsIGVuY29kaW5nc1tjdXJyZW50RW5jb2RpbmddKTsKICAgICB9IGVsc2UgaWYg
KCFzdHJjbXAoZXYtPmtleSwgIkY1IikpIHsKICAgICAgICAgaW5mbygiUmVsb2FkIChGNSkgd2Fz
IHByZXNzZWQsIHJlbG9hZGluZy5cbiIpOwotICAgICAgICBld2tfdmlld19yZWxvYWQod2Vidmll
dyk7CisgICAgICAgIGV3a192aWV3X3JlbG9hZChld2tfdmlldyk7CiAgICAgfSBlbHNlIGlmICgh
c3RyY21wKGV2LT5rZXksICJGNiIpKSB7CiAgICAgICAgIGluZm8oIlN0b3AgKEY2KSB3YXMgcHJl
c3NlZCwgc3RvcCBsb2FkaW5nLlxuIik7Ci0gICAgICAgIGV3a192aWV3X3N0b3Aod2Vidmlldyk7
CisgICAgICAgIGV3a192aWV3X3N0b3AoZXdrX3ZpZXcpOwogICAgIH0gZWxzZSBpZiAgKCFzdHJj
bXAoZXYtPmtleSwgIkY3IikpIHsKLSAgICAgICAgRXdrX1BhZ2luYXRpb25fTW9kZSBtb2RlID0g
IGV3a192aWV3X3BhZ2luYXRpb25fbW9kZV9nZXQod2Vidmlldyk7CisgICAgICAgIEV3a19QYWdp
bmF0aW9uX01vZGUgbW9kZSA9ICBld2tfdmlld19wYWdpbmF0aW9uX21vZGVfZ2V0KGV3a192aWV3
KTsKICAgICAgICAgbW9kZSA9ICgrK21vZGUpICUgKEVXS19QQUdJTkFUSU9OX01PREVfQk9UVE9N
X1RPX1RPUCArIDEpOwotICAgICAgICBpZiAoZXdrX3ZpZXdfcGFnaW5hdGlvbl9tb2RlX3NldCh3
ZWJ2aWV3LCBtb2RlKSkKKyAgICAgICAgaWYgKGV3a192aWV3X3BhZ2luYXRpb25fbW9kZV9zZXQo
ZXdrX3ZpZXcsIG1vZGUpKQogICAgICAgICAgICAgaW5mbygiQ2hhbmdlIFBhZ2luYXRpb24gTW9k
ZSAoRjcpIHdhcyBwcmVzc2VkLCBjaGFuZ2VkIHRvOiAlZFxuIiwgbW9kZSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGluZm8oIkNoYW5nZSBQYWdpbmF0aW9uIE1vZGUgKEY3KSB3YXMgcHJl
c3NlZCwgYnV0IE5PVCBjaGFuZ2VkISIpOwpAQCAtMTg5LDEwICsyMDIsMTAgQEAgb25fa2V5X2Rv
d24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAq
ZXZlbnRfaW5mbykKICAgICAgICAgd2luZG93cyA9IGVpbmFfbGlzdF9hcHBlbmQod2luZG93cywg
d2luZG93KTsKICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYtPmtleSwgImkiKSAmJiBjdHJsUHJl
c3NlZCkgewogICAgICAgICBpbmZvKCJTaG93IEluc3BlY3RvciAoQ3RybCtpKSB3YXMgcHJlc3Nl
ZC5cbiIpOwotICAgICAgICBld2tfdmlld19pbnNwZWN0b3Jfc2hvdyh3ZWJ2aWV3KTsKKyAgICAg
ICAgZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3coZXdrX3ZpZXcpOwogICAgIH0gZWxzZSBpZiAoIXN0
cmNtcChldi0+a2V5LCAiRXNjYXBlIikpIHsKLSAgICAgICAgaWYgKGVsbV93aW5fZnVsbHNjcmVl
bl9nZXQod2luZG93LT53aW5kb3cpKQotICAgICAgICAgICAgZXdrX3ZpZXdfZnVsbHNjcmVlbl9l
eGl0KHdlYnZpZXcpOworICAgICAgICBpZiAoZWxtX3dpbl9mdWxsc2NyZWVuX2dldCh3aW5kb3ct
PmVsbV93aW5kb3cpKQorICAgICAgICAgICAgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KGV3a192
aWV3KTsKICAgICB9CiB9CiAKQEAgLTIwMiwxMiArMjE1LDEyIEBAIHZpZXdfZm9jdXNfc2V0KEJy
b3dzZXJfV2luZG93ICp3aW5kb3csIEVpbmFfQm9vbCBmb2N1cykKICAgICAvKiBXZSBzdGVhbCBm
b2N1cyBhd2F5IGZyb20gZWxtJ3MgZm9jdXMgbW9kZWwgYW5kIHN0YXJ0IHRvIGRvIHRoaW5ncwog
ICAgICAqIG1hbnVhbGx5IGhlcmUsIHNvIGVsbSBub3cgaGFzIG5vIGNsdWUgd2hhdCdzIHVwLiBU
ZWxsIGVsbSB0aGF0IGl0cwogICAgICAqIHRvcGxldmVsIHdpZGdldCBpcyB0byBiZSB1bmZvY3Vz
ZWQgc28gZWxtIGdpdmVzIHVwIHRoZSBmb2N1cyAqLwotICAgIGVsbV9vYmplY3RfZm9jdXNfc2V0
KGVsbV9vYmplY3RfdG9wX3dpZGdldF9nZXQod2luZG93LT53aW5kb3cpLCBFSU5BX0ZBTFNFKTsK
LSAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2luZG93LT53ZWJ2aWV3LCBmb2N1cyk7CisgICAg
ZWxtX29iamVjdF9mb2N1c19zZXQoZWxtX29iamVjdF90b3Bfd2lkZ2V0X2dldCh3aW5kb3ctPmVs
bV93aW5kb3cpLCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2luZG93
LT5ld2tfdmlldywgZm9jdXMpOwogfQogCiBzdGF0aWMgdm9pZAotb25fbW91c2VfZG93bih2b2lk
ICp1c2VyX2RhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9p
bmZvKQorb25fbW91c2VfZG93bih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0
ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2lu
ZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogICAgIEV2YXNfRXZlbnRfTW91c2Vf
RG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duICopZXZlbnRfaW5mbzsKQEAgLTIxOCwx
NiArMjMxLDE2IEBAIG9uX21vdXNlX2Rvd24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICplLCBFdmFz
X09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKICAgICBpZiAoZXYtPmJ1dHRvbiA9
PSAxKQogICAgICAgICB2aWV3X2ZvY3VzX3NldCh3aW5kb3csIEVJTkFfVFJVRSk7CiAgICAgZWxz
ZSBpZiAoZXYtPmJ1dHRvbiA9PSAyKQotICAgICAgICB2aWV3X2ZvY3VzX3NldCh3aW5kb3csICFl
dmFzX29iamVjdF9mb2N1c19nZXQod2VidmlldykpOworICAgICAgICB2aWV3X2ZvY3VzX3NldCh3
aW5kb3csICFldmFzX29iamVjdF9mb2N1c19nZXQoZXdrX3ZpZXcpKTsKIH0KIAogc3RhdGljIHZv
aWQKLXRpdGxlX3NldChFdmFzX09iamVjdCAqd2luZG93LCBjb25zdCBjaGFyICp0aXRsZSwgaW50
IHByb2dyZXNzKQordGl0bGVfc2V0KEV2YXNfT2JqZWN0ICplbG1fd2luZG93LCBjb25zdCBjaGFy
ICp0aXRsZSwgaW50IHByb2dyZXNzKQogewogICAgIEVpbmFfU3RyYnVmICpidWZmZXI7CiAKICAg
ICBpZiAoIXRpdGxlIHx8ICEqdGl0bGUpIHsKLSAgICAgICAgZWxtX3dpbl90aXRsZV9zZXQod2lu
ZG93LCBBUFBfTkFNRSk7CisgICAgICAgIGVsbV93aW5fdGl0bGVfc2V0KGVsbV93aW5kb3csIEFQ
UF9OQU1FKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjM3LDM4ICsyNTAsMzggQEAg
dGl0bGVfc2V0KEV2YXNfT2JqZWN0ICp3aW5kb3csIGNvbnN0IGNoYXIgKnRpdGxlLCBpbnQgcHJv
Z3Jlc3MpCiAgICAgZWxzZQogICAgICAgICBlaW5hX3N0cmJ1Zl9hcHBlbmRfcHJpbnRmKGJ1ZmZl
ciwgIiVzIC0gJXMiLCB0aXRsZSwgQVBQX05BTUUpOwogCi0gICAgZWxtX3dpbl90aXRsZV9zZXQo
d2luZG93LCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KGJ1ZmZlcikpOworICAgIGVsbV93aW5fdGl0
bGVfc2V0KGVsbV93aW5kb3csIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQoYnVmZmVyKSk7CiAgICAg
ZWluYV9zdHJidWZfZnJlZShidWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZAotb25fdGl0bGVfY2hh
bmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9p
bmZvKQorb25fdGl0bGVfY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tf
dmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0g
KEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogICAgIGNvbnN0IGNoYXIgKnRpdGxlID0gKGNv
bnN0IGNoYXIgKilldmVudF9pbmZvOwogCi0gICAgdGl0bGVfc2V0KHdpbmRvdy0+d2luZG93LCB0
aXRsZSwgMTAwKTsKKyAgICB0aXRsZV9zZXQod2luZG93LT5lbG1fd2luZG93LCB0aXRsZSwgMTAw
KTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX3VybF9jaGFuZ2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZh
c19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl91cmxfY2hhbmdlZCh2b2lk
ICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsK
ICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRh
OwogCi0gICAgY2hhciAqdXJsID0gZWxtX2VudHJ5X3V0ZjhfdG9fbWFya3VwKGV3a192aWV3X3Vy
bF9nZXQod2luZG93LT53ZWJ2aWV3KSk7CisgICAgY2hhciAqdXJsID0gZWxtX2VudHJ5X3V0Zjhf
dG9fbWFya3VwKGV3a192aWV3X3VybF9nZXQod2luZG93LT5ld2tfdmlldykpOwogICAgIGVsbV9l
bnRyeV9lbnRyeV9zZXQod2luZG93LT51cmxfYmFyLCB1cmwpOwogCiAgICAgZnJlZSh1cmwpOwog
fQogCiBzdGF0aWMgdm9pZAotb25fYmFja19mb3J3YXJkX2xpc3RfY2hhbmdlZCh2b2lkICp1c2Vy
X2RhdGEsIEV2YXNfT2JqZWN0ICp3ZWJ2aWV3LCB2b2lkICpldmVudF9pbmZvKQorb25fYmFja19m
b3J3YXJkX2xpc3RfY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmll
dywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJy
b3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCiAgICAgLyogVXBkYXRlIG5hdmlnYXRpb24gYnV0
dG9ucyBzdGF0ZSAqLwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+YmFja19i
dXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKHdlYnZpZXcpKTsKLSAgICBlbG1fb2JqZWN0
X2Rpc2FibGVkX3NldCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAhZXdrX3ZpZXdfZm9yd2FyZF9w
b3NzaWJsZSh3ZWJ2aWV3KSk7CisgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5i
YWNrX2J1dHRvbiwgIWV3a192aWV3X2JhY2tfcG9zc2libGUoZXdrX3ZpZXcpKTsKKyAgICBlbG1f
b2JqZWN0X2Rpc2FibGVkX3NldCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAhZXdrX3ZpZXdfZm9y
d2FyZF9wb3NzaWJsZShld2tfdmlldykpOwogfQogCiBzdGF0aWMgRXZhc19PYmplY3QqCkBAIC0y
NzYsMjggKzI4OSwyOCBAQCBvbl9uZXdfd2luZG93KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBF
dmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCkKIHsKICAgICBCcm93c2VyX1dpbmRv
dyAqd2luZG93ID0gd2luZG93X2NyZWF0ZShOVUxMLCB3aWR0aCwgaGVpZ2h0KTsKICAgICB3aW5k
b3dzID0gZWluYV9saXN0X2FwcGVuZCh3aW5kb3dzLCB3aW5kb3cpOwotICAgIHJldHVybiB3aW5k
b3ctPndlYnZpZXc7CisgICAgcmV0dXJuIHdpbmRvdy0+ZXdrX3ZpZXc7CiB9CiAKIHN0YXRpYyB2
b2lkCi1vbl9jbG9zZV93aW5kb3codm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmll
dywgdm9pZCAqZXZlbnRfaW5mbykKK29uX2Nsb3NlX3dpbmRvdyh2b2lkICp1c2VyX2RhdGEsIEV2
YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICB3aW5kb3dfY2xv
c2UoKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX3By
b2dyZXNzKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50
X2luZm8pCitvbl9wcm9ncmVzcyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmll
dywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJy
b3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogICAgIGRvdWJsZSBwcm9ncmVzcyA9ICooZG91Ymxl
ICopZXZlbnRfaW5mbzsKIAotICAgIHRpdGxlX3NldCh3aW5kb3ctPndpbmRvdywgZXdrX3ZpZXdf
dGl0bGVfZ2V0KHdpbmRvdy0+d2VidmlldyksIHByb2dyZXNzICogMTAwKTsKKyAgICB0aXRsZV9z
ZXQod2luZG93LT5lbG1fd2luZG93LCBld2tfdmlld190aXRsZV9nZXQod2luZG93LT5ld2tfdmll
dyksIHByb2dyZXNzICogMTAwKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Vycm9yKHZvaWQgKnVz
ZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9lcnJv
cih2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5m
bykKIHsKLSAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyOworICAgIEVpbmFfU3RyYnVmICpidWZmZXI7
CiAgICAgY29uc3QgRXdrX0Vycm9yICplcnJvciA9IChjb25zdCBFd2tfRXJyb3IgKilldmVudF9p
bmZvOwogCiAgICAgLyogVGhpcyBpcyBhIGNhbmNlbGxhdGlvbiwgZG8gbm90IGRpc3BsYXkgdGhl
IGVycm9yIHBhZ2UgKi8KQEAgLTMwOCwxMiArMzIxLDEyIEBAIG9uX2Vycm9yKHZvaWQgKnVzZXJf
ZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgZWluYV9z
dHJidWZfYXBwZW5kX3ByaW50ZihidWZmZXIsICI8aHRtbD48Ym9keT48ZGl2IHN0eWxlPVwiY29s
b3I6I2ZmMDAwMFwiPkVSUk9SITwvZGl2Pjxicj48ZGl2PkNvZGU6ICVkPGJyPkRlc2NyaXB0aW9u
OiAlczxicj5VUkw6ICVzPC9kaXY+PC9ib2R5PC9odG1sPiIsCiAgICAgICAgIGV3a19lcnJvcl9j
b2RlX2dldChlcnJvciksIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZXJyb3IpLCBld2tfZXJy
b3JfdXJsX2dldChlcnJvcikpOwogCi0gICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJ2
aWV3LCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KGJ1ZmZlciksIDAsIGV3a19lcnJvcl91cmxfZ2V0
KGVycm9yKSk7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChld2tfdmlldywgZWluYV9z
dHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCBld2tfZXJyb3JfdXJsX2dldChlcnJvcikpOwog
ICAgIGVpbmFfc3RyYnVmX2ZyZWUoYnVmZmVyKTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25s
b2FkX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAq
ZXZlbnRfaW5mbykKK29uX2Rvd25sb2FkX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgRXdrX0Rvd25sb2FkX0pv
YiAqZG93bmxvYWQgPSAoRXdrX0Rvd25sb2FkX0pvYiAqKWV2ZW50X2luZm87CiAKQEAgLTMzNCwz
OCArMzQ3LDMyIEBAIG9uX2Rvd25sb2FkX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGRl
c3RpbmF0aW9uX3BhdGgpOwogfQogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgRXZhc19PYmplY3Qg
KnBhcmVudDsKLSAgICBFdmFzX09iamVjdCAqd2luZG93OwotICAgIEV3a19GaWxlX0Nob29zZXJf
UmVxdWVzdCAqcmVxdWVzdDsKLX0gRmlsZVNlbGVjdG9yRGF0YTsKLQotc3RhdGljIHZvaWQgb25f
ZmlsZXBpY2tlcl9wYXJlbnRfZGVsZXRpb24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICpldmFzLCBF
dmFzX09iamVjdCAqd2luZG93LCB2b2lkICpldmVudCk7CitzdGF0aWMgdm9pZCBvbl9maWxlcGlj
a2VyX3BhcmVudF9kZWxldGlvbih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmV2YXMsIEV2YXNfT2Jq
ZWN0ICplbG1fd2luZG93LCB2b2lkICpldmVudCk7CiAKLXN0YXRpYyB2b2lkIGNsb3NlX2ZpbGVf
cGlja2VyKEZpbGVTZWxlY3RvckRhdGEqIGZzX2RhdGEpCitzdGF0aWMgdm9pZCBjbG9zZV9maWxl
X3BpY2tlcihGaWxlX1NlbGVjdG9yX0RhdGEgKmZzX2RhdGEpCiB7Ci0gICAgZXZhc19vYmplY3Rf
ZXZlbnRfY2FsbGJhY2tfZGVsKGZzX2RhdGEtPnBhcmVudCwgRVZBU19DQUxMQkFDS19ERUwsIG9u
X2ZpbGVwaWNrZXJfcGFyZW50X2RlbGV0aW9uKTsKLSAgICBldmFzX29iamVjdF9kZWwoZnNfZGF0
YS0+d2luZG93KTsKKyAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwoZnNfZGF0YS0+
cGFyZW50LT5lbG1fd2luZG93LCBFVkFTX0NBTExCQUNLX0RFTCwgb25fZmlsZXBpY2tlcl9wYXJl
bnRfZGVsZXRpb24pOworICAgIGV2YXNfb2JqZWN0X2RlbChmc19kYXRhLT5lbG1fd2luZG93KTsK
ICAgICBld2tfb2JqZWN0X3VucmVmKGZzX2RhdGEtPnJlcXVlc3QpOwogICAgIGZyZWUoZnNfZGF0
YSk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9maWxlcGlja2VyX3BhcmVudF9kZWxldGlvbih2b2lk
ICp1c2VyX2RhdGEsIEV2YXMgKmV2YXMsIEV2YXNfT2JqZWN0ICp3aW5kb3csIHZvaWQgKmV2ZW50
KQorb25fZmlsZXBpY2tlcl9wYXJlbnRfZGVsZXRpb24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICpl
dmFzLCBFdmFzX09iamVjdCAqZWxtX3dpbmRvdywgdm9pZCAqZXZlbnQpCiB7Ci0gICAgY2xvc2Vf
ZmlsZV9waWNrZXIoKEZpbGVTZWxlY3RvckRhdGEgKil1c2VyX2RhdGEpOworICAgIGNsb3NlX2Zp
bGVfcGlja2VyKChGaWxlX1NlbGVjdG9yX0RhdGEgKil1c2VyX2RhdGEpOwogfQogCiBzdGF0aWMg
dm9pZAotb25fZmlsZXBpY2tlcl9kZWxldGlvbih2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0
ICp3aW5kb3csIHZvaWQgKmV2ZW50X2luZm8pCitvbl9maWxlcGlja2VyX2RlbGV0aW9uKHZvaWQg
KnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmVsbV93aW5kb3csIHZvaWQgKmV2ZW50X2luZm8pCiB7
Ci0gICAgY2xvc2VfZmlsZV9waWNrZXIoKEZpbGVTZWxlY3RvckRhdGEgKil1c2VyX2RhdGEpOwor
ICAgIGNsb3NlX2ZpbGVfcGlja2VyKChGaWxlX1NlbGVjdG9yX0RhdGEgKil1c2VyX2RhdGEpOwog
fQogCiBzdGF0aWMgdm9pZAogb25fZmlsZXNlbGVjdG9yX2RvbmUodm9pZCAqdXNlcl9kYXRhLCBF
dmFzX09iamVjdCAqZmlsZV9zZWxlY3Rvciwgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBGaWxl
U2VsZWN0b3JEYXRhICpmc19kYXRhID0gKEZpbGVTZWxlY3RvckRhdGEgKil1c2VyX2RhdGE7Cisg
ICAgRmlsZV9TZWxlY3Rvcl9EYXRhICpmc19kYXRhID0gKEZpbGVfU2VsZWN0b3JfRGF0YSAqKXVz
ZXJfZGF0YTsKIAogICAgIGNvbnN0IGNoYXIgKnNlbGVjdGVkID0gKGNvbnN0IGNoYXIgKilldmVu
dF9pbmZvOwogICAgIGlmIChzZWxlY3RlZCAmJiAqc2VsZWN0ZWQpCkBAIC0zNzUsNDcgKzM4Miw0
NyBAQCBvbl9maWxlc2VsZWN0b3JfZG9uZSh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpm
aWxlX3NlbGVjdG9yLCB2b2lkICpldmVudF9pbgogfQogCiBzdGF0aWMgdm9pZAotb25fZmlsZV9j
aG9vc2VyX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9p
ZCAqZXZlbnRfaW5mbykKK29uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwg
RXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dzZXJf
V2luZG93ICphcHBfZGF0YSA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBCcm93
c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogICAgIEV3
a19GaWxlX0Nob29zZXJfUmVxdWVzdCAqcmVxdWVzdCA9IChFd2tfRmlsZV9DaG9vc2VyX1JlcXVl
c3QgKilldmVudF9pbmZvOwogCiAgICAgLy8gU2hvdyBiYXNpYyBmaWxlIHBpY2tlciB3aGljaCBk
b2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtdWx0aXBsZSBmaWxlcwogICAgIC8vIG9yIE1JTUUg
dHlwZSBmaWx0ZXJpbmcuCi0gICAgRXZhc19PYmplY3QgKndpbmRvdyA9IGVsbV93aW5fYWRkKGFw
cF9kYXRhLT53aW5kb3csICJmaWxlLXBpY2tlci13aW5kb3ciLCBFTE1fV0lOX0RJQUxPR19CQVNJ
Qyk7Ci0gICAgZWxtX3dpbl90aXRsZV9zZXQod2luZG93LCAiRmlsZSBwaWNrZXIiKTsKLSAgICBl
bG1fd2luX21vZGFsX3NldCh3aW5kb3csIEVJTkFfVFJVRSk7CisgICAgRXZhc19PYmplY3QgKmVs
bV93aW5kb3cgPSBlbG1fd2luX2FkZCh3aW5kb3ctPmVsbV93aW5kb3csICJmaWxlLXBpY2tlci13
aW5kb3ciLCBFTE1fV0lOX0RJQUxPR19CQVNJQyk7CisgICAgZWxtX3dpbl90aXRsZV9zZXQoZWxt
X3dpbmRvdywgIkZpbGUgcGlja2VyIik7CisgICAgZWxtX3dpbl9tb2RhbF9zZXQoZWxtX3dpbmRv
dywgRUlOQV9UUlVFKTsKIAotICAgIEZpbGVTZWxlY3RvckRhdGEqIGZzX2RhdGEgPSAoRmlsZVNl
bGVjdG9yRGF0YSopbWFsbG9jKHNpemVvZihGaWxlU2VsZWN0b3JEYXRhKSk7Ci0gICAgZnNfZGF0
YS0+cGFyZW50ID0gYXBwX2RhdGEtPndpbmRvdzsKLSAgICBmc19kYXRhLT53aW5kb3cgPSB3aW5k
b3c7CisgICAgRmlsZV9TZWxlY3Rvcl9EYXRhICpmc19kYXRhID0gKEZpbGVfU2VsZWN0b3JfRGF0
YSAqKW1hbGxvYyhzaXplb2YoRmlsZV9TZWxlY3Rvcl9EYXRhKSk7CisgICAgZnNfZGF0YS0+cGFy
ZW50ID0gd2luZG93OworICAgIGZzX2RhdGEtPmVsbV93aW5kb3cgPSBlbG1fd2luZG93OwogICAg
IGZzX2RhdGEtPnJlcXVlc3QgPSBld2tfb2JqZWN0X3JlZihyZXF1ZXN0KTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LCAiZGVsZXRlLHJlcXVlc3QiLCBvbl9maWxl
cGlja2VyX2RlbGV0aW9uLCBmc19kYXRhKTsKLSAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFj
a19hZGQoYXBwX2RhdGEtPndpbmRvdywgRVZBU19DQUxMQkFDS19ERUwsIG9uX2ZpbGVwaWNrZXJf
cGFyZW50X2RlbGV0aW9uLCBmc19kYXRhKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19hZGQoZWxtX3dpbmRvdywgImRlbGV0ZSxyZXF1ZXN0Iiwgb25fZmlsZXBpY2tlcl9kZWxldGlv
biwgZnNfZGF0YSk7CisgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+
ZWxtX3dpbmRvdywgRVZBU19DQUxMQkFDS19ERUwsIG9uX2ZpbGVwaWNrZXJfcGFyZW50X2RlbGV0
aW9uLCBmc19kYXRhKTsKIAotICAgIEV2YXNfT2JqZWN0ICpmaWxlX3NlbGVjdG9yID0gZWxtX2Zp
bGVzZWxlY3Rvcl9hZGQod2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqZmlsZV9zZWxlY3RvciA9
IGVsbV9maWxlc2VsZWN0b3JfYWRkKGVsbV93aW5kb3cpOwogICAgIGNvbnN0IGNoYXIgKmhvbWVf
cGF0aCA9IGdldGVudigiSE9NRSIpOwogICAgIGVsbV9maWxlc2VsZWN0b3JfcGF0aF9zZXQoZmls
ZV9zZWxlY3RvciwgaG9tZV9wYXRoID8gaG9tZV9wYXRoIDogIi9ob21lIik7CiAgICAgZXZhc19v
YmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoZmlsZV9zZWxlY3RvciwgRVZBU19ISU5UX0VYUEFO
RCwgRVZBU19ISU5UX0VYUEFORCk7Ci0gICAgZWxtX3dpbl9yZXNpemVfb2JqZWN0X2FkZCh3aW5k
b3csIGZpbGVfc2VsZWN0b3IpOworICAgIGVsbV93aW5fcmVzaXplX29iamVjdF9hZGQoZWxtX3dp
bmRvdywgZmlsZV9zZWxlY3Rvcik7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhmaWxlX3NlbGVjdG9y
KTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChmaWxlX3NlbGVjdG9yLCAi
ZG9uZSIsIG9uX2ZpbGVzZWxlY3Rvcl9kb25lLCBmc19kYXRhKTsKIAotICAgIGV2YXNfb2JqZWN0
X3Jlc2l6ZSh3aW5kb3csIDQwMCwgNDAwKTsKLSAgICBlbG1fd2luX2NlbnRlcih3aW5kb3csIEVJ
TkFfVFJVRSwgRUlOQV9UUlVFKTsKLSAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdyk7CisgICAg
ZXZhc19vYmplY3RfcmVzaXplKGVsbV93aW5kb3csIDQwMCwgNDAwKTsKKyAgICBlbG1fd2luX2Nl
bnRlcihlbG1fd2luZG93LCBFSU5BX1RSVUUsIEVJTkFfVFJVRSk7CisgICAgZXZhc19vYmplY3Rf
c2hvdyhlbG1fd2luZG93KTsKIH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2FkX2ZpbmlzaGVk
KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8p
Citvbl9kb3dubG9hZF9maW5pc2hlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tf
dmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBFd2tfRG93bmxvYWRfSm9iICpkb3dubG9h
ZCA9IChFd2tfRG93bmxvYWRfSm9iICopZXZlbnRfaW5mbzsKICAgICBpbmZvKCJEb3dubG9hZCBm
aW5pc2hlZDogJXNcbiIsICBld2tfZG93bmxvYWRfam9iX2Rlc3RpbmF0aW9uX2dldChkb3dubG9h
ZCkpOwogfQogCiBzdGF0aWMgdm9pZAotb25fZG93bmxvYWRfZmFpbGVkKHZvaWQgKnVzZXJfZGF0
YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9kb3dubG9hZF9m
YWlsZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50
X2luZm8pCiB7CiAgICAgaW5mbygiRG93bmxvYWQgZmFpbGVkIVxuIik7CiB9CkBAIC00MjMsMTIg
KzQzMCwxMiBAQCBvbl9kb3dubG9hZF9mYWlsZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVj
dCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHN0YXRpYyB2b2lkCiBvbl9mYXZpY29uX3Jl
Y2VpdmVkKGNvbnN0IGNoYXIgKnBhZ2VfdXJsLCBFdmFzX09iamVjdCAqaWNvbiwgdm9pZCAqZXZl
bnRfaW5mbykKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5k
b3cgKilldmVudF9pbmZvOwotICAgIGlmIChzdHJjbXAocGFnZV91cmwsIGV3a192aWV3X3VybF9n
ZXQoYXBwX2RhdGEtPndlYnZpZXcpKSkKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJy
b3dzZXJfV2luZG93ICopZXZlbnRfaW5mbzsKKyAgICBpZiAoc3RyY21wKHBhZ2VfdXJsLCBld2tf
dmlld191cmxfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
LyogUmVtb3ZlIHByZXZpb3VzIGljb24gZnJvbSBVUkwgYmFyICovCi0gICAgRXZhc19PYmplY3Qg
Km9sZF9pY29uID0gZWxtX29iamVjdF9wYXJ0X2NvbnRlbnRfdW5zZXQoYXBwX2RhdGEtPnVybF9i
YXIsICJpY29uIik7CisgICAgRXZhc19PYmplY3QgKm9sZF9pY29uID0gZWxtX29iamVjdF9wYXJ0
X2NvbnRlbnRfdW5zZXQod2luZG93LT51cmxfYmFyLCAiaWNvbiIpOwogICAgIGlmIChvbGRfaWNv
bikgewogICAgICAgICBldmFzX29iamVjdF91bnJlZihvbGRfaWNvbik7CiAgICAgICAgIGV2YXNf
b2JqZWN0X2RlbChvbGRfaWNvbik7CkBAIC00NDEsMjIgKzQ0OCwyMiBAQCBvbl9mYXZpY29uX3Jl
Y2VpdmVkKGNvbnN0IGNoYXIgKnBhZ2VfdXJsLCBFdmFzX09iamVjdCAqaWNvbiwgdm9pZCAqZXZl
bnRfaW5mbykKICAgICAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X21pbl9zZXQoaWNvbiwgNDgs
IDI0KTsKICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbGVkX3NldChpY29uLCBFSU5BX0ZB
TFNFKTsKICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoaWNvbiwgMjQsIDAsIDI0
LCAyNCk7Ci0gICAgICAgIGVsbV9vYmplY3RfcGFydF9jb250ZW50X3NldChhcHBfZGF0YS0+dXJs
X2JhciwgImljb24iLCBpY29uKTsKKyAgICAgICAgZWxtX29iamVjdF9wYXJ0X2NvbnRlbnRfc2V0
KHdpbmRvdy0+dXJsX2JhciwgImljb24iLCBpY29uKTsKICAgICAgICAgZXZhc19vYmplY3RfcmVm
KGljb24pOwogICAgIH0KIH0KIAogc3RhdGljIHZvaWQKLW9uX3ZpZXdfaWNvbl9jaGFuZ2VkKHZv
aWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitv
bl92aWV3X2ljb25fY2hhbmdlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmll
dywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAo
QnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9
IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKICAgICAvKiBSZXRyaWV2ZSB0aGUgdmlldydz
IGZhdmljb24gKi8KLSAgICBFd2tfQ29udGV4dCAqY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRf
Z2V0KHdlYnZpZXcpOworICAgIEV3a19Db250ZXh0ICpjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4
dF9nZXQoZXdrX3ZpZXcpOwogICAgIEV3a19GYXZpY29uX0RhdGFiYXNlICppY29uX2RhdGFiYXNl
ID0gZXdrX2NvbnRleHRfZmF2aWNvbl9kYXRhYmFzZV9nZXQoY29udGV4dCk7CiAKLSAgICBjb25z
dCBjaGFyICpwYWdlX3VybCA9IGV3a192aWV3X3VybF9nZXQod2Vidmlldyk7Ci0gICAgRXZhcyAq
ZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHdlYnZpZXcpOwotICAgIGV3a19mYXZpY29uX2Rh
dGFiYXNlX2FzeW5jX2ljb25fZ2V0KGljb25fZGF0YWJhc2UsIHBhZ2VfdXJsLCBldmFzLCBvbl9m
YXZpY29uX3JlY2VpdmVkLCBhcHBfZGF0YSk7CisgICAgY29uc3QgY2hhciAqcGFnZV91cmwgPSBl
d2tfdmlld191cmxfZ2V0KGV3a192aWV3KTsKKyAgICBFdmFzICpldmFzID0gZXZhc19vYmplY3Rf
ZXZhc19nZXQoZXdrX3ZpZXcpOworICAgIGV3a19mYXZpY29uX2RhdGFiYXNlX2FzeW5jX2ljb25f
Z2V0KGljb25fZGF0YWJhc2UsIHBhZ2VfdXJsLCBldmFzLCBvbl9mYXZpY29uX3JlY2VpdmVkLCB3
aW5kb3cpOwogfQogCiBzdGF0aWMgaW50CkBAIC00NzcsNjMgKzQ4NCw2MyBAQCBxdWl0KEVpbmFf
Qm9vbCBzdWNjZXNzLCBjb25zdCBjaGFyICptc2cpCiBzdGF0aWMgdm9pZAogb25fdXJsX2Jhcl9h
Y3RpdmF0ZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqdXJsX2Jhciwgdm9pZCAqZXZl
bnRfaW5mbykKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5k
b3cgKil1c2VyX2RhdGE7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dp
bmRvdyAqKXVzZXJfZGF0YTsKIAogICAgIGNvbnN0IGNoYXIgKm1hcmt1cF91cmwgPSBlbG1fZW50
cnlfZW50cnlfZ2V0KHVybF9iYXIpOwogICAgIGNoYXIgKnVzZXJfdXJsID0gZWxtX2VudHJ5X21h
cmt1cF90b191dGY4KG1hcmt1cF91cmwpOwogICAgIGNoYXIgKnVybCA9IHVybF9mcm9tX3VzZXJf
aW5wdXQodXNlcl91cmwpOwotICAgIGV3a192aWV3X3VybF9zZXQoYXBwX2RhdGEtPndlYnZpZXcs
IHVybCk7CisgICAgZXdrX3ZpZXdfdXJsX3NldCh3aW5kb3ctPmV3a192aWV3LCB1cmwpOwogCiAg
ICAgZnJlZSh1c2VyX3VybCk7CiAgICAgZnJlZSh1cmwpOwogCiAgICAgLyogR2l2ZSBmb2N1cyBi
YWNrIHRvIHRoZSB2aWV3ICovCi0gICAgdmlld19mb2N1c19zZXQoYXBwX2RhdGEsIEVJTkFfVFJV
RSk7CisgICAgdmlld19mb2N1c19zZXQod2luZG93LCBFSU5BX1RSVUUpOwogfQogCiBzdGF0aWMg
dm9pZAogb25fdXJsX2Jhcl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKnVy
bF9iYXIsIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRh
ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5k
b3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICAvKiBHcmFiIGZvY3VzIGZy
b20gdGhlIHZpZXcgKi8KLSAgICBldmFzX29iamVjdF9mb2N1c19zZXQoYXBwX2RhdGEtPndlYnZp
ZXcsIEVJTkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmV3a192
aWV3LCBFSU5BX0ZBTFNFKTsKICAgICBlbG1fb2JqZWN0X2ZvY3VzX3NldCh1cmxfYmFyLCBFSU5B
X1RSVUUpOwogfQogCiBzdGF0aWMgdm9pZAogb25fYmFja19idXR0b25fY2xpY2tlZCh2b2lkICp1
c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpiYWNrX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKIHsK
LSAgICBCcm93c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2Rh
dGE7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJf
ZGF0YTsKIAotICAgIGV3a192aWV3X2JhY2soYXBwX2RhdGEtPndlYnZpZXcpOworICAgIGV3a192
aWV3X2JhY2sod2luZG93LT5ld2tfdmlldyk7CiAgICAgLyogVXBkYXRlIGJhY2sgYnV0dG9uIHN0
YXRlICovCi0gICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoYmFja19idXR0b24sICFld2tfdmll
d19iYWNrX3Bvc3NpYmxlKGFwcF9kYXRhLT53ZWJ2aWV3KSk7CisgICAgZWxtX29iamVjdF9kaXNh
YmxlZF9zZXQoYmFja19idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKHdpbmRvdy0+ZXdr
X3ZpZXcpKTsKIH0KIAogc3RhdGljIHZvaWQKIG9uX2ZvcndhcmRfYnV0dG9uX2NsaWNrZWQodm9p
ZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZm9yd2FyZF9idXR0b24sIHZvaWQgKmV2ZW50X2lu
Zm8pCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFwcF9kYXRhID0gKEJyb3dzZXJfV2luZG93ICop
dXNlcl9kYXRhOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cg
Kil1c2VyX2RhdGE7CiAKLSAgICBld2tfdmlld19mb3J3YXJkKGFwcF9kYXRhLT53ZWJ2aWV3KTsK
KyAgICBld2tfdmlld19mb3J3YXJkKHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIC8qIFVwZGF0ZSBm
b3J3YXJkIGJ1dHRvbiBzdGF0ZSAqLwotICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGZvcndh
cmRfYnV0dG9uLCAhZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShhcHBfZGF0YS0+d2Vidmlldykp
OworICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGZvcndhcmRfYnV0dG9uLCAhZXdrX3ZpZXdf
Zm9yd2FyZF9wb3NzaWJsZSh3aW5kb3ctPmV3a192aWV3KSk7CiB9CiAKIHN0YXRpYyB2b2lkCiBv
bl9yZWZyZXNoX2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKnJl
ZnJlc2hfYnV0dG9uLCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dzZXJfV2luZG93ICph
cHBfZGF0YSA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBCcm93c2VyX1dpbmRv
dyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCiAgICAgRXZhcyAqZXZh
cyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHJlZnJlc2hfYnV0dG9uKTsKICAgICBFaW5hX0Jvb2wg
Y3RybFByZXNzZWQgPSBldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXZhc19rZXlfbW9kaWZpZXJf
Z2V0KGV2YXMpLCAiQ29udHJvbCIpOwogICAgIGlmIChjdHJsUHJlc3NlZCkgewogICAgICAgICBp
bmZvKCJSZWxvYWRpbmcgYW5kIGJ5cGFzc2luZyBjYWNoZS4uLlxuIik7Ci0gICAgICAgIGV3a192
aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUoYXBwX2RhdGEtPndlYnZpZXcpOworICAgICAgICBld2tf
dmlld19yZWxvYWRfYnlwYXNzX2NhY2hlKHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGluZm8oIlJlbG9hZGluZy4uLlxuIik7Ci0gICAgICAgIGV3a192aWV3X3JlbG9h
ZChhcHBfZGF0YS0+d2Vidmlldyk7CisgICAgICAgIGV3a192aWV3X3JlbG9hZCh3aW5kb3ctPmV3
a192aWV3KTsKICAgICB9CiB9CiAKQEAgLTU1NSw5ICs1NjIsOSBAQCBvbl9va19jbGlja2VkKHZv
aWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHN0YXRp
YyB2b2lkCiBvbl9qYXZhc2NyaXB0X2FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0RGF0
YSwgY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0g
YnJvd3Nlcl92aWV3X2ZpbmQoc21hcnREYXRhLT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAq
d2luZG93ID0gd2luZG93X2ZpbmRfd2l0aF9ld2tfdmlldyhzbWFydERhdGEtPnNlbGYpOwogCi0g
ICAgRXZhc19PYmplY3QgKmFsZXJ0X3BvcHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPndpbmRv
dyk7CisgICAgRXZhc19PYmplY3QgKmFsZXJ0X3BvcHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ct
PmVsbV93aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGFsZXJ0
X3BvcHVwLCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBlbG1fb2Jq
ZWN0X3RleHRfc2V0KGFsZXJ0X3BvcHVwLCBtZXNzYWdlKTsKICAgICBlbG1fb2JqZWN0X3BhcnRf
dGV4dF9zZXQoYWxlcnRfcG9wdXAsICJ0aXRsZSx0ZXh0IiwgIkFsZXJ0Iik7CkBAIC01NzksMTEg
KzU4NiwxMSBAQCBvbl9qYXZhc2NyaXB0X2FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0
RGF0YSwgY29uc3QgY2hhciAqbWVzc2FnZSkKIHN0YXRpYyBFaW5hX0Jvb2wKIG9uX2phdmFzY3Jp
cHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIGNvbnN0IGNoYXIgKm1l
c3NhZ2UpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IGJyb3dzZXJfdmlld19maW5k
KHNtYXJ0RGF0YS0+c2VsZik7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19m
aW5kX3dpdGhfZXdrX3ZpZXcoc21hcnREYXRhLT5zZWxmKTsKIAogICAgIEVpbmFfQm9vbCBvayA9
IEVJTkFfRkFMU0U7CiAKLSAgICBFdmFzX09iamVjdCAqY29uZmlybV9wb3B1cCA9IGVsbV9wb3B1
cF9hZGQod2luZG93LT53aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICpjb25maXJtX3BvcHVwID0g
ZWxtX3BvcHVwX2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X3NpemVf
aGludF93ZWlnaHRfc2V0KGNvbmZpcm1fcG9wdXAsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElO
VF9FWFBBTkQpOwogICAgIGVsbV9vYmplY3RfdGV4dF9zZXQoY29uZmlybV9wb3B1cCwgbWVzc2Fn
ZSk7CiAgICAgZWxtX29iamVjdF9wYXJ0X3RleHRfc2V0KGNvbmZpcm1fcG9wdXAsICJ0aXRsZSx0
ZXh0IiwgIkNvbmZpcm1hdGlvbiIpOwpAQCAtNjExLDI5ICs2MTgsMjkgQEAgb25famF2YXNjcmlw
dF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0RGF0YSwgY29uc3QgY2hhciAqbWVz
c2FnZSkKIHN0YXRpYyBjb25zdCBjaGFyICoKIG9uX2phdmFzY3JpcHRfcHJvbXB0KEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNtYXJ0RGF0YSwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAq
ZGVmYXVsdF92YWx1ZSkKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gYnJvd3Nlcl92
aWV3X2ZpbmQoc21hcnREYXRhLT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0g
d2luZG93X2ZpbmRfd2l0aF9ld2tfdmlldyhzbWFydERhdGEtPnNlbGYpOwogCiAgICAgRWluYV9C
b29sIG9rID0gRUlOQV9GQUxTRTsKIAotICAgIEV2YXNfT2JqZWN0ICpwcm9tcHRfcG9wdXAgPSBl
bG1fcG9wdXBfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqcHJvbXB0X3Bv
cHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0
X3NpemVfaGludF93ZWlnaHRfc2V0KHByb21wdF9wb3B1cCwgRVZBU19ISU5UX0VYUEFORCwgRVZB
U19ISU5UX0VYUEFORCk7CiAgICAgZWxtX29iamVjdF9wYXJ0X3RleHRfc2V0KHByb21wdF9wb3B1
cCwgInRpdGxlLHRleHQiLCAiUHJvbXB0Iik7CiAKICAgICAvKiBQb3B1cCBDb250ZW50ICovCi0g
ICAgRXZhc19PYmplY3QgKmJveCA9IGVsbV9ib3hfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAgICBF
dmFzX09iamVjdCAqYm94ID0gZWxtX2JveF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBl
bG1fYm94X3BhZGRpbmdfc2V0KGJveCwgMCwgNCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50
X3dlaWdodF9zZXQoYm94LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKICAg
ICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KGJveCwgRVZBU19ISU5UX0ZJTEwsIEVW
QVNfSElOVF9GSUxMKTsKICAgICBldmFzX29iamVjdF9zaG93KGJveCk7CiAKLSAgICBFdmFzX09i
amVjdCAqcHJvbXB0ID0gZWxtX2xhYmVsX2FkZCh3aW5kb3ctPndpbmRvdyk7CisgICAgRXZhc19P
YmplY3QgKnByb21wdCA9IGVsbV9sYWJlbF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBl
bG1fb2JqZWN0X3RleHRfc2V0KHByb21wdCwgbWVzc2FnZSk7CiAgICAgZXZhc19vYmplY3Rfc2l6
ZV9oaW50X3dlaWdodF9zZXQocHJvbXB0LCBFVkFTX0hJTlRfRVhQQU5ELCAwLjApOwogICAgIGV2
YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQocHJvbXB0LCBFVkFTX0hJTlRfRklMTCwgMC41
KTsKICAgICBlbG1fYm94X3BhY2tfZW5kKGJveCwgcHJvbXB0KTsKICAgICBldmFzX29iamVjdF9z
aG93KHByb21wdCk7CiAKLSAgICBFdmFzX09iamVjdCAqZW50cnkgPSBlbG1fZW50cnlfYWRkKHdp
bmRvdy0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqZW50cnkgPSBlbG1fZW50cnlfYWRkKHdp
bmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAgZWxtX2VudHJ5X3Njcm9sbGFibGVfc2V0KGVudHJ5LCBF
SU5BX1RSVUUpOwogICAgIGVsbV9lbnRyeV9zaW5nbGVfbGluZV9zZXQoZW50cnksIEVJTkFfVFJV
RSk7CiAgICAgZWxtX2VudHJ5X3RleHRfc3R5bGVfdXNlcl9wdXNoKGVudHJ5LCAiREVGQVVMVD0n
Zm9udF9zaXplPTE4JyIpOwpAQCAtNjcwLDI1ICs2NzcsMjUgQEAgb25famF2YXNjcmlwdF9wcm9t
cHQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc21hcnREYXRhLCBjb25zdCBjaGFyICptZXNzYWdlLCBj
b25zdAogCiBzdGF0aWMgRWluYV9Cb29sIG9uX3dpbmRvd19nZW9tZXRyeV9nZXQoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QsIEV2YXNfQ29vcmQgKngsIEV2YXNfQ29vcmQgKnksIEV2YXNfQ29vcmQg
KndpZHRoLCBFdmFzX0Nvb3JkICpoZWlnaHQpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRv
dyA9IGJyb3dzZXJfdmlld19maW5kKHNkLT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2lu
ZG93ID0gd2luZG93X2ZpbmRfd2l0aF9ld2tfdmlldyhzZC0+c2VsZik7CiAKLSAgICBldmFzX29i
amVjdF9nZW9tZXRyeV9nZXQod2luZG93LT53aW5kb3csIHgsIHksIHdpZHRoLCBoZWlnaHQpOwor
ICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldCh3aW5kb3ctPmVsbV93aW5kb3csIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwogCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAogc3RhdGljIEVpbmFf
Qm9vbCBvbl93aW5kb3dfZ2VvbWV0cnlfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFz
X0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWln
aHQpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IGJyb3dzZXJfdmlld19maW5kKHNk
LT5zZWxmKTsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gd2luZG93X2ZpbmRfd2l0aF9l
d2tfdmlldyhzZC0+c2VsZik7CiAKLSAgICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+d2luZG93
LCB4LCB5KTsKLSAgICBldmFzX29iamVjdF9yZXNpemUod2luZG93LT53aW5kb3csIHdpZHRoLCBo
ZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X21vdmUod2luZG93LT5lbG1fd2luZG93LCB4LCB5KTsK
KyAgICBldmFzX29iamVjdF9yZXNpemUod2luZG93LT5lbG1fd2luZG93LCB3aWR0aCwgaGVpZ2h0
KTsKIAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBF
dmFzX09iamVjdCAqd2VidmlldzsKKyAgICBFdmFzX09iamVjdCAqZXdrX3ZpZXc7CiAgICAgRXZh
c19PYmplY3QgKnBlcm1pc3Npb25fcG9wdXA7CiB9IFBlcm1pc3Npb25EYXRhOwogCkBAIC03MDYs
MjAgKzcxMywyMCBAQCBvbl9mdWxsc2NyZWVuX2Rlbnkodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqb2JqLCB2b2lkICpldmVudF9pbmZvKQogewogICAgIFBlcm1pc3Npb25EYXRhICpwZXJt
aXNzaW9uX2RhdGEgPSAoUGVybWlzc2lvbkRhdGEgKil1c2VyX2RhdGE7CiAKLSAgICBld2tfdmll
d19mdWxsc2NyZWVuX2V4aXQocGVybWlzc2lvbl9kYXRhLT53ZWJ2aWV3KTsKKyAgICBld2tfdmll
d19mdWxsc2NyZWVuX2V4aXQocGVybWlzc2lvbl9kYXRhLT5ld2tfdmlldyk7CiAgICAgZXZhc19v
YmplY3RfZGVsKHBlcm1pc3Npb25fZGF0YS0+cGVybWlzc2lvbl9wb3B1cCk7CiAgICAgZnJlZShw
ZXJtaXNzaW9uX2RhdGEpOwogfQogCiBzdGF0aWMgRWluYV9Cb29sIG9uX2Z1bGxzY3JlZW5fZW50
ZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19TZWN1cml0eV9PcmlnaW4gKm9yaWdpbikK
IHsKLSAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gYnJvd3Nlcl92aWV3X2ZpbmQoc2QtPnNl
bGYpOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSB3aW5kb3dfZmluZF93aXRoX2V3a192
aWV3KHNkLT5zZWxmKTsKIAogICAgIC8qIEdvIGZ1bGxzY3JlZW4gKi8KLSAgICBlbG1fd2luX2Z1
bGxzY3JlZW5fc2V0KHdpbmRvdy0+d2luZG93LCBFSU5BX1RSVUUpOworICAgIGVsbV93aW5fZnVs
bHNjcmVlbl9zZXQod2luZG93LT5lbG1fd2luZG93LCBFSU5BX1RSVUUpOwogCiAgICAgLyogU2hv
dyB1c2VyIHBvcHVwICovCi0gICAgRXZhc19PYmplY3QgKnBlcm1pc3Npb25fcG9wdXAgPSBlbG1f
cG9wdXBfYWRkKHdpbmRvdy0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqcGVybWlzc2lvbl9w
b3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBldmFzX29iamVj
dF9zaXplX2hpbnRfd2VpZ2h0X3NldChwZXJtaXNzaW9uX3BvcHVwLCBFVkFTX0hJTlRfRVhQQU5E
LCBFVkFTX0hJTlRfRVhQQU5EKTsKIAogICAgIEVpbmFfU3RyYnVmICptZXNzYWdlID0gZWluYV9z
dHJidWZfbmV3KCk7CkBAIC03MzAsNyArNzM3LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBvbl9mdWxs
c2NyZWVuX2VudGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tfU2VjdXJpdHlfT3JpZ2kK
IAogICAgIC8qIFBvcHVwIGJ1dHRvbnMgKi8KICAgICBQZXJtaXNzaW9uRGF0YSAqcGVybWlzc2lv
bl9kYXRhID0gKFBlcm1pc3Npb25EYXRhICopbWFsbG9jKHNpemVvZihQZXJtaXNzaW9uRGF0YSkp
OwotICAgIHBlcm1pc3Npb25fZGF0YS0+d2VidmlldyA9IHdpbmRvdy0+d2VidmlldzsKKyAgICBw
ZXJtaXNzaW9uX2RhdGEtPmV3a192aWV3ID0gd2luZG93LT5ld2tfdmlldzsKICAgICBwZXJtaXNz
aW9uX2RhdGEtPnBlcm1pc3Npb25fcG9wdXAgPSBwZXJtaXNzaW9uX3BvcHVwOwogICAgIEV2YXNf
T2JqZWN0ICphY2NlcHRfYnV0dG9uID0gZWxtX2J1dHRvbl9hZGQocGVybWlzc2lvbl9wb3B1cCk7
CiAgICAgZWxtX29iamVjdF90ZXh0X3NldChhY2NlcHRfYnV0dG9uLCAiQWNjZXB0Iik7CkBAIC03
NDksMjIgKzc1NiwxNSBAQCBzdGF0aWMgRWluYV9Cb29sIG9uX2Z1bGxzY3JlZW5fZW50ZXIoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19TZWN1cml0eV9PcmlnaQogCiBzdGF0aWMgRWluYV9C
b29sIG9uX2Z1bGxzY3JlZW5fZXhpdChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKIHsKLSAgICBC
cm93c2VyX1dpbmRvdyAqd2luZG93ID0gYnJvd3Nlcl92aWV3X2ZpbmQoc2QtPnNlbGYpOworICAg
IEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSB3aW5kb3dfZmluZF93aXRoX2V3a192aWV3KHNkLT5z
ZWxmKTsKIAotICAgIGVsbV93aW5fZnVsbHNjcmVlbl9zZXQod2luZG93LT53aW5kb3csIEVJTkFf
RkFMU0UpOworICAgIGVsbV93aW5fZnVsbHNjcmVlbl9zZXQod2luZG93LT5lbG1fd2luZG93LCBF
SU5BX0ZBTFNFKTsKIAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXR5cGVkZWYgc3RydWN0
IHsKLSAgICBFdmFzX09iamVjdCAqcG9wdXA7Ci0gICAgRXdrX0F1dGhfUmVxdWVzdCAqcmVxdWVz
dDsKLSAgICBFdmFzX09iamVjdCAqdXNlcm5hbWVfZW50cnk7Ci0gICAgRXZhc19PYmplY3QgKnBh
c3N3b3JkX2VudHJ5OwotfSBBdXRoRGF0YTsKLQogc3RhdGljIHZvaWQKLWF1dGhfcG9wdXBfY2xv
c2UoQXV0aERhdGEgKmF1dGhfZGF0YSkKK2F1dGhfcG9wdXBfY2xvc2UoQXV0aF9EYXRhICphdXRo
X2RhdGEpCiB7CiAgICAgZXdrX29iamVjdF91bnJlZihhdXRoX2RhdGEtPnJlcXVlc3QpOwogICAg
IGV2YXNfb2JqZWN0X2RlbChhdXRoX2RhdGEtPnBvcHVwKTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBh
dXRoX3BvcHVwX2Nsb3NlKEF1dGhEYXRhICphdXRoX2RhdGEpCiBzdGF0aWMgdm9pZAogb25fYXV0
aF9jYW5jZWwodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqb2JqLCB2b2lkICpldmVudF9p
bmZvKQogewotICAgIEF1dGhEYXRhICphdXRoX2RhdGEgPSAoQXV0aERhdGEgKil1c2VyX2RhdGE7
CisgICAgQXV0aF9EYXRhICphdXRoX2RhdGEgPSAoQXV0aF9EYXRhICopdXNlcl9kYXRhOwogCiAg
ICAgZXdrX2F1dGhfcmVxdWVzdF9jYW5jZWwoYXV0aF9kYXRhLT5yZXF1ZXN0KTsKIApAQCAtNzg0
LDcgKzc4NCw3IEBAIG9uX2F1dGhfY2FuY2VsKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3Qg
Km9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHN0YXRpYyB2b2lkCiBvbl9hdXRoX29rKHZvaWQgKnVz
ZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBBdXRo
RGF0YSAqYXV0aF9kYXRhID0gKEF1dGhEYXRhICopdXNlcl9kYXRhOworICAgIEF1dGhfRGF0YSAq
YXV0aF9kYXRhID0gKEF1dGhfRGF0YSAqKXVzZXJfZGF0YTsKIAogICAgIGNvbnN0IGNoYXIgKnVz
ZXJuYW1lID0gZWxtX2VudHJ5X2VudHJ5X2dldChhdXRoX2RhdGEtPnVzZXJuYW1lX2VudHJ5KTsK
ICAgICBjb25zdCBjaGFyICpwYXNzd29yZCA9IGVsbV9lbnRyeV9lbnRyeV9nZXQoYXV0aF9kYXRh
LT5wYXNzd29yZF9lbnRyeSk7CkBAIC03OTksMTAgKzc5OSwxMCBAQCBvbl9hdXRoZW50aWNhdGlv
bl9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRf
aW5mbykKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNl
cl9kYXRhOwogICAgIEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3QgPSBld2tfb2JqZWN0X3JlZigo
RXdrX0F1dGhfUmVxdWVzdCAqKWV2ZW50X2luZm8pOwogCi0gICAgQXV0aERhdGEgKmF1dGhfZGF0
YSA9IChBdXRoRGF0YSAqKW1hbGxvYyhzaXplb2YoQXV0aERhdGEpKTsKKyAgICBBdXRoX0RhdGEg
KmF1dGhfZGF0YSA9IChBdXRoX0RhdGEgKiltYWxsb2Moc2l6ZW9mKEF1dGhfRGF0YSkpOwogICAg
IGF1dGhfZGF0YS0+cmVxdWVzdCA9IHJlcXVlc3Q7CiAKLSAgICBFdmFzX09iamVjdCAqYXV0aF9w
b3B1cCA9IGVsbV9wb3B1cF9hZGQod2luZG93LT53aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICph
dXRoX3BvcHVwID0gZWxtX3BvcHVwX2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIGF1dGhf
ZGF0YS0+cG9wdXAgPSBhdXRoX3BvcHVwOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWln
aHRfc2V0KGF1dGhfcG9wdXAsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwog
ICAgIGVsbV9vYmplY3RfcGFydF90ZXh0X3NldChhdXRoX3BvcHVwLCAidGl0bGUsdGV4dCIsICJB
dXRoZW50aWNhdGlvbiBSZXF1aXJlZCIpOwpAQCAtODE5LDggKzgxOSw4IEBAIG9uX2F1dGhlbnRp
Y2F0aW9uX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqb2JqLCB2b2lkICpl
dmVudF9pbmZvKQogICAgIEV2YXNfT2JqZWN0ICpsYWJlbCA9IGVsbV9sYWJlbF9hZGQoYXV0aF9w
b3B1cCk7CiAgICAgZWxtX2xhYmVsX2xpbmVfd3JhcF9zZXQobGFiZWwsIEVMTV9XUkFQX1dPUkQp
OwogICAgIEVpbmFfU3RyYnVmICphdXRoX3RleHQgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKLSAgICBj
b25zdCBjaGFyKiBob3N0ID0gZXdrX2F1dGhfcmVxdWVzdF9ob3N0X2dldChyZXF1ZXN0KTsKLSAg
ICBjb25zdCBjaGFyKiByZWFsbSA9IGV3a19hdXRoX3JlcXVlc3RfcmVhbG1fZ2V0KHJlcXVlc3Qp
OworICAgIGNvbnN0IGNoYXIgKmhvc3QgPSBld2tfYXV0aF9yZXF1ZXN0X2hvc3RfZ2V0KHJlcXVl
c3QpOworICAgIGNvbnN0IGNoYXIgKnJlYWxtID0gZXdrX2F1dGhfcmVxdWVzdF9yZWFsbV9nZXQo
cmVxdWVzdCk7CiAgICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50ZihhdXRoX3RleHQsICJBIHVz
ZXJuYW1lIGFuZCBwYXNzd29yZCBhcmUgYmVpbmcgcmVxdWVzdGVkIGJ5ICVzLiBUaGUgc2l0ZSBz
YXlzOiBcIiVzXCIiLCBob3N0LCByZWFsbSA/IHJlYWxtIDogIiIpOwogICAgIGVsbV9vYmplY3Rf
dGV4dF9zZXQobGFiZWwsIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQoYXV0aF90ZXh0KSk7CiAgICAg
ZWluYV9zdHJidWZfZnJlZShhdXRoX3RleHQpOwpAQCAtODk0LDEwICs4OTQsMTAgQEAgc3RhdGlj
IHZvaWQKIG9uX3Rvb2x0aXBfdGV4dF9zZXQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAq
b2JqLCB2b2lkICpldmVudF9pbmZvKQogewogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAo
QnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7Ci0gICAgY29uc3QgY2hhciogbWVzc2FnZSA9IChj
b25zdCBjaGFyKilldmVudF9pbmZvOworICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UgPSAoY29uc3Qg
Y2hhciopZXZlbnRfaW5mbzsKIAotICAgIGVsbV9vYmplY3RfdG9vbHRpcF90ZXh0X3NldCh3aW5k
b3ctPndlYnZpZXcsIG1lc3NhZ2UpOwotICAgIGVsbV9vYmplY3RfdG9vbHRpcF9zaG93KHdpbmRv
dy0+d2Vidmlldyk7CisgICAgZWxtX29iamVjdF90b29sdGlwX3RleHRfc2V0KHdpbmRvdy0+ZXdr
X3ZpZXcsIG1lc3NhZ2UpOworICAgIGVsbV9vYmplY3RfdG9vbHRpcF9zaG93KHdpbmRvdy0+ZXdr
X3ZpZXcpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtOTA1LDI5ICs5MDUsMjkgQEAgb25fdG9vbHRp
cF90ZXh0X3Vuc2V0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZl
bnRfaW5mbykKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93
ICopdXNlcl9kYXRhOwogCi0gICAgZWxtX29iamVjdF90b29sdGlwX3Vuc2V0KHdpbmRvdy0+d2Vi
dmlldyk7CisgICAgZWxtX29iamVjdF90b29sdGlwX3Vuc2V0KHdpbmRvdy0+ZXdrX3ZpZXcpOwog
fQogCiBzdGF0aWMgdm9pZAogb25faG9tZV9idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEs
IEV2YXNfT2JqZWN0ICpob21lX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBCcm93
c2VyX1dpbmRvdyAqYXBwX2RhdGEgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAg
QnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKIAot
ICAgIGV3a192aWV3X3VybF9zZXQoYXBwX2RhdGEtPndlYnZpZXcsIERFRkFVTFRfVVJMKTsKKyAg
ICBld2tfdmlld191cmxfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIERFRkFVTFRfVVJMKTsKIH0KIAog
c3RhdGljIHZvaWQKLW9uX3dpbmRvd19kZWxldGlvbih2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2Jq
ZWN0ICp3aW5kb3csIHZvaWQgKmV2ZW50X2luZm8pCitvbl93aW5kb3dfZGVsZXRpb24odm9pZCAq
dXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZWxtX3dpbmRvdywgdm9pZCAqZXZlbnRfaW5mbykKIHsK
LSAgICB3aW5kb3dfY2xvc2UoYnJvd3Nlcl93aW5kb3dfZmluZCh3aW5kb3cpKTsKKyAgICB3aW5k
b3dfY2xvc2Uod2luZG93X2ZpbmRfd2l0aF9lbG1fd2luZG93KGVsbV93aW5kb3cpKTsKIH0KIAog
c3RhdGljIEV2YXNfT2JqZWN0ICoKLWNyZWF0ZV90b29sYmFyX2J1dHRvbihFdmFzX09iamVjdCAq
d2luZG93LCBjb25zdCBjaGFyICppY29uX25hbWUpCitjcmVhdGVfdG9vbGJhcl9idXR0b24oRXZh
c19PYmplY3QgKmVsbV93aW5kb3csIGNvbnN0IGNoYXIgKmljb25fbmFtZSkKIHsKLSAgICBFdmFz
X09iamVjdCAqYnV0dG9uID0gZWxtX2J1dHRvbl9hZGQod2luZG93KTsKKyAgICBFdmFzX09iamVj
dCAqYnV0dG9uID0gZWxtX2J1dHRvbl9hZGQoZWxtX3dpbmRvdyk7CiAKLSAgICBFdmFzX09iamVj
dCAqaWNvbiA9IGVsbV9pY29uX2FkZCh3aW5kb3cpOworICAgIEV2YXNfT2JqZWN0ICppY29uID0g
ZWxtX2ljb25fYWRkKGVsbV93aW5kb3cpOwogICAgIGVsbV9pY29uX3N0YW5kYXJkX3NldChpY29u
LCBpY29uX25hbWUpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9tYXhfc2V0KGljb24sIFRP
T0xfQkFSX0lDT05fU0laRSwgVE9PTF9CQVJfSUNPTl9TSVpFKTsKICAgICBldmFzX29iamVjdF9j
b2xvcl9zZXQoaWNvbiwgNDQsIDQ0LCAxMDIsIDEyOCk7CkBAIC05NDAsMzMgKzk0MCwzMyBAQCBj
cmVhdGVfdG9vbGJhcl9idXR0b24oRXZhc19PYmplY3QgKndpbmRvdywgY29uc3QgY2hhciAqaWNv
bl9uYW1lKQogCiBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoY29uc3QgY2hh
ciAqdXJsLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgQnJvd3Nlcl9XaW5kb3cgKmFw
cF9kYXRhID0gbWFsbG9jKHNpemVvZihCcm93c2VyX1dpbmRvdykpOwotICAgIGlmICghYXBwX2Rh
dGEpIHsKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gbWFsbG9jKHNpemVvZihCcm93c2Vy
X1dpbmRvdykpOworICAgIGlmICghd2luZG93KSB7CiAgICAgICAgIGluZm8oIkVSUk9SOiBjb3Vs
ZCBub3QgY3JlYXRlIGJyb3dzZXIgd2luZG93LlxuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwog
ICAgIH0KIAogICAgIC8qIENyZWF0ZSB3aW5kb3cgKi8KLSAgICBhcHBfZGF0YS0+d2luZG93ID0g
ZWxtX3dpbl9hZGQoTlVMTCwgIm1pbmlicm93c2VyLXdpbmRvdyIsIEVMTV9XSU5fQkFTSUMpOwot
ICAgIGVsbV93aW5fdGl0bGVfc2V0KGFwcF9kYXRhLT53aW5kb3csIEFQUF9OQU1FKTsKLSAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndpbmRvdywgImRlbGV0ZSxy
ZXF1ZXN0Iiwgb25fd2luZG93X2RlbGV0aW9uLCAmYXBwX2RhdGEpOworICAgIHdpbmRvdy0+ZWxt
X3dpbmRvdyA9IGVsbV93aW5fYWRkKE5VTEwsICJtaW5pYnJvd3Nlci13aW5kb3ciLCBFTE1fV0lO
X0JBU0lDKTsKKyAgICBlbG1fd2luX3RpdGxlX3NldCh3aW5kb3ctPmVsbV93aW5kb3csIEFQUF9O
QU1FKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5lbG1fd2lu
ZG93LCAiZGVsZXRlLHJlcXVlc3QiLCBvbl93aW5kb3dfZGVsZXRpb24sICZ3aW5kb3cpOwogCiAg
ICAgLyogQ3JlYXRlIHdpbmRvdyBiYWNrZ3JvdW5kICovCi0gICAgRXZhc19PYmplY3QgKmJnID0g
ZWxtX2JnX2FkZChhcHBfZGF0YS0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAqYmcgPSBlbG1f
YmdfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAgZWxtX2JnX2NvbG9yX3NldChiZywgMTkz
LCAxOTIsIDE5MSk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoYmcsIEVW
QVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGVsbV93aW5fcmVzaXplX29i
amVjdF9hZGQoYXBwX2RhdGEtPndpbmRvdywgYmcpOworICAgIGVsbV93aW5fcmVzaXplX29iamVj
dF9hZGQod2luZG93LT5lbG1fd2luZG93LCBiZyk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhiZyk7
CiAKICAgICAvKiBDcmVhdGUgdmVydGljYWwgbGF5b3V0ICovCi0gICAgRXZhc19PYmplY3QgKnZl
cnRpY2FsX2xheW91dCA9IGVsbV9ib3hfYWRkKGFwcF9kYXRhLT53aW5kb3cpOworICAgIEV2YXNf
T2JqZWN0ICp2ZXJ0aWNhbF9sYXlvdXQgPSBlbG1fYm94X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cp
OwogICAgIGVsbV9ib3hfcGFkZGluZ19zZXQodmVydGljYWxfbGF5b3V0LCAwLCAyKTsKICAgICBl
dmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh2ZXJ0aWNhbF9sYXlvdXQsIEVWQVNfSElO
VF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGVsbV93aW5fcmVzaXplX29iamVjdF9h
ZGQoYXBwX2RhdGEtPndpbmRvdywgdmVydGljYWxfbGF5b3V0KTsKKyAgICBlbG1fd2luX3Jlc2l6
ZV9vYmplY3RfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdywgdmVydGljYWxfbGF5b3V0KTsKICAgICBl
dmFzX29iamVjdF9zaG93KHZlcnRpY2FsX2xheW91dCk7CiAKICAgICAvKiBDcmVhdGUgaG9yaXpv
bnRhbCBsYXlvdXQgZm9yIHRvcCBiYXIgKi8KLSAgICBFdmFzX09iamVjdCAqaG9yaXpvbnRhbF9s
YXlvdXQgPSBlbG1fYm94X2FkZChhcHBfZGF0YS0+d2luZG93KTsKKyAgICBFdmFzX09iamVjdCAq
aG9yaXpvbnRhbF9sYXlvdXQgPSBlbG1fYm94X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAg
IGVsbV9ib3hfaG9yaXpvbnRhbF9zZXQoaG9yaXpvbnRhbF9sYXlvdXQsIEVJTkFfVFJVRSk7CiAg
ICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoaG9yaXpvbnRhbF9sYXlvdXQsIEVW
QVNfSElOVF9FWFBBTkQsIDAuMCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3Nl
dChob3Jpem9udGFsX2xheW91dCwgRVZBU19ISU5UX0ZJTEwsIDAuMCk7CkBAIC05NzQsNTQgKzk3
NCw1NCBAQCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoY29uc3QgY2hhciAq
dXJsLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgZXZhc19vYmplY3Rfc2hvdyhob3Jpem9u
dGFsX2xheW91dCk7CiAKICAgICAvKiBDcmVhdGUgQmFjayBidXR0b24gKi8KLSAgICBhcHBfZGF0
YS0+YmFja19idXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24oYXBwX2RhdGEtPndpbmRvdywg
ImFycm93X2xlZnQiKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2Rh
dGEtPmJhY2tfYnV0dG9uLCAiY2xpY2tlZCIsIG9uX2JhY2tfYnV0dG9uX2NsaWNrZWQsIGFwcF9k
YXRhKTsKLSAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldChhcHBfZGF0YS0+YmFja19idXR0b24s
IEVJTkFfVFJVRSk7Ci0gICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoYXBwX2Rh
dGEtPmJhY2tfYnV0dG9uLCAwLjAsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGV2YXNfb2JqZWN0
X3NpemVfaGludF9hbGlnbl9zZXQoYXBwX2RhdGEtPmJhY2tfYnV0dG9uLCAwLjAsIDAuNSk7Ci0g
ICAgZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91dCwgYXBwX2RhdGEtPmJhY2tfYnV0
dG9uKTsKLSAgICBldmFzX29iamVjdF9zaG93KGFwcF9kYXRhLT5iYWNrX2J1dHRvbik7CisgICAg
d2luZG93LT5iYWNrX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbih3aW5kb3ctPmVsbV93
aW5kb3csICJhcnJvd19sZWZ0Iik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHdpbmRvdy0+YmFja19idXR0b24sICJjbGlja2VkIiwgb25fYmFja19idXR0b25fY2xpY2tlZCwg
d2luZG93KTsKKyAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldCh3aW5kb3ctPmJhY2tfYnV0dG9u
LCBFSU5BX1RSVUUpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KHdpbmRv
dy0+YmFja19idXR0b24sIDAuMCwgRVZBU19ISU5UX0VYUEFORCk7CisgICAgZXZhc19vYmplY3Rf
c2l6ZV9oaW50X2FsaWduX3NldCh3aW5kb3ctPmJhY2tfYnV0dG9uLCAwLjAsIDAuNSk7CisgICAg
ZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91dCwgd2luZG93LT5iYWNrX2J1dHRvbik7
CisgICAgZXZhc19vYmplY3Rfc2hvdyh3aW5kb3ctPmJhY2tfYnV0dG9uKTsKIAogICAgIC8qIENy
ZWF0ZSBGb3J3YXJkIGJ1dHRvbiAqLwotICAgIGFwcF9kYXRhLT5mb3J3YXJkX2J1dHRvbiA9IGNy
ZWF0ZV90b29sYmFyX2J1dHRvbihhcHBfZGF0YS0+d2luZG93LCAiYXJyb3dfcmlnaHQiKTsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPmZvcndhcmRfYnV0dG9u
LCAiY2xpY2tlZCIsIG9uX2ZvcndhcmRfYnV0dG9uX2NsaWNrZWQsIGFwcF9kYXRhKTsKLSAgICBl
bG1fb2JqZWN0X2Rpc2FibGVkX3NldChhcHBfZGF0YS0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJV
RSk7Ci0gICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoYXBwX2RhdGEtPmZvcndh
cmRfYnV0dG9uLCAwLjAsIEVWQVNfSElOVF9FWFBBTkQpOwotICAgIGV2YXNfb2JqZWN0X3NpemVf
aGludF9hbGlnbl9zZXQoYXBwX2RhdGEtPmZvcndhcmRfYnV0dG9uLCAwLjAsIDAuNSk7Ci0gICAg
ZWxtX2JveF9wYWNrX2VuZChob3Jpem9udGFsX2xheW91dCwgYXBwX2RhdGEtPmZvcndhcmRfYnV0
dG9uKTsKLSAgICBldmFzX29iamVjdF9zaG93KGFwcF9kYXRhLT5mb3J3YXJkX2J1dHRvbik7Cisg
ICAgd2luZG93LT5mb3J3YXJkX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbih3aW5kb3ct
PmVsbV93aW5kb3csICJhcnJvd19yaWdodCIpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAiY2xpY2tlZCIsIG9uX2ZvcndhcmRfYnV0
dG9uX2NsaWNrZWQsIHdpbmRvdyk7CisgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93
LT5mb3J3YXJkX2J1dHRvbiwgRUlOQV9UUlVFKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRf
d2VpZ2h0X3NldCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAwLjAsIEVWQVNfSElOVF9FWFBBTkQp
OworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQod2luZG93LT5mb3J3YXJkX2J1
dHRvbiwgMC4wLCAwLjUpOworICAgIGVsbV9ib3hfcGFja19lbmQoaG9yaXpvbnRhbF9sYXlvdXQs
IHdpbmRvdy0+Zm9yd2FyZF9idXR0b24pOworICAgIGV2YXNfb2JqZWN0X3Nob3cod2luZG93LT5m
b3J3YXJkX2J1dHRvbik7CiAKICAgICAvKiBDcmVhdGUgVVJMIGJhciAqLwotICAgIGFwcF9kYXRh
LT51cmxfYmFyID0gZWxtX2VudHJ5X2FkZChhcHBfZGF0YS0+d2luZG93KTsKLSAgICBlbG1fZW50
cnlfc2Nyb2xsYWJsZV9zZXQoYXBwX2RhdGEtPnVybF9iYXIsIEVJTkFfVFJVRSk7Ci0gICAgZWxt
X2VudHJ5X3Njcm9sbGJhcl9wb2xpY3lfc2V0KGFwcF9kYXRhLT51cmxfYmFyLCBFTE1fU0NST0xM
RVJfUE9MSUNZX09GRiwgRUxNX1NDUk9MTEVSX1BPTElDWV9PRkYpOwotICAgIGVsbV9lbnRyeV9z
aW5nbGVfbGluZV9zZXQoYXBwX2RhdGEtPnVybF9iYXIsIEVJTkFfVFJVRSk7Ci0gICAgZWxtX2Vu
dHJ5X2NucF9tb2RlX3NldChhcHBfZGF0YS0+dXJsX2JhciwgRUxNX0NOUF9NT0RFX1BMQUlOVEVY
VCk7Ci0gICAgZWxtX2VudHJ5X3RleHRfc3R5bGVfdXNlcl9wdXNoKGFwcF9kYXRhLT51cmxfYmFy
LCAiREVGQVVMVD0nZm9udF9zaXplPTE4JyIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZChhcHBfZGF0YS0+dXJsX2JhciwgImFjdGl2YXRlZCIsIG9uX3VybF9iYXJfYWN0aXZh
dGVkLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9k
YXRhLT51cmxfYmFyLCAiY2xpY2tlZCIsIG9uX3VybF9iYXJfY2xpY2tlZCwgYXBwX2RhdGEpOwot
ICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGFwcF9kYXRhLT51cmxfYmFyLCBF
VkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKLSAgICBldmFzX29iamVjdF9zaXpl
X2hpbnRfYWxpZ25fc2V0KGFwcF9kYXRhLT51cmxfYmFyLCBFVkFTX0hJTlRfRklMTCwgRVZBU19I
SU5UX0ZJTEwpOwotICAgIGVsbV9ib3hfcGFja19lbmQoaG9yaXpvbnRhbF9sYXlvdXQsIGFwcF9k
YXRhLT51cmxfYmFyKTsKLSAgICBldmFzX29iamVjdF9zaG93KGFwcF9kYXRhLT51cmxfYmFyKTsK
KyAgICB3aW5kb3ctPnVybF9iYXIgPSBlbG1fZW50cnlfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdyk7
CisgICAgZWxtX2VudHJ5X3Njcm9sbGFibGVfc2V0KHdpbmRvdy0+dXJsX2JhciwgRUlOQV9UUlVF
KTsKKyAgICBlbG1fZW50cnlfc2Nyb2xsYmFyX3BvbGljeV9zZXQod2luZG93LT51cmxfYmFyLCBF
TE1fU0NST0xMRVJfUE9MSUNZX09GRiwgRUxNX1NDUk9MTEVSX1BPTElDWV9PRkYpOworICAgIGVs
bV9lbnRyeV9zaW5nbGVfbGluZV9zZXQod2luZG93LT51cmxfYmFyLCBFSU5BX1RSVUUpOworICAg
IGVsbV9lbnRyeV9jbnBfbW9kZV9zZXQod2luZG93LT51cmxfYmFyLCBFTE1fQ05QX01PREVfUExB
SU5URVhUKTsKKyAgICBlbG1fZW50cnlfdGV4dF9zdHlsZV91c2VyX3B1c2god2luZG93LT51cmxf
YmFyLCAiREVGQVVMVD0nZm9udF9zaXplPTE4JyIpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZCh3aW5kb3ctPnVybF9iYXIsICJhY3RpdmF0ZWQiLCBvbl91cmxfYmFyX2FjdGl2
YXRlZCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93
LT51cmxfYmFyLCAiY2xpY2tlZCIsIG9uX3VybF9iYXJfY2xpY2tlZCwgd2luZG93KTsKKyAgICBl
dmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5kb3ctPnVybF9iYXIsIEVWQVNfSElO
VF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9h
bGlnbl9zZXQod2luZG93LT51cmxfYmFyLCBFVkFTX0hJTlRfRklMTCwgRVZBU19ISU5UX0ZJTEwp
OworICAgIGVsbV9ib3hfcGFja19lbmQoaG9yaXpvbnRhbF9sYXlvdXQsIHdpbmRvdy0+dXJsX2Jh
cik7CisgICAgZXZhc19vYmplY3Rfc2hvdyh3aW5kb3ctPnVybF9iYXIpOwogCiAgICAgLyogQ3Jl
YXRlIFJlZnJlc2ggYnV0dG9uICovCi0gICAgRXZhc19PYmplY3QgKnJlZnJlc2hfYnV0dG9uID0g
Y3JlYXRlX3Rvb2xiYXJfYnV0dG9uKGFwcF9kYXRhLT53aW5kb3csICJyZWZyZXNoIik7Ci0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHJlZnJlc2hfYnV0dG9uLCAiY2xpY2tlZCIs
IG9uX3JlZnJlc2hfYnV0dG9uX2NsaWNrZWQsIGFwcF9kYXRhKTsKKyAgICBFdmFzX09iamVjdCAq
cmVmcmVzaF9idXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24od2luZG93LT5lbG1fd2luZG93
LCAicmVmcmVzaCIpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChyZWZyZXNo
X2J1dHRvbiwgImNsaWNrZWQiLCBvbl9yZWZyZXNoX2J1dHRvbl9jbGlja2VkLCB3aW5kb3cpOwog
ICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KHJlZnJlc2hfYnV0dG9uLCAwLjAs
IEVWQVNfSElOVF9FWFBBTkQpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQo
cmVmcmVzaF9idXR0b24sIDEuMCwgMC41KTsKICAgICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250
YWxfbGF5b3V0LCByZWZyZXNoX2J1dHRvbik7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhyZWZyZXNo
X2J1dHRvbik7CiAKICAgICAvKiBDcmVhdGUgSG9tZSBidXR0b24gKi8KLSAgICBFdmFzX09iamVj
dCAqaG9tZV9idXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24oYXBwX2RhdGEtPndpbmRvdywg
ImhvbWUiKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoaG9tZV9idXR0b24s
ICJjbGlja2VkIiwgb25faG9tZV9idXR0b25fY2xpY2tlZCwgYXBwX2RhdGEpOworICAgIEV2YXNf
T2JqZWN0ICpob21lX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbih3aW5kb3ctPmVsbV93
aW5kb3csICJob21lIik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGhvbWVf
YnV0dG9uLCAiY2xpY2tlZCIsIG9uX2hvbWVfYnV0dG9uX2NsaWNrZWQsIHdpbmRvdyk7CiAgICAg
ZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQoaG9tZV9idXR0b24sIDAuMCwgRVZBU19I
SU5UX0VYUEFORCk7CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldChob21lX2J1
dHRvbiwgMS4wLCAwLjUpOwogICAgIGVsbV9ib3hfcGFja19lbmQoaG9yaXpvbnRhbF9sYXlvdXQs
IGhvbWVfYnV0dG9uKTsKICAgICBldmFzX29iamVjdF9zaG93KGhvbWVfYnV0dG9uKTsKIAotICAg
IC8qIENyZWF0ZSB3ZWJ2aWV3ICovCisgICAgLyogQ3JlYXRlIGV3a192aWV3ICovCiAgICAgRXdr
X1ZpZXdfU21hcnRfQ2xhc3MgKmV3a1ZpZXdDbGFzcyA9IG1pbmlCcm93c2VyVmlld1NtYXJ0Q2xh
c3MoKTsKICAgICBld2tWaWV3Q2xhc3MtPnJ1bl9qYXZhc2NyaXB0X2FsZXJ0ID0gb25famF2YXNj
cmlwdF9hbGVydDsKICAgICBld2tWaWV3Q2xhc3MtPnJ1bl9qYXZhc2NyaXB0X2NvbmZpcm0gPSBv
bl9qYXZhc2NyaXB0X2NvbmZpcm07CkBAIC0xMDMyLDUyICsxMDMyLDUyIEBAIHN0YXRpYyBCcm93
c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShjb25zdCBjaGFyICp1cmwsIGludCB3aWR0aCwgaW50
IGhlaWdodCkKICAgICBld2tWaWV3Q2xhc3MtPmZ1bGxzY3JlZW5fZXhpdCA9IG9uX2Z1bGxzY3Jl
ZW5fZXhpdDsKICAgICBld2tWaWV3Q2xhc3MtPndpbmRvd19jcmVhdGVfbmV3ID0gb25fbmV3X3dp
bmRvdzsKIAotICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChhcHBfZGF0YS0+
d2luZG93KTsKKyAgICBFdmFzICpldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQod2luZG93LT5l
bG1fd2luZG93KTsKICAgICBFdmFzX1NtYXJ0ICpzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3
KCZld2tWaWV3Q2xhc3MtPnNjKTsKLSAgICBhcHBfZGF0YS0+d2VidmlldyA9IGV3a192aWV3X3Nt
YXJ0X2FkZChldmFzLCBzbWFydCwgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7Ci0gICAgZXdr
X3ZpZXdfdGhlbWVfc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCBUSEVNRV9ESVIgIi9kZWZhdWx0LmVk
aiIpOworICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21h
cnQsIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkpOworICAgIGV3a192aWV3X3RoZW1lX3NldCh3
aW5kb3ctPmV3a192aWV3LCBUSEVNRV9ESVIgIi9kZWZhdWx0LmVkaiIpOwogICAgIGlmIChkZXZp
Y2VfcGl4ZWxfcmF0aW8pCi0gICAgICAgIGV3a192aWV3X2RldmljZV9waXhlbF9yYXRpb19zZXQo
YXBwX2RhdGEtPndlYnZpZXcsIChmbG9hdClkZXZpY2VfcGl4ZWxfcmF0aW8pOworICAgICAgICBl
d2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIChmbG9hdClk
ZXZpY2VfcGl4ZWxfcmF0aW8pOwogCi0gICAgRXdrX1NldHRpbmdzICpzZXR0aW5ncyA9IGV3a192
aWV3X3NldHRpbmdzX2dldChhcHBfZGF0YS0+d2Vidmlldyk7CisgICAgRXdrX1NldHRpbmdzICpz
ZXR0aW5ncyA9IGV3a192aWV3X3NldHRpbmdzX2dldCh3aW5kb3ctPmV3a192aWV3KTsKICAgICBl
d2tfc2V0dGluZ3NfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHNfYWxsb3dlZF9zZXQoc2V0dGlu
Z3MsIEVJTkFfVFJVRSk7CiAgICAgZXdrX3NldHRpbmdzX2VuY29kaW5nX2RldGVjdG9yX2VuYWJs
ZWRfc2V0KHNldHRpbmdzLCBlbmNvZGluZ19kZXRlY3Rvcl9lbmFibGVkKTsKICAgICBld2tfc2V0
dGluZ3NfZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkX3NldChzZXR0aW5ncywgZnJhbWVfZmxhdHRl
bmluZ19lbmFibGVkKTsKICAgICBld2tfc2V0dGluZ3NfZGV2ZWxvcGVyX2V4dHJhc19lbmFibGVk
X3NldChzZXR0aW5ncywgRUlOQV9UUlVFKTsKICAgICBld2tfc2V0dGluZ3NfcHJlZmVycmVkX21p
bmltdW1fY29udGVudHNfd2lkdGhfc2V0KHNldHRpbmdzLCAwKTsKIAotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgImF1dGhlbnRpY2F0aW9uLHJl
cXVlc3QiLCBvbl9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0LCBhcHBfZGF0YSk7Ci0gICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiY2xvc2Usd2luZG93
Iiwgb25fY2xvc2Vfd2luZG93LCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiZG93bmxvYWQsZmFpbGVkIiwgb25fZG93bmxv
YWRfZmFpbGVkLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KGFwcF9kYXRhLT53ZWJ2aWV3LCAiZG93bmxvYWQsZmluaXNoZWQiLCBvbl9kb3dubG9hZF9maW5p
c2hlZCwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBf
ZGF0YS0+d2VidmlldywgImRvd25sb2FkLHJlcXVlc3QiLCBvbl9kb3dubG9hZF9yZXF1ZXN0LCBh
cHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53
ZWJ2aWV3LCAiZmlsZSxjaG9vc2VyLHJlcXVlc3QiLCBvbl9maWxlX2Nob29zZXJfcmVxdWVzdCwg
YXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+
d2VidmlldywgImljb24sY2hhbmdlZCIsIG9uX3ZpZXdfaWNvbl9jaGFuZ2VkLCBhcHBfZGF0YSk7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAi
bG9hZCxlcnJvciIsIG9uX2Vycm9yLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAibG9hZCxwcm9ncmVzcyIsIG9uX3Byb2dy
ZXNzLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9k
YXRhLT53ZWJ2aWV3LCAidGl0bGUsY2hhbmdlZCIsIG9uX3RpdGxlX2NoYW5nZWQsIGFwcF9kYXRh
KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcs
ICJ1cmwsY2hhbmdlZCIsIG9uX3VybF9jaGFuZ2VkLCBhcHBfZGF0YSk7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCAiYmFjayxmb3J3YXJkLGxp
c3QsY2hhbmdlZCIsIG9uX2JhY2tfZm9yd2FyZF9saXN0X2NoYW5nZWQsIGFwcF9kYXRhKTsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoYXBwX2RhdGEtPndlYnZpZXcsICJ0b29s
dGlwLHRleHQsc2V0Iiwgb25fdG9vbHRpcF90ZXh0X3NldCwgYXBwX2RhdGEpOwotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgInRvb2x0aXAsdGV4
dCx1bnNldCIsIG9uX3Rvb2x0aXBfdGV4dF91bnNldCwgYXBwX2RhdGEpOwotCi0gICAgZXZhc19v
YmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGFwcF9kYXRhLT53ZWJ2aWV3LCBFVkFTX0NBTExCQUNL
X0tFWV9ET1dOLCBvbl9rZXlfZG93biwgYXBwX2RhdGEpOwotICAgIGV2YXNfb2JqZWN0X2V2ZW50
X2NhbGxiYWNrX2FkZChhcHBfZGF0YS0+d2VidmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9ET1dO
LCBvbl9tb3VzZV9kb3duLCBhcHBfZGF0YSk7Ci0KLSAgICBldmFzX29iamVjdF9zaXplX2hpbnRf
d2VpZ2h0X3NldChhcHBfZGF0YS0+d2VidmlldywgRVZBU19ISU5UX0VYUEFORCwgRVZBU19ISU5U
X0VYUEFORCk7Ci0gICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X2FsaWduX3NldChhcHBfZGF0YS0+
d2VidmlldywgRVZBU19ISU5UX0ZJTEwsIEVWQVNfSElOVF9GSUxMKTsKLSAgICBlbG1fYm94X3Bh
Y2tfZW5kKHZlcnRpY2FsX2xheW91dCwgYXBwX2RhdGEtPndlYnZpZXcpOwotICAgIGV2YXNfb2Jq
ZWN0X3Nob3coYXBwX2RhdGEtPndlYnZpZXcpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiYXV0aGVudGljYXRpb24scmVxdWVzdCIsIG9uX2F1
dGhlbnRpY2F0aW9uX3JlcXVlc3QsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJjbG9zZSx3aW5kb3ciLCBvbl9jbG9zZV93aW5k
b3csIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+
ZXdrX3ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCBvbl9kb3dubG9hZF9mYWlsZWQsIHdpbmRvdyk7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJk
b3dubG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25sb2FkX2ZpbmlzaGVkLCB3aW5kb3cpOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiZG93bmxvYWQs
cmVxdWVzdCIsIG9uX2Rvd25sb2FkX3JlcXVlc3QsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJmaWxlLGNob29zZXIscmVxdWVz
dCIsIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiaWNvbixjaGFuZ2VkIiwgb25fdmll
d19pY29uX2NoYW5nZWQsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJsb2FkLGVycm9yIiwgb25fZXJyb3IsIHdpbmRvdyk7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJsb2Fk
LHByb2dyZXNzIiwgb25fcHJvZ3Jlc3MsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwgb25fdGl0bGVf
Y2hhbmdlZCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2lu
ZG93LT5ld2tfdmlldywgInVybCxjaGFuZ2VkIiwgb25fdXJsX2NoYW5nZWQsIHdpbmRvdyk7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJiYWNr
LGZvcndhcmQsbGlzdCxjaGFuZ2VkIiwgb25fYmFja19mb3J3YXJkX2xpc3RfY2hhbmdlZCwgd2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmll
dywgInRvb2x0aXAsdGV4dCxzZXQiLCBvbl90b29sdGlwX3RleHRfc2V0LCB3aW5kb3cpOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAidG9vbHRp
cCx0ZXh0LHVuc2V0Iiwgb25fdG9vbHRpcF90ZXh0X3Vuc2V0LCB3aW5kb3cpOworCisgICAgZXZh
c19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsIEVWQVNfQ0FMTEJB
Q0tfS0VZX0RPV04sIG9uX2tleV9kb3duLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X2V2ZW50
X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04s
IG9uX21vdXNlX2Rvd24sIHdpbmRvdyk7CisKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2Vp
Z2h0X3NldCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQ
QU5EKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+ZXdrX3Zp
ZXcsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CisgICAgZWxtX2JveF9wYWNrX2Vu
ZCh2ZXJ0aWNhbF9sYXlvdXQsIHdpbmRvdy0+ZXdrX3ZpZXcpOworICAgIGV2YXNfb2JqZWN0X3No
b3cod2luZG93LT5ld2tfdmlldyk7CiAKICAgICBpZiAodXJsKQotICAgICAgICBld2tfdmlld191
cmxfc2V0KGFwcF9kYXRhLT53ZWJ2aWV3LCB1cmwpOworICAgICAgICBld2tfdmlld191cmxfc2V0
KHdpbmRvdy0+ZXdrX3ZpZXcsIHVybCk7CiAKLSAgICBldmFzX29iamVjdF9yZXNpemUoYXBwX2Rh
dGEtPndpbmRvdywgd2lkdGggPyB3aWR0aCA6IHdpbmRvd193aWR0aCwgaGVpZ2h0ID8gaGVpZ2h0
IDogd2luZG93X2hlaWdodCk7Ci0gICAgZXZhc19vYmplY3Rfc2hvdyhhcHBfZGF0YS0+d2luZG93
KTsKKyAgICBldmFzX29iamVjdF9yZXNpemUod2luZG93LT5lbG1fd2luZG93LCB3aWR0aCA/IHdp
ZHRoIDogd2luZG93X3dpZHRoLCBoZWlnaHQgPyBoZWlnaHQgOiB3aW5kb3dfaGVpZ2h0KTsKKyAg
ICBldmFzX29iamVjdF9zaG93KHdpbmRvdy0+ZWxtX3dpbmRvdyk7CiAKLSAgICB2aWV3X2ZvY3Vz
X3NldChhcHBfZGF0YSwgRUlOQV9UUlVFKTsKKyAgICB2aWV3X2ZvY3VzX3NldCh3aW5kb3csIEVJ
TkFfVFJVRSk7CiAKLSAgICByZXR1cm4gYXBwX2RhdGE7CisgICAgcmV0dXJuIHdpbmRvdzsKIH0K
IAogc3RhdGljIHZvaWQK
</data>

          </attachment>
      

    </bug>

</bugzilla>