<?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>66293</bug_id>
          
          <creation_ts>2011-08-16 05:26:19 -0700</creation_ts>
          <short_desc>[EFL] Fix and update doxygen documentation for ewk_view</short_desc>
          <delta_ts>2011-08-20 22:28:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</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>0</everconfirmed>
          <reporter name="Grzegorz Czajkowski">g.czajkowski</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451564</commentid>
    <comment_count>0</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-16 05:26:19 -0700</bug_when>
    <thetext>This patch
- fixes method descriptions,
- adds briefs for structure and typdef,
- removes dots from descriptions of parameter and return command (see EFL&apos;s documentation),
- move includes and defines below a brief of ewk_view.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451566</commentid>
    <comment_count>1</comment_count>
      <attachid>104029</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-16 05:31:18 -0700</bug_when>
    <thetext>Created attachment 104029
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451688</commentid>
    <comment_count>2</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-08-16 09:55:23 -0700</bug_when>
    <thetext>Could you please try splitting this into multiple patches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452177</commentid>
    <comment_count>3</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-17 02:16:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Could you please try splitting this into multiple patches?

I agree with you that this patch is huge. What is your proposition to splitting this patch? What will you say about:

patch #1 - changes in ewk_view.cpp + ChangeLog
patch #2 - changes in ewk_view.h (typedefs and structs description) + ChangeLog
patch #3 - API documentation part 1 + ChangeLog (ewk_view.h)
patch #4 - API documentation part 2 (settings) + ChangeLog (ewk_view.h)

These patches will be related with the same bug, they will have the same ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452238</commentid>
    <comment_count>4</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-08-17 07:48:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Could you please try splitting this into multiple patches?
&gt; 
&gt; I agree with you that this patch is huge. What is your proposition to splitting this patch? What will you say about:
&gt; 
&gt; patch #1 - changes in ewk_view.cpp + ChangeLog
&gt; patch #2 - changes in ewk_view.h (typedefs and structs description) + ChangeLog
&gt; patch #3 - API documentation part 1 + ChangeLog (ewk_view.h)
&gt; patch #4 - API documentation part 2 (settings) + ChangeLog (ewk_view.h)
&gt; 
&gt; These patches will be related with the same bug, they will have the same 
&gt; ChangeLog.
&gt;

Looks like a plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452245</commentid>
    <comment_count>5</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-17 07:58:52 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; Could you please try splitting this into multiple patches?
&gt; &gt; 
&gt; &gt; I agree with you that this patch is huge. What is your proposition to splitting this patch? What will you say about:
&gt; &gt; 
&gt; &gt; patch #1 - changes in ewk_view.cpp + ChangeLog
&gt; &gt; patch #2 - changes in ewk_view.h (typedefs and structs description) + ChangeLog
&gt; &gt; patch #3 - API documentation part 1 + ChangeLog (ewk_view.h)
&gt; &gt; patch #4 - API documentation part 2 (settings) + ChangeLog (ewk_view.h)
&gt; &gt; 
&gt; &gt; These patches will be related with the same bug, they will have the same 
&gt; &gt; ChangeLog.
&gt; &gt;
&gt; 
&gt; Looks like a plan.

It&apos;s only proposition :) I didn&apos;t split a patch into smaller ones before. I don&apos;t know what are general rules for that. Have you ever experienced similar case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453683</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-19 00:46:17 -0700</bug_when>
    <thetext>Hello Kent,

First of all, sorry for adding CC. I have a question.

Grzegorz refines descriptions of ewk_view&apos;s APIs. However, this patch is a little huge. I&apos;m not sure if we should split this patch into smaller ones. Should this patch be splited into more smaller patches ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453692</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-19 01:06:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Hello Kent,
&gt; 
&gt; First of all, sorry for adding CC. I have a question.
&gt; 
&gt; Grzegorz refines descriptions of ewk_view&apos;s APIs. However, this patch is a little huge. I&apos;m not sure if we should split this patch into smaller ones. Should this patch be splited into more smaller patches ?

We should reduce the patch size as possible in general.
It seems we can split this patch easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453696</commentid>
    <comment_count>8</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-19 01:35:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Hello Kent,
&gt; &gt; 
&gt; &gt; First of all, sorry for adding CC. I have a question.
&gt; &gt; 
&gt; &gt; Grzegorz refines descriptions of ewk_view&apos;s APIs. However, this patch is a little huge. I&apos;m not sure if we should split this patch into smaller ones. Should this patch be splited into more smaller patches ?
&gt; 
&gt; We should reduce the patch size as possible in general.
&gt; It seems we can split this patch easily.

Ok, I will guide we should not make huge patch regardless patch is major or minor in future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453709</commentid>
    <comment_count>9</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-19 02:00:38 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Hello Kent,
&gt; &gt; 
&gt; &gt; First of all, sorry for adding CC. I have a question.
&gt; &gt; 
&gt; &gt; Grzegorz refines descriptions of ewk_view&apos;s APIs. However, this patch is a little huge. I&apos;m not sure if we should split this patch into smaller ones. Should this patch be splited into more smaller patches ?
&gt; 
&gt; We should reduce the patch size as possible in general.
&gt; It seems we can split this patch easily.

Do you mean that I should split the patch into the few bugs? Or should I attach multiple patches to this bug? If second what to do with ChageLog? Does the same ChangeLog should be attached to each patch? (the most changes are included in ewk_view.h)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453714</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-19 02:17:22 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Do you mean that I should split the patch into the few bugs? Or should I attach multiple patches to this bug? If second what to do with ChageLog? Does the same ChangeLog should be attached to each patch? (the most changes are included in ewk_view.h)

Both are ok.  But many reviewers prefer one patch per one bug.
Each patch should have its ChangeLog anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453774</commentid>
    <comment_count>11</comment_count>
      <attachid>104497</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-19 06:05:42 -0700</bug_when>
    <thetext>Created attachment 104497
patch  #1 (changes in ewk_view.cpp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453778</commentid>
    <comment_count>12</comment_count>
      <attachid>104499</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-19 06:16:07 -0700</bug_when>
    <thetext>Created attachment 104499
patch  #2 (changes in ewk_view.h) - typedefs and structs descriptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453780</commentid>
    <comment_count>13</comment_count>
      <attachid>104500</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-19 06:18:09 -0700</bug_when>
    <thetext>Created attachment 104500
patch  #3 (changes in ewk_view.h) - API descriptions part1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453781</commentid>
    <comment_count>14</comment_count>
      <attachid>104501</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-19 06:18:54 -0700</bug_when>
    <thetext>Created attachment 104501
patch  #4 (changes in ewk_view.h) - API descriptions part2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453805</commentid>
    <comment_count>15</comment_count>
      <attachid>104497</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 07:12:45 -0700</bug_when>
    <thetext>Comment on attachment 104497
patch  #1 (changes in ewk_view.cpp)

Clearing flags on attachment: 104497

Committed r93401: &lt;http://trac.webkit.org/changeset/93401&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454379</commentid>
    <comment_count>16</comment_count>
      <attachid>104499</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-20 21:50:35 -0700</bug_when>
    <thetext>Comment on attachment 104499
patch  #2 (changes in ewk_view.h) - typedefs and structs descriptions

Clearing flags on attachment: 104499

Committed r93485: &lt;http://trac.webkit.org/changeset/93485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454381</commentid>
    <comment_count>17</comment_count>
      <attachid>104500</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-20 22:14:20 -0700</bug_when>
    <thetext>Comment on attachment 104500
patch  #3 (changes in ewk_view.h) - API descriptions part1

Clearing flags on attachment: 104500

Committed r93486: &lt;http://trac.webkit.org/changeset/93486&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454384</commentid>
    <comment_count>18</comment_count>
      <attachid>104501</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-20 22:27:55 -0700</bug_when>
    <thetext>Comment on attachment 104501
patch  #4 (changes in ewk_view.h) - API descriptions part2

Clearing flags on attachment: 104501

Committed r93488: &lt;http://trac.webkit.org/changeset/93488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454385</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-20 22:28:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104029</attachid>
            <date>2011-08-16 05:31:18 -0700</date>
            <delta_ts>2011-08-19 06:05:42 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>ewk_view_doxygen_doc.patch</filename>
            <type>text/plain</type>
            <size>98246</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBiNWEzMmUyLi43YTc5MzFjIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTEtMDgtMTEgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdl
biBkb2N1bWVudGF0aW9uIGZvciBld2tfdmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggbWV0aG9kIGRlc2NyaXB0aW9ucywgYWRkIGJyaWVmcyBm
b3Igc3RydWN0dXJlIGFuZCB0eXBkZWYsCisgICAgICAgIHJlbW92ZSBkb3RzIGZyb20gZGVzY3Jp
cHRpb25zIG9mIHBhcmFtcyBhbmQgcmV0dXJuIGNvbW1hbmQgKHNlZSBFRkwncyBkb2N1bWVudGF0
aW9uKSwKKyAgICAgICAgbW92ZSBpbmNsdWRlcyBhbmQgZGVmaW5lcyBiZWxvdyBhIGJyaWVmIG9m
IGV3a192aWV3LmguCisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAqIGV3
ay9ld2tfdmlldy5oOgorCiAyMDExLTA4LTEwICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFq
a293c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJldHVybiBmcm9tIF9ld2tfdmll
d19zbWFydF9hZGQgaWYgc21hcnQgZGF0YSBjYW4gbm90IGJlIGFsbG9jYXRlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKaW5kZXggOWUzNGZlNi4uNzQ3ZmY1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCkBAIC03Myw2ICs3MywxMiBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IEVX
S19WSUVXX1NDUk9MTFNfU0laRV9JTklUSUFMID0gODsKIHN0YXRpYyBjb25zdCBzaXplX3QgRVdL
X1ZJRVdfU0NST0xMU19TSVpFX1NURVAgPSAyOwogc3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklF
V19TQ1JPTExTX1NJWkVfTUFYX0ZSRUUgPSAzMjsKIAorLyoqCisgKiBAYnJpZWYgUHJpdmF0ZSBk
YXRhIHRoYXQgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IEVGTCBXZWJLaXQKKyAqIGFuZCBzaG91bGQg
bmV2ZXIgYmUgbW9kaWZpZWQgZnJvbSBvdXRzaWRlLgorICoKKyAqIEBpbnRlcm5hbAorICovCiBz
dHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgV2ViQ29yZTo6UGFnZSAqcGFnZTsK
ICAgICBXZWJDb3JlOjpTZXR0aW5ncyAqcGFnZV9zZXR0aW5nczsKQEAgLTI0NDUsNiArMjQ1MSwx
NCBAQCB2b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpz
ZCkKICAgICBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChwcml2KTsKIH0KIAorLyoqCisgKiBAYnJp
ZWYgU3RydWN0dXJlIHRoYXQga2VlcHMgdGhlIHBhaW50IGNvbnRleHQuCisgKgorICogQGludGVy
bmFsCisgKgorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZv
ciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNr
aW5nIHN0b3JlLgorICovCiBzdHJ1Y3QgX0V3a19WaWV3X1BhaW50X0NvbnRleHQgewogICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCAqZ2M7CiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCBiMmQ5NGVkLi5mMTAyYjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtMTgsMjYgKzE4LDEyIEBACiAgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCiAqLwogCi0jaWZuZGVmIGV3a192aWV3X2gKLSNkZWZpbmUgZXdrX3Zp
ZXdfaAotCi0jaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCi0jaW5jbHVkZSAiZXdrX2hpc3RvcnkuaCIK
LSNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzLmgiCi0KLSNpbmNsdWRlIDxFdmFzLmg+Ci0j
aW5jbHVkZSA8Y2Fpcm8uaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNl
bmRpZgotCiAvKioKLSAqIEBmaWxlICBld2tfdmlldy5oCi0gKiBAYnJpZWYgV2ViS2l0IG1haW4g
c21hcnQgb2JqZWN0LgorICogQGZpbGUgICAgZXdrX3ZpZXcuaAorICogQGJyaWVmICAgV2ViS2l0
IG1haW4gc21hcnQgb2JqZWN0LgogICoKLSAqIFRoaXMgb2JqZWN0IGlzIHRoZSBoaWdoIGxldmVs
IGFjY2VzcyB0byBXZWJLaXQtRUZMIGJyb3dzZXIKLSAqIGNvbXBvbmVudC4gSXQgaXMgcmVzcG9u
c2libGUgZm9yIG1hbmFnaW5nIHRoZSBtYWluIGZyYW1lIGFuZCBvdGhlcgorICogVGhpcyBvYmpl
Y3QgYWxsb3dzIHRoZSBoaWdoIGxldmVsIGFjY2VzcyB0byBXZWJLaXQtRUZMIGNvbXBvbmVudC4K
KyAqIEl0IGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgbWFpbiBmcmFtZSBhbmQgb3Ro
ZXIKICAqIGNyaXRpY2FsIHJlc291cmNlcy4KICAqCiAgKiBFdmVyeSBld2tfdmlldyBoYXMgYXQg
bGVhc3Qgb25lIGZyYW1lLCBjYWxsZWQgIm1haW4gZnJhbWUiIGFuZApAQCAtOTQsMTggKzgwLDMy
IEBAIGV4dGVybiAiQyIgewogICogIC0gInpvb20sYW5pbWF0ZWQsZW5kIiwgdm9pZDogcmVxdWVz
dGVkIGFuaW1hdGVkIHpvb20gaXMgZmluaXNoZWQuCiAgKi8KIAorI2lmbmRlZiBld2tfdmlld19o
CisjZGVmaW5lIGV3a192aWV3X2gKKworI2luY2x1ZGUgImV3a19mcmFtZS5oIgorI2luY2x1ZGUg
ImV3a19oaXN0b3J5LmgiCisjaW5jbHVkZSAiZXdrX3dpbmRvd19mZWF0dXJlcy5oIgorCisjaW5j
bHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9F
d2tfVmlld19TbWFydF9EYXRhLgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEg
RXdrX1ZpZXdfU21hcnRfRGF0YTsKIAotLyoqCi0gKiBFd2sgdmlldydzIGNsYXNzLCB0byBiZSBv
dmVycmlkZGVuIGJ5IHN1Yi1jbGFzc2VzLgotICovCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBm
b3IgQGEgX0V3a19WaWV3X1NtYXJ0X0NsYXNzLgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOworLy8vIEV3ayB2aWV3J3MgY2xhc3MsIHRv
IGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0Ns
YXNzIHsKLSAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZy
ZWUgdG8gYmUgY2hhbmdlZC4gKi8KKyAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IEFsbCBi
dXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KICAgICB1bnNpZ25lZCBsb25nIHZl
cnNpb247CiAKICAgICBFdmFzX09iamVjdCAqKCp3aW5kb3dfY3JlYXRlKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0IEV3a19XaW5kb3dfRmVhdHVy
ZXMgKndpbmRvd19mZWF0dXJlcyk7IC8qKjwgY3JlYXRlcyBhIG5ldyB3aW5kb3csIHJlcXVlc3Rl
ZCBieSB3ZWJraXQgKi8KLSAgICB2b2lkICgqd2luZG93X2Nsb3NlKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCk7IC8qKjwgY3JlYXRlcyBhIG5ldyB3aW5kb3csIHJlcXVlc3RlZCBieSB3ZWJraXQg
Ki8KKyAgICB2b2lkICgqd2luZG93X2Nsb3NlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7IC8q
KjwgY2xvc2VzIGEgd2luZG93ICovCiAgICAgLy8gaG9va3MgdG8gYWxsb3cgZGlmZmVyZW50IGJh
Y2tpbmcgc3RvcmVzCiAgICAgRXZhc19PYmplY3QgKigqYmFja2luZ19zdG9yZV9hZGQpKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkKTsgLyoqPCBtdXN0IGJlIGRlZmluZWQgKi8KICAgICBFaW5hX0Jv
b2wgKCpzY3JvbGxzX3Byb2Nlc3MpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsgLyoqPCBtdXN0
IGJlIGRlZmluZWQgKi8KQEAgLTE0NiwxMyArMTQ2LDE3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21h
cnRfQ2xhc3MgewogICAgIEVpbmFfQm9vbCAoKm5hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKShF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgKnJlcXVl
c3QpOwogfTsKIAotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDFVTCAvKiog
dGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmllbGQgaW4gdGhl
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSAqLworLyoqCisgKiBUaGUgdmVyc2lvbiB5
b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAorICogaW4gdGhlIEBhIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KKyAqLworI2RlZmluZSBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OIDFVTAogCiAvKioKLSAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmll
d19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKiBJbml0aWFsaXplcyBhIHdob2xlIEBhIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqCiAgKiBAcGFyYW0gc21hcnRfY2xhc3NfaW5p
dCBpbml0aWFsaXplciB0byB1c2UgZm9yIHRoZSAiYmFzZSIgZmllbGQKLSAqIChFdmFzX1NtYXJ0
X0NsYXNzKS4KKyAqIEBhIEV2YXNfU21hcnRfQ2xhc3MKICAqCiAgKiBAc2VlIEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfTlVMTAogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZF
UlNJT04KQEAgLTE2MSw3ICsxNjUsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsK
ICNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21h
cnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCi0gKiBJbml0aWFsaXplciB0byB6ZXJv
IGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgorICogSW5pdGlhbGl6ZXMg
dG8gemVybyBhIHdob2xlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqCiAg
KiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tfVklF
V19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgpAQCAtMTcwLDEwICsxNzQsMTEgQEAgc3Ry
dWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfTlVMTCBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1NfSU5J
VF9OVUxMKQogCiAvKioKLSAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19T
bWFydF9DbGFzcyBzdHJ1Y3R1cmUgYW5kIHNldCB2ZXJzaW9uLgorICogSW5pdGlhbGl6ZXMgdG8g
emVybyBhIHdob2xlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZQorICogYW5kIHNl
dHMgdGhlIHZlcnNpb24uCiAgKgotICogU2ltaWxhciB0byBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUX05VTEwsIGJ1dCB3aWxsIHNldCB2ZXJzaW9uIGZpZWxkIG9mCi0gKiBFdmFzX1NtYXJ0X0Ns
YXNzIChiYXNlIGZpZWxkKSB0byBsYXRlc3QgRVZBU19TTUFSVF9DTEFTU19WRVJTSU9OCisgKiBT
aW1pbGFyIHRvIEBhIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCwgYnV0IGl0IHNldHMg
dGhlIHZlcnNpb24gZmllbGQgb2YKKyAqIEBhIEV2YXNfU21hcnRfQ2xhc3MgKGJhc2UgZmllbGQp
IHRvIGxhdGVzdCBAYSBFVkFTX1NNQVJUX0NMQVNTX1ZFUlNJT04uCiAgKgogICogQHNlZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX05VTEwKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVF9OQU1FX1ZFUlNJT04KQEAgLTE4MiwxNiArMTg3LDE2IEBAIHN0cnVjdCBfRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgewogI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04g
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTikK
IAogLyoqCi0gKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xh
c3Mgc3RydWN0dXJlIGFuZCBzZXQKLSAqIG5hbWUgYW5kIHZlcnNpb24uCisgKiBJbml0aWFsaXpl
cyB0byB6ZXJvIGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlCisgKiBh
bmQgc2V0cyB0aGUgbmFtZSBhbmQgdmVyc2lvbi4KICAqCi0gKiBTaW1pbGFyIHRvIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTlVMTCwgYnV0IHdpbGwgc2V0IHZlcnNpb24gZmllbGQgb2YKLSAq
IEV2YXNfU21hcnRfQ2xhc3MgKGJhc2UgZmllbGQpIHRvIGxhdGVzdCBFVkFTX1NNQVJUX0NMQVNT
X1ZFUlNJT04gYW5kIG5hbWUKLSAqIHRvIHRoZSBzcGVjaWZpYyB2YWx1ZS4KKyAqIFNpbWlsYXIg
dG8gQGEgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMLCBidXQgaXQgc2V0cyB0aGUgdmVy
c2lvbiBmaWVsZCBvZgorICogQGEgRXZhc19TbWFydF9DbGFzcyAoYmFzZSBmaWVsZCkgdG8gbGF0
ZXN0IEBhIEVWQVNfU01BUlRfQ0xBU1NfVkVSU0lPTgorICogYW5kIHRoZSBuYW1lIHRvIHRoZSBz
cGVjaWZpYyB2YWx1ZS4KICAqCi0gKiBJdCB3aWxsIGtlZXAgYSByZWZlcmVuY2UgdG8gbmFtZSBm
aWVsZCBhcyBhICJjb25zdCBjaGFyICoiLCB0aGF0IGlzLAorICogSXQgd2lsbCBrZWVwIGEgcmVm
ZXJlbmNlIHRvIHRoZSBuYW1lIGZpZWxkIGFzIGEgImNvbnN0IGNoYXIgKiIsIHRoYXQgaXMsCiAg
KiBuYW1lIG11c3QgYmUgYXZhaWxhYmxlIHdoaWxlIHRoZSBzdHJ1Y3R1cmUgaXMgdXNlZCAoaGlu
dDogc3RhdGljIG9yIGdsb2JhbCEpCi0gKiBhbmQgd2lsbCBub3QgYmUgbW9kaWZpZWQuCisgKiBh
bmQgaXQgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgKgogICogQHNlZSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUX05VTEwKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9O
CkBAIC0xOTksNiArMjA0LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKi8K
ICNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
KG5hbWUpKQogCisvLy8gRGVmaW5lcyB0aGUgaW5wdXQgbWV0aG9kIGhpbnRzLgogZW51bSBfRXdr
X0ltaCB7CiAgICAgRVdLX0lNSF9URUxFUEhPTkUgPSAoMSA8PCAwKSwKICAgICBFV0tfSU1IX05V
TUJFUiA9ICgxIDw8IDEpLApAQCAtMjA2LDU4ICsyMTIsNTEgQEAgZW51bSBfRXdrX0ltaCB7CiAg
ICAgRVdLX0lNSF9VUkwgPSAoMSA8PCAzKSwKICAgICBFV0tfSU1IX1BBU1NXT1JEID0gKDEgPDwg
NCkKIH07CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19JbWguCiB0eXBlZGVm
IGVudW0gX0V3a19JbWggRXdrX0ltaDsKIAotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBwcml2
YXRlIGRhdGEgdGhhdCBpcyB1c2VkIGludGVybmFsbHkgYnkgRUZMIFdlYktpdCBhbmQgc2hvdWxk
IG5ldmVyCi0gKiBiZSBtb2RpZmllZCBmcm9tIG91dHNpZGUuCi0gKi8KKy8vLyBDcmVhdGVzIGEg
dHlwZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhLgogdHlwZWRlZiBzdHJ1Y3Qg
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSBFd2tfVmlld19Qcml2YXRlX0RhdGE7CiAKKy8vLyBEZWZp
bmVzIHRoZSB0eXBlcyBvZiB0aGUgaXRlbXMgZm9yIHRoZSBjb250ZXh0IG1lbnUuCiBlbnVtIF9F
d2tfTWVudV9JdGVtX1R5cGUgewogICAgIEVXS19NRU5VX1NFUEFSQVRPUiwKICAgICBFV0tfTUVO
VV9HUk9VUCwKICAgICBFV0tfTUVOVV9PUFRJT04KIH07CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFt
ZSBmb3IgQGEgX0V3a19NZW51X0l0ZW1fVHlwZS4KIHR5cGVkZWYgZW51bSBfRXdrX01lbnVfSXRl
bV9UeXBlIEV3a19NZW51X0l0ZW1fVHlwZTsKIAotCi0vKioKLSAqIFN0cnVjdHVyZSBkbyBjb250
YWluIGRhdGEgb2YgZWFjaCBtZW51IGl0ZW0KLSAqLworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIEBhIF9Fd2tfTWVudV9JdGVtLgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19NZW51X0l0ZW0gRXdr
X01lbnVfSXRlbTsKKy8vLyBDb250YWlucyBkYXRhIG9mIGVhY2ggbWVudSBpdGVtLgogc3RydWN0
IF9Fd2tfTWVudV9JdGVtIHsKLSAgICBjb25zdCBjaGFyICp0ZXh0OyAvKio8IEl0ZW0ncyB0ZXh0
ICovCi0gICAgRXdrX01lbnVfSXRlbV9UeXBlIHR5cGU7IC8qKiBJdGVtJ3MgdHlwZSAqLworICAg
IGNvbnN0IGNoYXIgKnRleHQ7IC8qKjwgVGV4dCBvZiB0aGUgaXRlbS4gKi8KKyAgICBFd2tfTWVu
dV9JdGVtX1R5cGUgdHlwZTsgLyoqIFR5cGUgb2YgdGhlIGl0ZW0uICovCiB9OwogCi0vKioKLSAq
IFN0cnVjdHVyZSB0byBjb250YWluIFBvcHVwIG1lbnUgZGF0YS4KLSAqLworLy8vIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfTWVudS4KIHR5cGVkZWYgc3RydWN0IF9Fd2tfTWVudSBF
d2tfTWVudTsKKy8vLyBDb250YWlucyBQb3B1cCBtZW51IGRhdGEuCiBzdHJ1Y3QgX0V3a19NZW51
IHsKLSAgICAgICAgRWluYV9MaXN0ICppdGVtczsKLSAgICAgICAgaW50IHg7Ci0gICAgICAgIGlu
dCB5OwotICAgICAgICBpbnQgd2lkdGg7Ci0gICAgICAgIGludCBoZWlnaHQ7CisgICAgICAgIEVp
bmFfTGlzdCAqaXRlbXM7IC8qKjwgTGlzdCBvZiBpdGVtcy4gKi8KKyAgICAgICAgaW50IHg7IC8q
KjwgVGhlIGhvcml6b250YWwgcG9zaXRpb24gb2YgUG9wdXAgbWVudS4gKi8KKyAgICAgICAgaW50
IHk7IC8qKjwgVGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIFBvcHVwIG1lbnUuICovCisgICAgICAg
IGludCB3aWR0aDsgLyoqPCBQb3B1cCBtZW51IHdpZHRoLiAqLworICAgICAgICBpbnQgaGVpZ2h0
OyAvKio8IFBvcHVwIG1lbnUgaGVpZ2h0LiAqLwogfTsKIAotLyoqCi0gKiBTdHJ1Y3R1cmUgdG8g
Y29udGFpbiBEb3dubG9hZCBkYXRhCi0gKi8KKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBA
YSBfRXdrX0Rvd25sb2FkLgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZCBFd2tfRG93bmxv
YWQ7CisvLy8gQ29udGFpbnMgRG93bmxvYWQgZGF0YS4KIHN0cnVjdCBfRXdrX0Rvd25sb2FkIHsK
LSAgICBjb25zdCBjaGFyICp1cmw7CisgICAgY29uc3QgY2hhciAqdXJsOyAvKio8IFVSTCBvZiBy
ZXNvdXJjZS4gKi8KICAgICAvKiB0byBiZSBleHRlbmRlZCAqLwogfTsKIAotLyoqCi0gKiBTY3Jv
bGwgcmVxdWVzdCB0aGF0IHNob3VsZCBiZSBwcm9jZXNzZWQgYnkgc3ViY2xhc3MgaW1wbGVtZW50
YXRpb25zLgotICovCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19TY3JvbGxf
UmVxdWVzdC4KIHR5cGVkZWYgc3RydWN0IF9Fd2tfU2Nyb2xsX1JlcXVlc3QgRXdrX1Njcm9sbF9S
ZXF1ZXN0OworLy8vIENvbnRhaW5zIHRoZSBzY3JvbGwgcmVxdWVzdCB0aGF0IHNob3VsZCBiZSBw
cm9jZXNzZWQgYnkgc3ViY2xhc3MgaW1wbGVtZW50YXRpb25zLgogc3RydWN0IF9Fd2tfU2Nyb2xs
X1JlcXVlc3QgewogICAgIEV2YXNfQ29vcmQgZHgsIGR5OwogICAgIEV2YXNfQ29vcmQgeCwgeSwg
dywgaCwgeDIsIHkyOwpAQCAtMjY1LDIxICsyNjQsMjIgQEAgc3RydWN0IF9Fd2tfU2Nyb2xsX1Jl
cXVlc3QgewogfTsKIAogLyoqCi0gKiBTdHJ1Y3R1cmUgdG8gY29udGFpbiBpbnRlcm5hbCBWaWV3
IGRhdGEsIGl0IGlzIHRvIGJlIGNvbnNpZGVyZWQKLSAqIHByaXZhdGUgYnkgdXNlcnMsIGJ1dCBt
YXkgYmUgZXh0ZW5kZWQgb3IgY2hhbmdlZCBieSBzdWItY2xhc3NlcwotICogKHRoYXQncyB3aHkg
aXQncyBpbiBwdWJsaWMgaGVhZGVyIGZpbGUpLgorICogQGJyaWVmIENvbnRhaW5zIGFuIGludGVy
bmFsIFZpZXcgZGF0YS4KKyAqCisgKiBJdCBpcyB0byBiZSBjb25zaWRlcmVkIHByaXZhdGUgYnkg
dXNlcnMsIGJ1dCBtYXkgYmUgZXh0ZW5kZWQgb3IKKyAqIGNoYW5nZWQgYnkgc3ViLWNsYXNzZXMg
KHRoYXQncyB3aHkgaXQncyBpbiB0aGUgcHVibGljIGhlYWRlciBmaWxlKS4KICAqLwogc3RydWN0
IF9Fd2tfVmlld19TbWFydF9EYXRhIHsKICAgICBFdmFzX09iamVjdF9TbWFydF9DbGlwcGVkX0Rh
dGEgYmFzZTsKLSAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpOyAvKio8IHJlZmVy
ZW5jZSB0byBjYXN0ZWQgY2xhc3MgaW5zdGFuY2UgKi8KLSAgICBFdmFzX09iamVjdCAqc2VsZjsg
LyoqPCByZWZlcmVuY2UgdG8gb3duZXIgb2JqZWN0ICovCi0gICAgRXZhc19PYmplY3QgKm1haW5f
ZnJhbWU7IC8qKjwgcmVmZXJlbmNlIHRvIG1haW4gZnJhbWUgb2JqZWN0ICovCi0gICAgRXZhc19P
YmplY3QgKmJhY2tpbmdfc3RvcmU7IC8qKjwgcmVmZXJlbmNlIHRvIGJhY2tpbmcgc3RvcmUgKi8K
LSAgICBFdmFzX09iamVjdCAqZXZlbnRzX3JlY3Q7IC8qKjwgcmVjdGFuZ2xlIHRoYXQgc2hvdWxk
IHJlY2VpdmUgbW91c2UgZXZlbnRzICovCi0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpfcHJp
djsgLyoqPCBzaG91bGQgbmV2ZXIgYmUgYWNjZXNzZWQsIGMrKyBzdHVmZiAqLworICAgIGNvbnN0
IEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGk7IC8qKjwgUmVmZXJlbmNlIHRvIGNhc3RlZCBjbGFz
cyBpbnN0YW5jZS4gKi8KKyAgICBFdmFzX09iamVjdCAqc2VsZjsgLyoqPCBSZWZlcmVuY2UgdG8g
b3duZXIgb2JqZWN0LiAqLworICAgIEV2YXNfT2JqZWN0ICptYWluX2ZyYW1lOyAvKio8IFJlZmVy
ZW5jZSB0byBtYWluIGZyYW1lIG9iamVjdC4gKi8KKyAgICBFdmFzX09iamVjdCAqYmFja2luZ19z
dG9yZTsgLyoqPCBSZWZlcmVuY2UgdG8gYmFja2luZyBzdG9yZS4gKi8KKyAgICBFdmFzX09iamVj
dCAqZXZlbnRzX3JlY3Q7IC8qKjwgVGhlIHJlY3RhbmdsZSB0aGF0IHJlY2VpdmVzIG1vdXNlIGV2
ZW50cy4gKi8KKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKl9wcml2OyAvKio8IFNob3VsZCBA
YiBuZXZlciBiZSBhY2Nlc3NlZCwgYysrIHN0dWZmLiAqLwogICAgIHN0cnVjdCB7Ci0gICAgICAg
IEV2YXNfQ29vcmQgeCwgeSwgdywgaDsgLyoqPCBsYXN0IHVzZWQgdmlld3BvcnQgKi8KLSAgICB9
IHZpZXc7CisgICAgICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKKyAgICB9IHZpZXc7IC8qKjwg
Q29udGFpbnMgdGhlIHBvc2l0aW9uIGFuZCBzaXplIG9mIGxhc3QgdXNlZCB2aWV3cG9ydC4gKi8K
ICAgICBzdHJ1Y3QgewogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZmxvYXQgc3RhcnQ7
CkBAIC0yODksMTYgKzI4OSwxNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgewogICAg
IH0gYW5pbWF0ZWRfem9vbTsKICAgICBzdHJ1Y3QgewogICAgICAgICB1bnNpZ25lZCBjaGFyIHIs
IGcsIGIsIGE7Ci0gICAgfSBiZ19jb2xvcjsKKyAgICB9IGJnX2NvbG9yOyAvKio8IEtlZXBzIHRo
ZSBiYWNrZ3JvdW5kIGNvbG9yLiAqLwogICAgIEVpbmFfQm9vbCB6b29tX3dlYWtfc21vb3RoX3Nj
YWxlOjE7Ci0gICAgc3RydWN0IHsgLyoqPCB3aGF0IGNoYW5nZWQgc2luY2UgbGFzdCBzbWFydF9j
YWxjdWxhdGUgKi8KKyAgICBzdHJ1Y3QgewogICAgICAgICBFaW5hX0Jvb2wgYW55OjE7CiAgICAg
ICAgIEVpbmFfQm9vbCBzaXplOjE7CiAgICAgICAgIEVpbmFfQm9vbCBwb3NpdGlvbjoxOwogICAg
ICAgICBFaW5hX0Jvb2wgZnJhbWVfcmVjdDoxOwotICAgIH0gY2hhbmdlZDsKKyAgICB9IGNoYW5n
ZWQ7IC8qKjwgS2VlcHMgd2hhdCBjaGFuZ2VkIHNpbmNlIGxhc3Qgc21hcnRfY2FsY3VsYXRlLiAq
LwogfTsKIAorLy8vIERlZmluZXMgdGhlIG1vZGVzIG9mIHZpZXcuCiBlbnVtIF9Fd2tfVmlld19N
b2RlIHsKICAgICBFV0tfVklFV19NT0RFX1dJTkRPV0VELAogICAgIEVXS19WSUVXX01PREVfRkxP
QVRJTkcsCkBAIC0zMDYsOSArMzA3LDEyIEBAIGVudW0gX0V3a19WaWV3X01vZGUgewogICAgIEVX
S19WSUVXX01PREVfTUFYSU1JWkVELAogICAgIEVXS19WSUVXX01PREVfTUlOSU1JWkVECiB9Owor
Ly8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19Nb2RlLgogdHlwZWRlZiBl
bnVtIF9Fd2tfVmlld19Nb2RlIEV3a19WaWV3X01vZGU7CiAKIC8qKgorICogQGJyaWVmIENyZWF0
ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUuCisgKgogICogQ2Fj
aGUgKHBvb2wpIHRoYXQgY29udGFpbnMgdW51c2VkIHRpbGVzIGZvciBld2tfdmlld190aWxlZC4K
ICAqCiAgKiBUaGlzIGNhY2hlIHdpbGwgbWFpbnRhaW4gdW51c2VkIHRpbGVzIGFuZCBmbHVzaCB0
aGVtIHdoZW4gdGhlIHRvdGFsCkBAIC0zMjIsMjUgKzMyNiwzNyBAQCB0eXBlZGVmIGVudW0gX0V3
a19WaWV3X01vZGUgRXdrX1ZpZXdfTW9kZTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVGlsZV9VbnVz
ZWRfQ2FjaGUgRXdrX1RpbGVfVW51c2VkX0NhY2hlOwogCiAvKioKLSAqIENoYW5nZSBjYWNoZSBj
YXBhY2l0eSwgaW4gYnl0ZXMuCisgKiBDaGFuZ2VzIGNhY2hlIGNhcGFjaXR5IG9mIHVudXNlZCB0
aWxlcy4KKyAqCisgKiBAcGFyYW0gdHVjIGNhY2hlIG9mIHVudXNlZCB0aWxlcyB0byBzZXQgYSBu
ZXcgY2FwYWNpdHkgb2YgdW51c2VkIHRpbGVzCiAgKgotICogVGhpcyB3aWxsIG5vdCBmbHVzaCBj
YWNoZSwgdXNlIGV3a190aWxlX3VudXNlZF9jYWNoZV9mbHVzaCgpIG9yCisgKiBAcGFyYW0gbWF4
IGEgbmV3IGNhcGFjaXR5IG9mIGNhY2hlLCBpbiBieXRlcworICoKKyAqIEBub3RlIFRoaXMgd2ls
bCBub3QgZmx1c2ggY2FjaGUsIHVzZSBld2tfdGlsZV91bnVzZWRfY2FjaGVfZmx1c2goKSBvcgog
ICogZXdrX3RpbGVfdW51c2VkX2NhY2hlX2F1dG9fZmx1c2goKSB0byBkbyBzby4KICAqLwogRUFQ
SSB2b2lkICAgZXdrX3RpbGVfdW51c2VkX2NhY2hlX21heF9zZXQoRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlICp0dWMsIHNpemVfdCBtYXgpOwogCiAvKioKLSAqIFJldHJpZXZlIG1heGltdW0gY2FjaGUg
Y2FwYWNpdHksIGluIGJ5dGVzLgorICogUmV0cmlldmVzIG1heGltdW0gY2FjaGUgY2FwYWNpdHkg
b2YgdW51c2VkIHRpbGVzLgorICoKKyAqIEBwYXJhbSB0dWMgY2FjaGUgb2YgdW51c2VkIHRpbGVz
IHRvIGdldCBtYXhpbXVtIGNhY2hlIGNhcGFjaXR5IG9mIHVudXNlZCB0aWxlcworICoKKyAqIEBy
ZXR1cm4gbWF4aW11bSBjYWNoZSBjYXBhY2l0eSwgaW4gYnl0ZXMgb24gc3VjY2VzcyBvciBAYyAw
IG9uIGZhaWx1cmUKICAqLwogRUFQSSBzaXplX3QgZXdrX3RpbGVfdW51c2VkX2NhY2hlX21heF9n
ZXQoY29uc3QgRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwogCiAvKioKLSAqIFJldHJpZXZl
IHRoZSB1c2VkIGNhY2hlIGNhcGFjaXR5LCBpbiBieXRlcy4KKyAqIFJldHJpZXZlcyB0aGUgdXNl
ZCBjYWNoZSBjYXBhY2l0eSBvZiB1bnVzZWQgdGlsZXMuCisgKgorICogQHBhcmFtIHR1YyBjYWNo
ZSBvZiB1bnVzZWQgdGlsZXMgdG8gZ2V0IHVzZWQgY2FjaGUgY2FwYWNpdHkgb2YgdW51c2VkIHRp
bGVzCisgKgorICogQHJldHVybiB1c2VkIGNhY2hlIGNhcGFjaXR5LCBpbiBieXRlcyBvbiBzdWNj
ZXNzIG9yIEBjIDAgb24gZmFpbHVyZQogICovCiBFQVBJIHNpemVfdCBld2tfdGlsZV91bnVzZWRf
Y2FjaGVfdXNlZF9nZXQoY29uc3QgRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwogCiAvKioK
LSAqIEZsdXNoIGdpdmVuIGFtb3VudCBvZiBieXRlcyBmcm9tIGNhY2hlLgorICogRmx1c2hlcyBn
aXZlbiBhbW91bnQgb2YgYnl0ZXMgZnJvbSBjYWNoZSBvZiB1bnVzZWQgdGlsZXMuCiAgKgogICog
QWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBuZWFyIEBhIGJ5dGVzIGFyZSBmcmVlZCBmcm9t
IGNhY2hlLiBJdAogICogbWF5IGJlIGxlc3MgaWYgY2FjaGUgZGlkIG5vdCBjb250YWluIHRoYXQg
YW1vdW50IG9mIGJ5dGVzIChpZTogYW4KQEAgLTM0OCwxNyArMzY0LDE3IEBAIEVBUEkgc2l6ZV90
IGV3a190aWxlX3VudXNlZF9jYWNoZV91c2VkX2dldChjb25zdCBFd2tfVGlsZV9VbnVzZWRfQ2Fj
aGUgKnR1Yyk7CiAgKiBjb250YWluZWQgb2JqZWN0cyB0aGF0IHdlcmUgbGFyZ2VyIHRoYW4gdGhl
IHJlcXVlc3RlZCBhbW91bnQgKHRoaXMKICAqIGlzIHVzdWFsbHkgdGhlIGNhc2UpLgogICoKLSAq
IEBwYXJhbSB0dWMgY2FjaGUgb2YgdW51c2VkIHRpbGVzLgotICogQHBhcmFtIGJ5dGVzIGFtb3Vu
dCB0byBmcmVlLgorICogQHBhcmFtIHR1YyBjYWNoZSBvZiB1bnVzZWQgdGlsZXMgdG8gZmx1c2gg
QGJ5dGVzIGZyb20gY2FjaGUKKyAqIEBwYXJhbSBieXRlcyBhbW91bnQgYnl0ZXMgdG8gZnJlZQog
ICoKLSAqIEByZXR1cm4gYW1vdW50IHJlYWxseSBmcmVlZC4KKyAqIEByZXR1cm4gYW1vdW50IHJl
YWxseSBmcmVlZCBieXRlcwogICoKICAqIEBzZWUgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3VzZWRf
Z2V0KCkKICAqLwogRUFQSSBzaXplX3QgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZsdXNoKEV3a19U
aWxlX1VudXNlZF9DYWNoZSAqdHVjLCBzaXplX3QgYnl0ZXMpOwogCiAvKioKLSAqIEZsdXNoIGVu
b3VnaCBieXRlcyB0byBtYWtlIGNhY2hlIHVzYWdlIGxvd2VyIHRoYW4gbWF4aW11bS4KKyAqIEZs
dXNoZXMgZW5vdWdoIGJ5dGVzIHRvIG1ha2UgY2FjaGUgb2YgdW51c2VkIHRpbGVzIHVzYWdlIGxv
d2VyIHRoYW4gbWF4aW11bS4KICAqCiAgKiBKdXN0IGxpa2UgZXdrX3RpbGVfdW51c2VkX2NhY2hl
X2ZsdXNoKCksIGJ1dCB0aGlzIHdpbGwgbWFrZSB0aGUgY2FjaGUKICAqIGZyZWUgZW5vdWdoIHRp
bGVzIHRvIHJlc3BlY3QgbWF4aW11bSBjYWNoZSBzaXplIGFzIGRlZmluZWQgd2l0aApAQCAtMzY3
LDYgKzM4Myw4IEBAIEVBUEkgc2l6ZV90IGV3a190aWxlX3VudXNlZF9jYWNoZV9mbHVzaChFd2tf
VGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yywgc2l6ZV90IGJ5dGVzCiAgKiBUaGlzIGZ1bmN0aW9uIGlz
IHVzdWFsbHkgY2FsbGVkIHdoZW4gc3lzdGVtIGJlY29tZXMgaWRsZS4gVGhpcyB3YXkKICAqIHdl
IGtlZXAgbWVtb3J5IGxvdyBidXQgZG8gbm90IGltcGFjdCBwZXJmb3JtYW5jZSB3aGVuCiAgKiBj
cmVhdGluZy9kZWxldGluZyB0aWxlcy4KKyAqCisgKiBAcGFyYW0gdHVjIGNhY2hlIG9mIHVudXNl
ZCB0aWxlcyB0byBmbHVzaCBjYWNoZSBvZiB1bnVzZWQgdGlsZXMKICAqLwogRUFQSSB2b2lkICAg
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX2F1dG9fZmx1c2goRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0
dWMpOwogCkBAIC0zNzQsMTcgKzM5MiwxNyBAQCBFQVBJIHZvaWQgICBld2tfdGlsZV91bnVzZWRf
Y2FjaGVfYXV0b19mbHVzaChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7CiAgKiBTZXRzIHRo
ZSBzbWFydCBjbGFzcyBhcGkgd2l0aG91dCBhbnkgYmFja2luZyBzdG9yZSwgZW5hYmxpbmcgdmll
dwogICogdG8gYmUgaW5oZXJpdGVkLgogICoKLSAqIEBwYXJhbSBhcGkgY2xhc3MgZGVmaW5pdGlv
biB0byBiZSBzZXQsIGFsbCBtZW1iZXJzIHdpdGggdGhlCi0gKiAgICAgICAgZXhjZXB0aW9uIG9m
IEV2YXNfU21hcnRfQ2xhc3MtPmRhdGEgbWF5IGJlIG92ZXJyaWRkZW4uIE11c3QKLSAqICAgICAg
ICBAYiBub3QgYmUgQGMgMC4KKyAqIEBwYXJhbSBhcGkgY2xhc3MgZGVmaW5pdGlvbiB0byBzZXQs
IGFsbCBtZW1iZXJzIHdpdGggdGhlCisgKiAgICAgICAgZXhjZXB0aW9uIG9mIEBhIEV2YXNfU21h
cnRfQ2xhc3MtPmRhdGEgbWF5IGJlIG92ZXJyaWRkZW4sIG11c3QKKyAqICAgICAgICBAYiBub3Qg
YmUgQGMgMAogICoKLSAqIEBub3RlIEV2YXNfU21hcnRfQ2xhc3MtPmRhdGEgaXMgdXNlZCB0byBp
bXBsZW1lbnQgdHlwZSBjaGVja2luZyBhbmQKKyAqIEBub3RlIEBhIEV2YXNfU21hcnRfQ2xhc3Mt
PmRhdGEgaXMgdXNlZCB0byBpbXBsZW1lbnQgdHlwZSBjaGVja2luZyBhbmQKICAqICAgICAgIGlz
IG5vdCBzdXBwb3NlZCB0byBiZSBjaGFuZ2VkL292ZXJyaWRkZW4uIElmIHlvdSBuZWVkIGV4dHJh
CiAgKiAgICAgICBkYXRhIGZvciB5b3VyIHNtYXJ0IGNsYXNzIHRvIHdvcmssIGp1c3QgZXh0ZW5k
CiAgKiAgICAgICBFd2tfVmlld19TbWFydF9DbGFzcyBpbnN0ZWFkLgogICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFi
bHkKLSAqICAgICAgICAgdmVyc2lvbiBtaXNtYXRjaCkuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAg
ICAgICAgdmVyc2lvbiBtaXNtYXRjaCkKICAqCiAgKiBAc2VlIGV3a192aWV3X3NpbmdsZV9zbWFy
dF9zZXQoKQogICogQHNlZSBld2tfdmlld190aWxlZF9zbWFydF9zZXQoKQpAQCAtMzk1LDE3ICs0
MTMsMTcgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MgKmFwaSk7CiAgKiBTZXRzIHRoZSBzbWFydCBjbGFzcyBhcGkgdXNpbmcg
c2luZ2xlIGJhY2tpbmcgc3RvcmUsIGVuYWJsaW5nIHZpZXcKICAqIHRvIGJlIGluaGVyaXRlZC4K
ICAqCi0gKiBAcGFyYW0gYXBpIGNsYXNzIGRlZmluaXRpb24gdG8gYmUgc2V0LCBhbGwgbWVtYmVy
cyB3aXRoIHRoZQotICogICAgICAgIGV4Y2VwdGlvbiBvZiBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRh
IG1heSBiZSBvdmVycmlkZGVuLiBNdXN0Ci0gKiAgICAgICAgQGIgbm90IGJlIEBjIE5VTEwuCisg
KiBAcGFyYW0gYXBpIGNsYXNzIGRlZmluaXRpb24gdG8gc2V0LCBhbGwgbWVtYmVycyB3aXRoIHRo
ZQorICogICAgICAgIGV4Y2VwdGlvbiBvZiBAYSBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIG1heSBi
ZSBvdmVycmlkZGVuLCBtdXN0CisgKiAgICAgICAgQGIgbm90IGJlIEBjIDAKICAqCi0gKiBAbm90
ZSBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIGlzIHVzZWQgdG8gaW1wbGVtZW50IHR5cGUgY2hlY2tp
bmcgYW5kCisgKiBAbm90ZSBAYSBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIGlzIHVzZWQgdG8gaW1w
bGVtZW50IHR5cGUgY2hlY2tpbmcgYW5kCiAgKiAgICAgICBpcyBub3Qgc3VwcG9zZWQgdG8gYmUg
Y2hhbmdlZC9vdmVycmlkZGVuLiBJZiB5b3UgbmVlZCBleHRyYQogICogICAgICAgZGF0YSBmb3Ig
eW91ciBzbWFydCBjbGFzcyB0byB3b3JrLCBqdXN0IGV4dGVuZAotICogICAgICAgRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgaW5zdGVhZC4KKyAqICAgICAgIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGlu
c3RlYWQuCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9G
QUxTRSBvbiBmYWlsdXJlIChwcm9iYWJseQotICogICAgICAgICB2ZXJzaW9uIG1pc21hdGNoKS4K
KyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBm
YWlsdXJlIChwcm9iYWJseQorICogICAgICAgICB2ZXJzaW9uIG1pc21hdGNoKQogICoKICAqIEBz
ZWUgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoKQogICovCkBAIC00MTUsMTcgKzQzMywxNyBAQCBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zaW5nbGVfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0
X0NsYXNzICphcGkpOwogICogU2V0cyB0aGUgc21hcnQgY2xhc3MgYXBpIHVzaW5nIHRpbGVkIGJh
Y2tpbmcgc3RvcmUsIGVuYWJsaW5nIHZpZXcKICAqIHRvIGJlIGluaGVyaXRlZC4KICAqCi0gKiBA
cGFyYW0gYXBpIGNsYXNzIGRlZmluaXRpb24gdG8gYmUgc2V0LCBhbGwgbWVtYmVycyB3aXRoIHRo
ZQotICogICAgICAgIGV4Y2VwdGlvbiBvZiBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIG1heSBiZSBv
dmVycmlkZGVuLiBNdXN0Ci0gKiAgICAgICAgQGIgbm90IGJlIEBjIE5VTEwuCisgKiBAcGFyYW0g
YXBpIGNsYXNzIGRlZmluaXRpb24gdG8gc2V0LCBhbGwgbWVtYmVycyB3aXRoIHRoZQorICogICAg
ICAgIGV4Y2VwdGlvbiBvZiBAYSBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIG1heSBiZSBvdmVycmlk
ZGVuLCBtdXN0CisgKiAgICAgICAgQGIgbm90IGJlIEBjIDAKICAqCi0gKiBAbm90ZSBFdmFzX1Nt
YXJ0X0NsYXNzLT5kYXRhIGlzIHVzZWQgdG8gaW1wbGVtZW50IHR5cGUgY2hlY2tpbmcgYW5kCisg
KiBAbm90ZSBAYSBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIGlzIHVzZWQgdG8gaW1wbGVtZW50IHR5
cGUgY2hlY2tpbmcgYW5kCiAgKiAgICAgICBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgY2hhbmdlZC9v
dmVycmlkZGVuLiBJZiB5b3UgbmVlZCBleHRyYQogICogICAgICAgZGF0YSBmb3IgeW91ciBzbWFy
dCBjbGFzcyB0byB3b3JrLCBqdXN0IGV4dGVuZAogICogICAgICAgRXdrX1ZpZXdfU21hcnRfQ2xh
c3MgaW5zdGVhZC4KICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBF
SU5BX0ZBTFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5Ci0gKiAgICAgICAgIHZlcnNpb24gbWlzbWF0
Y2gpLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNF
IG9uIGZhaWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHZlcnNpb24gbWlzbWF0Y2gpCiAgKgog
ICogQHNlZSBld2tfdmlld19iYXNlX3NtYXJ0X3NldCgpCiAgKi8KQEAgLTQ0MSw5ICs0NTksOSBA
QCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld190aWxlZF9zbWFydF9zZXQoRXdrX1ZpZXdfU21h
cnRfQ2xhc3MgKmFwaSk7CiAgKiBmcmFtZSwgY2FsbGVkICdtYWluX2ZyYW1lJy4gU2VlIGV3a192
aWV3X2ZyYW1lX21haW5fZ2V0KCkgYW5kCiAgKiBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldCgp
LgogICoKLSAqIEBwYXJhbSBlIGNhbnZhcyB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcgb2JqZWN0
LgorICogQHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcgb2Jq
ZWN0CiAgKgotICogQHJldHVybiB2aWV3IG9iamVjdCBvciBAYyBOVUxMIGlmIGVycm9ycy4KKyAq
IEByZXR1cm4gdmlldyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqCiAg
KiBAc2VlIGV3a192aWV3X3VyaV9zZXQoKQogICovCkBAIC00NTUsNDggKzQ3Myw1MiBAQCBFQVBJ
IEV2YXNfT2JqZWN0ICpld2tfdmlld19zaW5nbGVfYWRkKEV2YXMgKmUpOwogICogVmlldyBvYmpl
Y3RzIGFyZSB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGRlYWwgd2l0aCBFRkwgV2ViS2l0IGFzIGl0
CiAgKiBhYnN0cmFjdHMgdGhlIGNvbXBsZXggcGllY2VzIG9mIHRoZSBwcm9jZXNzLgogICoKLSAq
IFRoaXMgb2JqZWN0IGlzIGFsbW9zdCB0aGUgc2FtZSBhcyB0aGUgb25lIHJldHVybmVkIGJ5IHRo
ZSBld2tfdmlld19hZGQoKQorICogVGhpcyBvYmplY3QgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIHRo
ZSBvbmUgcmV0dXJuZWQgYnkgdGhlIGV3a192aWV3X3NpbmdsZV9hZGQoKQogICogZnVuY3Rpb24s
IGJ1dCBpdCB1c2VzIHRoZSB0aWxlZCBiYWNraW5nIHN0b3JlIGluc3RlYWQgb2YgdGhlIGRlZmF1
bHQKICAqIGJhY2tpbmcgc3RvcmUuCiAgKgotICogQHBhcmFtIGUgY2FudmFzIHdoZXJlIHRvIGNy
ZWF0ZSB0aGUgdmlldyBvYmplY3QuCisgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRv
IGNyZWF0ZSB0aGUgdmlldyBvYmplY3QKICAqCi0gKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9yIEBj
IE5VTEwgaWYgZXJyb3JzLgorICogQHJldHVybiB0aGUgdmlldyBvYmplY3Qgb24gc3VjY2VzcyBv
ciBAYyAwIG9uIGZhaWx1cmUKICAqCiAgKiBAc2VlIGV3a192aWV3X3VyaV9zZXQoKQogICovCiBF
QVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld190aWxlZF9hZGQoRXZhcyAqZSk7CiAKIC8qKgotICog
R2V0IHRoZSBjYWNoZSBvZiB1bnVzZWQgdGlsZXMgdXNlZCBieSB0aGlzIHZpZXcuCisgKiBHZXRz
IHRoZSBjYWNoZSBvYmplY3Qgb2YgdW51c2VkIHRpbGVzIHVzZWQgYnkgdGhpcyB2aWV3LgogICoK
LSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBjYWNoZS4KLSAqIEByZXR1cm4gaW5zdGFu
Y2Ugb2YgImNhY2hlIG9mIHVudXNlZCB0aWxlcyIgb3IgQGMgTlVMTCBvbiBlcnJvcnMuCisgKiBA
cGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBjYWNoZSBvYmplY3QKKyAqCisgKiBA
cmV0dXJuIHRoZSBjYWNoZSBvYmplY3Qgb2YgdW51c2VkIHRpbGVzIG9yIEBjIDAgb24gZmFpbHVy
ZQogICovCiBFQVBJIEV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3ZpZXdfdGlsZWRfdW51c2Vk
X2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogU2V0IHRoZSBjYWNo
ZSBvZiB1bnVzZWQgdGlsZXMgdXNlZCBieSB0aGlzIHZpZXcuCisgKiBTZXRzIHRoZSBjYWNoZSBv
YmplY3Qgb2YgdW51c2VkIHRpbGVzIHVzZWQgYnkgdGhpcyB2aWV3LgorICoKKyAqIEl0IGNhbiBi
ZSB1c2VkIHRvIHNoYXJlIGEgc2luZ2xlIGNhY2hlIGFtb25nc3QgZGlmZmVyZW50IHZpZXdzLgor
ICogVGhlIHRpbGVzIGZyb20gb25lIHZpZXcgd2lsbCBub3QgYmUgdXNlZCBieSB0aGUgb3RoZXIh
CisgKiBUaGlzIGlzIGp1c3QgdG8gbGltaXQgdGhlIGdyb3VwIHdpdGggYW1vdW50IG9mIHVudXNl
ZCBtZW1vcnkuCisgKgorICogQG5vdGUgSWYgQGMgMCBpcyBwcm92aWRlZCBhcyBhIEBhIGNhY2hl
LCB0aGVuIGEgbmV3IG9uZSBpcyBjcmVhdGVkLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IHRvIGdldCBjYWNoZS4KLSAqIEBwYXJhbSBjYWNoZSBpbnN0YW5jZSBvZiAiY2FjaGUgb2YgdW51
c2VkIHRpbGVzIi4gVGhpcyBjYW4gYmUgdXNlZAotICogICAgICAgIHRvIHNoYXJlIGEgc2luZ2xl
IGNhY2hlIGFtb25nc3QgZGlmZmVyZW50IHZpZXdzLiBUaGUgdGlsZXMKLSAqICAgICAgICBmcm9t
IG9uZSB2aWV3IHdpbGwgbm90IGJlIHVzZWQgYnkgdGhlIG90aGVyISBUaGlzIGlzIGp1c3QgdG8K
LSAqICAgICAgICBsaW1pdCB0aGUgZ3JvdXAgd2l0aCBhbW91bnQgb2YgdW51c2VkIG1lbW9yeS4K
LSAqICAgICAgICBJZiBAYyBOVUxMIGlzIHByb3ZpZGVkLCB0aGVuIGEgbmV3IGNhY2hlIGlzIGNy
ZWF0ZWQuCisgKiBAcGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gc2V0IHRoZSBjYWNoZSBvYmpl
Y3QKKyAqIEBwYXJhbSB0aGUgY2FjaGUgb2JqZWN0IG9mIHVudXNlZCB0aWxlcwogICovCiBFQVBJ
IHZvaWQgICAgICAgICAgICAgICAgICAgZXdrX3ZpZXdfdGlsZWRfdW51c2VkX2NhY2hlX3NldChF
dmFzX09iamVjdCAqbywgRXdrX1RpbGVfVW51c2VkX0NhY2hlICpjYWNoZSk7CiAKIC8vIEZJWE1F
OiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGxhdGVyLCB3aGVuIHdlIGZpbmQgdGhl
IGJlc3QgZmxhZyB0byB1c2UuCiAvKioKLSAqIFNldCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc2Ft
ZSBuYW1lIG9mIHRoZSB0aWxlZCBiYWNraW5nIHN0b3JlLgotICogQHBhcmFtIG8gdGhlIHRpbGVk
IGJhY2tpbmcgc3RvcmUgb2JqZWN0LgotICogQHBhcmFtIGZsYWcgdmFsdWUgb2YgdGhlIHRpbGVk
IGJhY2tpbmcgc3RvcmUgZmxhZyB0byBzZXQuCisgKiBTZXRzIGlmIGFsbCB0aGUgcmVxdWVzdHMg
b2YgdGhlIHF1ZXVlIHNob3VsZCBiZSBwcm9jZXNzZWQuCisgKgorICogQHBhcmFtIG8gdGhlIHZp
ZXcgb2JqZWN0CisgKiBAcGFyYW0gZmxhZyBAYyBFSU5BX1RSVUUgaWYgYWxsIHRoZSByZXF1ZXN0
IG9mIHF1ZXVlIHNob3VsZCBiZSBwcm9jZXNzZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90CiAgKi8K
IEVBUEkgdm9pZCAgICAgICAgICAgICAgICAgICBld2tfdmlld190aWxlZF9wcm9jZXNzX2VudGly
ZV9xdWV1ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBmbGFnKTsKIAogLyoqCi0gKiBT
ZXQgYSBmaXhlZCBsYXlvdXQgc2l6ZSB0byBiZSB1c2VkLCBkaXNzb2NpYXRpbmcgaXQgZnJvbSB2
aWV3cG9ydCBzaXplLgorICogU2V0cyBhIGZpeGVkIGxheW91dCBzaXplIHRvIGJlIHVzZWQsIGRp
c3NvY2lhdGluZyBpdCBmcm9tIHZpZXdwb3J0IHNpemUuCiAgKgogICogU2V0dGluZyBhIHdpZHRo
IGRpZmZlcmVudCB0aGFuIHplcm8gZW5hYmxlcyBmaXhlZCBsYXlvdXQgb24gdGhhdAogICogc2l6
ZS4gSXQncyBhdXRvbWF0aWNhbGx5IHNjYWxlZCBiYXNlZCBvbiB6b29tLCBidXQgd2lsbCBub3Qg
Y2hhbmdlCkBAIC01MDQsMTE3ICs1MjYsMTIxIEBAIEVBUEkgdm9pZCAgICAgICAgICAgICAgICAg
ICBld2tfdmlld190aWxlZF9wcm9jZXNzX2VudGlyZV9xdWV1ZV9zZXQoRXZhc19PYmplY3QKICAq
CiAgKiBTZXR0aW5nIGJvdGggQGEgdyBhbmQgQGEgaCB0byB6ZXJvIHdpbGwgZGlzYWJsZSBmaXhl
ZCBsYXlvdXQuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdlIGZpeGVkIGxh
eW91dC4KLSAqIEBwYXJhbSB3IGZpeGVkIHdpZHRoIHRvIHVzZS4gVGhpcyBzaXplIHdpbGwgYmUg
YXV0b21hdGljYWxseSBzY2FsZWQKLSAqICAgICAgICBiYXNlZCBvbiB6b29tIGxldmVsLgotICog
QHBhcmFtIGggZml4ZWQgaGVpZ2h0IHRvIHVzZS4gVGhpcyBzaXplIHdpbGwgYmUgYXV0b21hdGlj
YWxseSBzY2FsZWQKLSAqICAgICAgICBiYXNlZCBvbiB6b29tIGxldmVsLgorICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gY2hhbmdlIGZpeGVkIGxheW91dAorICogQHBhcmFtIHcgZml4ZWQgd2lk
dGggdG8gdXNlLCB0aGlzIHNpemUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNjYWxlZAorICogICAg
ICAgIGJhc2VkIG9uIHpvb20gbGV2ZWwKKyAqIEBwYXJhbSBoIGZpeGVkIGhlaWdodCB0byB1c2Us
IHRoaXMgc2l6ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2NhbGVkCisgKiAgICAgICAgYmFzZWQg
b24gem9vbSBsZXZlbAogICovCiBFQVBJIHZvaWQgICAgICAgICBld2tfdmlld19maXhlZF9sYXlv
dXRfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsK
IAogLyoqCi0gKiBHZXQgZml4ZWQgbGF5b3V0IHNpemUgaW4gdXNlLgorICogR2V0cyBmaXhlZCBs
YXlvdXQgc2l6ZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBmaXhlZCBs
YXlvdXQgc2l6ZS4KLSAqIEBwYXJhbSB3IHdoZXJlIHRvIHJldHVybiB3aWR0aC4gUmV0dXJucyAw
IG9uIGVycm9yIG9yIGlmIG5vIGZpeGVkCi0gKiAgICAgICAgbGF5b3V0IGluIHVzZS4KLSAqIEBw
YXJhbSBoIHdoZXJlIHRvIHJldHVybiBoZWlnaHQuIFJldHVybnMgMCBvbiBlcnJvciBvciBpZiBu
byBmaXhlZAotICogICAgICAgIGxheW91dCBpbiB1c2UuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBnZXQgZml4ZWQgbGF5b3V0IHNpemUKKyAqIEBwYXJhbSB3IHRoZSBwb2ludGVyIHRvIHN0
b3JlIGZpeGVkIHdpZHRoLCByZXR1cm5zIEBjIDAgb24gZmFpbHVyZSBvciBpZiB0aGVyZSBpcyBu
bworICogICAgICAgIGZpeGVkIGxheW91dCBpbiB1c2UKKyAqIEBwYXJhbSBoIHRoZSBwb2ludGVy
IHRvIHN0b3JlIGZpeGVkIGhlaWdodCwgcmV0dXJucyBAYyAwIG9uIGZhaWx1cmUgb3IgaWYgdGhl
cmUgaXMgbm8KKyAqICAgICAgICBmaXhlZCBsYXlvdXQgaW4gdXNlCiAgKi8KIEVBUEkgdm9pZCAg
ICAgICAgIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldChFdmFzX09iamVjdCAqbywgRXZh
c19Db29yZCAqdywgRXZhc19Db29yZCAqaCk7CiAKIC8qKgotICogU2V0IHRoZSB0aGVtZSBwYXRo
IHRvIGJlIHVzZWQgYnkgdGhpcyB2aWV3LgorICogU2V0cyB0aGUgdGhlbWUgcGF0aCB0aGF0IHdp
bGwgYmUgdXNlZCBieSB0aGlzIHZpZXcuCiAgKgogICogVGhpcyBhbHNvIHNldHMgdGhlIHRoZW1l
IG9uIHRoZSBtYWluIGZyYW1lLiBBcyBmcmFtZXMgaW5oZXJpdCB0aGVtZQogICogZnJvbSB0aGVp
ciBwYXJlbnQsIHRoaXMgd2lsbCBoYXZlIGFsbCBmcmFtZXMgd2l0aCB1bnNldCB0aGVtZSB0bwog
ICogdXNlIHRoaXMgb25lLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5nZSB0
aGVtZS4KLSAqIEBwYXJhbSBwYXRoIHRoZW1lIHBhdGgsIG1heSBiZSBAYyAwIHRvIHJlc2V0IHRv
IGRlZmF1bHQuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBjaGFuZ2UgdGhlbWUKKyAqIEBw
YXJhbSBwYXRoIHRoZW1lIHBhdGgsIG1heSBiZSBAYyAwIHRvIHJlc2V0IHRvIHRoZSBkZWZhdWx0
IHRoZW1lCiAgKi8KIEVBUEkgdm9pZCAgICAgICAgIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqcGF0aCk7CiAKIC8qKgotICogR2V0cyB0aGUgdGhlbWUgc2V0
IG9uIHRoaXMgZnJhbWUuCisgKiBHZXRzIHRoZSB0aGVtZSBzZXQgb24gdGhpcyB2aWV3LgogICoK
ICAqIFRoaXMgcmV0dXJucyB0aGUgdmFsdWUgc2V0IGJ5IGV3a192aWV3X3RoZW1lX3NldCgpLgog
ICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGVtZSBwYXRoLgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZW1lIHBhdGgKICAqCi0gKiBAcmV0dXJuIHRoZW1lIHBh
dGgsIG1heSBiZSBAYyAwIGlmIG5vdCBzZXQuCisgKiBAcmV0dXJuIHRoZSB0aGVtZSBwYXRoLCBt
YXkgYmUgQGMgMCBpZiBub3Qgc2V0CiAgKi8KIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3Ro
ZW1lX2dldChFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogR2V0IHRoZSBvYmplY3QgdGhhdCBy
ZXByZXNlbnRzIHRoZSBtYWluIGZyYW1lLgorICogR2V0cyB0aGUgb2JqZWN0IHRoYXQgcmVwcmVz
ZW50cyB0aGUgbWFpbiBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQg
bWFpbiBmcmFtZS4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBtYWluIGZyYW1lCiAg
KgotICogQHJldHVybiBld2tfZnJhbWUgb2JqZWN0IG9yIEBjIDAgaWYgbm9uZSB5ZXQuCisgKiBA
cmV0dXJuIGZyYW1lIHNtYXJ0IG9iamVjdCBvciBAYyAwIGlmIG5vbmUgeWV0CiAgKi8KIEVBUEkg
RXZhc19PYmplY3QgKmV3a192aWV3X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKIAogLyoqCi0gKiBHZXQgdGhlIGN1cnJlbnRseSBmb2N1c2VkIGZyYW1lIG9iamVjdC4KKyAq
IEdldHMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIGZyYW1lIG9iamVjdC4KICAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBnZXQgZm9jdXNlZCBmcmFtZS4KKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGdldCBmb2N1c2VkIGZyYW1lCiAgKgotICogQHJldHVybiBld2tfZnJhbWUgb2JqZWN0
IG9yIEBjIDAgaWYgbm9uZSB5ZXQuCisgKiBAcmV0dXJuIGZyYW1lIHNtYXJ0IG9iamVjdCBvciBA
YyAwIGlmIG5vbmUgeWV0CiAgKi8KIEVBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X2ZyYW1lX2Zv
Y3VzZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBBc2sgbWFpbiBmcmFt
ZSB0byBsb2FkIHRoZSBnaXZlbiBVUkkuCisgKiBBc2tzIHRoZSBtYWluIGZyYW1lIHRvIGxvYWQg
dGhlIGdpdmVuIFVSSS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBsb2FkIHVyaS4K
LSAqIEBwYXJhbSB1cmkgdW5pZm9ybSByZXNvdXJjZSBpZGVudGlmaWVyIHRvIGxvYWQuCisgKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBsb2FkIEBhIHVyaQorICogQHBhcmFtIHVyaSB1bmlmb3Jt
IHJlc291cmNlIGlkZW50aWZpZXIgdG8gbG9hZAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3NmdWwgcmVxdWVzdCwgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgotICogICAg
ICAgICBOb3RlIHRoYXQgaXQgbWVhbnMgdGhlIHJlcXVlc3Qgd2FzIGRvbmUsIG5vdCB0aGF0IGl0
IHdhcwotICogICAgICAgICBzYXRpc2ZpZWQuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzZnVsIHJlcXVlc3Qgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KIEVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIg
KnVyaSk7CiAKIC8qKgotICogR2V0IHRoZSBjdXJyZW50IHVyaSBsb2FkZWQgYnkgbWFpbiBmcmFt
ZS4KKyAqIEdldHMgdGhlIGN1cnJlbnQgdXJpIGxvYWRlZCBieSBtYWluIGZyYW1lLgorICoKKyAq
IEl0IHJldHVybnMgYSBpbnRlcm5hbCBzdHJpbmcgYW5kIHNob3VsZCBub3QKKyAqIGJlIG1vZGlm
aWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgogICoKICAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBjdXJyZW50IHVyaS4KICAqCi0gKiBAcmV0dXJu
IGN1cnJlbnQgdXJpIHJlZmVyZW5jZSBvciBAYyAwLiBJdCdzIGludGVybmFsLCBkb24ndCBjaGFu
Z2UuCisgKiBAcmV0dXJuIGN1cnJlbnQgdXJpIG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJl
CiAgKi8KIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwogCiAvKioKLSAqIEdldCB0aGUgY3VycmVudCB0aXRsZSBvZiBtYWluIGZyYW1lLgor
ICogR2V0cyB0aGUgY3VycmVudCB0aXRsZSBvZiB0aGUgbWFpbiBmcmFtZS4KKyAqCisgKiBJdCBy
ZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQgbm90CisgKiBiZSBtb2RpZmllZC4g
VGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4KICAqCi0gKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBnZXQgY3VycmVudCB0aXRsZS4KKyAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIGdldCBjdXJyZW50IHRpdGxlCiAgKgotICogQHJldHVybiBjdXJyZW50IHRpdGxl
IHJlZmVyZW5jZSBvciBAYyAwLiBJdCdzIGludGVybmFsLCBkb24ndCBjaGFuZ2UuCisgKiBAcmV0
dXJuIGN1cnJlbnQgdGl0bGUgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwogRUFQ
SSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
IAogLyoqCi0gKiBHZXRzIGlmIG1haW4gZnJhbWUgaXMgZWRpdGFibGUuCisgKiBRdWVyaWVzIGlm
IHRoZSBtYWluIGZyYW1lIGlzIGVkaXRhYmxlLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IHRvIGdldCBlZGl0YWJsZSBzdGF0ZS4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5
IGVkaXRhYmxlIHN0YXRlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgZWRpdGFibGUs
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhl
IG1haW4gZnJhbWUgaXMgZWRpdGFibGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7CiAKIC8qKgogICogU2V0cyBpZiBtYWluIGZyYW1lIGlzIGVkaXRhYmxlLgogICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBlZGl0YWJsZSBzdGF0ZS4KLSAqIEBwYXJhbSBlZGl0
YWJsZSBuZXcgc3RhdGUuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgZWRpdGFibGUg
c3RhdGUKKyAqIEBwYXJhbSBlZGl0YWJsZSBhIG5ldyBzdGF0ZSB0byBzZXQKICAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgZWRpdGFibGUpOwogCiAvKioKLSAqIFNldCBiYWNrZ3JvdW5kIGNv
bG9yIGFuZCB0cmFuc3BhcmVuY3kKKyAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3IgYW5kIHRy
YW5zcGFyZW5jeSBvZiB0aGUgdmlldy4KICAqCiAgKiBKdXN0IGFzIGluIEV2YXMsIGNvbG9ycyBh
cmUgcHJlLW11bHRpcGxpZWQsIHNvIDUwJSByZWQgaXMKICAqICgxMjgsIDAsIDAsIDEyOCkgYW5k
IG5vdCAoMjU1LCAwLCAwLCAxMjgpIQpAQCAtNjI2LDQ3ICs2NTIsNTAgQEAgRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZWRp
dGFibGUpOwogICogICAgICAgICAgc2Nyb2xsaW5nL3Bhbm5pbmcgYW5kIHpvb21pbmcgd2lsbCBi
ZSBsaWtlbHkgc2xvd2VyIHRoYW4KICAqICAgICAgICAgIGlmIHRyYW5zcGFyZW5jeSBpcyBvZmYu
CiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdlLgotICogQHBhcmFtIHIgcmVk
IGNvbXBvbmVudC4KLSAqIEBwYXJhbSBnIGdyZWVuIGNvbXBvbmVudC4KLSAqIEBwYXJhbSBiIGJs
dWUgY29tcG9uZW50LgotICogQHBhcmFtIGEgdHJhbnNwYXJlbmN5LgorICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gY2hhbmdlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yCisgKiBAcGFyYW0gciByZWQg
Y29sb3IgY29tcG9uZW50CisgKiBAcGFyYW0gZyBncmVlbiBjb2xvciBjb21wb25lbnQKKyAqIEBw
YXJhbSBiIGJsdWUgY29sb3IgY29tcG9uZW50CisgKiBAcGFyYW0gYSB0cmFuc3BhcmVuY3kKICAq
LwogRUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2YXNfT2JqZWN0ICpv
LCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CiAKIC8qKgotICogUXVlcnkgaWYgdmlldyBv
YmplY3QgYmFja2dyb3VuZCBjb2xvci4KKyAqIEdldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2Yg
dGhlIHZpZXcuCiAgKgogICogSnVzdCBhcyBpbiBFdmFzLCBjb2xvcnMgYXJlIHByZS1tdWx0aXBs
aWVkLCBzbyA1MCUgcmVkIGlzCiAgKiAoMTI4LCAwLCAwLCAxMjgpIGFuZCBub3QgKDI1NSwgMCwg
MCwgMTI4KSEKICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeS4KLSAqIEBwYXJh
bSByIHdoZXJlIHRvIHJldHVybiByZWQgY29sb3IgY29tcG9uZW50LgotICogQHBhcmFtIGcgd2hl
cmUgdG8gcmV0dXJuIGdyZWVuIGNvbG9yIGNvbXBvbmVudC4KLSAqIEBwYXJhbSBiIHdoZXJlIHRv
IHJldHVybiBibHVlIGNvbG9yIGNvbXBvbmVudC4KLSAqIEBwYXJhbSBhIHdoZXJlIHRvIHJldHVy
biBhbHBoYSB2YWx1ZS4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgYmFja2dy
b3VuZCBjb2xvcgorICogQHBhcmFtIHIgdGhlIHBvaW50ZXIgdG8gc3RvcmUgcmVkIGNvbG9yIGNv
bXBvbmVudAorICogQHBhcmFtIGcgdGhlIHBvaW50ZXIgdG8gc3RvcmUgZ3JlZW4gY29sb3IgY29t
cG9uZW50CisgKiBAcGFyYW0gYiB0aGUgcG9pbnRlciB0byBzdG9yZSBibHVlIGNvbG9yIGNvbXBv
bmVudAorICogQHBhcmFtIGEgdGhlIHBvaW50ZXIgdG8gc3RvcmUgYWxwaGEgdmFsdWUKICAqLwog
RUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvLCBpbnQgKnIsIGludCAqZywgaW50ICpiLCBpbnQgKmEpOwogCiAvKioKLSAqIEdldCB0aGUg
Y29weSBvZiB0aGUgc2VsZWN0aW9uIHRleHQuCisgKiBHZXRzIHRoZSBjb3B5IG9mIHRoZSBzZWxl
Y3RlZCB0ZXh0LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBzZWxlY3Rpb24g
dGV4dC4KKyAqIFRoZSByZXR1cm5lZCBzdHJpbmcgQGIgc2hvdWxkIGJlIGZyZWVkIGFmdGVyIHVz
ZS4KICAqCi0gKiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgb3IgQGMgMCBpZiBub3Ro
aW5nIGlzIHNlbGVjdGVkIG9yIGZhaWx1cmUuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBn
ZXQgc2VsZWN0ZWQgdGV4dAorICoKKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5n
IG9yIEBjIDAgaWYgbm90aGluZyBpcyBzZWxlY3RlZCBvciBvbiBmYWlsdXJlCiAgKi8KIEVBUEkg
Y2hhciAgICAgICAgKmV3a192aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwogCiAvKioKLSAqIEZvcndhcmRzIGEgcmVxdWVzdCBvZiBuZXcgQ29udGV4dCBNZW51IHRvIFdl
YkNvcmUuCisgKiBGb3J3YXJkcyBhIHJlcXVlc3Qgb2YgYSBuZXcgQ29udGV4dCBNZW51IHRvIFdl
YkNvcmUuCiAgKgotICogQHBhcmFtIG8gVmlldy4KLSAqIEBwYXJhbSBldiBFdmVudCBkYXRhLgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZm9yd2FyZCBhIHJlcXVlc3Qgb2YgYSBuZXcgQ29u
dGV4dCBNZW51CisgKiBAcGFyYW0gZXYgbW91c2UgZG93biBldmVudCBkYXRhCiAgKgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgaWYgb3BlcmF0aW9uIHdhcyBleGVjdXRlZCwgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVyYXRpb24gd2FzIGV4
ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFQVBJIEVpbmFfQm9vbCAgICBl
d2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09iamVjdCAqbywgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9Eb3duICpldik7CiAKKy8vLyBDb250YWlucyBjb21tYW5kcyB0byBl
eGVjdXRlLgogZW51bSBfRXdrX0VkaXRvcl9Db21tYW5kIHsKICAgICBFV0tfRURJVE9SX0NPTU1B
TkRfSU5TRVJUX0lNQUdFID0gMCwKICAgICBFV0tfRURJVE9SX0NPTU1BTkRfSU5TRVJUX1RFWFQs
CkBAIC02NzcsMTYgKzcwNiwxNyBAQCBlbnVtIF9Fd2tfRWRpdG9yX0NvbW1hbmQgewogICAgIEVX
S19FRElUT1JfQ09NTUFORF9TRUxFQ1RfTElORSwKICAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VM
RUNUX1dPUkQKIH07CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19FZGl0b3Jf
Q29tbWFuZC4KIHR5cGVkZWYgZW51bSBfRXdrX0VkaXRvcl9Db21tYW5kIEV3a19FZGl0b3JfQ29t
bWFuZDsKIAogLyoqCiAgKiBFeGVjdXRlcyBlZGl0b3IgY29tbWFuZC4KICAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBleGVjdXRlIGNvbW1hbmQuCi0gKiBAcGFyYW0gY29tbWFuZCBlZGl0
b3IgY29tbWFuZCB0byBiZSBleGVjdXRlZC4KLSAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBiZSBw
YXNzZWQgaW50byBjb21tYW5kLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZXhlY3V0ZSBj
b21tYW5kCisgKiBAcGFyYW0gY29tbWFuZCBlZGl0b3IgY29tbWFuZCB0byBleGVjdXRlCisgKiBA
cGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIHBhc3NlZCBpbnRvIGNvbW1hbmQKICAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVyYXRpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMg
RUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2V4
ZWN1dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19FZGl0b3JfQ29t
bWFuZCBjb21tYW5kLCBjb25zdCBjaGFyICp2YWx1ZSk7CiAKQEAgLTY5NywyNDQgKzcyNywyNzMg
QEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfZXhlY3V0ZV9lZGl0b3JfY29tbWFuZChFdmFz
X09iamVjdCAqbywgY29uc3QgRXdrX0VkaXQKICAqIHdoZW5ldmVyIHVzZXIgaGFzIGNob3NlbiBh
IGRpZmZlcmVudCBpdGVtLiBNb3N0IGxpa2VseSBhZnRlciBjYWxsaW5nIHRoaXMsIGEKICAqIGNh
bGwgdG8gZXdrX3ZpZXdfcG9wdXBfZGVzdHJveSBtaWdodCBiZSBtYWRlIGluIG9yZGVyIHRvIGNs
b3NlIHRoZSBwb3B1cC4KICAqCi0gKiBAcGFyYW0gbyBWaWV3LgotICogQGluZGV4IEluZGV4IG9m
IHNlbGVjdGVkIGl0ZW0uCi0gKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdlIGN1
cnJlbnRseSBzZWxlY3RlZCBpdGVtCisgKiBAaW5kZXggaW5kZXggYSBuZXcgaW5kZXggdG8gc2V0
CiAgKi8KIEVBUEkgdm9pZCAgICAgICAgIGV3a192aWV3X3BvcHVwX3NlbGVjdGVkX3NldChFdmFz
X09iamVjdCAqbywgaW50IGluZGV4KTsKIAogLyoqCi0gKiBEZXN0cm95IGEgcHJldmlvdXNseSBj
cmVhdGVkIG1lbnUuCisgKiBEZXN0cm95cyBhIHByZXZpb3VzbHkgY3JlYXRlZCBtZW51LgogICoK
ICAqIEJlZm9yZSBkZXN0cm95aW5nLCBpdCBpbmZvcm1zIGNsaWVudCB0aGF0IG1lbnUncyBkYXRh
IGlzIHJlYWR5IHRvIGJlCiAgKiBkZXN0cm95ZWQgYnkgc2VuZGluZyBhICJwb3B1cCx3aWxsZGVs
ZXRlIiB3aXRoIGEgbGlzdCBvZiBtZW51IGl0ZW1zLiBUaGVuIGl0CiAgKiByZW1vdmVzIGFueSBy
ZWZlcmVuY2UgdG8gbWVudSBpbnNpZGUgd2Via2l0LiBJdCdzIHNhZmUgdG8gY2FsbCB0aGlzCiAg
KiBmdW5jdGlvbiBlaXRoZXIgZnJvbSBpbnNpZGUgd2Via2l0IG9yIGZyb20gYnJvd3Nlci4KICAq
Ci0gKiBAcGFyYW0gbyBWaWV3LgorICogQHBhcmFtIG8gdmlldyBvYmplY3QKICAqCi0gKiBAcmV0
dXJucyBFSU5BX1RSVUUgaW4gY2FzZSBtZW51IHdhcyBzdWNjZXNzZnVsbHkgZGVzdHJveWVkIG9y
IEVJTkFfVFJVRSBpbgotICogY2FzZSB0aGVyZSB3YXNuJ3QgYW55IG1lbnUgdG8gYmUgZGVzdHJv
eWVkLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaW4gY2FzZSBtZW51IHdhcyBzdWNjZXNzZnVs
bHkgZGVzdHJveWVkIG9yIEBjIEVJTkFfVFJVRSBpbgorICogY2FzZSB0aGVyZSB3YXNuJ3QgYW55
IG1lbnUgdG8gYmUgZGVzdHJveWVkCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3Bv
cHVwX2Rlc3Ryb3koRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIFNlYXJjaCB0aGUgZ2l2ZW4g
dGV4dCBzdHJpbmcgaW4gZG9jdW1lbnQuCisgKiBTZWFyY2hlcyB0aGUgZ2l2ZW4gc3RyaW5nIGlu
IGEgZG9jdW1lbnQuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3Qgd2hlcmUgdG8gc2VhcmNo
IHRleHQuCi0gKiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBzdHJpbmcgdG8gc2VhcmNoLgotICog
QHBhcmFtIGNhc2Vfc2Vuc2l0aXZlIGlmIHNlYXJjaCBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUg
b3Igbm90LgotICogQHBhcmFtIGZvcndhcmQgaWYgc2VhcmNoIGlzIGZyb20gY3Vyc29yIGFuZCBv
biBvciBiYWNrd2FyZHMuCi0gKiBAcGFyYW0gd3JhcCBpZiBzZWFyY2ggc2hvdWxkIHdyYXAgYXQg
ZW5kLgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qgd2hlcmUgdG8gc2VhcmNoIHRoZSB0ZXh0Cisg
KiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBzdHJpbmcgdG8gc2VhcmNoCisgKiBAcGFyYW0gY2Fz
ZV9zZW5zaXRpdmUgaWYgc2VhcmNoIHNob3VsZCBiZSBjYXNlIHNlbnNpdGl2ZSBvciBub3QKKyAq
IEBwYXJhbSBmb3J3YXJkIGlmIHNlYXJjaCBpcyBmcm9tIGN1cnNvciBhbmQgb24gb3IgYmFja3dh
cmRzCisgKiBAcGFyYW0gd3JhcCBpZiBzZWFyY2ggc2hvdWxkIHdyYXAgYXQgdGhlIGVuZAogICoK
LSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGZvdW5kLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBv
ciBmYWlsdXJlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGdpdmVuIHN0cmluZyB3
YXMgZm91bmQsIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIGZhaWx1cmUKICAqLwogRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKnN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2Fy
ZCwgRWluYV9Cb29sIHdyYXApOwogCiAvKioKLSAqIEdldCBpZiBzaG91bGQgaGlnaGxpZ2h0IG1h
dGNoZXMgbWFya2VkIHdpdGggZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoKS4KKyAqIE1hcmtz
IG1hdGNoZXMgdGhlIGdpdmVuIHN0cmluZyBpbiBhIGRvY3VtZW50LgogICoKLSAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkIG9yIG5vdC4K
KyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0CisgKiBAcGFyYW0g
c3RyaW5nIHJlZmVyZW5jZSBzdHJpbmcgdG8gbWF0Y2gKKyAqIEBwYXJhbSBjYXNlX3NlbnNpdGl2
ZSBpZiBtYXRjaCBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUgb3Igbm90CisgKiBAcGFyYW0gaGln
aGxpZ2h0IGlmIG1hdGNoZXMgc2hvdWxkIGJlIGhpZ2hsaWdodGVkCisgKiBAcGFyYW0gbGltaXQg
bWF4aW11bSBhbW91bnQgb2YgbWF0Y2hlcywgb3IgemVybyB0byB1bmxpbWl0ZWQKICAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGV5IGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIG51bWJlciBvZiBtYXRjaGVkIEBhIHN0cmluZwogICov
CiBFQVBJIHVuc2lnbmVkIGludCBld2tfdmlld190ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVj
dCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFf
Qm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCk7CiAKIC8qKgotICogUmV2ZXJzZXMg
dGhlIGVmZmVjdCBvZiBld2tfdmlld190ZXh0X21hdGNoZXNfbWFyaygpCisgKiBVbm1hcmtzIGFs
bCBtYXJrZWQgbWF0Y2hlcyBpbiBhIGRvY3VtZW50LgorICoKKyAqIFJldmVyc2VzIHRoZSBlZmZl
Y3Qgb2YgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKCkuCiAgKgotICogQHBhcmFtIG8gdmll
dyBvYmplY3Qgd2hlcmUgdG8gc2VhcmNoIHRleHQuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB3
aGVyZSB0byB1bm1hcmsgbWF0Y2hlcwogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3MsIEBjIEVJTkFfRkFMU0UgZm9yIGZhaWx1cmUuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCiBFQVBJIEVpbmFf
Qm9vbCAgICBld2tfdmlld190ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCAqbyk7
CiAKIC8qKgotICogU2V0IGlmIHNob3VsZCBoaWdobGlnaHQgbWF0Y2hlcyBtYXJrZWQgd2l0aCBl
d2tfdmlld190ZXh0X21hdGNoZXNfbWFyaygpLgorICogU2V0cyBpZiBzaG91bGQgaGlnaGxpZ2h0
IG1hdGNoZXMgbWFya2VkIHdpdGggZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKCkuCiAgKgot
ICogQHBhcmFtIG8gdmlldyBvYmplY3Qgd2hlcmUgdG8gc2V0IGlmIG1hdGNoZXMgYXJlIGhpZ2hs
aWdodGVkIG9yIG5vdC4KLSAqIEBwYXJhbSBoaWdobGlnaHQgaWYgQGMgRUlOQV9UUlVFLCBtYXRj
aGVzIHdpbGwgYmUgaGlnaGxpZ2h0ZWQuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB3aGVyZSB0
byBzZXQgaWYgbWF0Y2hlcyBhcmUgaGlnaGxpZ2h0ZWQgb3Igbm90CisgKiBAcGFyYW0gaGlnaGxp
Z2h0IEBjIEVJTkFfVFJVRSBpZiBtYXRjaGVzIGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxT
RSBpZiBub3QKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIGZvciBmYWlsdXJlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBv
ciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBo
aWdobGlnaHQpOwogCisvKioKKyAqIEdldHMgaWYgc2hvdWxkIGhpZ2hsaWdodCBtYXRjaGVzIG1h
cmtlZCB3aXRoIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyaygpLgorICoKKyAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkIG9yIG5vdAor
ICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkLCBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld190
ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKIC8qKgot
ICogR2V0IGN1cnJlbnQgbG9hZCBwcm9ncmVzcyBlc3RpbWF0ZSBmcm9tIDAuMCB0byAxLjAuCisg
KiBHZXRzIHRoZSBjdXJyZW50IGxvYWQgcHJvZ3Jlc3Mgb2YgcGFnZS4KKyAqCisgKiBUaGUgcHJv
Z3Jlc3MgZXN0aW1hdGVzIGZyb20gMC4wIHRvIDEuMC4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBnZXQgY3VycmVudCBwcm9ncmVzcy4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IGdldCB0aGUgY3VycmVudCBwcm9ncmVzcwogICoKLSAqIEByZXR1cm4gcHJvZ3JlcyB2YWx1ZSBm
cm9tIDAuMCB0byAxLjAgb3IgLTEuMCBvbiBlcnJvci4KKyAqIEByZXR1cm4gdGhlIGxvYWQgcHJv
Z3JlcyBvZiBwYWdlLCB2YWx1ZSBmcm9tIDAuMCB0byAxLjAgb24gc3VjY2VzcworICogICAgICAg
b3IgLTEuMCBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgZG91YmxlICAgICAgIGV3a192aWV3X2xvYWRf
cHJvZ3Jlc3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBBc2sgbWFpbiBm
cmFtZSB0byBzdG9wIGxvYWRpbmcuCisgKiBBc2tzIHRoZSBtYWluIGZyYW1lIHRvIHN0b3AgbG9h
ZGluZy4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzdG9wIGxvYWRpbmcuCisgKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBzdG9wIGxvYWRpbmcKICAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KLSAqCi0gKiBAc2Vl
IGV3a19mcmFtZV9zdG9wKCkKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3Ig
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3N0b3AoRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIEFzayBtYWluIGZyYW1lIHRvIHJlbG9h
ZCBjdXJyZW50IGRvY3VtZW50LgorICogQXNrcyB0aGUgbWFpbiBmcmFtZSB0byByZWxvYWQgdGhl
IGN1cnJlbnQgZG9jdW1lbnQuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcmVsb2Fk
LgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcmVsb2FkIGN1cnJlbnQgZG9jdW1lbnQKICAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UKICAqCi0gKiBAc2VlIGV3a19mcmFtZV9yZWxvYWQoKQorICogQHNlZSBld2tf
dmlld19yZWxvYWRfZnVsbCgpCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3JlbG9h
ZChFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogQXNrIG1haW4gZnJhbWUgdG8gZnVsbHkgcmVs
b2FkIGN1cnJlbnQgZG9jdW1lbnQsIHVzaW5nIG5vIGNhY2hlcy4KKyAqIEFza3MgdGhlIG1haW4g
ZnJhbWUgdG8gZnVsbHkgcmVsb2FkIHRoZSBjdXJyZW50IGRvY3VtZW50LCB1c2luZyBubyBjYWNo
ZXMuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcmVsb2FkLgorICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gcmVsb2FkIGN1cnJlbnQgZG9jdW1lbnQKICAqCi0gKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgbyByQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAq
Ci0gKiBAc2VlIGV3a19mcmFtZV9yZWxvYWRfZnVsbCgpCisgKiBAc2VlIGV3a192aWV3X3JlbG9h
ZCgpCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2Jq
ZWN0ICpvKTsKIAogLyoqCi0gKiBBc2sgbWFpbiBmcmFtZSB0byBuYXZpZ2F0ZSBiYWNrIGluIGhp
c3RvcnkuCisgKiBBc2tzIHRoZSBmcmFtZSB0byBuYXZpZ2F0ZSBiYWNrIGluIHRoZSBoaXN0b3J5
LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIG5hdmlnYXRlIGJhY2suCisgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBuYXZpZ2F0ZSBiYWNrCiAgKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKgogICog
QHNlZSBld2tfZnJhbWVfYmFjaygpCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2Jh
Y2soRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIEFzayBtYWluIGZyYW1lIHRvIG5hdmlnYXRl
IGZvcndhcmQgaW4gaGlzdG9yeS4KKyAqIEFza3MgZnJhbWUgdG8gbmF2aWdhdGUgZm9yd2FyZCBp
biB0aGUgaGlzdG9yeS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBuYXZpZ2F0ZSBm
b3J3YXJkLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbmF2aWdhdGUgZm9yd2FyZAogICoK
LSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZQogICoKICAqIEBzZWUgZXdrX2ZyYW1lX2ZvcndhcmQoKQogICovCiBFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19mb3J3YXJkKEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBO
YXZpZ2F0ZSBiYWNrIG9yIGZvcndhcmQgaW4gaGlzdG9yeS4KKyAqIE5hdmlnYXRlcyBiYWNrIG9y
IGZvcndhcmQgaW4gdGhlIGhpc3RvcnkuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
bmF2aWdhdGUuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBuYXZpZ2F0ZSBpbiB0aGUgaGlz
dG9yeQogICogQHBhcmFtIHN0ZXBzIGlmIHBvc2l0aXZlIG5hdmlnYXRlcyB0aGF0IGFtb3VudCBm
b3J3YXJkcywgaWYgbmVnYXRpdmUKLSAqICAgICAgICBkb2VzIGJhY2t3YXJkcy4KKyAqICAgICAg
ICBkb2VzIGJhY2t3YXJkcwogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Ms
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICoKICAqIEBzZWUgZXdrX2ZyYW1lX25h
dmlnYXRlKCkKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfbmF2aWdhdGUoRXZhc19P
YmplY3QgKm8sIGludCBzdGVwcyk7CiAKIC8qKgotICogQ2hlY2sgaWYgaXQgaXMgcG9zc2libGUg
dG8gbmF2aWdhdGUgYmFja3dhcmRzIG9uZSBpdGVtIGluIGhpc3RvcnkuCi0gKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gY2hlY2sgaWYgYmFja3dhcmQgbmF2aWdhdGlvbiBpcyBwb3NzaWJs
ZS4KKyAqIFF1ZXJpZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBiYWNrd2FyZHMgb25l
IGl0ZW0gaW4gdGhlIGhpc3RvcnkuCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9z
c2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gcXVlcnkgaWYgYmFja3dhcmQgbmF2aWdhdGlvbiBpcyBwb3NzaWJsZQogICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgYmFja3dhcmQgb25l
IGl0ZW0gaW4gdGhlIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKiBAc2VlIGV3
a192aWV3X25hdmlnYXRlX3Bvc3NpYmxlKCkKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfYmFja19wb3NzaWJsZShFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogQ2hlY2sgaWYgaXQg
aXMgcG9zc2libGUgdG8gbmF2aWdhdGUgZm9yd2FyZHMgb25lIGl0ZW0gaW4gaGlzdG9yeS4KKyAq
IFF1ZXJpZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBmb3J3YXJkcyBvbmUgaXRlbSBp
biB0aGUgaGlzdG9yeS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBjaGVjayBpZiBm
b3J3YXJkIG5hdmlnYXRpb24gaXMgcG9zc2libGUuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBxdWVyeSBpZiBmb3J3YXJkIG5hdmlnYXRpb24gaXMgcG9zc2libGUKICAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGZvcndhcmRz
IGluIHRoZSBoaXN0b3J5LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICoKICAqIEBzZWUgZXdr
X3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoKQogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmll
d19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBDaGVjayBpZiBp
dCBpcyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBnaXZlbiBAYSBzdGVwcyBpbiBoaXN0b3J5LgorICog
UXVlcmllcyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGdpdmVuIEBhIHN0ZXBzIGluIHRo
ZSBoaXN0b3J5LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIG5hdmlnYXRlLgorICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0
ZSBAYSBzdGVwcyBpbiB0aGUgaGlzdG9yeQogICogQHBhcmFtIHN0ZXBzIGlmIHBvc2l0aXZlIG5h
dmlnYXRlcyB0aGF0IGFtb3VudCBmb3J3YXJkcywgaWYgbmVnYXRpdmUKLSAqICAgICAgICBkb2Vz
IGJhY2t3YXJkcy4KKyAqICAgICAgICBkb2VzIGJhY2t3YXJkcwogICoKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgQGEgc3RlcHMgaW4g
dGhlIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X25hdmlnYXRlX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvLCBpbnQgc3RlcHMp
OwogCiAvKioKLSAqIENoZWNrIGlmIG5hdmlnYXRpb24gaGlzdG9yeSAoYmFjay1mb3J3YXJkIGxp
c3RzKSBpcyBlbmFibGVkLgorICogUXVlcmllcyBpZiBuYXZpZ2F0aW9uIGluIHRoZSBoaXN0b3J5
IChiYWNrLWZvcndhcmQgbGlzdHMpIGlzIGVuYWJsZWQuCiAgKgotICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gY2hlY2sgaWYgbmF2aWdhdGlvbiBoaXN0b3J5IGlzIGVuYWJsZWQuCisgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBuYXZpZ2F0aW9uIGhpc3RvcnkgaXMgZW5hYmxl
ZAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHZpZXcga2VlcHMgaGlzdG9yeSwgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB2aWV3IGtl
ZXBzIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAK
IC8qKgotICogU2V0cyBpZiBuYXZpZ2F0aW9uIGhpc3RvcnkgKGJhY2stZm9yd2FyZCBsaXN0cykg
aXMgZW5hYmxlZC4KKyAqIEVuYWJsZXMvZGlzYWJsZXMgbmF2aWdhdGlvbiBpbiB0aGUgaGlzdG9y
eSAoYmFjay1mb3J3YXJkIGxpc3RzKS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBz
ZXQgaWYgbmF2aWdhdGlvbiBoaXN0b3J5IGlzIGVuYWJsZWQuCi0gKiBAcGFyYW0gZW5hYmxlIEBj
IEVJTkFfVFJVRSBpZiB3ZSB3YW50IHRvIGVuYWJsZSBuYXZpZ2F0aW9uIGhpc3Rvcnk7Ci0gKiBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGVuYWJs
ZS9kaXNhYmxlIG5hdmlnYXRpb24gaW4gdGhlIGhpc3RvcnkKKyAqIEBwYXJhbSBlbmFibGUgQGMg
RUlOQV9UUlVFIHRvIGVuYWJsZSBuYXZpZ2F0aW9uIGluIHRoZSBoaXN0b3J5LAorICogICAgICAg
IEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFQVBJIEVpbmFf
Qm9vbCAgICBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBlbmFibGUpOwogCiAvKioKICAqIEdldHMgdGhlIGhpc3RvcnkgKGJhY2stZm9yd2FyZCBs
aXN0KSBhc3NvY2lhdGVkIHdpdGggdGhpcyB2aWV3LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGdldCBuYXZpZ2F0aW9uIGhpc3RvcnkgZnJvbS4KKyAqIFRoZSByZXR1cm5lZCBpbnN0
YW5jZSBpcyB1bmlxdWUgZm9yIHRoaXMgdmlldyBhbmQgdGh1cyBtdWx0aXBsZSBjYWxscworICog
dG8gdGhpcyBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHZpZXcgYXMgcGFyYW1ldGVyIHJldHVybnMg
dGhlIHNhbWUKKyAqIGhhbmRsZS4gVGhpcyBoYW5kbGUgaXMgYWxpdmUgd2hpbGUgdmlldyBpcyBh
bGl2ZSwgdGh1cyBvbmUKKyAqIG1pZ2h0IHdhbnQgdG8gbGlzdGVuIGZvciBFVkFTX0NBTExCQUNL
X0RFTCBvbiBnaXZlbiB2aWV3CisgKiAoQGEgbykgdG8ga25vdyB3aGVuIHRvIHN0b3AgdXNpbmcg
cmV0dXJuZWQgaGFuZGxlLgogICoKLSAqIEByZXR1cm4gcmV0dXJucyB0aGUgaGlzdG9yeSBpbnN0
YW5jZSBoYW5kbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMKLSAqICAgICAgICAgdmlldyBvciBAYyAw
IG9uIGVycm9ycyAoaW5jbHVkaW5nIHdoZW4gaGlzdG9yeSBpcyBub3QKLSAqICAgICAgICAgZW5h
YmxlZCB3aXRoIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldCgpKS4gVGhpcyBpbnN0YW5jZQot
ICogICAgICAgICBpcyB1bmlxdWUgZm9yIHRoaXMgdmlldyBhbmQgdGh1cyBtdWx0aXBsZSBjYWxs
cyB0byB0aGlzCi0gKiAgICAgICAgIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgdmlldyBhcyBwYXJh
bWV0ZXIgcmV0dXJucyB0aGUgc2FtZQotICogICAgICAgICBoYW5kbGUuIFRoaXMgaGFuZGxlIGlz
IGFsaXZlIHdoaWxlIHZpZXcgaXMgYWxpdmUsIHRodXMgb25lCi0gKiAgICAgICAgIG1pZ2h0IHdh
bnQgdG8gbGlzdGVuIGZvciBFVkFTX0NBTExCQUNLX0RFTCBvbiBnaXZlbiB2aWV3Ci0gKiAgICAg
ICAgIChAYSBvKSB0byBrbm93IHdoZW4gdG8gc3RvcCB1c2luZyByZXR1cm5lZCBoYW5kbGUuCisg
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgbmF2aWdhdGlvbiBoaXN0b3J5CisgKgorICog
QHJldHVybiB0aGUgaGlzdG9yeSBpbnN0YW5jZSBoYW5kbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMK
KyAqICAgICAgICAgdmlldyBvbiBzdWNjZXMgb3IgQGMgMCBvbiBmYWlsdXJlIChpbmNsdWRpbmcg
d2hlbiB0aGUgaGlzdG9yeQorICogICAgICAgICBuYXZpZ2F0aW9uIGlzIG5vdCBlbmFibGVkIHdp
dGggZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KCkpCiAgKgogICogQHNlZSBld2tfdmlld19o
aXN0b3J5X2VuYWJsZV9zZXQoKQogICovCiBFQVBJIEV3a19IaXN0b3J5ICpld2tfdmlld19oaXN0
b3J5X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogR2V0IHRoZSBjdXJyZW50
IHpvb20gbGV2ZWwgb2YgbWFpbiBmcmFtZS4KKyAqIEdldHMgdGhlIGN1cnJlbnQgem9vbSBsZXZl
bCBvZiB0aGUgbWFpbiBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVy
eSB6b29tIGxldmVsLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSB6b29tIGxl
dmVsCiAgKgotICogQHJldHVybiBjdXJyZW50IHpvb20gbGV2ZWwgaW4gdXNlIG9yIC0xLjAgb24g
ZXJyb3IuCisgKiBAcmV0dXJuIGN1cnJlbnQgem9vbSBsZXZlbCBpbiB1c2Ugb24gc3VjY2VzcyBv
ciBAYyAtMS4wIG9uIGZhaWx1cmUKICAqLwogRUFQSSBmbG9hdCAgICAgICAgZXdrX3ZpZXdfem9v
bV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIFNldCB0aGUgY3VycmVudCB6
b29tIGxldmVsIG9mIG1haW4gZnJhbWUuCisgKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwg
b2YgdGhlIG1haW4gZnJhbWUsIGNlbnRlcmVkIGF0IHRoZSBnaXZlbiBwb2ludC4KICAqCi0gKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgem9vbSBsZXZlbC4KLSAqIEBwYXJhbSB6b29tIG5l
dyBsZXZlbCB0byB1c2UuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHpvb20g
bGV2ZWwKKyAqIEBwYXJhbSB6b29tIGEgbmV3IGxldmVsIHRvIHNldAogICogQHBhcmFtIGN4IHgg
b2YgY2VudGVyIGNvb3JkaW5hdGUKICAqIEBwYXJhbSBjeSB5IG9mIGNlbnRlciBjb29yZGluYXRl
CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5
KTsKIAorLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBzbW9vdGggc2NhbGUgaXMgZW5hYmxlZCB3aGls
ZSB0aGUgd2VhayB6b29tLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlm
IHRoZSBzbW9vdGggc2NhbGUgaXMgZW5hYmxlZCB3aGlsZSB0aGUgd2VhayB6b29tCisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHNtb290aCBzY2FsZSBpcyBlbmFibGVkIHdoaWxl
IHRoZSB3ZWFrIHpvb20sIG9yCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9u
IGZhaWx1cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290
aF9zY2FsZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIEVuYWJsZXMvZGlz
YWJsZXMgdGhlIHNtb290aCBzY2FsZSB3aGlsZSB0aGUgd2VhayB6b29tLgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgc21vb3RoIHNjYWxlIHdoaWxlIHRoZSB3ZWFrIHpv
b20KKyAqIEBwYXJhbSBzbW9vdGhfc2NhbGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgc21v
b3RoIHNjYWxlCisgKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCisgKi8KIEVBUEkg
dm9pZCAgICAgICAgIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKTsKIAogLyoqCi0gKiBTZXQgdGhlIGN1cnJl
bnQgem9vbSBsZXZlbCBvZiBiYWNraW5nIHN0b3JlLCBjZW50ZXJlZCBhdCBnaXZlbiBwb2ludC4K
KyAqIFNldHMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiBiYWNraW5nIHN0b3JlLCBjZW50ZXJl
ZCBhdCBnaXZlbiBwb2ludC4KICAqCiAgKiBVbmxpa2UgZXdrX3ZpZXdfem9vbV9zZXQoKSwgdGhp
cyBjYWxsIGRvIG5vdCBhc2sgV2ViS2l0IHRvIHJlbmRlcgogICogYXQgbmV3IHNpemUsIGJ1dCBz
Y2FsZSB3aGF0IGlzIGFscmVhZHkgcmVuZGVyZWQsIGJlaW5nIG11Y2ggZmFzdGVyCkBAIC05NTIs
MjYgKzEwMTEsMjYgQEAgRUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290
aF9zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbAogICogICAgICAgbGV2ZWwsIGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKSBhbmQKICAqICAgICAgIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfbWFya19jdXJyZW50KCkgdG8gZ2l2ZW4gem9vbSBsZXZlbC4KICAqCi0gKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgd2VhayB6b29tIGxldmVsLgotICogQHBhcmFtIHpv
b20gbGV2ZWwgdG8gc2NhbGUgYmFja2luZyBzdG9yZS4KLSAqIEBwYXJhbSBjeCBob3Jpem9udGFs
IGNlbnRlciBvZmZzZXQsIHJlbGF0aXZlIHRvIG9iamVjdCAody8yIGlzIG1pZGRsZSkuCi0gKiBA
cGFyYW0gY3kgdmVydGljYWwgY2VudGVyIG9mZnNldCwgcmVsYXRpdmUgdG8gb2JqZWN0IChoLzIg
aXMgbWlkZGxlKS4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgd2VhayB6b29t
IGxldmVsCisgKiBAcGFyYW0gem9vbSBhIG5ldyBsZXZlbCB0byBzY2FsZSBiYWNraW5nIHN0b3Jl
CisgKiBAcGFyYW0gY3ggaG9yaXpvbnRhbCBjZW50ZXIgb2Zmc2V0LCByZWxhdGl2ZSB0byBvYmpl
Y3QgKHcvMiBpcyBtaWRkbGUpCisgKiBAcGFyYW0gY3kgdmVydGljYWwgY2VudGVyIG9mZnNldCwg
cmVsYXRpdmUgdG8gb2JqZWN0IChoLzIgaXMgbWlkZGxlKQogICoKLSAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0ICpvLCBm
bG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKIAogLyoqCi0gKiBNYXJr
IGludGVybmFsIHpvb20gYW5pbWF0aW9uIHN0YXRlIHRvIGdpdmVuIHpvb20uCisgKiBTZXRzIHN0
YXJ0IG9mIGFuIGludGVybmFsIHpvb20gYW5pbWF0aW9uIHN0YXRlIHRvIHRoZSBnaXZlbiB6b29t
LgogICoKICAqIFRoaXMgZG9lcyBub3QgbW9kaWZ5IGFueSBhY3R1YWwgem9vbSBpbiBXZWJLaXQg
b3IgYmFja2luZyBzdG9yZSwKLSAqIGp1c3Qgc2V0IHRoZSBFd2tfVmlld19TbWFydF9EYXRhLT5h
bmltYXRlZF96b29tLnpvb20uc3RhcnQgc28KLSAqIHN1Yi1jbGFzc2VzIHdpbGwga25vdyB0aGV5
IHNob3VsZCBub3QgcmVzZXQgdGhlaXIgaW50ZXJuYWwgc3RhdGUuCisgKiBqdXN0IHNldCBuZWVk
ZWQgZmxhZyBzbyBzdWItY2xhc3NlcyBrbm93cyB0aGV5IHNob3VsZCBub3QgcmVzZXQKKyAqIHRo
ZWlyIGFuIGludGVybmFsIHN0YXRlLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNo
YW5nZSB2YWx1ZS4KLSAqIEBwYXJhbSB6b29tIG5ldyBzdGFydCB2YWx1ZS4KKyAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHNldCBzdGFydCBvZiBhbiBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbgor
ICogQHBhcmFtIHpvb20gYSBuZXcgc3RhcnQgdmFsdWUKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqCiAgKiBA
c2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KCkKICAqIEBzZWUgZXdrX3ZpZXdfem9vbV93
ZWFrX3NldCgpCkBAIC05ODIsMTYgKzEwNDEsMTYgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19Db29yZAog
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0YXJ0KEV2YXNf
T2JqZWN0ICpvLCBmbG9hdCB6b29tKTsKIAogLyoqCi0gKiBNYXJrIGludGVybmFsIHpvb20gYW5p
bWF0aW9uIHN0YXRlIHRvIGdpdmVuIHpvb20uCisgKiBTZXRzIGVuZCBvZiBhbiBpbnRlcm5hbCB6
b29tIGFuaW1hdGlvbiBzdGF0ZSB0byBnaXZlbiB6b29tLgogICoKICAqIFRoaXMgZG9lcyBub3Qg
bW9kaWZ5IGFueSBhY3R1YWwgem9vbSBpbiBXZWJLaXQgb3IgYmFja2luZyBzdG9yZSwKLSAqIGp1
c3Qgc2V0IHRoZSBFd2tfVmlld19TbWFydF9EYXRhLT5hbmltYXRlZF96b29tLnpvb20uZW5kIHNv
Ci0gKiBzdWItY2xhc3NlcyB3aWxsIGtub3cgdGhleSBzaG91bGQgbm90IHJlc2V0IHRoZWlyIGlu
dGVybmFsIHN0YXRlLgorICoganVzdCBzZXQgbmVlZGVkIGZsYWcgc28gc3ViLWNsYXNzZXMga25v
d3MgdGhleSBzaG91bGQgbm90IHJlc2V0CisgKiB0aGVpciBhbiBpbnRlcm5hbCBzdGF0ZS4KICAq
Ci0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBjaGFuZ2UgdmFsdWUuCi0gKiBAcGFyYW0gem9v
bSBuZXcgZW5kIHZhbHVlLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGVuZCBvZiBh
biBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbgorICogQHBhcmFtIHpvb20gYSBuZXcgZW5kIHZhbHVl
CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlCiAgKgogICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX3NldCgp
CiAgKiBAc2VlIGV3a192aWV3X3pvb21fd2Vha19zZXQoKQpAQCAtMTAwMiwxNiArMTA2MSwxNiBA
QCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RhcnQoRXZh
c19PYmplY3QgKm8sIGZsb2F0IHpvb20pOwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9tYXJrX2VuZChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSk7CiAKIC8qKgot
ICogTWFyayBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbiBzdGF0ZSB0byBnaXZlbiB6b29tLgorICog
U2V0cyBhbiBpbnRlcm5hbCBjdXJyZW50IHpvb20gYW5pbWF0aW9uIHN0YXRlIHRvIGdpdmVuIHpv
b20uCiAgKgogICogVGhpcyBkb2VzIG5vdCBtb2RpZnkgYW55IGFjdHVhbCB6b29tIGluIFdlYktp
dCBvciBiYWNraW5nIHN0b3JlLAotICoganVzdCBzZXQgdGhlIEV3a19WaWV3X1NtYXJ0X0RhdGEt
PmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50IHNvCi0gKiBzdWItY2xhc3NlcyB3aWxsIGtub3cg
dGhleSBzaG91bGQgbm90IHJlc2V0IHRoZWlyIGludGVybmFsIHN0YXRlLgorICoganVzdCBzZXQg
bmVlZGVkIGZsYWcgc28gc3ViLWNsYXNzZXMga25vd3MgdGhleSBzaG91bGQgbm90IHJlc2V0Cisg
KiB0aGVpciBhbiBpbnRlcm5hbCBzdGF0ZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBjaGFuZ2UgdmFsdWUuCi0gKiBAcGFyYW0gem9vbSBuZXcgY3VycmVudCB2YWx1ZS4KKyAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBhbiBpbnRlcm5hbCBjdXJyZW50IHpvb20gYW5pbWF0
aW9uCisgKiBAcGFyYW0gem9vbSBhIG5ldyBjdXJyZW50IHZhbHVlCiAgKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAg
KgogICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX3NldCgpCiAgKiBAc2VlIGV3a192aWV3
X3pvb21fd2Vha19zZXQoKQpAQCAtMTAyMiwxMSArMTA4MSwxMSBAQCBFQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6
b29tKTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJy
ZW50KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKTsKIAogLyoqCi0gKiBVbm1hcmsgaW50ZXJu
YWwgem9vbSBhbmltYXRpb24gc3RhdGUuCisgKiBVbm1hcmtzIGFuIGludGVybmFsIHpvb20gYW5p
bWF0aW9uIHN0YXRlLgogICoKLSAqIFRoaXMgemVybyBhbGwgc3RhcnQsIGVuZCBhbmQgY3VycmVu
dCB2YWx1ZXMuCisgKiBUaGUgc3RhcnQsIGVuZCBhbmQgY3VycmVudCB2YWx1ZXMgb2YgYW4gaW50
ZXJuYWwgem9vbSBhbmltYXRpb24gYXJlIHplcm9lZC4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBtYXJrIGFzIGFuaW1hdGVkIGlzIHN0b3BwZWQuCisgKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byB1bm1hcmsgYW4gaW50ZXJuYWwgem9vbSBhbmltYXRpb24gc3RhdGUKICAqCiAgKiBA
c2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCgpCiAgKiBAc2VlIGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKQpAQCAtMTAzNiw3ICsxMDk1LDcgQEAgRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmplY3Qg
Km8sIGZsb2F0IHpvb20KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
bWFya19zdG9wKEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBTZXQgdGhlIGN1cnJlbnQgem9v
bSBsZXZlbCB3aGlsZSBhbmltYXRpbmcuCisgKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwg
d2hpbGUgYW5pbWF0aW5nLgogICoKICAqIElmIHRoZSB2aWV3IHdhcyBhbHJlYWR5IGFuaW1hdGlu
ZyB0byBhbm90aGVyIHpvb20sIGl0IHdpbGwgc3RhcnQKICAqIGZyb20gY3VycmVudCBwb2ludCB0
byB0aGUgbmV4dCBwcm92aWRlZCB6b29tIChAYSB6b29tIHBhcmFtZXRlcikKQEAgLTEwNDksMzcg
KzExMDgsMzcgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJr
X3N0b3AoRXZhc19PYmplY3QgKm8pOwogICogZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2Vu
ZCgpIGFuZAogICogZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoKS4KICAqCi0gKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBhbmltYXRlLgotICogQHBhcmFtIHpvb20gZmluYWwgem9v
bSBsZXZlbCB0byB1c2UuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBhbmltYXRlCisgKiBA
cGFyYW0gem9vbSBmaW5hbCB6b29tIGxldmVsIHRvIHVzZQogICogQHBhcmFtIGR1cmF0aW9uIHRp
bWUgaW4gc2Vjb25kcyB0aGUgYW5pbWF0aW9uIHNob3VsZCB0YWtlLgotICogQHBhcmFtIGN4IG9m
ZnNldCBpbnNpZGUgb2JqZWN0IHRoYXQgZGVmaW5lcyB6b29tIGNlbnRlci4gMCBpcyBsZWZ0IHNp
ZGUuCi0gKiBAcGFyYW0gY3kgb2Zmc2V0IGluc2lkZSBvYmplY3QgdGhhdCBkZWZpbmVzIHpvb20g
Y2VudGVyLiAwIGlzIHRvcCBzaWRlLgorICogQHBhcmFtIGN4IG9mZnNldCBpbnNpZGUgb2JqZWN0
IHRoYXQgZGVmaW5lcyB6b29tIGNlbnRlci4gMCBpcyBsZWZ0IHNpZGUKKyAqIEBwYXJhbSBjeSBv
ZmZzZXQgaW5zaWRlIG9iamVjdCB0aGF0IGRlZmluZXMgem9vbSBjZW50ZXIuIDAgaXMgdG9wIHNp
ZGUKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGFuaW1hdGlvbiB3aWxsIGJlIHN0YXJ0ZWQs
IEBjIEVJTkFfRkFMU0UgaWYgbm90Ci0gKiAgICAgICAgICAgIGJlY2F1c2Ugem9vbSBpcyB0b28g
c21hbGwvYmlnLgorICogICAgICAgICAgICBiZWNhdXNlIHpvb20gaXMgdG9vIHNtYWxsL2JpZwog
ICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChFdmFzX09i
amVjdCAqbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sIEV2YXNfQ29vcmQgY3gsIEV2YXNf
Q29vcmQgY3kpOwogCiAvKioKLSAqIFF1ZXJ5IGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRv
IHRleHQgYW5kIG5vdCBvdGhlciBlbGVtZW50cy4KKyAqIFF1ZXJpZXMgaWYgem9vbSBsZXZlbCBq
dXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCiAgKgotICog
QHBhcmFtIG8gdmlldyB0byBxdWVyeSBzZXR0aW5nLgorICogQHBhcmFtIG8gdmlldyB0byBxdWVy
eSB6b29tIGxldmVsIGZvciB0ZXh0IG9ubHkKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiBqdXN0IHRleHQgYXJlIHNjYWxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiB6b29tIGxldmVsIGlzIGFwcGxpZWQgdG8gdGV4dCBvbmx5LCBA
YyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAg
IGV3a192aWV3X3pvb21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKIC8q
KgotICogU2V0IGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQgYW5kIG5vdCBvdGhl
ciBlbGVtZW50cy4KKyAqIFNldHMgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBv
bmx5IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCiAgKgotICogQHBhcmFtIG8gdmlldyB0byBjaGFu
Z2Ugc2V0dGluZy4KLSAqIEBwYXJhbSBzZXR0aW5nIEBjIEVJTkFfVFJVRSBpZiB6b29tIHNob3Vs
ZCBqdXN0IGJlIGFwcGxpZWQgdG8gdGV4dC4KKyAqIEBwYXJhbSBvIHZpZXcgdG8gYXBwbHkgem9v
bSBsZXZlbCBmb3IgdGV4dCBvbmx5CisgKiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUgaWYg
em9vbSBsZXZlbCBzaG91bGQgYmUgYXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFMU0Ug
aWYgbm90CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pv
b21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpOwogCiAv
KioKLSAqIEhpbnQgZW5naW5lIHRvIHByZS1yZW5kZXIgcmVnaW9uLgorICogQXNrcyBlbmdpbmUg
dG8gcHJlLXJlbmRlciByZWdpb24uCiAgKgogICogRW5naW5lcyBhbmQgYmFja2luZyBzdG9yZSBt
aWdodCBiZSBhYmxlIHRvIHByZS1yZW5kZXIgcmVnaW9ucyBpbgogICogb3JkZXIgdG8gc3BlZWQg
dXAgem9vbWluZyBvciBzY3JvbGxpbmcgdG8gdGhhdCByZWdpb24uIE5vdCBhbGwKQEAgLTEwOTQs
NTk2ICsxMTUzLDEwMjYgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV90ZXh0X29u
bHlfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc2V0dGluZykKICAqIE11bHRpcGxlIHJl
cXVlc3RzIG1pZ2h0IGJlIHF1ZXVlZCBieSBlbmdpbmVzLiBPbmUgY2FuIGNsZWFyL2ZvcmdldAog
ICogYWJvdXQgdGhlbSB3aXRoIGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKCkuCiAgKgotICog
QHBhcmFtIG8gdmlldyB0byBhc2sgcHJlLXJlbmRlciBvZiBnaXZlbiByZWdpb24uCi0gKiBAcGFy
YW0geCBhYnNvbHV0ZSBjb29yZGluYXRlICgwPWxlZnQpIHRvIHByZS1yZW5kZXIgYXQgem9vbS4K
LSAqIEBwYXJhbSB5IGFic29sdXRlIGNvb3JkaW5hdGUgKDA9dG9wKSB0byBwcmUtcmVuZGVyIGF0
IHpvb20uCi0gKiBAcGFyYW0gdyB3aWR0aCB0byBwcmUtcmVuZGVyIHN0YXJ0aW5nIGZyb20gQGEg
eCBhdCB6b29tLgotICogQHBhcmFtIGggaGVpZ2h0IHRvIHByZS1yZW5kZXIgc3RhcnRpbmcgZnJv
bSBAYSB5IGF0IHpvb20uCi0gKiBAcGFyYW0gem9vbSBkZXNpcmVkIHpvb20uCisgKiBAcGFyYW0g
byB2aWV3IHRvIGFzayBwcmUtcmVuZGVyIG9mIGdpdmVuIHJlZ2lvbgorICogQHBhcmFtIHggYWJz
b2x1dGUgY29vcmRpbmF0ZSAoMD1sZWZ0KSB0byBwcmUtcmVuZGVyIGF0IHpvb20KKyAqIEBwYXJh
bSB5IGFic29sdXRlIGNvb3JkaW5hdGUgKDA9dG9wKSB0byBwcmUtcmVuZGVyIGF0IHpvb20KKyAq
IEBwYXJhbSB3IHdpZHRoIHRvIHByZS1yZW5kZXIgc3RhcnRpbmcgZnJvbSBAYSB4IGF0IHpvb20K
KyAqIEBwYXJhbSBoIGhlaWdodCB0byBwcmUtcmVuZGVyIHN0YXJ0aW5nIGZyb20gQGEgeSBhdCB6
b29tCisgKiBAcGFyYW0gem9vbSBkZXNpcmVkIHpvb20KICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiByZXF1ZXN0IHdhcyBhY2NlcHRlZCwgQGMgRUlOQV9GQUxTRQotICogICAgICAgICBv
dGhlcndpc2UgKGVycm9ycywgcHJlLXJlbmRlciBub3Qgc3VwcG9ydGVkLCBldGMpLgorICogICAg
ICAgICBvdGhlcndpc2UgKGVycm9ycywgcHJlLXJlbmRlciBmZWF0dXJlIG5vdCBzdXBwb3J0ZWQs
IGV0YykKICAqCiAgKiBAc2VlIGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKCkKICAqLwogRUFQ
SSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QgKm8s
IEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwg
ZmxvYXQgem9vbSk7CiAKIC8qKgotICogSGludCBlbmdpbmUgdG8gcHJlLXJlbmRlciByZWdpb24s
IGdpdmVuIG4gZXh0cmEgY29scy9yb3dzCisgKiBBc2tzIGVuZ2luZSB0byBwcmUtcmVuZGVyIHJl
Z2lvbiwgZ2l2ZW4gQGEgbiBleHRyYSBjb2xzL3Jvd3MuCiAgKgogICogVGhpcyBpcyBhbiBhbHRl
cm5hdGl2ZSBtZXRob2QgdG8gZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oKS4gSXQgZG9lcyBu
b3QKICAqIG1ha2Ugc2Vuc2UgaW4gYWxsIGVuZ2luZXMgYW5kIHRoZXJlZm9yZSBpdCBtaWdodCBu
b3QgYmUgaW1wbGVtZW50ZWQgYXQgYWxsLgogICoKICAqIEl0J3Mgb25seSB1c2VmdWwgaWYgZW5n
aW5lIGRpdmlkZSB0aGUgYXJlYSBiZWluZyByZW5kZXJlZCBpbiBzbWFsbGVyIHRpbGVzLAotICog
Zm9ybWluZyBhIGdyaWQuIFRoZW4sIGJyb3dzZXIgY291bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIHRv
IHByZS1yZW5kZXIgQHBhcmFtIG4KKyAqIGZvcm1pbmcgYSBncmlkLiBUaGVuLCBicm93c2VyIGNv
dWxkIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBwcmUtcmVuZGVyIEBhIG4KICAqIHJvd3MvY29scyBp
bnZvbHZpbmcgdGhlIGN1cnJlbnQgdmlld3BvcnQuCiAgKgotICogQHBhcmFtIG8gdmlldyB0byBh
c2sgcHJlLXJlbmRlciBvbi4KKyAqIEBwYXJhbSBvIHZpZXcgdG8gYXNrIHByZS1yZW5kZXIKICAq
IEBwYXJhbSBuIG51bWJlciBvZiBjb2xzL3Jvd3MgdGhhdCBtdXN0IGJlIHBhcnQgb2YgdGhlIHJl
Z2lvbiBwcmUtcmVuZGVyZWQKICAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiByZXF1ZXN0
IHdhcyBhY2NlcHRlZCwgQGMgRUlOQV9GQUxTRQorICogICAgICAgICBvdGhlcndpc2UgKGVycm9y
cywgcHJlLXJlbmRlciBmZWF0dXJlIG5vdCBzdXBwb3J0ZWQsIGV0YykKKyAqCiAgKiBAc2VlIGV3
a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKCkKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGlu
dCBuKTsKIAogLyoqCi0gKiBDYW5jZWwgKGNsZWFyKSBwcmV2aW91cyBwcmUtcmVuZGVyIHJlcXVl
c3RzLgorICogQ2FuY2VscyBhbmQgY2xlYXJzIHByZXZpb3VzIHRoZSBwcmUtcmVuZGVyIHJlcXVl
c3RzLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gY2xlYXIgcHJlLXJlbmRlciByZXF1ZXN0cy4K
KyAqIEBwYXJhbSBvIHZpZXcgdG8gY2xlYXIgcHJlLXJlbmRlciByZXF1ZXN0cwogICovCiBFQVBJ
IHZvaWQgICAgICAgICBld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09iamVjdCAqbyk7
CiAKIC8qKgotICAqIEVuYWJsZSBwcm9jZXNzaW5nIG9mIHVwZGF0ZSByZXF1ZXN0cy4KLSAgKgot
ICAqIEBwYXJhbSBvIHZpZXcgdG8gZW5hYmxlIHJlbmRlcmluZy4KLSAgKgotICAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHJlbmRlciB3YXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRQotICAgICAg
ICAgICAgb3RoZXJ3aXNlIChlcnJvcnMsIHJlbmRlcmluZyBzdXNwZW5zaW9uIG5vdCBzdXBwb3J0
ZWQpLgotICAqLworICogRW5hYmxlcyAocmVzdW1lcykgcmVuZGVyaW5nLgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IHRvIGVuYWJsZSByZW5kZXJpbmcKKyAqCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiByZW5kZXJpbmcgd2FzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UKKyAqICAgICAg
ICAgb3RoZXJ3aXNlIChlcnJvcnMsIHJlbmRlcmluZyBzdXNwZW5zaW9uIGZlYXR1cmUgbm90IHN1
cHBvcnRlZCkKKyAqCisgKiBAc2VlIGV3a192aWV3X2Rpc2FibGVfcmVuZGVyKCkKKyAqLwogRUFQ
SSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfZW5hYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVjdCAq
byk7CiAKIC8qKgotICAqIERpc2FibGUgcHJvY2Vzc2luZyBvZiB1cGRhdGUgcmVxdWVzdHMuCisg
ICogRGlzYWJsZXMgKHN1c3BlbmRzKSByZW5kZXJpbmcuCiAgICoKLSAgKiBAcGFyYW0gbyB2aWV3
IHRvIGRpc2FibGUgcmVuZGVyaW5nLgorICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGRpc2Fi
bGUgcmVuZGVyaW5nCiAgICoKLSAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiByZW5kZXIgd2Fz
IGRpc2FibGVkLCBAYyBFSU5BX0ZBTFNFCi0gICAgICAgICAgICBvdGhlcndpc2UgKGVycm9ycywg
cmVuZGVyaW5nIHN1c3BlbnNpb24gbm90IHN1cHBvcnRlZCkuCisgICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgcmVuZGVyaW5nIHdhcyBkaXNhYmxlZCwgQGMgRUlOQV9GQUxTRQorICAqICAgICAg
ICAgb3RoZXJ3aXNlIChlcnJvcnMsIHJlbmRlcmluZyBzdXNwZW5zaW9uIG5vdCBzdXBwb3J0ZWQp
CiAgICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19kaXNhYmxlX3JlbmRlcihjb25zdCBF
dmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogR2V0IGlucHV0IG1ldGhvZCBoaW50cworICogR2V0
cyB0aGUgaW5wdXQgbWV0aG9kIGhpbnRzLgogICoKLSAqIEBwYXJhbSBvIFZpZXcuCisgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGlucHV0IG1ldGhvZCBoaW50cwogICoKLSAqIEBy
ZXR1cm4gaW5wdXQgbWV0aG9kIGhpbnRzCisgKiBAc2VlIEV3a19JbWgKKyAqCisgKiBAcmV0dXJu
IHRoZSBpbnB1dCBtZXRob2QgaGludHMgYXMgQGEgRXdrX0ltaCBiaXRzLWZpZWxkCiAgKi8KIEVB
UEkgdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9nZXQoRXZhc19PYmplY3QgKm8pOwogCi0vKiBz
ZXR0aW5ncyAqLworLyoqCisgKiBHZXRzIHRoZSB1c2VyIGFnZW50IHN0cmluZy4KKyAqCisgKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHVzZXIgYWdlbnQgc3RyaW5nCisgKgorICog
QHJldHVybiB0aGUgdXNlciBhZ2VudCBzdHJpbmcKKyAqLwogRUFQSSBjb25zdCBjaGFyICAqZXdr
X3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8q
KgorICogU2V0cyB0aGUgdXNlciBhZ2VudCBzdHJpbmcuCisgKgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gc2V0IHRoZSB1c2VyIGFnZW50IHN0cmluZworICoKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KIEVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9zZXQoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IGNoYXIgKnVzZXJfYWdlbnQpOwogCisvKioKKyAqIFF1ZXJpZXMgaWYgdGhlIGlt
YWdlcyBhcmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gcXVlcnkgaWYgdGhlIGltYWdlcyBhcmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkKKyAqCisg
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgaW1hZ2VzIGFyZSBsb2FkZWQgYXV0b21hdGlj
YWxseSwKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICov
CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBFbmFibGVzL2Rpc2FibGVzIGF1dG8g
bG9hZGluZyBvZiB0aGUgaW1hZ2VzLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNl
dCBhdXRvIGxvYWRpbmcgb2YgdGhlIGltYWdlcworICogQHBhcmFtIGF1dG9tYXRpYyBAYyBFSU5B
X1RSVUUgdG8gZW5hYmxlIGF1dG8gbG9hZGluZyBvZiB0aGUgaW1hZ2VzLAorICogICAgICAgIEBj
IEVJTkFfRkFMU0UgdG8gZGlzYWJsZQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAg
IGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBhdXRvbWF0aWMpOwogCisvKioKKyAqIFF1ZXJpZXMgaWYgdGhlIGltYWdlcyBhcmUg
c2hyaW5rZWQgYXV0b21hdGljYWxseQorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1
ZXJ5IGlmIHRoZSBpbWFnZXMgYXJlIHNocmlua2VkIGF1dG9tYXRpY2FsbHkKKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgaW1hZ2VzIGFyZSBzaHJpbmtlZCBhdXRvbWF0aWNhbGx5
LAorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCisgKi8KIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogRW5hYmxlcy9kaXNhYmxlcyBhdXRvIHNo
cmlua2luZyBvZiB0aGUgaW1hZ2VzLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNl
dCBhdXRvIHNocmlua2luZyBvZiB0aGUgaW1hZ2VzCisgKiBAcGFyYW0gYXV0b21hdGljIEBjIEVJ
TkFfVFJVRSB0byBlbmFibGUgYXV0byBzaHJpbmtpbmcgb2YgdGhlIGltYWdlcywKKyAqICAgICAg
ICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCiBFQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBhdXRvbWF0aWMpOwogCiAvKioKLSAqIEdldHMgaWYgdmlldyBjYW4gYmUg
cmVzaXplZCBhdXRvbWF0aWNhbGx5LgorICogUXVlcmllcyBpZiB0aGUgdmlldyBjYW4gYmUgcmVz
aXplZCBhdXRvbWF0aWNhbGx5LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gY2hlY2sgc3RhdHVz
CisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiB0aGUgdmlldyBjYW4gYmUgcmVz
aXplZCBhdXRvbWF0aWNhbGx5CiAgKgotICogQHJldHVybiBFSU5BX1RSVUUgaWYgdmlldyBjYW4g
YmUgcmVzaXplZCwgRUlOQV9GQUxTRQotICogICAgICAgICBvdGhlcndpc2UgKGVycm9ycywgY2Fu
bm90IGJlIHJlc2l6ZWQpLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdmlldyBjYW4gYmUg
cmVzaXplZCBhdXRvbWF0aWNhbGx5LAorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBv
ciBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX2F1dG9fcmVzaXplX3dpbmRvd19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioK
LSAqIFNldHMgaWYgdmlldyBjYW4gYmUgcmVzaXplZCBhdXRvbWF0aWNhbGx5LgorICogRW5hYmxl
cy9kaXNhYmxlcyBpZiB0aGUgdmlldyBjYW4gYmUgcmVzaXplZCBhdXRvbWF0aWNhbGx5LgogICoK
LSAqIEBwYXJhbSBvIFZpZXcuCi0gKiBAcGFyYW0gcmVzaXphYmxlIEBjIEVJTkFfVFJVRSBpZiB3
ZSB3YW50IHRvIHJlc2l6ZSBhdXRvbWF0aWNhbGx5OwotICogQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UuIEl0IGRlZmF1bHRzIHRvIEBjIEVJTkFfVFJVRQorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gc2V0IGlmIHRoZSB2aWV3IGNhbiBiZSByZXNpemVkIGF1dG9tYXRpY2FsbHkKKyAqIEBwYXJh
bSByZXNpemFibGUgQGMgRUlOQV9UUlVFIGlmIHZpZXcgY2FuIGJlIHJlc2l6YWJsZSBhdXRvbWF0
aWNhbGx5LAorICogICAgICAgIEBjIEVJTkFfVFJVRSBpZiBub3QKICAqCi0gKiBAcmV0dXJuIEVJ
TkFfVFJVRSBpZiBhdXRvX3Jlc2l6ZV93aW5kb3cgc3RhdHVzIHNldCwgRUlOQV9GQUxTRQotICog
ICAgICAgICBvdGhlcndpc2UgKGVycm9ycykuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCiBFQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgcmVzaXphYmxlKTsKKworLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBz
Y3JpcHRzIGNhbiBiZSBleGVjdXRlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBx
dWVyeSBpZiB0aGUgc2NyaXB0cyBjYW4gYmUgZXhlY3V0ZWQKKyAqCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiB0aGUgc2NyaXB0cyBjYW4gYmUgZXhlY3V0ZWQKKyAqICAgICAgICAgQGMgRUlO
QV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tf
dmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisK
Ky8qKgorICogRW5hYmxlcy9kaXNhYmxlcyBzY3JpcHRzIGV4ZWN1dGluZy4KKyAqCisgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBzZXQgc2NyaXB0IGV4ZWN1dGluZworICogQHBhcmFtIGVuYWJs
ZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHNjcmlwdHMgZXhlY3V0aW5nCisgKiAgICAgICAgQGMg
RUlOQV9GQUxTRSB0byBkaXNhYmxlCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBlbmFibGUpOwogCisvKioKKyAqIFF1ZXJpZXMgaWYgdGhlIHBsdWctaW5zIGFyZSBlbmFi
bGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBwbHVnLWlu
cyBhcmUgZW5hYmxlZAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBwbHVnaW5z
IGFyZSBlbmFibGVkCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1
cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2lu
c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIEVuYWJsZXMvZGlzYWJsZXMg
dGhlIHBsdWctaW5zLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgcGx1
Zy1pbnMKKyAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgcGx1Zy1p
bnMKKyAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKKyAqCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCiBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7CiAKIC8qKgotICogR2V0IHN0YXR1cyBvZiBm
cmFtZSBmbGF0dGVuaW5nLgorICogUXVlcmllcyBpZiB0aGUgZnJhbWUgZmxhdHRlbmluZyBmZWF0
dXJlIGlzIGVuYWJsZWQuCiAgKgotICogQHBhcmFtIG8gdmlldyB0byBjaGVjayBzdGF0dXMKKyAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBmcmFtZSBmbGF0dGVuaW5nIGZl
YXR1cmUgaXMgZW5hYmxlZAogICoKLSAqIEByZXR1cm4gRUlOQV9UUlVFIGlmIGZsYXR0ZW5pbmcg
aXMgZW5hYmxlZCwgRUlOQV9GQUxTRQotICogICAgICAgICBvdGhlcndpc2UgKGVycm9ycywgZmxh
dHRlbmluZyBkaXNhYmxlZCkuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgZnJhbWUg
ZmxhdHRlbmluZyBmZWF0dXJlIGlzIGVuYWJsZWQsCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0Ug
aWYgbm90IG9yIG9uIGZhaWx1cmUKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pOwog
CiAvKioKLSAqIFNldCBmcmFtZSBmbGF0dGVuaW5nLgorICogRW5hYmxlcy9kaXNhYmxlcyB0aGUg
ZnJhbWUgZmxhdHRlbmluZyBmZWF0dXJlLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gc2V0IGZs
YXR0ZW5pbmcKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZnJhbWUgZmxhdHRl
bmluZyBmZWF0dXJlCisgKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhl
IGZyYW1lIGZsYXR0ZW5pbmcgZmVhdHVyZQorICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlz
YWJsZQogICoKLSAqIEByZXR1cm4gRUlOQV9UUlVFIGlmIGZsYXR0ZW5pbmcgc3RhdHVzIHNldCwg
RUlOQV9GQUxTRQotICogICAgICAgICBvdGhlcndpc2UgKGVycm9ycykuCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCiBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5n
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSk7CiAKKy8qKgorICogUXVlcmll
cyBpZiB0aGUgc2NyaXB0cyBjYW4gb3BlbiB0aGUgbmV3IHdpbmRvd3MuCisgKgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIHNjcmlwdHMgY2FuIG9wZW4gdGhlIG5ldyB3
aW5kb3dzCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHNjcmlwdHMgY2FuIG9w
ZW4gdGhlIG5ldyB3aW5kb3dzCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9u
IGZhaWx1cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRz
X3dpbmRvd19vcGVuX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogRW5hYmxl
cy9kaXNhYmxlcyBpZiB0aGUgc2NyaXB0cyBjYW4gb3BlbiB0aGUgbmV3IHdpbmRvd3MuCisgKgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGlmIHRoZSBzY3JpcHRzIGNhbiBvcGVuIHRo
ZSBuZXcgd2luZG93cworICogQHBhcmFtIGFsbG93IEBjIEVJTkFfVFJVRSBpZiB0aGUgc2NyaXB0
cyBjYW4gb3BlbiB0aGUgbmV3IHdpbmRvd3MKKyAqICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5v
dAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxT
RSBvbiBmYWlsdXJlIChzY3JpcHRzIGFyZSBkaXNhYmxlZCkKKyAqCisgKiBAc2VlIGV3a192aWV3
X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0CisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBhbGxvdyk7CiAKKy8qKgorICogUXVlcmllcyBpZiBIVE1MIGVsZW1lbnRzIEBjIHRleHRh
cmVhIGNhbiBiZSByZXNpemFibGUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVl
cnkgaWYgdGhlIHRleHRhcmVhIGVsZW1lbnRzIGNhbiBiZSByZXNpemFibGUKKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgdGV4dGFyZWEgZWxlbWVudHMgY2FuIGJlIHJlc2l6YWJs
ZQorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCisgKi8KIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIEVuYWJsZXMvZGlzYWJsZXMgaWYgSFRN
TCBlbGVtZW50cyBAYyB0ZXh0YXJlYSBjYW4gYmUgcmVzaXphYmxlLgorICoKKyAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHNldCBpZiB0aGUgdGV4dGFyZWEgZWxlbWVudHMgY2FuIGJlIHJlc2l6
YWJsZQorICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgaWYgdGhlIHRleHRhcmVhIGVsZW1l
bnRzIGNhbiBiZSByZXNpemFibGUKKyAqICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdAorICoK
KyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBm
YWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfcmVzaXphYmxl
X3RleHRhcmVhc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogCisvKioK
KyAqIEdldHMgdGhlIHVzZXIgc3R5bGUgc2hlZXQuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gZ2V0IHRoZSB1c2VyIHN0eWxlIHNoZWV0CisgKgorICogQHJldHVybiB0aGUgdXNlciBz
dHlsZSBzaGVldAorICovCiBFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX3VzZXJf
c3R5bGVzaGVldF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIFNldHMgdGhl
IHVzZXIgc3R5bGUgc2hlZXQuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRo
ZSB1c2VyIHN0eWxlIHNoZWV0CisgKiBAcGFyYW0gdXJpIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRp
ZmllciB0byB1c2VyIHN0eWxlIHNoZWV0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wg
ICAgZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfc2V0KEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICp1cmkpOwogCisvKioKKyAqIFF1ZXJpZXMgaWYgdGhlIHByaXZhdGUgYnJvd3Np
bmcgZmVhdHVyZSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1
ZXJ5IGlmIHRoZSBwcml2YXRlIGJyb3dzaW5nIGZlYXR1cmUgaXMgZW5hYmxlZAorICoKKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBwcml2YXRlIGJyb3dzaW5nIGZlYXR1cmUgaXMgZW5h
YmxlZCwgb3IKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQor
ICoKKyAqIEBzZWUgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldAorICovCiBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3NpbmdfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBwcml2
YXRlIGJyb3dzaW5nIGZlYXR1cmUuCisgKgorICogV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIFdl
YkNvcmUgd2lsbCBhdm9pZCBzdG9yaW5nIGFueSByZWNvcmQgb2YgYnJvd3NpbmcKKyAqIGFjdGl2
aXR5ICB0aGF0IG1heSBwZXJzaXN0IG9uIGRpc2sgb3IgcmVtYWluIGRpc3BsYXllZCB3aGVuIHRo
ZQorICogb3B0aW9uIGlzIHJlc2V0LgorICoKKyAqIFRoaXMgb3B0aW9uIGRvZXMgbm90IGFmZmVj
dCB0aGUgc3RvcmFnZSBvZiBzdWNoIGluZm9ybWF0aW9uIGluIFJBTS4KKyAqCisgKiBUaGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyByZXNwZWN0IHRoaXMgc2V0dGluZzoKKyAqICAtIEhUTUw1L0RPTSBT
dG9yYWdlCisgKiAgLSBJY29uIERhdGFiYXNlCisgKiAgLSBDb25zb2xlIE1lc3NhZ2VzCisgKiAg
LSBNZW1vcnlDYWNoZQorICogIC0gQXBwbGljYXRpb24gQ2FjaGUKKyAqICAtIEJhY2svRm9yd2Fy
ZCBQYWdlIEhpc3RvcnkKKyAqICAtIFBhZ2UgU2VhcmNoIFJlc3VsdHMKKyAqICAtIEhUVFAgQ29v
a2llcworICogIC0gUGx1Zy1pbnMgKHRoYXQgc3VwcG9ydCBOUE5WcHJpdmF0ZU1vZGVCb29sKQor
ICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgcHJpdmF0ZSBicm93c2luZyBm
ZWF0dXJlCisgKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIHByaXZh
dGUgYnJvd3NpbmcgZmVhdHVyZQorICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQor
ICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfcHJpdmF0
ZV9icm93c2luZ19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOworCisvKioK
KyAqIFF1ZXJpZXMgaWYgdGhlIGNhY2hlIGZvciBvZmZsaW5lIGFwcGxpY2F0aW9uIGlzIGVuYWJs
ZWQuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIGNhY2hlIGZv
ciBvZmZsaW5lIGFwcGxpY2F0aW9uIGlzIGVuYWJsZWQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiB0aGUgY2FjaGUgZm9yIG9mZmxpbmUgYXBwbGljYXRpb24gaXMgZW5hYmxlZCwKKyAq
ICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICovCiBFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX2dldChjb25zdCBF
dmFzX09iamVjdCAqbyk7CisKKy8qKgorICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgY2FjaGUgZm9y
IG9mZmxpbmUgYXBwbGljYXRpb24uCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0
IGlmIHRoZSBjYWNoZSBmb3Igb2ZmbGluZSBhcHBsaWNhdGlvbgorICogQHBhcmFtIGVuYWJsZSBA
YyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBjYWNoZSBmb3Igb2ZmbGluZSBhcHBsaWNhdGlvbgor
ICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQorICoKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KIEVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKIAorLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBj
YXJldCBicm93c2luZyBmZWF0dXJlIGlzIGVuYWJsZWQuCisgKgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gcXVlcnkgaWYgdGhlIGNhcmV0IGJyb3dzaW5nIGZlYXR1cmUgaXMgZW5hYmxlZAor
ICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBjYXJldCBicm93c2luZyBmZWF0dXJl
IGlzIGVuYWJsZWQsCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1
cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2lu
Z19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIEVuYWJsZXMvZGlzYWJsZXMg
dGhlIGNhcmV0IGJyb3dzaW5nIGZlYXR1cmUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gc2V0IGNhcmV0IGJyb3dzaW5nIGZlYXR1cmUKKyAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9U
UlVFIHRvIGVuYWJsZSB0aGUgY2FyZXQgYnJvd3NpbmcgZmVhdHVyZQorICogICAgICAgIEBjIEVJ
TkFfRkFMU0UgdG8gZGlzYWJsZQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmxlKTsKIAogLyoqCi0gKiBHZXQgY3VycmVudCBlbmNvZGluZyBvZiB0aGlzIFZpZXcu
CisgKiBHZXRzIHRoZSBjdXJyZW50IGVuY29kaW5nLgogICoKLSAqIEBwYXJhbSBvIFZpZXcuCisg
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGN1cnJlbnQgZW5jb2RpbmcKICAqCi0g
KiBAcmV0dXJuIEEgcG9pbnRlciB0byBhbiBlaW5hX3N0cmluc2hhcmUgY29udGFpbmluZyB0aGUg
Y3VycmVudCBjdXN0b20KLSAqIGVuY29kaW5nIGZvciBWaWV3IG9iamVjdCBAcGFyYW0gbywgb3Ig
QGMgMCBpZiBpdCdzIG5vdCBzZXQuCisgKiBAcmV0dXJuIEBjIGVpbmFfc3RyaW5zaGFyZSBjb250
YWluaW5nIHRoZSBjdXJyZW50IGVuY29kaW5nLCBvcgorICogICAgICAgICBAYyAwIGlmIGl0J3Mg
bm90IHNldAogICovCiBFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIFNldCBlbmNvZGlu
ZyBvZiB0aGlzIFZpZXcgYW5kIHJlbG9hZCBwYWdlLgorICogU2V0cyB0aGUgZW5jb2RpbmcgYW5k
IHJlbG9hZHMgdGhlIHBhZ2UuCiAgKgotICogQHBhcmFtIG8gVmlldy4KLSAqIEBwYXJhbSBlbmNv
ZGluZyBUaGUgbmV3IGVuY29kaW5nIG9yIEBjIDAgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCBlbmNv
ZGluZy4KKyAqIEBwYXJhbSBvIHZpZXcgdG8gc2V0IHRoZSBlbmNvZGluZworICogQHBhcmFtIGVu
Y29kaW5nIHRoZSBuZXcgZW5jb2RpbmcgdG8gc2V0IG9yIEBjIDAgdG8gcmVzdG9yZSB0aGUgZGVm
YXVsdCBvbmUKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0
dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplbmNv
ZGluZyk7CisKKy8qKgorICogR2V0cyB0aGUgZGVmYXVsdCBlbmNvZGluZy4KKyAqCisgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGRlZmF1bHQgZW5jb2RpbmcKKyAqCisgKiBAcmV0
dXJuIEBjIGVpbmFfc3RyaW5zaGFyZSBjb250YWluaW5nIHRoZSBkZWZhdWx0IGVuY29kaW5nLCBv
cgorICogICAgICAgICBAYyAwIGlmIGl0J3Mgbm90IHNldAorICovCiBFQVBJIGNvbnN0IGNoYXIg
ICpld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBkZWZhdWx0IGVuY29kaW5nLgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgdG8gc2V0IHRoZSBkZWZhdWx0IGVuY29kaW5nCisgKiBAcGFyYW0gZW5jb2Rpbmcg
dGhlIG5ldyBlbmNvZGluZyB0byBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKmVuY29kaW5nKTsKIAorLyoqCisgKiBHZXRzIHRoZSBtaW5pbXVtIGZvbnQgc2l6ZS4K
KyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIG1pbmltdW0gZm9udCBzaXpl
CisgKgorICogQHJldHVybiB0aGUgbWluaW11bSBmb250IHNpemUsIG9yIEBjIDAgb24gZmFpbHVy
ZQorICovCiBFQVBJIGludCAgICAgICAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9z
aXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgbWluaW11
bSBmb250IHNpemUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBtaW5p
bXVtIGZvbnQgc2l6ZQorICogQHBhcmFtIHNpemUgYSBuZXcgbWluaW11bSBmb250IHNpemUgdG8g
c2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZQorICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRf
bWluaW11bV9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpOworCisvKioKKyAqIEdl
dHMgdGhlIG1pbmltdW0gbG9naWNhbCBmb250IHNpemUuCisgKgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gZ2V0IHRoZSBtaW5pbXVtIGxvZ2ljYWwgZm9udCBzaXplCisgKgorICogQHJldHVy
biB0aGUgbWluaW11bSBsb2dpY2FsIGZvbnQgc2l6ZSwgb3IgQGMgMCBvbiBmYWlsdXJlCisgKi8K
IEVBUEkgaW50ICAgICAgICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxf
c2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIFNldHMgdGhlIG1pbmlt
dW0gbG9naWNhbCBmb250IHNpemUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0
IHRoZSBtaW5pbXVtIGZvbnQgc2l6ZQorICogQHBhcmFtIHNpemUgYSBuZXcgbWluaW11bSBsb2dp
Y2FsIGZvbnQgc2l6ZSB0byBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8s
IGludCBzaXplKTsKKworLyoqCisgKiBHZXRzIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZS4KKyAqCisg
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGRlZmF1bHQgZm9udCBzaXplCisgKgor
ICogQHJldHVybiB0aGUgZGVmYXVsdCBmb250IHNpemUsIG9yIEBjIDAgb24gZmFpbHVyZQorICov
CiBFQVBJIGludCAgICAgICAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgZGVmYXVsdCBmb250
IHNpemUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBkZWZhdWx0IGZv
bnQgc2l6ZQorICogQHBhcmFtIHNpemUgYSBuZXcgZGVmYXVsdCBmb250IHNpemUgdG8gc2V0Cisg
KgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZQorICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVs
dF9zaXplX3NldChFdmFzX09iamVjdCAqbywgaW50IHNpemUpOworCisvKioKKyAqIEdldHMgdGhl
IE1vbm9zcGFjZSBmb250IHNpemUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0
IHRoZSBNb25vc3BhY2UgZm9udCBzaXplCisgKgorICogQHJldHVybiB0aGUgTW9ub3NwYWNlIGZv
bnQgc2l6ZSwgb3IgQGMgMCBvbiBmYWlsdXJlCisgKi8KIEVBUEkgaW50ICAgICAgICAgIGV3a192
aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OworCisvKioKKyAqIFNldHMgdGhlIE1vbm9zcGFjZSBmb250IHNpemUuCisgKgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBNb25vc3BhY2UgZm9udCBzaXplCisgKiBAcGFyYW0g
c2l6ZSBhIG5ldyBNb25vc3BhY2UgZm9udCBzaXplIHRvIHNldAorICoKKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLwogRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX3NldChFdmFz
X09iamVjdCAqbywgaW50IHNpemUpOwogCisvKioKKyAqIEdldHMgdGhlIGZvbnQgc3RhbmRhcmQg
ZmFtaWx5LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgZm9udCBzdGFu
ZGFyZCBmYW1pbHkKKyAqCisgKiBAcmV0dXJuIHRoZSBmb250IHN0YW5kYXJkIGZhbWlseSBvbiBz
dWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQorICovCiBFQVBJIGNvbnN0IGNoYXIgICpld2tfdmll
d19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoq
CisgKiBTZXRzIHRoZSBmb250IHN0YW5kYXJkIGZhbWlseS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byBzZXQgdGhlIGZvbnQgc3RhbmRhcmQgZmFtaWx5CisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLwog
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X3N0YW5kYXJkX3NldChFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KTsKIAorLyoqCisgKiBHZXRzIHRoZSBmb250
IGN1cnNpdmUgZmFtaWx5LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUg
Zm9udCBjdXJzaXZlIGZhbWlseQorICoKKyAqIEByZXR1cm4gdGhlIGZvbnQgY3Vyc2l2ZSBmYW1p
bHkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBjb25zdCBjaGFyICAq
ZXdrX3ZpZXdfc2V0dGluZ19mb250X2N1cnNpdmVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
KworLyoqCisgKiBTZXRzIHRoZSBmb250IHN0YW5kYXJkIGZhbWlseS4KKyAqCisgKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGZvbnQgc3RhbmRhcmQgZmFtaWx5CisgKgorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUK
KyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X2N1cnNpdmVfc2V0
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpOwogCisvKioKKyAqIEdldHMgdGhl
IGZvbnQgbW9ub3NwYWNlIGZhbWlseS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBn
ZXQgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWlseQorICoKKyAqIEByZXR1cm4gdGhlIGZvbnQgbW9u
b3NwYWNlIGZhbWlseSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQorICovCiBFQVBJIGNv
bnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX2dldChjb25zdCBFdmFz
X09iamVjdCAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgZm9udCBtb25vc3BhY2UgZmFtaWx5Lgor
ICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZm9udCBtb25vc3BhY2UgZmFt
aWx5CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21vbm9zcGFjZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7CiAK
Ky8qKgorICogR2V0cyB0aGUgZm9udCBmYW50YXN5IGZhbWlseS4KKyAqCisgKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBnZXQgdGhlIGZvbnQgZmFudGFzeSBmYW1pbHkKKyAqCisgKiBAcmV0dXJu
IHRoZSBmb250IGZhbnRhc3kgZmFtaWx5IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCisg
Ki8KIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZm9udF9mYW50YXN5X2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgZm9udCBtb25vc3BhY2Ug
ZmFtaWx5LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZm9udCBtb25v
c3BhY2UgZmFtaWx5CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBA
YyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdf
c2V0dGluZ19mb250X2ZhbnRhc3lfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1p
bHkpOwogCisvKioKKyAqIEdldHMgdGhlIGZvbnQgc2VyaWYgZmFtaWx5LgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgZm9udCBzZXJpZiBmYW1pbHkKKyAqCisgKiBAcmV0
dXJuIHRoZSBmb250IHNlcmlmIGZhbWlseSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQor
ICovCiBFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBmb250IHNlcmlmIGZhbWls
eS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGZvbnQgc2VyaWYgZmFt
aWx5CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19m
b250X3NlcmlmX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KTsKIAorLyoq
CisgKiBHZXRzIHRoZSBmb250IHNhbnMgc2VyaWYgZmFtaWx5LgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIGdldCB0aGUgZm9udCBzYW5zIHNlcmlmIGZhbWlseQorICoKKyAqIEByZXR1
cm4gdGhlIGZvbnQgc2FucyBzZXJpZiBmYW1pbHkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1
cmUKKyAqLwogRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2Vy
aWZfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBmb250IHNh
bnMgc2VyaWYgZmFtaWx5LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUg
Zm9udCBzZXJpZiBmYW1pbHkKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tf
dmlld19zZXR0aW5nX2ZvbnRfc2Fuc19zZXJpZl9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNo
YXIgKmZhbWlseSk7CiAKIC8qKgotICogR2V0cyBpZiB0aGUgc3BhdGlhbCBuYXZpYWd0aW9uIGlz
IGVuYWJsZWQuCisgKiBRdWVyaWVzIGlmIHRoZSBzcGF0aWFsIG5hdmlhZ3Rpb24gZmVhdHVyZSBp
cyBlbmFibGVkLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBzcGF0aWFsIG5h
dmlnYXRpb24gc2V0dGluZy4KLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHNwYXRpYWwgbmF2
aWdhdGlvbiBpcyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBlcnJvcnMuCisg
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBzcGF0aWFsIG5hdmlnYXRpb24gZmVh
dHVyZSBpcyBlbmFibGVkCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc3BhdGlhbCBu
YXZpZ2F0aW9uIGlzIGVuYWJsZWQsCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9y
IG9uIGZhaWx1cmUKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19zcGF0
aWFsX25hdmlnYXRpb25fZ2V0KEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBTZXRzIHRoZSBz
cGF0aWFsIG5hdmlnYXRpb24uCisgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBzcGF0aWFsIG5hdmln
YXRpb24gZmVhdHVyZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgc3BhdGlh
bCBuYXZpZ2F0aW9uIGZlYXR1cmUKKyAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVu
YWJsZSB0aGUgc3BhdGlhbCBuYXZpZ2F0aW9uIGZlYXR1cmUsCisgKiAgICAgICAgQGMgRUlOQV9G
QUxTRSB0byBkaXNhYmxlCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHNwYXRp
YWwgbmF2aWdhdGlvbiBzZXR0aW5nLgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cyBhbmQgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCiBFQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCBlbmFibGUpOwogCiAvKioKLSAqIEdldHMgaWYgdGhlIGxvY2FsIHN0b3Jh
Z2UgaXMgZW5hYmxlZC4KKyAqIFF1ZXJpZXMgaWYgdGhlIGxvY2FsIHN0b3JhZ2UgZmVhdHVyZSBv
ZiBIVE1MNSBpcyBlbmFibGVkLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBp
ZiBsb2NhbCBzdG9yYWdlIGlzIGVuYWJsZWQuCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBs
b2NhbCBzdG9yYWdlIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGVycm9y
cy4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBsb2NhbCBzdG9yYWdl
IGZlYXR1cmUgaXMgZW5hYmxlZAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGxvY2Fs
IHN0b3JhZ2UgaXMgZW5hYmxlZCwKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Ig
b24gZmFpbHVyZQogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2xvY2Fs
X3N0b3JhZ2VfZ2V0KEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBTZXRzIHRoZSBsb2NhbCBz
dG9yYWdlIG9mIEhUTUw1LgorICogRW5hYmxlcy9kaXNhYmxlIHRoZSBsb2NhbCBzdG9yYWdlIGZl
YXR1cmUgb2YgSFRNTDUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGlmIGxv
Y2FsIHN0b3JhZ2UgaXMgZW5hYmxlZAorICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8g
ZW5hYmxlIHRoZSBsb2NhbCBzdG9yYWdlIGZlYXR1cmUsCisgKiAgICAgICAgQGMgRUlOQV9GQUxT
RSB0byBkaXNhYmxlCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGlmIGxvY2Fs
IHN0b3JhZ2UgaXMgZW5hYmxlZC4KLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
YW5kIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwogRUFQSSBFaW5hX0Jvb2wg
ICAgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIGVuYWJsZSk7CiAKIC8qKgotICogR2V0cyB0aGUgbG9jYWwgc3RvcmFnZSBkYXRhYmFz
ZSBwYXRoLgorICogR2V0cyB0aGUgZGF0YWJhc2UgcGF0aCB0byB0aGUgbG9jYWwgc3RvcmFnZSBm
ZWF0dXJlIG9mIEhUTUw1LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUg
ZGF0YWJhc2UgcGF0aCB0byB0aGUgbG9jYWwgc3RvcmFnZSBmZWF0dXJlCiAgKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIHBhdGguCi0g
KiBAcmV0dXJuIHRoZSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIHBhdGguCisgKiBAcmV0dXJuIEBj
IGVpbmFfc3RyaW5zaGFyZSBjb250YWluaW5nIHRoZSBkYXRhYmFzZSBwYXRoIHRvIHRoZSBsb2Nh
bCBzdG9yYWdlIGZlYXR1cmUsIG9yCisgKiAgICAgICAgIEBjIDAgaWYgaXQncyBub3Qgc2V0CiAg
Ki8KIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRh
YmFzZV9wYXRoX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogU2V0cyB0aGUg
bG9jYWwgc3RvcmFnZSBkYXRhYmFzZSBwYXRoLgorICogU2V0cyB0aGUgZGF0YWJhc2UgcGF0aCB0
byB0aGUgbG9jYWwgc3RvcmFnZSBmZWF0dXJlIG9mIEhUTUw1LgogICoKLSAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIHNldCB0aGUgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSBwYXRoLgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBhbmQgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
CisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGRhdGFiYXNlIHBhdGggdG8gdGhl
IGxvY2FsIHN0b3JhZ2UgZmVhdHVyZQorICogQHBhcmFtIHBhdGggYSBuZXcgZGF0YWJhc2UgcGF0
aCB0byB0aGUgbG9jYWwgc3RvcmFnZSBmZWF0dXJlCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwogRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpwYXRoKTsKIAogLyoqCi0gKiBHZXRzIGlmIHRo
ZSBwYWdlIGNhY2hlIGlzIGVuYWJsZWQuCisgKiBRdWVyaWVzIGlmIHRoZSBwYWdlIGNhY2hlIGZl
YXR1cmUgaXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBp
ZiBwYWdlIGNhY2hlIGZlYXR1cmUgaXMgZW5hYmxlZAogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIHNldCBpZiBwYWdlIGNhY2hlIGlzIGVuYWJsZWQuCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiBwYWdlIGNhY2hlIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90LgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcGFnZSBjYWNoZSBpcyBlbmFibGVkLAorICogICAgICAg
ICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9nZXQoRXZhc19PYmplY3QgKm8pOwogCiAv
KioKLSAqIFNldHMgdGhlIHBhZ2UgY2FjaGUuCisgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBwYWdl
IGNhY2hlIGZlYXR1cmUuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGlmIHBh
Z2UgY2FjaGUgaXMgZW5hYmxlZC4KLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
YW5kIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
c2V0IHBhZ2UgY2FjaGUgZmVhdHVyZQorICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8g
ZW5hYmxlIHRoZSBwYWdlIGNhY2hlIGZlYXR1cmUsCisgKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0
byBkaXNhYmxlCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBF
SU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0
dGluZ19wYWdlX2NhY2hlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7CiAK
IC8qKgotICogR2V0cyBpZiB0aGUgZW5jb2RpbmcgZGV0ZWN0b3IgaXMgZW5hYmxlZC4KKyAqIFF1
ZXJpZXMgaWYgdGhlIGVuY29kaW5nIGRldGVjdG9yIGlzIGVuYWJsZWQuCisgKgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIGVuY29kaW5nIGRldGVjdG9yIGlzIGVuYWJs
ZWQKICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgaWYgZW5jb2RpbmcgZGV0ZWN0
b3IgaXMgZW5hYmxlZC4KLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGVuY29kaW5nIGRldGVj
dG9yIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGVycm9ycy4KKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBlbmNvZGluZyBmZWF0dXJlIGlzIGVuYWJsZWQsCisg
KiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKICAqLwogRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9nZXQoRXZhc19P
YmplY3QgKm8pOwogCiAvKioKLSAqIFNldHMgdGhlIGVuY29kaW5nIGRldGVjdG9yLgorICogRW5h
Ymxlcy9kaXNhYmxlcyB0aGUgZW5jb2RpbmcgZGV0ZWN0b3IuCisgKgorICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gc2V0IHRoZSBlbmNvZGluZyBkZXRlY3RvcgorICogQHBhcmFtIGVuYWJsZSBA
YyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBlbmNvZGluZyBkZXRlY3RvciwKKyAqICAgICAgICBA
YyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBz
ZXQgaWYgZW5jb2RpbmcgZGV0ZWN0b3IgaXMgZW5hYmxlZC4KLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MgYW5kIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7CiAKIC8qKgotICogUmV0dXJucyB3aGV0
aGVyIGRldmVsb3BlciBleHRlbnNpb25zIGFyZSBlbmFibGVkIGZvciB0aGUgZ2l2ZW4gdmlldy4K
KyAqIFF1ZXJpZXMgaWYgZGV2ZWxvcGVyIGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQuCiAgKgogICog
Q3VycmVudGx5LCB0aGlzIGlzIHVzZWQgdG8ga25vdyB3aGV0aGVyIHRoZSBXZWIgSW5zcGVjdG9y
IGlzIGVuYWJsZWQgZm9yIGEKICAqIGdpdmVuIHZpZXcuCiAgKgotICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gY2hlY2suCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBkZXZl
bG9wZXIgZXh0ZW5zaW9ucyBhcmUgZW5hYmxlZAogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIGRldmVsb3BlciBleHRlbnNpb25zIGFyZSBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFCi0gKiAg
ICAgICAgIG90aGVyd2lzZS4KKyAqICAgICAgICAgb3RoZXJ3aXNlCiAgKi8KIEVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KEV2YXNf
T2JqZWN0ICpvKTsKIAogLyoqCi0gKiBFbmFibGVzL2Rpc2FibGVzIGRldmVsb3BlciBleHRlbnNp
b25zIGZvciB0aGUgZ2l2ZW4gdmlldy4KKyAqIEVuYWJsZXMvZGlzYWJsZXMgZGV2ZWxvcGVyIGV4
dGVuc2lvbnMuCiAgKgogICogVGhpcyBjdXJyZW50bHkgY29udHJvbHMgd2hldGhlciB0aGUgV2Vi
IEluc3BlY3RvciBzaG91bGQgYmUgZW5hYmxlZC4KICAqCi0gKiBAcGFyYW0gbyBUaGUgdmlldyB3
aG9zZSBzZXR0aW5nIHdpbGwgYmUgY2hhbmdlZC4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHNldCBkZXZlbG9wZXIgZXh0ZW5zaW9ucwogICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUg
dG8gZW5hYmxlIGRldmVsb3BlciBleHRyYXMsIEBjIEVJTkFfRkFMU0UgdG8KLSAqICAgICAgICAg
ICAgICAgZGlzYWJsZS4KKyAqICAgICAgICAgICAgICAgZGlzYWJsZQogICoKLSAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUuCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAq
LwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4
dHJhc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogCi0vKiB0byBiZSB1
c2VkIGJ5IHN1YmNsYXNzIGltcGxlbWVudGF0aW9ucyAqLwogLyoqCi0gKiBTaW1pbGFyIHRvIGV2
YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KCksIGJ1dCBkb2VzIHR5cGUgY2hlY2tpbmcuCisgKiBH
ZXRzIHRoZSBpbnRlcm5hbCBkYXRhIG9mIEBhIG8uCisgKgorICogVGhpcyBpcyBzaW1pbGFyIHRv
IGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KCksIGJ1dCBhZGRpdGlvbmFsbHkgZG9lcyB0eXBl
IGNoZWNraW5nLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgaW50ZXJu
YWwgZGF0YQogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGludGVybmFsIGRh
dGEuCi0gKiBAcmV0dXJuIGludGVybmFsIGRhdGEgb3IgQGMgMCBvbiBlcnJvcnMgKGllOiBpbmNv
cnJlY3QgdHlwZSBvZiBAYSBvKS4KKyAqIEByZXR1cm4gdGhlIGludGVybmFsIGRhdGEgb2YgQGEg
bywgb3IgQGMgMCBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgRXdrX1ZpZXdfU21hcnRfRGF0YSAqZXdr
X3ZpZXdfc21hcnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCi1FQVBJIHZvaWQg
ZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKLQogLyoq
Ci0gKiBTdHJ1Y3R1cmUgdGhhdCBrZWVwcyBwYWludCBjb250ZXh0LgorICogUHJvY2VzcyBzY3Jv
bGxzLgorICoKKyAqIEBwYXJhbSBwcml2IHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEg
b2YgdGhlIHZpZXcgdG8gcHJvY2VzcyBzY3JvbGxzCiAgKgotICogQG5vdGUgdGhpcyBpcyBub3Qg
Zm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogQG5v
dGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRo
YXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICov
CitFQVBJIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19QYWludF9D
b250ZXh0LgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1BhaW50X0NvbnRleHQgRXdrX1ZpZXdf
UGFpbnRfQ29udGV4dDsKIAogLyoqCi0gKiBDcmVhdGUgYSBuZXcgcGFpbnQgY29udGV4dCB1c2lu
ZyB0aGUgdmlldyBhcyBzb3VyY2UgYW5kIGNhaXJvIGFzIG91dHB1dC4KKyAqIENyZWF0ZXMgYSBu
ZXcgcGFpbnQgY29udGV4dCB1c2luZyB0aGUgdmlldyBhcyBzb3VyY2UgYW5kIGNhaXJvIGFzIG91
dHB1dC4KICAqCi0gKiBAcGFyYW0gcHJpdiBwcml2YXRlIGhhbmRsZSBwb2ludGVyIG9mIHRoZSB2
aWV3IHRvIHVzZSBhcyBwYWludCBzb3VyY2UuCi0gKiBAcGFyYW0gY3IgY2Fpcm8gY29udGV4dCB0
byB1c2UgYXMgcGFpbnQgZGVzdGluYXRpb24uIEEgbmV3Ci0gKiAgICAgICAgcmVmZXJlbmNlIGlz
IHRha2VuLCBzbyBpdCdzIHNhZmUgdG8gY2FsbCBjYWlyb19kZXN0cm95KCkKKyAqIEBwYXJhbSBw
cml2IHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEgb2YgdGhlIHZpZXcgdG8gdXNlIGFz
IHBhaW50IHNvdXJjZQorICogQHBhcmFtIGNyIGNhaXJvIGNvbnRleHQgdG8gdXNlIGFzIHBhaW50
IGRlc3RpbmF0aW9uLCBhIG5ldworICogICAgICAgIHJlZmVyZW5jZSBpcyB0YWtlbiwgc28gaXQn
cyBzYWZlIHRvIGNhbGwgQGMgY2Fpcm9fZGVzdHJveSgpCiAgKiAgICAgICAgYWZ0ZXIgdGhpcyBm
dW5jdGlvbiByZXR1cm5zLgogICoKLSAqIEByZXR1cm4gbmV3bHkgYWxsb2NhdGVkIGluc3RhbmNl
IG9yIEBjIDAgb24gZXJyb3JzLgorICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpbnN0YW5j
ZSBvZiBAYyBFd2tfVmlld19QYWludF9Db250ZXh0IG9uIHN1Y2Nlc3MsCisgKiAgICAgICAgIG9y
IEBjIDAgb24gZmFpbHVyZQogICoKLSAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVz
ZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqIEBub3RlIFRoaXMgaXMgbm90
IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAg
ICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwogRUFQSSBFd2tfVmll
d19QYWludF9Db250ZXh0ICpld2tfdmlld19wYWludF9jb250ZXh0X25ldyhFd2tfVmlld19Qcml2
YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyKTsKIAogLyoqCi0gKiBEZXN0cm95IHByZXZpb3Vz
bHkgY3JlYXRlZCBwYWludCBjb250ZXh0LgorICogRGVzdHJveXMgdGhlIHByZXZpb3VzbHkgY3Jl
YXRlZCB0aGUgcGFpbnQgY29udGV4dC4KICAqCi0gKiBAcGFyYW0gY3R4dCBwYWludCBjb250ZXh0
IHRvIGRlc3Ryb3kuIE11c3QgQGIgbm90IGJlIEBjIDAuCisgKiBAcGFyYW0gY3R4dCB0aGUgcGFp
bnQgY29udGV4dCB0byBkZXN0cm95LCBtdXN0IEBiIG5vdCBiZSBAYyAwCiAgKgotICogQG5vdGUg
dGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQg
d2FudAorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBz
dWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5n
IHN0b3JlLgogICovCiBFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKEV3a19W
aWV3X1BhaW50X0NvbnRleHQgKmN0eHQpOwogCiAvKioKLSAqIFNhdmUgKHB1c2ggdG8gc3RhY2sp
IHBhaW50IGNvbnRleHQgc3RhdHVzLgorICogU2F2ZXMgKHB1c2ggdG8gc3RhY2spIHRoZSBwYWlu
dCBjb250ZXh0IHN0YXR1cy4KICAqCi0gKiBAcGFyYW0gY3R4dCBwYWludCBjb250ZXh0IHRvIHNh
dmUuIE11c3QgQGIgbm90IGJlIEBjIDAuCisgKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4
dCB0byBzYXZlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCiAgKgogICogQHNlZSBld2tfdmlld19wYWlu
dF9jb250ZXh0X3Jlc3RvcmUoKQogICoKLSAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFs
IHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqIEBub3RlIFRoaXMgaXMg
bm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAq
ICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwogRUFQSSB2b2lk
IGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0
KTsKIAogLyoqCi0gKiBSZXN0b3JlIChwb3AgZnJvbSBzdGFjaykgcGFpbnQgY29udGV4dCBzdGF0
dXMuCisgKiBSZXN0b3JlcyAocG9wIGZyb20gc3RhY2spIHRoZSBwYWludCBjb250ZXh0IHN0YXR1
cy4KICAqCi0gKiBAcGFyYW0gY3R4dCBwYWludCBjb250ZXh0IHRvIHJlc3RvcmUuIE11c3QgQGIg
bm90IGJlIEBjIDAuCisgKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byByZXN0b3Jl
LCBtdXN0IEBiIG5vdCBiZSBAYyAwCiAgKgogICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0
X3NhdmUoKQogICoKLSAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVz
dCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5l
cmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRl
ZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwogRUFQSSB2b2lkIGV3a192aWV3X3Bh
aW50X2NvbnRleHRfcmVzdG9yZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0KTsKIAogLyoq
Ci0gKiBDbGlwIHBhaW50IGNvbnRleHQgZHJhd2luZ3MgdG8gZ2l2ZW4gYXJlYS4KKyAqIENsaXBz
IHRoZSBwYWludCBjb250ZXh0IGRyYXdpbmdzIHRvIHRoZSBnaXZlbiBhcmVhLgogICoKLSAqIEBw
YXJhbSBjdHh0IHBhaW50IGNvbnRleHQgdG8gY2xpcC4gTXVzdCBAYiBub3QgYmUgQGMgMC4KLSAq
IEBwYXJhbSBhcmVhIGNsaXAgYXJlYSB0byB1c2UuCisgKiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQg
Y29udGV4dCB0byBjbGlwLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKiBAcGFyYW0gYXJlYSBjbGlw
IGFyZWEgdG8gdXNlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCiAgKgogICogQHNlZSBld2tfdmlld19w
YWludF9jb250ZXh0X3NhdmUoKQogICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3Rv
cmUoKQogICoKLSAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBm
b3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFs
IHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmlu
ZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwogRUFQSSB2b2lkIGV3a192aWV3X3BhaW50
X2NvbnRleHRfY2xpcChFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBjb25zdCBFaW5hX1Jl
Y3RhbmdsZSAqYXJlYSk7CiAKIC8qKgotICogUGFpbnQgdXNpbmcgY29udGV4dCB1c2luZyBnaXZl
biBhcmVhLgorICogUGFpbnRzIHRoZSBjb250ZXh0IHVzaW5nIGdpdmVuIGFyZWEuCiAgKgotICog
QHBhcmFtIGN0eHQgcGFpbnQgY29udGV4dCB0byBwYWludC4gTXVzdCBAYiBub3QgYmUgQGMgMC4K
LSAqIEBwYXJhbSBhcmVhIHBhaW50IGFyZWEgdG8gdXNlLiBDb29yZGluYXRlcyBhcmUgcmVsYXRp
dmUgdG8gY3VycmVudCB2aWV3cG9ydCwKLSAqICAgICAgICB0aHVzICJzY3JvbGxlZCIuCisgKiBA
cGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byBwYWludCwgbXVzdCBAYiBub3QgYmUgQGMg
MAorICogQHBhcmFtIGFyZWEgdGhlIHBhaW50IGFyZWEgdG8gdXNlLCBjb29yZGluYXRlcyBhcmUg
cmVsYXRpdmUgdG8gY3VycmVudCB2aWV3cG9ydCwKKyAqICAgICAgICB0aHVzICJzY3JvbGxlZCIs
IG11c3QgQGIgbm90IGJlIEBjIDAKICAqCi0gKiBAbm90ZSBvbmUgbWF5IHVzZSBjYWlybyBmdW5j
dGlvbnMgb24gdGhlIGNhaXJvIGNvbnRleHQgdG8KKyAqIEBub3RlIE9uZSBtYXkgdXNlIGNhaXJv
IGZ1bmN0aW9ucyBvbiB0aGUgY2Fpcm8gY29udGV4dCB0bwogICogICAgICAgdHJhbnNsYXRlLCBz
Y2FsZSBvciBhbnkgbW9kaWZpY2F0aW9uIHRoYXQgbWF5IGZpdCBoaXMgZGVzaXJlcy4KICAqCiAg
KiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcCgpCiAgKiBAc2VlIGV3a192aWV3X3Bh
aW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoKQogICoKLSAqIEBub3RlIHRoaXMgaXMgbm90IGZv
ciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqIEBub3Rl
IFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0
IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwog
RUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoRXdrX1ZpZXdfUGFpbnRfQ29u
dGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogCiAvKioKLSAqIFBhaW50
IGp1c3QgY29udGVudHMgdXNpbmcgY29udGV4dCB1c2luZyBnaXZlbiBhcmVhLgorICogUGFpbnRz
IGp1c3QgY29udGVudHMgdXNpbmcgY29udGV4dCB1c2luZyBnaXZlbiBhcmVhLgogICoKICAqIFVu
bGlrZSBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KCksIHRoaXMgZnVuY3Rpb24gcGFpbnQg
anVzdAogICogYmFyZSBjb250ZW50cyBhbmQgaWdub3JlcyBhbnkgc2Nyb2xsaW5nLCBzY3JvbGxi
YXJzIGFuZCBleHRyYXMuIEl0CiAgKiB3aWxsIHdhbGsgdGhlIHJlbmRlcmluZyB0cmVlIGFuZCBw
YWludCBjb250ZW50cyBpbnNpZGUgdGhlIGdpdmVuCiAgKiBhcmVhIHRvIHRoZSBjYWlybyBjb250
ZXh0IHNwZWNpZmllZCBpbiBAYSBjdHh0LgogICoKLSAqIEBwYXJhbSBjdHh0IHBhaW50IGNvbnRl
eHQgdG8gcGFpbnQuIE11c3QgQGIgbm90IGJlIEBjIDAuCi0gKiBAcGFyYW0gYXJlYSBwYWludCBh
cmVhIHRvIHVzZS4gQ29vcmRpbmF0ZXMgYXJlIGFic29sdXRlIHRvIHBhZ2UuCisgKiBAcGFyYW0g
Y3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byBwYWludCwgbXVzdCBAYiBub3QgYmUgQGMgMC4KKyAq
IEBwYXJhbSBhcmVhIHRoZSBwYWludCBhcmVhIHRvIHVzZSwgY29vcmRpbmF0ZXMgYXJlIGFic29s
dXRlIHRvIHBhZ2UsIG11c3QgQGIgbm90IGJlIEBjIDAKICAqCi0gKiBAbm90ZSBvbmUgbWF5IHVz
ZSBjYWlybyBmdW5jdGlvbnMgb24gdGhlIGNhaXJvIGNvbnRleHQgdG8KKyAqIEBub3RlIE9uZSBt
YXkgdXNlIGNhaXJvIGZ1bmN0aW9ucyBvbiB0aGUgY2Fpcm8gY29udGV4dCB0bwogICogICAgICAg
dHJhbnNsYXRlLCBzY2FsZSBvciBhbnkgbW9kaWZpY2F0aW9uIHRoYXQgbWF5IGZpdCBoaXMgZGVz
aXJlcy4KICAqCiAgKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcCgpCiAgKiBAc2Vl
IGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoKQogICoKLSAqIEBub3RlIHRoaXMgaXMgbm90
IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqIEBu
b3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0
aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAq
LwogRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdrX1Zp
ZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogCiAv
KioKLSAqIFNjYWxlIHRoZSBjb250ZW50cyBieSB0aGUgZ2l2ZW4gZmFjdG9ycy4KKyAqIFNjYWxl
cyB0aGUgY29udGVudHMgYnkgdGhlIGdpdmVuIGZhY3RvcnMuCiAgKgogICogVGhpcyBmdW5jdGlv
biBhcHBsaWVzIGEgc2NhbGluZyB0cmFuc2Zvcm1hdGlvbiB1c2luZyBDYWlyby4KICAqCi0gKiBA
cGFyYW0gY3R4dCAgICBwYWludCBjb250ZXh0IHRvIHBhaW50LiBNdXN0IEBiIG5vdCBiZSBAYyAw
LgotICogQHBhcmFtIHNjYWxlX3ggc2NhbGUgZmFjdG9yIGZvciB0aGUgWCBkaW1lbnNpb24uCi0g
KiBAcGFyYW0gc2NhbGVfeSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBZIGRpbWVuc2lvbi4KKyAqIEBw
YXJhbSBjdHh0IHRoZSBwYWludCBjb250ZXh0IHRvIHNjYWxlLCBtdXN0IEBiIG5vdCBiZSBAYyAw
CisgKiBAcGFyYW0gc2NhbGVfeCB0aGUgc2NhbGUgZmFjdG9yIGZvciB0aGUgWCBkaW1lbnNpb24K
KyAqIEBwYXJhbSBzY2FsZV95IHRoZSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBZIGRpbWVuc2lvbgog
ICovCiBFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zY2FsZShFd2tfVmlld19QYWlu
dF9Db250ZXh0ICpjdHh0LCBmbG9hdCBzY2FsZV94LCBmbG9hdCBzY2FsZV95KTsKIAogLyoqCiAg
KiBQZXJmb3JtcyBhIHRyYW5zbGF0aW9uIG9mIHRoZSBvcmlnaW4gY29vcmRpbmF0ZXMuCiAgKgot
ICogVGhpcyBmdW5jdGlvbiBtb3ZlcyB0aGUgb3JpZ2luIGNvb3JkaW5hdGVzIGJ5IEBwIHggYW5k
IEBwIHkgcGl4ZWxzLgorICogVGhpcyBmdW5jdGlvbiBtb3ZlcyB0aGUgb3JpZ2luIGNvb3JkaW5h
dGVzIGJ5IEBhIHggYW5kIEBhIHkgcGl4ZWxzLgogICoKLSAqIEBwYXJhbSBjdHh0IHBhaW50IGNv
bnRleHQgdG8gcGFpbnQuIE11c3QgQGIgbm90IGJlIEBjIDAuCi0gKiBAcGFyYW0geCAgICBhbW91
bnQgb2YgcGl4ZWxzIHRvIHRyYW5zbGF0ZSBpbiB0aGUgWCBkaW1lbnNpb24uCi0gKiBAcGFyYW0g
eSAgICBhbW91bnQgb2YgcGl4ZWxzIHRvIHRyYW5zbGF0ZSBpbiB0aGUgWSBkaW1lbnNpb24uCisg
KiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byB0cmFuc2xhdGUsIG11c3QgQGIgbm90
IGJlIEBjIDAKKyAqIEBwYXJhbSB4IGFtb3VudCBvZiBwaXhlbHMgdG8gdHJhbnNsYXRlIGluIHRo
ZSBYIGRpbWVuc2lvbgorICogQHBhcmFtIHkgYW1vdW50IG9mIHBpeGVscyB0byB0cmFuc2xhdGUg
aW4gdGhlIFkgZGltZW5zaW9uCiAgKi8KIEVBUEkgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0
X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0LCBmbG9hdCB4LCBmbG9hdCB5
KTsKIAogLyoqCi0gKiBQYWludCB1c2luZyBnaXZlbiBncmFwaGljcyBjb250ZXh0IHRoZSBnaXZl
biBhcmVhLgorICogUGFpbnRzIHVzaW5nIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQgdGhlIGdpdmVu
IGFyZWEuCiAgKgogICogVGhpcyB1c2VzIHZpZXdwb3J0IHJlbGF0aXZlIGFyZWEgYW5kIHdpbGwg
YWxzbyBoYW5kbGUgc2Nyb2xsYmFycwogICogYW5kIG90aGVyIGV4dHJhIGVsZW1lbnRzLiBTZWUg
ZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoKSBmb3IgdGhlCiAgKiBhbHRlcm5hdGl2ZSBmdW5jdGlv
bi4KICAqCi0gKiBAcGFyYW0gcHJpdiBwcml2YXRlIGhhbmRsZSBwb2ludGVyIG9mIHZpZXcgdG8g
dXNlIGFzIHBhaW50IHNvdXJjZS4KLSAqIEBwYXJhbSBjciBjYWlybyBjb250ZXh0IHRvIHVzZSBh
cyBwYWludCBkZXN0aW5hdGlvbi4gSXRzIHN0YXRlIHdpbGwKLSAqICAgICAgICBiZSBzYXZlZCBi
ZWZvcmUgb3BlcmF0aW9uIGFuZCByZXN0b3JlZCBhZnRlcndhcmRzLgotICogQHBhcmFtIGFyZWEg
dmlld3BvcnQgcmVsYXRpdmUgZ2VvbWV0cnkgdG8gcGFpbnQuCisgKiBAcGFyYW0gcHJpdiB0aGUg
cG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhIG9mIHRoZSB2aWV3IHRvIHVzZSBhcyBwYWludCBz
b3VyY2UKKyAqIEBwYXJhbSBjciB0aGUgY2Fpcm8gY29udGV4dCB0byB1c2UgYXMgcGFpbnQgZGVz
dGluYXRpb24sIGl0cyBzdGF0ZSB3aWxsCisgKiAgICAgICAgYmUgc2F2ZWQgYmVmb3JlIG9wZXJh
dGlvbiBhbmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcworICogQHBhcmFtIGFyZWEgdmlld3BvcnQgcmVs
YXRpdmUgZ2VvbWV0cnkgdG8gcGFpbnQKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIGFuZCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUsIGxpa2UKLSAqICAgICAgICAgaW5j
b3JyZWN0IHBhcmFtZXRlcnMuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9y
IEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICoKLSAqIEBub3RlIHRoaXMgaXMgYW4gZWFzeSB0
byB1c2UgdmVyc2lvbiwgYnV0IGludGVybmFsIHN0cnVjdHVyZXMgYXJlCisgKiBAbm90ZSBUaGlz
IGlzIGFuIGVhc3kgdG8gdXNlIHZlcnNpb24sIGJ1dCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZQog
ICogICAgICAgYWx3YXlzIGNyZWF0ZWQsIHRoZW4gZ3JhcGhpY3MgY29udGV4dCBpcyBjbGlwcGVk
LCB0aGVuCiAgKiAgICAgICBwYWludGVkLCByZXN0b3JlZCBhbmQgZGVzdHJveWVkLiBUaGlzIG1p
Z2h0IG5vdCBiZSBvcHRpbXVtLAotICogICAgICAgc28gdXNpbmcgI0V3a19WaWV3X1BhaW50X0Nv
bnRleHQgbWF5IGJlIGEgYmV0dGVyIHNvbHV0aW9ucworICogICAgICAgc28gdXNpbmcgQGEgRXdr
X1ZpZXdfUGFpbnRfQ29udGV4dCBtYXkgYmUgYSBiZXR0ZXIgc29sdXRpb25zCiAgKiAgICAgICBm
b3IgbGFyZ2UgbnVtYmVyIG9mIG9wZXJhdGlvbnMuCiAgKgogICogQHNlZSBld2tfdmlld19wYWlu
dF9jb250ZW50cygpCiAgKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoKQogICoK
LSAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xh
c3NlcyB0aGF0IHdhbnQKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQg
anVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBv
d24gYmFja2luZyBzdG9yZS4KICAqLwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5n
bGUgKmFyZWEpOwogCiAvKioKLSAqIFBhaW50IGp1c3QgY29udGVudHMgdXNpbmcgZ2l2ZW4gZ3Jh
cGhpY3MgY29udGV4dCB0aGUgZ2l2ZW4gYXJlYS4KKyAqIFBhaW50cyBqdXN0IGNvbnRlbnRzIHVz
aW5nIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQgdGhlIGdpdmVuIGFyZWEuCiAgKgogICogVGhpcyB1
c2VzIGFic29sdXRlIGNvb3JkaW5hdGVzIGZvciBhcmVhIGFuZCB3aWxsIGp1c3QgaGFuZGxlCiAg
KiBjb250ZW50cywgbm8gc2Nyb2xsYmFycyBvciBleHRyYXMuIFNlZSBld2tfdmlld19wYWludCgp
IGZvciB0aGUKICAqIGFsdGVybmF0aXZlIHNvbHV0aW9uLgogICoKLSAqIEBwYXJhbSBwcml2IHBy
aXZhdGUgaGFuZGxlIHBvaW50ZXIgb2YgdmlldyB0byB1c2UgYXMgcGFpbnQgc291cmNlLgotICog
QHBhcmFtIGNyIGNhaXJvIGNvbnRleHQgdG8gdXNlIGFzIHBhaW50IGRlc3RpbmF0aW9uLiBJdHMg
c3RhdGUgd2lsbAotICogICAgICAgIGJlIHNhdmVkIGJlZm9yZSBvcGVyYXRpb24gYW5kIHJlc3Rv
cmVkIGFmdGVyd2FyZHMuCi0gKiBAcGFyYW0gYXJlYSBhYnNvbHV0ZSBnZW9tZXRyeSB0byBwYWlu
dC4KKyAqIEBwYXJhbSBwcml2IHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEgb2YgdGhl
IHZpZXcgdG8gdXNlIGFzIHBhaW50IHNvdXJjZQorICogQHBhcmFtIGNyIHRoZSBjYWlybyBjb250
ZXh0IHRvIHVzZSBhcyBwYWludCBkZXN0aW5hdGlvbiwgaXRzIHN0YXRlIHdpbGwKKyAqICAgICAg
ICBiZSBzYXZlZCBiZWZvcmUgb3BlcmF0aW9uIGFuZCByZXN0b3JlZCBhZnRlcndhcmRzCisgKiBA
cGFyYW0gYXJlYSBhYnNvbHV0ZSBnZW9tZXRyeSB0byBwYWludAogICoKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MgYW5kIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSwgbGlrZQot
ICogICAgICAgICBpbmNvcnJlY3QgcGFyYW1ldGVycy4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKgotICogQG5vdGUgdGhp
cyBpcyBhbiBlYXN5IHRvIHVzZSB2ZXJzaW9uLCBidXQgaW50ZXJuYWwgc3RydWN0dXJlcyBhcmUK
KyAqIEBub3RlIFRoaXMgaXMgYW4gZWFzeSB0byB1c2UgdmVyc2lvbiwgYnV0IGludGVybmFsIHN0
cnVjdHVyZXMgYXJlCiAgKiAgICAgICBhbHdheXMgY3JlYXRlZCwgdGhlbiBncmFwaGljcyBjb250
ZXh0IGlzIGNsaXBwZWQsIHRoZW4KICAqICAgICAgIHBhaW50ZWQsIHJlc3RvcmVkIGFuZCBkZXN0
cm95ZWQuIFRoaXMgbWlnaHQgbm90IGJlIG9wdGltdW0sCi0gKiAgICAgICBzbyB1c2luZyAjRXdr
X1ZpZXdfUGFpbnRfQ29udGV4dCBtYXkgYmUgYSBiZXR0ZXIgc29sdXRpb25zCisgKiAgICAgICBz
byB1c2luZyBAYSBFd2tfVmlld19QYWludF9Db250ZXh0IG1heSBiZSBhIGJldHRlciBzb2x1dGlv
bnMKICAqICAgICAgIGZvciBsYXJnZSBudW1iZXIgb2Ygb3BlcmF0aW9ucy4KICAqCiAgKiBAc2Vl
IGV3a192aWV3X3BhaW50KCkKICAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9j
b250ZW50cygpCiAgKgotICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBq
dXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAorICogQG5vdGUgVGhpcyBpcyBub3QgZm9yIGdl
bmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8g
ZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCiBFQVBJIEVpbmFfQm9vbCBld2tf
dmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3Qg
KmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKIC8qKgotICogR2V0cyBhdHRyaWJ1
dGVzIG9mIHZpZXdwb3J0IG1ldGEgdGFnLgorICogR2V0cyB0aGUgYXR0cmlidXRlcyBvZiB0aGUg
dmlld3BvcnQgbWV0YSB0YWcuCiAgKgotICogQHBhcmFtIG8gdmlldy4KLSAqIEBwYXJhbSB3IHdp
ZHRoLgotICogQHBhcmFtIGggaGVpZ2h0LgotICogQHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbCBT
Y2FsZSB2YWx1ZS4KLSAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11bSBTY2FsZSB2YWx1ZS4KLSAq
IEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSBTY2FsZSB2YWx1ZS4KLSAqIEBwYXJhbSBkZXZpY2Vf
cGl4ZWxfcmF0aW8gdmFsdWUuCi0gKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2VyIFNjYWxhYmxl
IHZhbHVlLgorICogUHJvcGVydGllcyBhcmUgcmV0dXJuZWQgaW4gdGhlIHJlc3BlY3RpdmUgcG9p
bnRlcnMuIFBhc3NpbmcgQGMgMCB0byBhbnkgb2YKKyAqIHRoZXNlIHBvaW50ZXJzIHdpbGwgbWFr
ZSB0aGF0IHByb3BlcnR5IHRvIG5vdCBiZSByZXR1cm5lZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byBnZXQgdGhlIHZpZXdwb3J0IGF0dHJpYnV0ZXMKKyAqIEBwYXJhbSB3IHRoZSBw
b2ludGVyIHRvIHN0b3JlIHRoZSB3aWR0aCBvZiB0aGUgdmlld3BvcnQKKyAqIEBwYXJhbSBoIHRo
ZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0CisgKiBAcGFyYW0g
aW5pdF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgaW5pdGlhbCBzY2FsZSB2YWx1ZQor
ICogQHBhcmFtIG1heF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgbWF4aW11bSBzY2Fs
ZSB2YWx1ZQorICogQHBhcmFtIG1pbl9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgbWlu
aW11bSBzY2FsZSB2YWx1ZQorICogQHBhcmFtIGRldmljZV9waXhlbF9yYXRpbyB0aGUgcG9pbnRl
ciB0byBzdG9yZSB0aGUgZGV2aWNlIHBpeGVsIHJhdGlvIHZhbHVlCisgKiBAcGFyYW0gdXNlcl9z
Y2FsYWJsZSB0aGUgcG9pbnRlciB0byBzdG9yZSBpZiB1c2VyIGNhbiBzY2FsZSB2aWV3cG9ydAog
ICovCiBFQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoRXZhc19PYmpl
Y3QgKm8sIGZsb2F0ICp3LCBmbG9hdCAqaCwgZmxvYXQgKmluaXRfc2NhbGUsIGZsb2F0ICptYXhf
c2NhbGUsIGZsb2F0ICptaW5fc2NhbGUsIGZsb2F0ICpkZXZpY2VfcGl4ZWxfcmF0aW8gLCBFaW5h
X0Jvb2wgKnVzZXJfc2NhbGFibGUpOwogCiAvKioKICAqIFNldHMgdGhlIHpvb20gcmFuZ2UuCiAg
KgotICogQHBhcmFtIG8gdmlldy4KLSAqIEBwYXJhbSBtaW5fc2NhbGUgbWluaW11bSB2YWx1ZSBv
ZiB6b29tIHJhbmdlLgotICogQHBhcmFtIG1heF9zY2FsZSBtYXhpbXVtIHZhbHVlIG9mIHpvb20g
cmFuZ2UuCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSByYW5nZSBpcyBjaGFu
Z2VkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBmYWlsdXJlLgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gc2V0IHRoZSB6b29tIHJhbmdlCisgKiBAcGFyYW0gbWluX3NjYWxlIHRoZSBtaW5p
bXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdlCisgKiBAcGFyYW0gbWF4X3NjYWxlIHRoZSBtYXhp
bXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdlCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgem9vbSByYW5nZSBpcyBjaGFuZ2VkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWls
dXJlCiAgKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7CiAKIC8qKgotICogR2V0
cyB0aGUgbWluaW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICogR2V0cyB0aGUgbWluaW11bSB2
YWx1ZSBvZiB0aGUgem9vbSByYW5nZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdl
CiAgKgotICogQHJldHVybiBtaW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UsIG9yIEBjIC0xLjAg
b24gZmFpbHVyZS4KKyAqIEByZXR1cm4gdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIHpvb20gcmFu
Z2Ugb24gc3VjY2Vzcywgb3IKKyAqICAgICAgICAgQGMgLTEgb24gZmFpbHVyZQogICovCiBFQVBJ
IGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldChFdmFzX09iamVjdCAqbyk7CiAKIC8q
KgotICogR2V0cyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICogR2V0cyB0aGUg
bWF4aW11bSB2YWx1ZSBvZiB0aGUgem9vbSByYW5nZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3Lgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSB6
b29tIHJhbmdlCiAgKgotICogQHJldHVybiBtYXhpbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UsIG9y
IEBjIC0xLjAgb24gZmFpbHVyZS4KKyAqIEByZXR1cm4gdGhlIG1heGltdW0gdmFsdWUgb2YgdGhl
IHpvb20gcmFuZ2Ugb24gc3VjY2Vzcywgb3IKKyAqICAgICAgICAgQGMgLTEuMCBvbiBmYWlsdXJl
CiAgKi8KIEVBUEkgZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KEV2YXNfT2JqZWN0
ICpvKTsKIAogLyoqCi0gKiBTZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAqIEVuYWJsZXMvZGlz
YWJsZXMgdGhlIHpvb20uCiAgKgotICogQHBhcmFtIG8gdmlldy4KLSAqIEBwYXJhbSB1c2VyX3Nj
YWxhYmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3aGljaCB0byBlbmFibGUgem9vbS4gSXQgZGVmYXVs
dHMKLSAqIHRvIEBjIEVJTkFfVFJVRS4KKyAqIEBwYXJhbSBvIHZpZXcgdG8gc2V0IHpvb20KKyAq
IEBwYXJhbSB1c2VyX3NjYWxhYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgem9vbSwgQGMgRUlO
QV9GQUxTRSB0byBkaXNhYmxlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCiBFQVBJIEVpbmFfQm9v
bCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHVz
ZXJfc2NhbGFibGUpOwogCiAvKioKLSAqIEdldHMgaWYgem9vbSBpcyBlbmFibGVkLgorICogUXVl
cmllcyBpZiB0aGUgem9vbSBpcyBlbmFibGVkLgogICoKLSAqIEBwYXJhbSBvIHZpZXcuCi0gKiBA
cGFyYW0gdXNlcl9zY2FsYWJsZSB3aGVyZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBzY2Fs
YWJsZSB2YWx1ZS4KKyAqIEBwYXJhbSBvIHZpZXcgdG8gcXVlcnkgaWYgem9vbSBpcyBlbmFibGVk
CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSBpcyBlbmFibGVkLCBAYyBFSU5B
X0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
dGhlIHpvb20gaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQog
ICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVj
dCAqbyk7CiAKIC8qKgotICogR2V0cyBkZXZpY2UgcGl4ZWwgcmF0aW8gdmFsdWUuCisgKiBHZXRz
IHRoZSBkZXZpY2UgcGl4ZWwgcmF0aW8gdmFsdWUuCiAgKgotICogQHBhcmFtIG8gdmlldy4KLSAq
IEBwYXJhbSB1c2VyX3NjYWxhYmxlIHdoZXJlIHRvIHJldHVybiB0aGUgY3VycmVudCB1c2VyIHNj
YWxhYmxlIHZhbHVlLgorICogQHBhcmFtIG8gdmlldyB0byBnZXQgdGhlIGRldmljZSBwaXhlbCBy
YXRpbyB2YWx1ZQogICoKLSAqIEByZXR1cm4gZGV2aWNlIHBpeGVsIHJhdGlvIG9yIEBjIC0xLjAg
b24gZmFpbHVyZS4KKyAqIEByZXR1cm4gdGhlIGRldmljZSBwaXhlbCByYXRpbyB2YWx1ZSBvbiBz
dWNjZXNzIG9yIEBjIC0xLjAgb24gZmFpbHVyZQogICovCiBFQVBJIGZsb2F0IGV3a192aWV3X2Rl
dmljZV9waXhlbF9yYXRpb19nZXQoRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIFNldHMgdmll
dyBtb2RlLiBUaGUgdmlldy1tb2RlIG1lZGlhIGZlYXR1cmUgZGVzY3JpYmVzIHRoZSBtb2RlIGlu
IHdoaWNoIHRoZQorICogU2V0cyB0aGUgdmlldyBtb2RlLgorICoKKyAqIFRoZSB2aWV3LW1vZGUg
bWVkaWEgZmVhdHVyZSBkZXNjcmliZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlCiAgKiBXZWIgYXBw
bGljYXRpb24gaXMgYmVpbmcgc2hvd24gYXMgYSBydW5uaW5nIGFwcGxpY2F0aW9uLgogICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5nZSB2aWV3IG1vZGUuCi0gKiBAcGFyYW0gdmll
d19tb2RlIHBhZ2UgdmlldyBtb2RlIHRvIGJlIHNldAorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gY2hhbmdlIHRoZSB2aWV3IG1vZGUKKyAqIEBwYXJhbSB2aWV3X21vZGUgcGFnZSB2aWV3IG1v
ZGUgdG8gc2V0CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdmlldyBtb2RlIGlzIHNl
dCBhcyB2aWV3X21vZGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFQVBJ
IEVpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1ZpZXdfTW9k
ZSB2aWV3X21vZGUpOwogCiAvKioKLSAqIEdldHMgdmlldyBtb2RlLiBUaGUgdmlldy1tb2RlIG1l
ZGlhIGZlYXR1cmUgZGVzY3JpYmVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZQotICogV2ViIGFwcGxp
Y2F0aW9uIGlzIGJlaW5nIHNob3duIGFzIGEgcnVubmluZyBhcHBsaWNhdGlvbi4KKyAqIEdldHMg
dGhlIHZpZXcgbW9kZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHZp
ZXcgbW9kZQogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IHZpZXcgbW9kZS4K
KyAqIEByZXR1cm4gZW51bSB2YWx1ZSBvZiBAYSBFd2tfVmlld19Nb2RlIHRoYXQgaW5kaWNhdGVz
IGN1cnJlbnQgdmlldyBtb2RlCiAgKgotICogQHJldHVybiBlbnVtIHZhbHVlIG9mIEV3a19WaWV3
X01vZGUgdGhhdCBpbmRpY2F0ZXMgY3VycmVudCB2aWV3IG1vZGUuCisgKiBAc2VlIGV3a192aWV3
X21vZGVfc2V0KCkKICAqLwogRUFQSSBFd2tfVmlld19Nb2RlIGV3a192aWV3X21vZGVfZ2V0KEV2
YXNfT2JqZWN0ICpvKTsKICNpZmRlZiBfX2NwbHVzcGx1cwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104497</attachid>
            <date>2011-08-19 06:05:42 -0700</date>
            <delta_ts>2011-08-19 07:12:45 -0700</delta_ts>
            <desc>patch  #1 (changes in ewk_view.cpp)</desc>
            <filename>ewk_view_cpp_doc.patch</filename>
            <type>text/plain</type>
            <size>1698</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBiNWEzMmUyLi43YTc5MzFjIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMTEgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdl
biBkb2N1bWVudGF0aW9uIGZvciBld2tfdmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBkb3h5Z2VuIGRvY3VtZW50YXRpb24gdG8gdGhlIHN0
cnVjdHVyZXMgaW4gZXdrX3ZpZXcuY3BwLgorCisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
KwogMjAxMS0wOC0xMCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXSBSZXR1cm4gZnJvbSBfZXdrX3ZpZXdfc21hcnRfYWRkIGlm
IHNtYXJ0IGRhdGEgY2FuIG5vdCBiZSBhbGxvY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCmluZGV4IDllMzRmZTYuLjc0N2ZmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cApAQCAtNzMsNiArNzMsMTIgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklFV19TQ1JPTExT
X1NJWkVfSU5JVElBTCA9IDg7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IEVXS19WSUVXX1NDUk9MTFNf
U0laRV9TVEVQID0gMjsKIHN0YXRpYyBjb25zdCBzaXplX3QgRVdLX1ZJRVdfU0NST0xMU19TSVpF
X01BWF9GUkVFID0gMzI7CiAKKy8qKgorICogQGJyaWVmIFByaXZhdGUgZGF0YSB0aGF0IGlzIHVz
ZWQgaW50ZXJuYWxseSBieSBFRkwgV2ViS2l0CisgKiBhbmQgc2hvdWxkIG5ldmVyIGJlIG1vZGlm
aWVkIGZyb20gb3V0c2lkZS4KKyAqCisgKiBAaW50ZXJuYWwKKyAqLwogc3RydWN0IF9Fd2tfVmll
d19Qcml2YXRlX0RhdGEgewogICAgIFdlYkNvcmU6OlBhZ2UgKnBhZ2U7CiAgICAgV2ViQ29yZTo6
U2V0dGluZ3MgKnBhZ2Vfc2V0dGluZ3M7CkBAIC0yNDQ1LDYgKzI0NTEsMTQgQEAgdm9pZCBld2tf
dmlld19zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgICAgX2V3a192
aWV3X3Njcm9sbHNfZmx1c2gocHJpdik7CiB9CiAKKy8qKgorICogQGJyaWVmIFN0cnVjdHVyZSB0
aGF0IGtlZXBzIHRoZSBwYWludCBjb250ZXh0LgorICoKKyAqIEBpbnRlcm5hbAorICoKKyAqIEBu
b3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0
aGF0IHdhbnQKKyAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KKyAq
Lwogc3RydWN0IF9Fd2tfVmlld19QYWludF9Db250ZXh0IHsKICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQgKmdjOwogICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104499</attachid>
            <date>2011-08-19 06:16:07 -0700</date>
            <delta_ts>2011-08-20 21:50:35 -0700</delta_ts>
            <desc>patch  #2 (changes in ewk_view.h) - typedefs and structs descriptions</desc>
            <filename>ewk_view_h_types_doc.patch</filename>
            <type>text/plain</type>
            <size>11550</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA0MzgyNjI1Li4xM2NkY2FmIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMTkgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdl
biBkb2N1bWVudGF0aW9uIGZvciBld2tfdmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBkb3h5Z2VuIGRvY3VtZW50YXRpb24gZm9yIHR5cGVk
ZWZzLCBkZWZpbmVzIGFuZCBzdHJ1Y3R1cmVzIGluIGV3a192aWV3LmguCisgICAgICAgIE1vdmVz
IGluY2x1ZGVzIGFuZCBkZWZpbmVzIGJlbG93IGEgYnJpZWYgb2YgZmlsZS4KKworICAgICAgICAq
IGV3ay9ld2tfdmlldy5oOgorCiAyMDExLTA4LTE3ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIFdlYkNvcmUga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBk
ZXZpY2Ugc2NhbGUgZmFjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IGIyZDk0ZWQu
LmMxMzBhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCkBAIC0xOCwyNiArMTgsMTIgQEAK
ICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpZm5kZWYgZXdrX3ZpZXdf
aAotI2RlZmluZSBld2tfdmlld19oCi0KLSNpbmNsdWRlICJld2tfZnJhbWUuaCIKLSNpbmNsdWRl
ICJld2tfaGlzdG9yeS5oIgotI2luY2x1ZGUgImV3a193aW5kb3dfZmVhdHVyZXMuaCIKLQotI2lu
Y2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxjYWlyby5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMK
LWV4dGVybiAiQyIgewotI2VuZGlmCi0KIC8qKgotICogQGZpbGUgIGV3a192aWV3LmgKLSAqIEBi
cmllZiBXZWJLaXQgbWFpbiBzbWFydCBvYmplY3QuCisgKiBAZmlsZSAgICBld2tfdmlldy5oCisg
KiBAYnJpZWYgICBXZWJLaXQgbWFpbiBzbWFydCBvYmplY3QuCiAgKgotICogVGhpcyBvYmplY3Qg
aXMgdGhlIGhpZ2ggbGV2ZWwgYWNjZXNzIHRvIFdlYktpdC1FRkwgYnJvd3NlcgotICogY29tcG9u
ZW50LiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIG1haW4gZnJhbWUgYW5kIG90
aGVyCisgKiBUaGlzIG9iamVjdCBhbGxvd3MgdGhlIGhpZ2ggbGV2ZWwgYWNjZXNzIHRvIFdlYktp
dC1FRkwgY29tcG9uZW50LgorICogSXQgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBt
YWluIGZyYW1lIGFuZCBvdGhlcgogICogY3JpdGljYWwgcmVzb3VyY2VzLgogICoKICAqIEV2ZXJ5
IGV3a192aWV3IGhhcyBhdCBsZWFzdCBvbmUgZnJhbWUsIGNhbGxlZCAibWFpbiBmcmFtZSIgYW5k
CkBAIC05NCwxOCArODAsMzIgQEAgZXh0ZXJuICJDIiB7CiAgKiAgLSAiem9vbSxhbmltYXRlZCxl
bmQiLCB2b2lkOiByZXF1ZXN0ZWQgYW5pbWF0ZWQgem9vbSBpcyBmaW5pc2hlZC4KICAqLwogCisj
aWZuZGVmIGV3a192aWV3X2gKKyNkZWZpbmUgZXdrX3ZpZXdfaAorCisjaW5jbHVkZSAiZXdrX2Zy
YW1lLmgiCisjaW5jbHVkZSAiZXdrX2hpc3RvcnkuaCIKKyNpbmNsdWRlICJld2tfd2luZG93X2Zl
YXR1cmVzLmgiCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLy8gQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgQGEgX0V3a19WaWV3X1NtYXJ0X0RhdGEuCiB0eXBlZGVmIHN0cnVjdCBfRXdr
X1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogCi0vKioKLSAqIEV3ayB2aWV3
J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCi0gKi8KKy8vLyBDcmVh
dGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MuCiB0eXBlZGVmIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CisvLy8gRXdr
IHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xhc3Nlcy4KIHN0cnVjdCBf
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgewotICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxs
IGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLworICAgIEV2YXNfU21hcnRfQ2xh
c3Mgc2M7IC8qKjwgQWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwogICAg
IHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKIAogICAgIEV2YXNfT2JqZWN0ICooKndpbmRvd19jcmVh
dGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX0Jvb2wgamF2YXNjcmlwdCwgY29uc3Qg
RXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKTsgLyoqPCBjcmVhdGVzIGEgbmV3
IHdpbmRvdywgcmVxdWVzdGVkIGJ5IHdlYmtpdCAqLwotICAgIHZvaWQgKCp3aW5kb3dfY2xvc2Up
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsgLyoqPCBjcmVhdGVzIGEgbmV3IHdpbmRvdywgcmVx
dWVzdGVkIGJ5IHdlYmtpdCAqLworICAgIHZvaWQgKCp3aW5kb3dfY2xvc2UpKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkKTsgLyoqPCBjbG9zZXMgYSB3aW5kb3cgKi8KICAgICAvLyBob29rcyB0byBh
bGxvdyBkaWZmZXJlbnQgYmFja2luZyBzdG9yZXMKICAgICBFdmFzX09iamVjdCAqKCpiYWNraW5n
X3N0b3JlX2FkZCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOyAvKio8IG11c3QgYmUgZGVmaW5l
ZCAqLwogICAgIEVpbmFfQm9vbCAoKnNjcm9sbHNfcHJvY2VzcykoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpOyAvKio8IG11c3QgYmUgZGVmaW5lZCAqLwpAQCAtMTQ2LDEzICsxNDYsMTcgQEAgc3Ry
dWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRWluYV9Cb29sICgqbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tfRnJhbWVfUmVzb3Vy
Y2VfUmVxdWVzdCAqcmVxdWVzdCk7CiB9OwogCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNT
X1ZFUlNJT04gMVVMIC8qKiB0aGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVy
c2lvbiBmaWVsZCBpbiB0aGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlICovCisvKioK
KyAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCisg
KiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgorICovCisjZGVmaW5l
IEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCiAKIC8qKgotICogSW5pdGlhbGl6ZXIg
Zm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KKyAqIEluaXRpYWxpemVz
IGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICoKICAqIEBwYXJh
bSBzbWFydF9jbGFzc19pbml0IGluaXRpYWxpemVyIHRvIHVzZSBmb3IgdGhlICJiYXNlIiBmaWVs
ZAotICogKEV2YXNfU21hcnRfQ2xhc3MpLgorICogQGEgRXZhc19TbWFydF9DbGFzcwogICoKICAq
IEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCiAgKiBAc2VlIEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfVkVSU0lPTgpAQCAtMTYxLDcgKzE2NSw3IEBAIHN0cnVjdCBfRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MgewogI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0
X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKLSAqIElu
aXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUu
CisgKiBJbml0aWFsaXplcyB0byB6ZXJvIGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mg
c3RydWN0dXJlLgogICoKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9O
CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCkBAIC0xNzAs
MTAgKzE3NCwxMSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICNkZWZpbmUgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZB
U19TTUFSVF9DTEFTU19JTklUX05VTEwpCiAKIC8qKgotICogSW5pdGlhbGl6ZXIgdG8gemVybyBh
IHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSBhbmQgc2V0IHZlcnNpb24uCisg
KiBJbml0aWFsaXplcyB0byB6ZXJvIGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3Ry
dWN0dXJlCisgKiBhbmQgc2V0cyB0aGUgdmVyc2lvbi4KICAqCi0gKiBTaW1pbGFyIHRvIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCwgYnV0IHdpbGwgc2V0IHZlcnNpb24gZmllbGQgb2YK
LSAqIEV2YXNfU21hcnRfQ2xhc3MgKGJhc2UgZmllbGQpIHRvIGxhdGVzdCBFVkFTX1NNQVJUX0NM
QVNTX1ZFUlNJT04KKyAqIFNpbWlsYXIgdG8gQGEgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9O
VUxMLCBidXQgaXQgc2V0cyB0aGUgdmVyc2lvbiBmaWVsZCBvZgorICogQGEgRXZhc19TbWFydF9D
bGFzcyAoYmFzZSBmaWVsZCkgdG8gbGF0ZXN0IEBhIEVWQVNfU01BUlRfQ0xBU1NfVkVSU0lPTi4K
ICAqCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTAogICogQHNlZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgpAQCAtMTgyLDE2ICsxODcsMTYgQEAg
c3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVRfVkVSU0lPTiBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xB
U1NfSU5JVF9WRVJTSU9OKQogCiAvKioKLSAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBF
d2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUgYW5kIHNldAotICogbmFtZSBhbmQgdmVyc2lv
bi4KKyAqIEluaXRpYWxpemVzIHRvIHplcm8gYSB3aG9sZSBAYSBFd2tfVmlld19TbWFydF9DbGFz
cyBzdHJ1Y3R1cmUKKyAqIGFuZCBzZXRzIHRoZSBuYW1lIGFuZCB2ZXJzaW9uLgogICoKLSAqIFNp
bWlsYXIgdG8gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMLCBidXQgd2lsbCBzZXQgdmVy
c2lvbiBmaWVsZCBvZgotICogRXZhc19TbWFydF9DbGFzcyAoYmFzZSBmaWVsZCkgdG8gbGF0ZXN0
IEVWQVNfU01BUlRfQ0xBU1NfVkVSU0lPTiBhbmQgbmFtZQotICogdG8gdGhlIHNwZWNpZmljIHZh
bHVlLgorICogU2ltaWxhciB0byBAYSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwsIGJ1
dCBpdCBzZXRzIHRoZSB2ZXJzaW9uIGZpZWxkIG9mCisgKiBAYSBFdmFzX1NtYXJ0X0NsYXNzIChi
YXNlIGZpZWxkKSB0byBsYXRlc3QgQGEgRVZBU19TTUFSVF9DTEFTU19WRVJTSU9OCisgKiBhbmQg
dGhlIG5hbWUgdG8gdGhlIHNwZWNpZmljIHZhbHVlLgogICoKLSAqIEl0IHdpbGwga2VlcCBhIHJl
ZmVyZW5jZSB0byBuYW1lIGZpZWxkIGFzIGEgImNvbnN0IGNoYXIgKiIsIHRoYXQgaXMsCisgKiBJ
dCB3aWxsIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG5hbWUgZmllbGQgYXMgYSAiY29uc3QgY2hh
ciAqIiwgdGhhdCBpcywKICAqIG5hbWUgbXVzdCBiZSBhdmFpbGFibGUgd2hpbGUgdGhlIHN0cnVj
dHVyZSBpcyB1c2VkIChoaW50OiBzdGF0aWMgb3IgZ2xvYmFsISkKLSAqIGFuZCB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KKyAqIGFuZCBpdCB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAqCiAgKiBAc2Vl
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTAogICogQHNlZSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUX1ZFUlNJT04KQEAgLTE5OSw2ICsyMDQsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0NsYXNzIHsKICAqLwogI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTihuYW1lKSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1Nf
SU5JVF9OQU1FX1ZFUlNJT04obmFtZSkpCiAKKy8vLyBEZWZpbmVzIHRoZSBpbnB1dCBtZXRob2Qg
aGludHMuCiBlbnVtIF9Fd2tfSW1oIHsKICAgICBFV0tfSU1IX1RFTEVQSE9ORSA9ICgxIDw8IDAp
LAogICAgIEVXS19JTUhfTlVNQkVSID0gKDEgPDwgMSksCkBAIC0yMDYsNTggKzIxMiw1MSBAQCBl
bnVtIF9Fd2tfSW1oIHsKICAgICBFV0tfSU1IX1VSTCA9ICgxIDw8IDMpLAogICAgIEVXS19JTUhf
UEFTU1dPUkQgPSAoMSA8PCA0KQogfTsKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBf
RXdrX0ltaC4KIHR5cGVkZWYgZW51bSBfRXdrX0ltaCBFd2tfSW1oOwogCi0vKioKLSAqIEBpbnRl
cm5hbAotICoKLSAqIHByaXZhdGUgZGF0YSB0aGF0IGlzIHVzZWQgaW50ZXJuYWxseSBieSBFRkwg
V2ViS2l0IGFuZCBzaG91bGQgbmV2ZXIKLSAqIGJlIG1vZGlmaWVkIGZyb20gb3V0c2lkZS4KLSAq
LworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19Qcml2YXRlX0RhdGEu
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIEV3a19WaWV3X1ByaXZhdGVf
RGF0YTsKIAorLy8vIERlZmluZXMgdGhlIHR5cGVzIG9mIHRoZSBpdGVtcyBmb3IgdGhlIGNvbnRl
eHQgbWVudS4KIGVudW0gX0V3a19NZW51X0l0ZW1fVHlwZSB7CiAgICAgRVdLX01FTlVfU0VQQVJB
VE9SLAogICAgIEVXS19NRU5VX0dST1VQLAogICAgIEVXS19NRU5VX09QVElPTgogfTsKKy8vLyBD
cmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX01lbnVfSXRlbV9UeXBlLgogdHlwZWRlZiBl
bnVtIF9Fd2tfTWVudV9JdGVtX1R5cGUgRXdrX01lbnVfSXRlbV9UeXBlOwogCi0KLS8qKgotICog
U3RydWN0dXJlIGRvIGNvbnRhaW4gZGF0YSBvZiBlYWNoIG1lbnUgaXRlbQotICovCisvLy8gQ3Jl
YXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19NZW51X0l0ZW0uCiB0eXBlZGVmIHN0cnVjdCBf
RXdrX01lbnVfSXRlbSBFd2tfTWVudV9JdGVtOworLy8vIENvbnRhaW5zIGRhdGEgb2YgZWFjaCBt
ZW51IGl0ZW0uCiBzdHJ1Y3QgX0V3a19NZW51X0l0ZW0gewotICAgIGNvbnN0IGNoYXIgKnRleHQ7
IC8qKjwgSXRlbSdzIHRleHQgKi8KLSAgICBFd2tfTWVudV9JdGVtX1R5cGUgdHlwZTsgLyoqIEl0
ZW0ncyB0eXBlICovCisgICAgY29uc3QgY2hhciAqdGV4dDsgLyoqPCBUZXh0IG9mIHRoZSBpdGVt
LiAqLworICAgIEV3a19NZW51X0l0ZW1fVHlwZSB0eXBlOyAvKiogVHlwZSBvZiB0aGUgaXRlbS4g
Ki8KIH07CiAKLS8qKgotICogU3RydWN0dXJlIHRvIGNvbnRhaW4gUG9wdXAgbWVudSBkYXRhLgot
ICovCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19NZW51LgogdHlwZWRlZiBz
dHJ1Y3QgX0V3a19NZW51IEV3a19NZW51OworLy8vIENvbnRhaW5zIFBvcHVwIG1lbnUgZGF0YS4K
IHN0cnVjdCBfRXdrX01lbnUgewotICAgICAgICBFaW5hX0xpc3QgKml0ZW1zOwotICAgICAgICBp
bnQgeDsKLSAgICAgICAgaW50IHk7Ci0gICAgICAgIGludCB3aWR0aDsKLSAgICAgICAgaW50IGhl
aWdodDsKKyAgICAgICAgRWluYV9MaXN0ICppdGVtczsgLyoqPCBMaXN0IG9mIGl0ZW1zLiAqLwor
ICAgICAgICBpbnQgeDsgLyoqPCBUaGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiBQb3B1cCBtZW51
LiAqLworICAgICAgICBpbnQgeTsgLyoqPCBUaGUgdmVydGljYWwgcG9zaXRpb24gb2YgUG9wdXAg
bWVudS4gKi8KKyAgICAgICAgaW50IHdpZHRoOyAvKio8IFBvcHVwIG1lbnUgd2lkdGguICovCisg
ICAgICAgIGludCBoZWlnaHQ7IC8qKjwgUG9wdXAgbWVudSBoZWlnaHQuICovCiB9OwogCi0vKioK
LSAqIFN0cnVjdHVyZSB0byBjb250YWluIERvd25sb2FkIGRhdGEKLSAqLworLy8vIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfRG93bmxvYWQuCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Rv
d25sb2FkIEV3a19Eb3dubG9hZDsKKy8vLyBDb250YWlucyBEb3dubG9hZCBkYXRhLgogc3RydWN0
IF9Fd2tfRG93bmxvYWQgewotICAgIGNvbnN0IGNoYXIgKnVybDsKKyAgICBjb25zdCBjaGFyICp1
cmw7IC8qKjwgVVJMIG9mIHJlc291cmNlLiAqLwogICAgIC8qIHRvIGJlIGV4dGVuZGVkICovCiB9
OwogCi0vKioKLSAqIFNjcm9sbCByZXF1ZXN0IHRoYXQgc2hvdWxkIGJlIHByb2Nlc3NlZCBieSBz
dWJjbGFzcyBpbXBsZW1lbnRhdGlvbnMuCi0gKi8KKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZv
ciBAYSBfRXdrX1Njcm9sbF9SZXF1ZXN0LgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19TY3JvbGxfUmVx
dWVzdCBFd2tfU2Nyb2xsX1JlcXVlc3Q7CisvLy8gQ29udGFpbnMgdGhlIHNjcm9sbCByZXF1ZXN0
IHRoYXQgc2hvdWxkIGJlIHByb2Nlc3NlZCBieSBzdWJjbGFzcyBpbXBsZW1lbnRhdGlvbnMuCiBz
dHJ1Y3QgX0V3a19TY3JvbGxfUmVxdWVzdCB7CiAgICAgRXZhc19Db29yZCBkeCwgZHk7CiAgICAg
RXZhc19Db29yZCB4LCB5LCB3LCBoLCB4MiwgeTI7CkBAIC0yNjUsMjEgKzI2NCwyMiBAQCBzdHJ1
Y3QgX0V3a19TY3JvbGxfUmVxdWVzdCB7CiB9OwogCiAvKioKLSAqIFN0cnVjdHVyZSB0byBjb250
YWluIGludGVybmFsIFZpZXcgZGF0YSwgaXQgaXMgdG8gYmUgY29uc2lkZXJlZAotICogcHJpdmF0
ZSBieSB1c2VycywgYnV0IG1heSBiZSBleHRlbmRlZCBvciBjaGFuZ2VkIGJ5IHN1Yi1jbGFzc2Vz
Ci0gKiAodGhhdCdzIHdoeSBpdCdzIGluIHB1YmxpYyBoZWFkZXIgZmlsZSkuCisgKiBAYnJpZWYg
Q29udGFpbnMgYW4gaW50ZXJuYWwgVmlldyBkYXRhLgorICoKKyAqIEl0IGlzIHRvIGJlIGNvbnNp
ZGVyZWQgcHJpdmF0ZSBieSB1c2VycywgYnV0IG1heSBiZSBleHRlbmRlZCBvcgorICogY2hhbmdl
ZCBieSBzdWItY2xhc3NlcyAodGhhdCdzIHdoeSBpdCdzIGluIHRoZSBwdWJsaWMgaGVhZGVyIGZp
bGUpLgogICovCiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgewogICAgIEV2YXNfT2JqZWN0
X1NtYXJ0X0NsaXBwZWRfRGF0YSBiYXNlOwotICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNz
ICphcGk7IC8qKjwgcmVmZXJlbmNlIHRvIGNhc3RlZCBjbGFzcyBpbnN0YW5jZSAqLwotICAgIEV2
YXNfT2JqZWN0ICpzZWxmOyAvKio8IHJlZmVyZW5jZSB0byBvd25lciBvYmplY3QgKi8KLSAgICBF
dmFzX09iamVjdCAqbWFpbl9mcmFtZTsgLyoqPCByZWZlcmVuY2UgdG8gbWFpbiBmcmFtZSBvYmpl
Y3QgKi8KLSAgICBFdmFzX09iamVjdCAqYmFja2luZ19zdG9yZTsgLyoqPCByZWZlcmVuY2UgdG8g
YmFja2luZyBzdG9yZSAqLwotICAgIEV2YXNfT2JqZWN0ICpldmVudHNfcmVjdDsgLyoqPCByZWN0
YW5nbGUgdGhhdCBzaG91bGQgcmVjZWl2ZSBtb3VzZSBldmVudHMgKi8KLSAgICBFd2tfVmlld19Q
cml2YXRlX0RhdGEgKl9wcml2OyAvKio8IHNob3VsZCBuZXZlciBiZSBhY2Nlc3NlZCwgYysrIHN0
dWZmICovCisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaTsgLyoqPCBSZWZlcmVu
Y2UgdG8gY2FzdGVkIGNsYXNzIGluc3RhbmNlLiAqLworICAgIEV2YXNfT2JqZWN0ICpzZWxmOyAv
Kio8IFJlZmVyZW5jZSB0byBvd25lciBvYmplY3QuICovCisgICAgRXZhc19PYmplY3QgKm1haW5f
ZnJhbWU7IC8qKjwgUmVmZXJlbmNlIHRvIG1haW4gZnJhbWUgb2JqZWN0LiAqLworICAgIEV2YXNf
T2JqZWN0ICpiYWNraW5nX3N0b3JlOyAvKio8IFJlZmVyZW5jZSB0byBiYWNraW5nIHN0b3JlLiAq
LworICAgIEV2YXNfT2JqZWN0ICpldmVudHNfcmVjdDsgLyoqPCBUaGUgcmVjdGFuZ2xlIHRoYXQg
cmVjZWl2ZXMgbW91c2UgZXZlbnRzLiAqLworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqX3By
aXY7IC8qKjwgU2hvdWxkIEBiIG5ldmVyIGJlIGFjY2Vzc2VkLCBjKysgc3R1ZmYuICovCiAgICAg
c3RydWN0IHsKLSAgICAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOyAvKio8IGxhc3QgdXNlZCB2
aWV3cG9ydCAqLwotICAgIH0gdmlldzsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOwor
ICAgIH0gdmlldzsgLyoqPCBDb250YWlucyB0aGUgcG9zaXRpb24gYW5kIHNpemUgb2YgbGFzdCB1
c2VkIHZpZXdwb3J0LiAqLwogICAgIHN0cnVjdCB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICBmbG9hdCBzdGFydDsKQEAgLTI4OSwxNiArMjg5LDE3IEBAIHN0cnVjdCBfRXdrX1ZpZXdf
U21hcnRfRGF0YSB7CiAgICAgfSBhbmltYXRlZF96b29tOwogICAgIHN0cnVjdCB7CiAgICAgICAg
IHVuc2lnbmVkIGNoYXIgciwgZywgYiwgYTsKLSAgICB9IGJnX2NvbG9yOworICAgIH0gYmdfY29s
b3I7IC8qKjwgS2VlcHMgdGhlIGJhY2tncm91bmQgY29sb3IuICovCiAgICAgRWluYV9Cb29sIHpv
b21fd2Vha19zbW9vdGhfc2NhbGU6MTsKLSAgICBzdHJ1Y3QgeyAvKio8IHdoYXQgY2hhbmdlZCBz
aW5jZSBsYXN0IHNtYXJ0X2NhbGN1bGF0ZSAqLworICAgIHN0cnVjdCB7CiAgICAgICAgIEVpbmFf
Qm9vbCBhbnk6MTsKICAgICAgICAgRWluYV9Cb29sIHNpemU6MTsKICAgICAgICAgRWluYV9Cb29s
IHBvc2l0aW9uOjE7CiAgICAgICAgIEVpbmFfQm9vbCBmcmFtZV9yZWN0OjE7Ci0gICAgfSBjaGFu
Z2VkOworICAgIH0gY2hhbmdlZDsgLyoqPCBLZWVwcyB3aGF0IGNoYW5nZWQgc2luY2UgbGFzdCBz
bWFydF9jYWxjdWxhdGUuICovCiB9OwogCisvLy8gRGVmaW5lcyB0aGUgbW9kZXMgb2Ygdmlldy4K
IGVudW0gX0V3a19WaWV3X01vZGUgewogICAgIEVXS19WSUVXX01PREVfV0lORE9XRUQsCiAgICAg
RVdLX1ZJRVdfTU9ERV9GTE9BVElORywKQEAgLTMwNiw5ICszMDcsMTIgQEAgZW51bSBfRXdrX1Zp
ZXdfTW9kZSB7CiAgICAgRVdLX1ZJRVdfTU9ERV9NQVhJTUlaRUQsCiAgICAgRVdLX1ZJRVdfTU9E
RV9NSU5JTUlaRUQKIH07CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19WaWV3
X01vZGUuCiB0eXBlZGVmIGVudW0gX0V3a19WaWV3X01vZGUgRXdrX1ZpZXdfTW9kZTsKIAogLyoq
CisgKiBAYnJpZWYgQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19UaWxlX1VudXNlZF9D
YWNoZS4KKyAqCiAgKiBDYWNoZSAocG9vbCkgdGhhdCBjb250YWlucyB1bnVzZWQgdGlsZXMgZm9y
IGV3a192aWV3X3RpbGVkLgogICoKICAqIFRoaXMgY2FjaGUgd2lsbCBtYWludGFpbiB1bnVzZWQg
dGlsZXMgYW5kIGZsdXNoIHRoZW0gd2hlbiB0aGUgdG90YWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104500</attachid>
            <date>2011-08-19 06:18:09 -0700</date>
            <delta_ts>2011-08-20 22:14:20 -0700</delta_ts>
            <desc>patch  #3 (changes in ewk_view.h) - API descriptions part1</desc>
            <filename>ewk_view_h_API_doc_1.patch</filename>
            <type>text/plain</type>
            <size>41167</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA0MzgyNjI1Li5kODA3MTAwIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMTkgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdl
biBkb2N1bWVudGF0aW9uIGZvciBld2tfdmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgZGVzY3JpcHRpb24gb2YgbWV0aG9kcywgcGFyYW1l
dGVycyBhbmQgcmV0dXJuZWQgdmFsdWUgb2YgQVBJCisgICAgICAgIHJlbGF0ZWQgdG8gY2FjaGUg
b2YgdW51c2VkIHRpbGVzLCB0ZXh0IHNlYXJjaGluZyBhbmQgem9vbSBtYXR0ZXIuCisKKyAgICAg
ICAgKiBld2svZXdrX3ZpZXcuaDoKKwogMjAxMS0wOC0xNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBXZWJDb3JlIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJl
bnQgZGV2aWNlIHNjYWxlIGZhY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCBiMmQ5
NGVkLi40MmM0NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtMzIyLDI1ICszMjIs
MzcgQEAgdHlwZWRlZiBlbnVtIF9Fd2tfVmlld19Nb2RlIEV3a19WaWV3X01vZGU7CiB0eXBlZGVm
IHN0cnVjdCBfRXdrX1RpbGVfVW51c2VkX0NhY2hlIEV3a19UaWxlX1VudXNlZF9DYWNoZTsKIAog
LyoqCi0gKiBDaGFuZ2UgY2FjaGUgY2FwYWNpdHksIGluIGJ5dGVzLgorICogQ2hhbmdlcyBjYWNo
ZSBjYXBhY2l0eSBvZiB1bnVzZWQgdGlsZXMuCiAgKgotICogVGhpcyB3aWxsIG5vdCBmbHVzaCBj
YWNoZSwgdXNlIGV3a190aWxlX3VudXNlZF9jYWNoZV9mbHVzaCgpIG9yCisgKiBAcGFyYW0gdHVj
IGNhY2hlIG9mIHVudXNlZCB0aWxlcyB0byBzZXQgYSBuZXcgY2FwYWNpdHkgb2YgdW51c2VkIHRp
bGVzCisgKgorICogQHBhcmFtIG1heCBhIG5ldyBjYXBhY2l0eSBvZiBjYWNoZSwgaW4gYnl0ZXMK
KyAqCisgKiBAbm90ZSBUaGlzIHdpbGwgbm90IGZsdXNoIGNhY2hlLCB1c2UgZXdrX3RpbGVfdW51
c2VkX2NhY2hlX2ZsdXNoKCkgb3IKICAqIGV3a190aWxlX3VudXNlZF9jYWNoZV9hdXRvX2ZsdXNo
KCkgdG8gZG8gc28uCiAgKi8KIEVBUEkgdm9pZCAgIGV3a190aWxlX3VudXNlZF9jYWNoZV9tYXhf
c2V0KEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjLCBzaXplX3QgbWF4KTsKIAogLyoqCi0gKiBS
ZXRyaWV2ZSBtYXhpbXVtIGNhY2hlIGNhcGFjaXR5LCBpbiBieXRlcy4KKyAqIFJldHJpZXZlcyBt
YXhpbXVtIGNhY2hlIGNhcGFjaXR5IG9mIHVudXNlZCB0aWxlcy4KKyAqCisgKiBAcGFyYW0gdHVj
IGNhY2hlIG9mIHVudXNlZCB0aWxlcyB0byBnZXQgbWF4aW11bSBjYWNoZSBjYXBhY2l0eSBvZiB1
bnVzZWQgdGlsZXMKKyAqCisgKiBAcmV0dXJuIG1heGltdW0gY2FjaGUgY2FwYWNpdHksIGluIGJ5
dGVzIG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgc2l6ZV90IGV3a190
aWxlX3VudXNlZF9jYWNoZV9tYXhfZ2V0KGNvbnN0IEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVj
KTsKIAogLyoqCi0gKiBSZXRyaWV2ZSB0aGUgdXNlZCBjYWNoZSBjYXBhY2l0eSwgaW4gYnl0ZXMu
CisgKiBSZXRyaWV2ZXMgdGhlIHVzZWQgY2FjaGUgY2FwYWNpdHkgb2YgdW51c2VkIHRpbGVzLgor
ICoKKyAqIEBwYXJhbSB0dWMgY2FjaGUgb2YgdW51c2VkIHRpbGVzIHRvIGdldCB1c2VkIGNhY2hl
IGNhcGFjaXR5IG9mIHVudXNlZCB0aWxlcworICoKKyAqIEByZXR1cm4gdXNlZCBjYWNoZSBjYXBh
Y2l0eSwgaW4gYnl0ZXMgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwogRUFQSSBz
aXplX3QgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3VzZWRfZ2V0KGNvbnN0IEV3a19UaWxlX1VudXNl
ZF9DYWNoZSAqdHVjKTsKIAogLyoqCi0gKiBGbHVzaCBnaXZlbiBhbW91bnQgb2YgYnl0ZXMgZnJv
bSBjYWNoZS4KKyAqIEZsdXNoZXMgZ2l2ZW4gYW1vdW50IG9mIGJ5dGVzIGZyb20gY2FjaGUgb2Yg
dW51c2VkIHRpbGVzLgogICoKICAqIEFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgbmVhciBA
YSBieXRlcyBhcmUgZnJlZWQgZnJvbSBjYWNoZS4gSXQKICAqIG1heSBiZSBsZXNzIGlmIGNhY2hl
IGRpZCBub3QgY29udGFpbiB0aGF0IGFtb3VudCBvZiBieXRlcyAoaWU6IGFuCkBAIC0zNDgsMTcg
KzM2MCwxNyBAQCBFQVBJIHNpemVfdCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdXNlZF9nZXQoY29u
c3QgRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwogICogY29udGFpbmVkIG9iamVjdHMgdGhh
dCB3ZXJlIGxhcmdlciB0aGFuIHRoZSByZXF1ZXN0ZWQgYW1vdW50ICh0aGlzCiAgKiBpcyB1c3Vh
bGx5IHRoZSBjYXNlKS4KICAqCi0gKiBAcGFyYW0gdHVjIGNhY2hlIG9mIHVudXNlZCB0aWxlcy4K
LSAqIEBwYXJhbSBieXRlcyBhbW91bnQgdG8gZnJlZS4KKyAqIEBwYXJhbSB0dWMgY2FjaGUgb2Yg
dW51c2VkIHRpbGVzIHRvIGZsdXNoIEBieXRlcyBmcm9tIGNhY2hlCisgKiBAcGFyYW0gYnl0ZXMg
YW1vdW50IGJ5dGVzIHRvIGZyZWUKICAqCi0gKiBAcmV0dXJuIGFtb3VudCByZWFsbHkgZnJlZWQu
CisgKiBAcmV0dXJuIGFtb3VudCByZWFsbHkgZnJlZWQgYnl0ZXMKICAqCiAgKiBAc2VlIGV3a190
aWxlX3VudXNlZF9jYWNoZV91c2VkX2dldCgpCiAgKi8KIEVBUEkgc2l6ZV90IGV3a190aWxlX3Vu
dXNlZF9jYWNoZV9mbHVzaChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yywgc2l6ZV90IGJ5dGVz
KTsKIAogLyoqCi0gKiBGbHVzaCBlbm91Z2ggYnl0ZXMgdG8gbWFrZSBjYWNoZSB1c2FnZSBsb3dl
ciB0aGFuIG1heGltdW0uCisgKiBGbHVzaGVzIGVub3VnaCBieXRlcyB0byBtYWtlIGNhY2hlIG9m
IHVudXNlZCB0aWxlcyB1c2FnZSBsb3dlciB0aGFuIG1heGltdW0uCiAgKgogICogSnVzdCBsaWtl
IGV3a190aWxlX3VudXNlZF9jYWNoZV9mbHVzaCgpLCBidXQgdGhpcyB3aWxsIG1ha2UgdGhlIGNh
Y2hlCiAgKiBmcmVlIGVub3VnaCB0aWxlcyB0byByZXNwZWN0IG1heGltdW0gY2FjaGUgc2l6ZSBh
cyBkZWZpbmVkIHdpdGgKQEAgLTM2Nyw2ICszNzksOCBAQCBFQVBJIHNpemVfdCBld2tfdGlsZV91
bnVzZWRfY2FjaGVfZmx1c2goRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMsIHNpemVfdCBieXRl
cwogICogVGhpcyBmdW5jdGlvbiBpcyB1c3VhbGx5IGNhbGxlZCB3aGVuIHN5c3RlbSBiZWNvbWVz
IGlkbGUuIFRoaXMgd2F5CiAgKiB3ZSBrZWVwIG1lbW9yeSBsb3cgYnV0IGRvIG5vdCBpbXBhY3Qg
cGVyZm9ybWFuY2Ugd2hlbgogICogY3JlYXRpbmcvZGVsZXRpbmcgdGlsZXMuCisgKgorICogQHBh
cmFtIHR1YyBjYWNoZSBvZiB1bnVzZWQgdGlsZXMgdG8gZmx1c2ggY2FjaGUgb2YgdW51c2VkIHRp
bGVzCiAgKi8KIEVBUEkgdm9pZCAgIGV3a190aWxlX3VudXNlZF9jYWNoZV9hdXRvX2ZsdXNoKEV3
a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKIApAQCAtMzc0LDE3ICszODgsMTcgQEAgRUFQSSB2
b2lkICAgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2F1dG9fZmx1c2goRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlICp0dWMpOwogICogU2V0cyB0aGUgc21hcnQgY2xhc3MgYXBpIHdpdGhvdXQgYW55IGJhY2tp
bmcgc3RvcmUsIGVuYWJsaW5nIHZpZXcKICAqIHRvIGJlIGluaGVyaXRlZC4KICAqCi0gKiBAcGFy
YW0gYXBpIGNsYXNzIGRlZmluaXRpb24gdG8gYmUgc2V0LCBhbGwgbWVtYmVycyB3aXRoIHRoZQot
ICogICAgICAgIGV4Y2VwdGlvbiBvZiBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIG1heSBiZSBvdmVy
cmlkZGVuLiBNdXN0Ci0gKiAgICAgICAgQGIgbm90IGJlIEBjIDAuCisgKiBAcGFyYW0gYXBpIGNs
YXNzIGRlZmluaXRpb24gdG8gc2V0LCBhbGwgbWVtYmVycyB3aXRoIHRoZQorICogICAgICAgIGV4
Y2VwdGlvbiBvZiBAYSBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIG1heSBiZSBvdmVycmlkZGVuLCBt
dXN0CisgKiAgICAgICAgQGIgbm90IGJlIEBjIDAKICAqCi0gKiBAbm90ZSBFdmFzX1NtYXJ0X0Ns
YXNzLT5kYXRhIGlzIHVzZWQgdG8gaW1wbGVtZW50IHR5cGUgY2hlY2tpbmcgYW5kCisgKiBAbm90
ZSBAYSBFdmFzX1NtYXJ0X0NsYXNzLT5kYXRhIGlzIHVzZWQgdG8gaW1wbGVtZW50IHR5cGUgY2hl
Y2tpbmcgYW5kCiAgKiAgICAgICBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgY2hhbmdlZC9vdmVycmlk
ZGVuLiBJZiB5b3UgbmVlZCBleHRyYQogICogICAgICAgZGF0YSBmb3IgeW91ciBzbWFydCBjbGFz
cyB0byB3b3JrLCBqdXN0IGV4dGVuZAogICogICAgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgaW5z
dGVhZC4KICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUgKHByb2JhYmx5Ci0gKiAgICAgICAgIHZlcnNpb24gbWlzbWF0Y2gpLgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZh
aWx1cmUgKHByb2JhYmx5CisgKiAgICAgICAgIHZlcnNpb24gbWlzbWF0Y2gpCiAgKgogICogQHNl
ZSBld2tfdmlld19zaW5nbGVfc21hcnRfc2V0KCkKICAqIEBzZWUgZXdrX3ZpZXdfdGlsZWRfc21h
cnRfc2V0KCkKQEAgLTM5NSwxNyArNDA5LDE3IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X2Jhc2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpOwogICogU2V0cyB0aGUg
c21hcnQgY2xhc3MgYXBpIHVzaW5nIHNpbmdsZSBiYWNraW5nIHN0b3JlLCBlbmFibGluZyB2aWV3
CiAgKiB0byBiZSBpbmhlcml0ZWQuCiAgKgotICogQHBhcmFtIGFwaSBjbGFzcyBkZWZpbml0aW9u
IHRvIGJlIHNldCwgYWxsIG1lbWJlcnMgd2l0aCB0aGUKLSAqICAgICAgICBleGNlcHRpb24gb2Yg
RXZhc19TbWFydF9DbGFzcy0+ZGF0YSBtYXkgYmUgb3ZlcnJpZGRlbi4gTXVzdAotICogICAgICAg
IEBiIG5vdCBiZSBAYyBOVUxMLgorICogQHBhcmFtIGFwaSBjbGFzcyBkZWZpbml0aW9uIHRvIHNl
dCwgYWxsIG1lbWJlcnMgd2l0aCB0aGUKKyAqICAgICAgICBleGNlcHRpb24gb2YgQGEgRXZhc19T
bWFydF9DbGFzcy0+ZGF0YSBtYXkgYmUgb3ZlcnJpZGRlbiwgbXVzdAorICogICAgICAgIEBiIG5v
dCBiZSBAYyAwCiAgKgotICogQG5vdGUgRXZhc19TbWFydF9DbGFzcy0+ZGF0YSBpcyB1c2VkIHRv
IGltcGxlbWVudCB0eXBlIGNoZWNraW5nIGFuZAorICogQG5vdGUgQGEgRXZhc19TbWFydF9DbGFz
cy0+ZGF0YSBpcyB1c2VkIHRvIGltcGxlbWVudCB0eXBlIGNoZWNraW5nIGFuZAogICogICAgICAg
aXMgbm90IHN1cHBvc2VkIHRvIGJlIGNoYW5nZWQvb3ZlcnJpZGRlbi4gSWYgeW91IG5lZWQgZXh0
cmEKICAqICAgICAgIGRhdGEgZm9yIHlvdXIgc21hcnQgY2xhc3MgdG8gd29yaywganVzdCBleHRl
bmQKLSAqICAgICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGluc3RlYWQuCisgKiAgICAgICBAYSBF
d2tfVmlld19TbWFydF9DbGFzcyBpbnN0ZWFkLgogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKLSAqICAgICAg
ICAgdmVyc2lvbiBtaXNtYXRjaCkuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSAocHJvYmFibHkKKyAqICAgICAgICAgdmVyc2lv
biBtaXNtYXRjaCkKICAqCiAgKiBAc2VlIGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KCkKICAqLwpA
QCAtNDE1LDE3ICs0MjksMTcgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2luZ2xlX3Nt
YXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpKTsKICAqIFNldHMgdGhlIHNtYXJ0IGNs
YXNzIGFwaSB1c2luZyB0aWxlZCBiYWNraW5nIHN0b3JlLCBlbmFibGluZyB2aWV3CiAgKiB0byBi
ZSBpbmhlcml0ZWQuCiAgKgotICogQHBhcmFtIGFwaSBjbGFzcyBkZWZpbml0aW9uIHRvIGJlIHNl
dCwgYWxsIG1lbWJlcnMgd2l0aCB0aGUKLSAqICAgICAgICBleGNlcHRpb24gb2YgRXZhc19TbWFy
dF9DbGFzcy0+ZGF0YSBtYXkgYmUgb3ZlcnJpZGRlbi4gTXVzdAotICogICAgICAgIEBiIG5vdCBi
ZSBAYyBOVUxMLgorICogQHBhcmFtIGFwaSBjbGFzcyBkZWZpbml0aW9uIHRvIHNldCwgYWxsIG1l
bWJlcnMgd2l0aCB0aGUKKyAqICAgICAgICBleGNlcHRpb24gb2YgQGEgRXZhc19TbWFydF9DbGFz
cy0+ZGF0YSBtYXkgYmUgb3ZlcnJpZGRlbiwgbXVzdAorICogICAgICAgIEBiIG5vdCBiZSBAYyAw
CiAgKgotICogQG5vdGUgRXZhc19TbWFydF9DbGFzcy0+ZGF0YSBpcyB1c2VkIHRvIGltcGxlbWVu
dCB0eXBlIGNoZWNraW5nIGFuZAorICogQG5vdGUgQGEgRXZhc19TbWFydF9DbGFzcy0+ZGF0YSBp
cyB1c2VkIHRvIGltcGxlbWVudCB0eXBlIGNoZWNraW5nIGFuZAogICogICAgICAgaXMgbm90IHN1
cHBvc2VkIHRvIGJlIGNoYW5nZWQvb3ZlcnJpZGRlbi4gSWYgeW91IG5lZWQgZXh0cmEKICAqICAg
ICAgIGRhdGEgZm9yIHlvdXIgc21hcnQgY2xhc3MgdG8gd29yaywganVzdCBleHRlbmQKICAqICAg
ICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGluc3RlYWQuCiAgKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlIChwcm9iYWJseQotICog
ICAgICAgICB2ZXJzaW9uIG1pc21hdGNoKS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlIChwcm9iYWJseQorICogICAgICAgICB2
ZXJzaW9uIG1pc21hdGNoKQogICoKICAqIEBzZWUgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoKQog
ICovCkBAIC00NDEsOSArNDU1LDkgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfdGlsZWRf
c21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpOwogICogZnJhbWUsIGNhbGxlZCAn
bWFpbl9mcmFtZScuIFNlZSBld2tfdmlld19mcmFtZV9tYWluX2dldCgpIGFuZAogICogZXdrX3Zp
ZXdfZnJhbWVfZm9jdXNlZF9nZXQoKS4KICAqCi0gKiBAcGFyYW0gZSBjYW52YXMgd2hlcmUgdG8g
Y3JlYXRlIHRoZSB2aWV3IG9iamVjdC4KKyAqIEBwYXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUg
dG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdAogICoKLSAqIEByZXR1cm4gdmlldyBvYmplY3Qgb3Ig
QGMgTlVMTCBpZiBlcnJvcnMuCisgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3Ig
QGMgMCBvbiBmYWlsdXJlCiAgKgogICogQHNlZSBld2tfdmlld191cmlfc2V0KCkKICAqLwpAQCAt
NDU1LDQ4ICs0NjksNTIgQEAgRUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfc2luZ2xlX2FkZChF
dmFzICplKTsKICAqIFZpZXcgb2JqZWN0cyBhcmUgdGhlIHJlY29tbWVuZGVkIHdheSB0byBkZWFs
IHdpdGggRUZMIFdlYktpdCBhcyBpdAogICogYWJzdHJhY3RzIHRoZSBjb21wbGV4IHBpZWNlcyBv
ZiB0aGUgcHJvY2Vzcy4KICAqCi0gKiBUaGlzIG9iamVjdCBpcyBhbG1vc3QgdGhlIHNhbWUgYXMg
dGhlIG9uZSByZXR1cm5lZCBieSB0aGUgZXdrX3ZpZXdfYWRkKCkKKyAqIFRoaXMgb2JqZWN0IGlz
IGFsbW9zdCB0aGUgc2FtZSBhcyB0aGUgb25lIHJldHVybmVkIGJ5IHRoZSBld2tfdmlld19zaW5n
bGVfYWRkKCkKICAqIGZ1bmN0aW9uLCBidXQgaXQgdXNlcyB0aGUgdGlsZWQgYmFja2luZyBzdG9y
ZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0CiAgKiBiYWNraW5nIHN0b3JlLgogICoKLSAqIEBwYXJh
bSBlIGNhbnZhcyB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcgb2JqZWN0LgorICogQHBhcmFtIGUg
Y2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcgb2JqZWN0CiAgKgotICogQHJl
dHVybiB2aWV3IG9iamVjdCBvciBAYyBOVUxMIGlmIGVycm9ycy4KKyAqIEByZXR1cm4gdGhlIHZp
ZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCiAgKgogICogQHNlZSBld2tf
dmlld191cmlfc2V0KCkKICAqLwogRUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfdGlsZWRfYWRk
KEV2YXMgKmUpOwogCiAvKioKLSAqIEdldCB0aGUgY2FjaGUgb2YgdW51c2VkIHRpbGVzIHVzZWQg
YnkgdGhpcyB2aWV3LgorICogR2V0cyB0aGUgY2FjaGUgb2JqZWN0IG9mIHVudXNlZCB0aWxlcyB1
c2VkIGJ5IHRoaXMgdmlldy4KKyAqCisgKiBAcGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gZ2V0
IHRoZSBjYWNoZSBvYmplY3QKICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgY2Fj
aGUuCi0gKiBAcmV0dXJuIGluc3RhbmNlIG9mICJjYWNoZSBvZiB1bnVzZWQgdGlsZXMiIG9yIEBj
IE5VTEwgb24gZXJyb3JzLgorICogQHJldHVybiB0aGUgY2FjaGUgb2JqZWN0IG9mIHVudXNlZCB0
aWxlcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwogRUFQSSBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUg
KmV3a192aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwog
CiAvKioKLSAqIFNldCB0aGUgY2FjaGUgb2YgdW51c2VkIHRpbGVzIHVzZWQgYnkgdGhpcyB2aWV3
LgorICogU2V0cyB0aGUgY2FjaGUgb2JqZWN0IG9mIHVudXNlZCB0aWxlcyB1c2VkIGJ5IHRoaXMg
dmlldy4KKyAqCisgKiBJdCBjYW4gYmUgdXNlZCB0byBzaGFyZSBhIHNpbmdsZSBjYWNoZSBhbW9u
Z3N0IGRpZmZlcmVudCB2aWV3cy4KKyAqIFRoZSB0aWxlcyBmcm9tIG9uZSB2aWV3IHdpbGwgbm90
IGJlIHVzZWQgYnkgdGhlIG90aGVyIQorICogVGhpcyBpcyBqdXN0IHRvIGxpbWl0IHRoZSBncm91
cCB3aXRoIGFtb3VudCBvZiB1bnVzZWQgbWVtb3J5LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGdldCBjYWNoZS4KLSAqIEBwYXJhbSBjYWNoZSBpbnN0YW5jZSBvZiAiY2FjaGUgb2Yg
dW51c2VkIHRpbGVzIi4gVGhpcyBjYW4gYmUgdXNlZAotICogICAgICAgIHRvIHNoYXJlIGEgc2lu
Z2xlIGNhY2hlIGFtb25nc3QgZGlmZmVyZW50IHZpZXdzLiBUaGUgdGlsZXMKLSAqICAgICAgICBm
cm9tIG9uZSB2aWV3IHdpbGwgbm90IGJlIHVzZWQgYnkgdGhlIG90aGVyISBUaGlzIGlzIGp1c3Qg
dG8KLSAqICAgICAgICBsaW1pdCB0aGUgZ3JvdXAgd2l0aCBhbW91bnQgb2YgdW51c2VkIG1lbW9y
eS4KLSAqICAgICAgICBJZiBAYyBOVUxMIGlzIHByb3ZpZGVkLCB0aGVuIGEgbmV3IGNhY2hlIGlz
IGNyZWF0ZWQuCisgKiBAbm90ZSBJZiBAYyAwIGlzIHByb3ZpZGVkIGFzIGEgQGEgY2FjaGUsIHRo
ZW4gYSBuZXcgb25lIGlzIGNyZWF0ZWQuCisgKgorICogQHBhcmFtIG8gdGhlIHZpZXcgb2JqZWN0
IHRvIHNldCB0aGUgY2FjaGUgb2JqZWN0CisgKiBAcGFyYW0gdGhlIGNhY2hlIG9iamVjdCBvZiB1
bnVzZWQgdGlsZXMKICAqLwogRUFQSSB2b2lkICAgICAgICAgICAgICAgICAgIGV3a192aWV3X3Rp
bGVkX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19UaWxlX1VudXNlZF9DYWNo
ZSAqY2FjaGUpOwogCiAvLyBGSVhNRTogdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBs
YXRlciwgd2hlbiB3ZSBmaW5kIHRoZSBiZXN0IGZsYWcgdG8gdXNlLgogLyoqCi0gKiBTZXQgdGhl
IGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBvZiB0aGUgdGlsZWQgYmFja2luZyBzdG9yZS4K
LSAqIEBwYXJhbSBvIHRoZSB0aWxlZCBiYWNraW5nIHN0b3JlIG9iamVjdC4KLSAqIEBwYXJhbSBm
bGFnIHZhbHVlIG9mIHRoZSB0aWxlZCBiYWNraW5nIHN0b3JlIGZsYWcgdG8gc2V0LgorICogU2V0
cyBpZiBhbGwgdGhlIHJlcXVlc3RzIG9mIHRoZSBxdWV1ZSBzaG91bGQgYmUgcHJvY2Vzc2VkLgor
ICoKKyAqIEBwYXJhbSBvIHRoZSB2aWV3IG9iamVjdAorICogQHBhcmFtIGZsYWcgQGMgRUlOQV9U
UlVFIGlmIGFsbCB0aGUgcmVxdWVzdCBvZiBxdWV1ZSBzaG91bGQgYmUgcHJvY2Vzc2VkLCBAYyBF
SU5BX0ZBTFNFIGlmIG5vdAogICovCiBFQVBJIHZvaWQgICAgICAgICAgICAgICAgICAgZXdrX3Zp
ZXdfdGlsZWRfcHJvY2Vzc19lbnRpcmVfcXVldWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZmxhZyk7CiAKIC8qKgotICogU2V0IGEgZml4ZWQgbGF5b3V0IHNpemUgdG8gYmUgdXNlZCwg
ZGlzc29jaWF0aW5nIGl0IGZyb20gdmlld3BvcnQgc2l6ZS4KKyAqIFNldHMgYSBmaXhlZCBsYXlv
dXQgc2l6ZSB0byBiZSB1c2VkLCBkaXNzb2NpYXRpbmcgaXQgZnJvbSB2aWV3cG9ydCBzaXplLgog
ICoKICAqIFNldHRpbmcgYSB3aWR0aCBkaWZmZXJlbnQgdGhhbiB6ZXJvIGVuYWJsZXMgZml4ZWQg
bGF5b3V0IG9uIHRoYXQKICAqIHNpemUuIEl0J3MgYXV0b21hdGljYWxseSBzY2FsZWQgYmFzZWQg
b24gem9vbSwgYnV0IHdpbGwgbm90IGNoYW5nZQpAQCAtNTA0LDExNyArNTIyLDEyMSBAQCBFQVBJ
IHZvaWQgICAgICAgICAgICAgICAgICAgZXdrX3ZpZXdfdGlsZWRfcHJvY2Vzc19lbnRpcmVfcXVl
dWVfc2V0KEV2YXNfT2JqZWN0CiAgKgogICogU2V0dGluZyBib3RoIEBhIHcgYW5kIEBhIGggdG8g
emVybyB3aWxsIGRpc2FibGUgZml4ZWQgbGF5b3V0LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGNoYW5nZSBmaXhlZCBsYXlvdXQuCi0gKiBAcGFyYW0gdyBmaXhlZCB3aWR0aCB0byB1
c2UuIFRoaXMgc2l6ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2NhbGVkCi0gKiAgICAgICAgYmFz
ZWQgb24gem9vbSBsZXZlbC4KLSAqIEBwYXJhbSBoIGZpeGVkIGhlaWdodCB0byB1c2UuIFRoaXMg
c2l6ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2NhbGVkCi0gKiAgICAgICAgYmFzZWQgb24gem9v
bSBsZXZlbC4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5nZSBmaXhlZCBsYXlvdXQK
KyAqIEBwYXJhbSB3IGZpeGVkIHdpZHRoIHRvIHVzZSwgdGhpcyBzaXplIHdpbGwgYmUgYXV0b21h
dGljYWxseSBzY2FsZWQKKyAqICAgICAgICBiYXNlZCBvbiB6b29tIGxldmVsCisgKiBAcGFyYW0g
aCBmaXhlZCBoZWlnaHQgdG8gdXNlLCB0aGlzIHNpemUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNj
YWxlZAorICogICAgICAgIGJhc2VkIG9uIHpvb20gbGV2ZWwKICAqLwogRUFQSSB2b2lkICAgICAg
ICAgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nv
b3JkIHcsIEV2YXNfQ29vcmQgaCk7CiAKIC8qKgotICogR2V0IGZpeGVkIGxheW91dCBzaXplIGlu
IHVzZS4KKyAqIEdldHMgZml4ZWQgbGF5b3V0IHNpemUuCiAgKgotICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gcXVlcnkgZml4ZWQgbGF5b3V0IHNpemUuCi0gKiBAcGFyYW0gdyB3aGVyZSB0byBy
ZXR1cm4gd2lkdGguIFJldHVybnMgMCBvbiBlcnJvciBvciBpZiBubyBmaXhlZAotICogICAgICAg
IGxheW91dCBpbiB1c2UuCi0gKiBAcGFyYW0gaCB3aGVyZSB0byByZXR1cm4gaGVpZ2h0LiBSZXR1
cm5zIDAgb24gZXJyb3Igb3IgaWYgbm8gZml4ZWQKLSAqICAgICAgICBsYXlvdXQgaW4gdXNlLgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGZpeGVkIGxheW91dCBzaXplCisgKiBAcGFy
YW0gdyB0aGUgcG9pbnRlciB0byBzdG9yZSBmaXhlZCB3aWR0aCwgcmV0dXJucyBAYyAwIG9uIGZh
aWx1cmUgb3IgaWYgdGhlcmUgaXMgbm8KKyAqICAgICAgICBmaXhlZCBsYXlvdXQgaW4gdXNlCisg
KiBAcGFyYW0gaCB0aGUgcG9pbnRlciB0byBzdG9yZSBmaXhlZCBoZWlnaHQsIHJldHVybnMgQGMg
MCBvbiBmYWlsdXJlIG9yIGlmIHRoZXJlIGlzIG5vCisgKiAgICAgICAgZml4ZWQgbGF5b3V0IGlu
IHVzZQogICovCiBFQVBJIHZvaWQgICAgICAgICBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9n
ZXQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgKncsIEV2YXNfQ29vcmQgKmgpOwogCiAvKioK
LSAqIFNldCB0aGUgdGhlbWUgcGF0aCB0byBiZSB1c2VkIGJ5IHRoaXMgdmlldy4KKyAqIFNldHMg
dGhlIHRoZW1lIHBhdGggdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhpcyB2aWV3LgogICoKICAqIFRo
aXMgYWxzbyBzZXRzIHRoZSB0aGVtZSBvbiB0aGUgbWFpbiBmcmFtZS4gQXMgZnJhbWVzIGluaGVy
aXQgdGhlbWUKICAqIGZyb20gdGhlaXIgcGFyZW50LCB0aGlzIHdpbGwgaGF2ZSBhbGwgZnJhbWVz
IHdpdGggdW5zZXQgdGhlbWUgdG8KICAqIHVzZSB0aGlzIG9uZS4KICAqCi0gKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBjaGFuZ2UgdGhlbWUuCi0gKiBAcGFyYW0gcGF0aCB0aGVtZSBwYXRoLCBt
YXkgYmUgQGMgMCB0byByZXNldCB0byBkZWZhdWx0LgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gY2hhbmdlIHRoZW1lCisgKiBAcGFyYW0gcGF0aCB0aGVtZSBwYXRoLCBtYXkgYmUgQGMgMCB0
byByZXNldCB0byB0aGUgZGVmYXVsdCB0aGVtZQogICovCiBFQVBJIHZvaWQgICAgICAgICBld2tf
dmlld190aGVtZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgpOwogCiAvKioK
LSAqIEdldHMgdGhlIHRoZW1lIHNldCBvbiB0aGlzIGZyYW1lLgorICogR2V0cyB0aGUgdGhlbWUg
c2V0IG9uIHRoaXMgdmlldy4KICAqCiAgKiBUaGlzIHJldHVybnMgdGhlIHZhbHVlIHNldCBieSBl
d2tfdmlld190aGVtZV9zZXQoKS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQg
dGhlbWUgcGF0aC4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGVtZSBwYXRoCiAg
KgotICogQHJldHVybiB0aGVtZSBwYXRoLCBtYXkgYmUgQGMgMCBpZiBub3Qgc2V0LgorICogQHJl
dHVybiB0aGUgdGhlbWUgcGF0aCwgbWF5IGJlIEBjIDAgaWYgbm90IHNldAogICovCiBFQVBJIGNv
bnN0IGNoYXIgICpld2tfdmlld190aGVtZV9nZXQoRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAq
IEdldCB0aGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgbWFpbiBmcmFtZS4KKyAqIEdldHMg
dGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIG1haW4gZnJhbWUuCiAgKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IG1haW4gZnJhbWUuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBnZXQgbWFpbiBmcmFtZQogICoKLSAqIEByZXR1cm4gZXdrX2ZyYW1lIG9iamVjdCBvciBA
YyAwIGlmIG5vbmUgeWV0LgorICogQHJldHVybiBmcmFtZSBzbWFydCBvYmplY3Qgb3IgQGMgMCBp
ZiBub25lIHlldAogICovCiBFQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld19mcmFtZV9tYWluX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogR2V0IHRoZSBjdXJyZW50bHkgZm9j
dXNlZCBmcmFtZSBvYmplY3QuCisgKiBHZXRzIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBmcmFtZSBv
YmplY3QuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGZvY3VzZWQgZnJhbWUu
CisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgZm9jdXNlZCBmcmFtZQogICoKLSAqIEBy
ZXR1cm4gZXdrX2ZyYW1lIG9iamVjdCBvciBAYyAwIGlmIG5vbmUgeWV0LgorICogQHJldHVybiBm
cmFtZSBzbWFydCBvYmplY3Qgb3IgQGMgMCBpZiBub25lIHlldAogICovCiBFQVBJIEV2YXNfT2Jq
ZWN0ICpld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAK
IC8qKgotICogQXNrIG1haW4gZnJhbWUgdG8gbG9hZCB0aGUgZ2l2ZW4gVVJJLgorICogQXNrcyB0
aGUgbWFpbiBmcmFtZSB0byBsb2FkIHRoZSBnaXZlbiBVUkkuCiAgKgotICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gbG9hZCB1cmkuCi0gKiBAcGFyYW0gdXJpIHVuaWZvcm0gcmVzb3VyY2UgaWRl
bnRpZmllciB0byBsb2FkLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbG9hZCBAYSB1cmkK
KyAqIEBwYXJhbSB1cmkgdW5pZm9ybSByZXNvdXJjZSBpZGVudGlmaWVyIHRvIGxvYWQKICAqCi0g
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3QsIEBjIEVJTkFfRkFM
U0Ugb24gZmFpbHVyZS4KLSAqICAgICAgICAgTm90ZSB0aGF0IGl0IG1lYW5zIHRoZSByZXF1ZXN0
IHdhcyBkb25lLCBub3QgdGhhdCBpdCB3YXMKLSAqICAgICAgICAgc2F0aXNmaWVkLgorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzc2Z1bCByZXF1ZXN0IG9yIEBjIEVJTkFfRkFMU0Ug
b24gZmFpbHVyZQogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld191cmlfc2V0KEV2YXNf
T2JqZWN0ICpvLCBjb25zdCBjaGFyICp1cmkpOwogCiAvKioKLSAqIEdldCB0aGUgY3VycmVudCB1
cmkgbG9hZGVkIGJ5IG1haW4gZnJhbWUuCisgKiBHZXRzIHRoZSBjdXJyZW50IHVyaSBsb2FkZWQg
YnkgbWFpbiBmcmFtZS4KKyAqCisgKiBJdCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBz
aG91bGQgbm90CisgKiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJl
IHN0cmluZ3NoYXJlZC4KICAqCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgY3VycmVu
dCB1cmkuCiAgKgotICogQHJldHVybiBjdXJyZW50IHVyaSByZWZlcmVuY2Ugb3IgQGMgMC4gSXQn
cyBpbnRlcm5hbCwgZG9uJ3QgY2hhbmdlLgorICogQHJldHVybiBjdXJyZW50IHVyaSBvbiBzdWNj
ZXNzIG9yIEBjIDAgb24gZmFpbHVyZQogICovCiBFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld191
cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBHZXQgdGhlIGN1cnJlbnQg
dGl0bGUgb2YgbWFpbiBmcmFtZS4KKyAqIEdldHMgdGhlIGN1cnJlbnQgdGl0bGUgb2YgdGhlIG1h
aW4gZnJhbWUuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGN1cnJlbnQgdGl0
bGUuCisgKiBJdCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQgbm90CisgKiBi
ZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4K
ICAqCi0gKiBAcmV0dXJuIGN1cnJlbnQgdGl0bGUgcmVmZXJlbmNlIG9yIEBjIDAuIEl0J3MgaW50
ZXJuYWwsIGRvbid0IGNoYW5nZS4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBjdXJy
ZW50IHRpdGxlCisgKgorICogQHJldHVybiBjdXJyZW50IHRpdGxlIG9uIHN1Y2Nlc3Mgb3IgQGMg
MCBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3RpdGxlX2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogR2V0cyBpZiBtYWluIGZyYW1lIGlzIGVk
aXRhYmxlLgorICogUXVlcmllcyBpZiB0aGUgbWFpbiBmcmFtZSBpcyBlZGl0YWJsZS4KICAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgZWRpdGFibGUgc3RhdGUuCisgKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBxdWVyeSBlZGl0YWJsZSBzdGF0ZQogICoKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIGVkaXRhYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBtYWluIGZyYW1lIGlzIGVkaXRhYmxlLCBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZQogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19lZGl0YWJsZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKICAqIFNldHMgaWYgbWFpbiBmcmFtZSBp
cyBlZGl0YWJsZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgZWRpdGFibGUg
c3RhdGUuCi0gKiBAcGFyYW0gZWRpdGFibGUgbmV3IHN0YXRlLgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gc2V0IGVkaXRhYmxlIHN0YXRlCisgKiBAcGFyYW0gZWRpdGFibGUgYSBuZXcgc3Rh
dGUgdG8gc2V0CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9y
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVkaXRhYmxlKTsKIAogLyoq
Ci0gKiBTZXQgYmFja2dyb3VuZCBjb2xvciBhbmQgdHJhbnNwYXJlbmN5CisgKiBTZXRzIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yIGFuZCB0cmFuc3BhcmVuY3kgb2YgdGhlIHZpZXcuCiAgKgogICogSnVz
dCBhcyBpbiBFdmFzLCBjb2xvcnMgYXJlIHByZS1tdWx0aXBsaWVkLCBzbyA1MCUgcmVkIGlzCiAg
KiAoMTI4LCAwLCAwLCAxMjgpIGFuZCBub3QgKDI1NSwgMCwgMCwgMTI4KSEKQEAgLTYyNiw0NyAr
NjQ4LDUwIEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2VkaXRhYmxlX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIGVkaXRhYmxlKTsKICAqICAgICAgICAgIHNjcm9sbGluZy9wYW5u
aW5nIGFuZCB6b29taW5nIHdpbGwgYmUgbGlrZWx5IHNsb3dlciB0aGFuCiAgKiAgICAgICAgICBp
ZiB0cmFuc3BhcmVuY3kgaXMgb2ZmLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNo
YW5nZS4KLSAqIEBwYXJhbSByIHJlZCBjb21wb25lbnQuCi0gKiBAcGFyYW0gZyBncmVlbiBjb21w
b25lbnQuCi0gKiBAcGFyYW0gYiBibHVlIGNvbXBvbmVudC4KLSAqIEBwYXJhbSBhIHRyYW5zcGFy
ZW5jeS4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5nZSB0aGUgYmFja2dyb3VuZCBj
b2xvcgorICogQHBhcmFtIHIgcmVkIGNvbG9yIGNvbXBvbmVudAorICogQHBhcmFtIGcgZ3JlZW4g
Y29sb3IgY29tcG9uZW50CisgKiBAcGFyYW0gYiBibHVlIGNvbG9yIGNvbXBvbmVudAorICogQHBh
cmFtIGEgdHJhbnNwYXJlbmN5CiAgKi8KIEVBUEkgdm9pZCAgICAgICAgIGV3a192aWV3X2JnX2Nv
bG9yX3NldChFdmFzX09iamVjdCAqbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwogCiAv
KioKLSAqIFF1ZXJ5IGlmIHZpZXcgb2JqZWN0IGJhY2tncm91bmQgY29sb3IuCisgKiBHZXRzIHRo
ZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSB2aWV3LgogICoKICAqIEp1c3QgYXMgaW4gRXZhcywg
Y29sb3JzIGFyZSBwcmUtbXVsdGlwbGllZCwgc28gNTAlIHJlZCBpcwogICogKDEyOCwgMCwgMCwg
MTI4KSBhbmQgbm90ICgyNTUsIDAsIDAsIDEyOCkhCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gcXVlcnkuCi0gKiBAcGFyYW0gciB3aGVyZSB0byByZXR1cm4gcmVkIGNvbG9yIGNvbXBv
bmVudC4KLSAqIEBwYXJhbSBnIHdoZXJlIHRvIHJldHVybiBncmVlbiBjb2xvciBjb21wb25lbnQu
Ci0gKiBAcGFyYW0gYiB3aGVyZSB0byByZXR1cm4gYmx1ZSBjb2xvciBjb21wb25lbnQuCi0gKiBA
cGFyYW0gYSB3aGVyZSB0byByZXR1cm4gYWxwaGEgdmFsdWUuCisgKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBnZXQgdGhlIGJhY2tncm91bmQgY29sb3IKKyAqIEBwYXJhbSByIHRoZSBwb2ludGVy
IHRvIHN0b3JlIHJlZCBjb2xvciBjb21wb25lbnQKKyAqIEBwYXJhbSBnIHRoZSBwb2ludGVyIHRv
IHN0b3JlIGdyZWVuIGNvbG9yIGNvbXBvbmVudAorICogQHBhcmFtIGIgdGhlIHBvaW50ZXIgdG8g
c3RvcmUgYmx1ZSBjb2xvciBjb21wb25lbnQKKyAqIEBwYXJhbSBhIHRoZSBwb2ludGVyIHRvIHN0
b3JlIGFscGhhIHZhbHVlCiAgKi8KIEVBUEkgdm9pZCAgICAgICAgIGV3a192aWV3X2JnX2NvbG9y
X2dldChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQgKmcsIGludCAqYiwgaW50ICph
KTsKIAogLyoqCi0gKiBHZXQgdGhlIGNvcHkgb2YgdGhlIHNlbGVjdGlvbiB0ZXh0LgorICogR2V0
cyB0aGUgY29weSBvZiB0aGUgc2VsZWN0ZWQgdGV4dC4KKyAqCisgKiBUaGUgcmV0dXJuZWQgc3Ry
aW5nIEBiIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuCiAgKgotICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gZ2V0IHNlbGVjdGlvbiB0ZXh0LgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
Z2V0IHNlbGVjdGVkIHRleHQKICAqCi0gKiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcg
b3IgQGMgMCBpZiBub3RoaW5nIGlzIHNlbGVjdGVkIG9yIGZhaWx1cmUuCisgKiBAcmV0dXJuIGEg
bmV3bHkgYWxsb2NhdGVkIHN0cmluZyBvciBAYyAwIGlmIG5vdGhpbmcgaXMgc2VsZWN0ZWQgb3Ig
b24gZmFpbHVyZQogICovCiBFQVBJIGNoYXIgICAgICAgICpld2tfdmlld19zZWxlY3Rpb25fZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBGb3J3YXJkcyBhIHJlcXVlc3Qgb2Yg
bmV3IENvbnRleHQgTWVudSB0byBXZWJDb3JlLgorICogRm9yd2FyZHMgYSByZXF1ZXN0IG9mIGEg
bmV3IENvbnRleHQgTWVudSB0byBXZWJDb3JlLgogICoKLSAqIEBwYXJhbSBvIFZpZXcuCi0gKiBA
cGFyYW0gZXYgRXZlbnQgZGF0YS4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGZvcndhcmQg
YSByZXF1ZXN0IG9mIGEgbmV3IENvbnRleHQgTWVudQorICogQHBhcmFtIGV2IG1vdXNlIGRvd24g
ZXZlbnQgZGF0YQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIG9wZXJhdGlvbiB3YXMg
ZXhlY3V0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgb3BlcmF0aW9uIHdhcyBleGVjdXRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAq
LwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpOwogCisvLy8g
Q29udGFpbnMgY29tbWFuZHMgdG8gZXhlY3V0ZS4KIGVudW0gX0V3a19FZGl0b3JfQ29tbWFuZCB7
CiAgICAgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9JTUFHRSA9IDAsCiAgICAgRVdLX0VESVRP
Ul9DT01NQU5EX0lOU0VSVF9URVhULApAQCAtNjc3LDE2ICs3MDIsMTcgQEAgZW51bSBfRXdrX0Vk
aXRvcl9Db21tYW5kIHsKICAgICBFV0tfRURJVE9SX0NPTU1BTkRfU0VMRUNUX0xJTkUsCiAgICAg
RVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9XT1JECiB9OworLy8vIENyZWF0ZXMgYSB0eXBlIG5h
bWUgZm9yIEBhIF9Fd2tfRWRpdG9yX0NvbW1hbmQuCiB0eXBlZGVmIGVudW0gX0V3a19FZGl0b3Jf
Q29tbWFuZCBFd2tfRWRpdG9yX0NvbW1hbmQ7CiAKIC8qKgogICogRXhlY3V0ZXMgZWRpdG9yIGNv
bW1hbmQuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZXhlY3V0ZSBjb21tYW5kLgot
ICogQHBhcmFtIGNvbW1hbmQgZWRpdG9yIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQuCi0gKiBAcGFy
YW0gdmFsdWUgdmFsdWUgdG8gYmUgcGFzc2VkIGludG8gY29tbWFuZC4KKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIGV4ZWN1dGUgY29tbWFuZAorICogQHBhcmFtIGNvbW1hbmQgZWRpdG9yIGNv
bW1hbmQgdG8gZXhlY3V0ZQorICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBiZSBwYXNzZWQg
aW50byBjb21tYW5kCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgb3BlcmF0aW9uIHdh
cyBleGVjdXRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCiBFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBFd2tfRWRpdG9yX0NvbW1hbmQgY29tbWFuZCwgY29uc3QgY2hhciAqdmFsdWUpOwog
CkBAIC02OTcsMjQ0ICs3MjMsMjczIEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2V4ZWN1
dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19FZGl0CiAgKiB3aGVu
ZXZlciB1c2VyIGhhcyBjaG9zZW4gYSBkaWZmZXJlbnQgaXRlbS4gTW9zdCBsaWtlbHkgYWZ0ZXIg
Y2FsbGluZyB0aGlzLCBhCiAgKiBjYWxsIHRvIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3kgbWlnaHQg
YmUgbWFkZSBpbiBvcmRlciB0byBjbG9zZSB0aGUgcG9wdXAuCiAgKgotICogQHBhcmFtIG8gVmll
dy4KLSAqIEBpbmRleCBJbmRleCBvZiBzZWxlY3RlZCBpdGVtLgotICoKKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIGNoYW5nZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbQorICogQGluZGV4IGlu
ZGV4IGEgbmV3IGluZGV4IHRvIHNldAogICovCiBFQVBJIHZvaWQgICAgICAgICBld2tfdmlld19w
b3B1cF9zZWxlY3RlZF9zZXQoRXZhc19PYmplY3QgKm8sIGludCBpbmRleCk7CiAKIC8qKgotICog
RGVzdHJveSBhIHByZXZpb3VzbHkgY3JlYXRlZCBtZW51LgorICogRGVzdHJveXMgYSBwcmV2aW91
c2x5IGNyZWF0ZWQgbWVudS4KICAqCiAgKiBCZWZvcmUgZGVzdHJveWluZywgaXQgaW5mb3JtcyBj
bGllbnQgdGhhdCBtZW51J3MgZGF0YSBpcyByZWFkeSB0byBiZQogICogZGVzdHJveWVkIGJ5IHNl
bmRpbmcgYSAicG9wdXAsd2lsbGRlbGV0ZSIgd2l0aCBhIGxpc3Qgb2YgbWVudSBpdGVtcy4gVGhl
biBpdAogICogcmVtb3ZlcyBhbnkgcmVmZXJlbmNlIHRvIG1lbnUgaW5zaWRlIHdlYmtpdC4gSXQn
cyBzYWZlIHRvIGNhbGwgdGhpcwogICogZnVuY3Rpb24gZWl0aGVyIGZyb20gaW5zaWRlIHdlYmtp
dCBvciBmcm9tIGJyb3dzZXIuCiAgKgotICogQHBhcmFtIG8gVmlldy4KKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0CiAgKgotICogQHJldHVybnMgRUlOQV9UUlVFIGluIGNhc2UgbWVudSB3YXMgc3Vj
Y2Vzc2Z1bGx5IGRlc3Ryb3llZCBvciBFSU5BX1RSVUUgaW4KLSAqIGNhc2UgdGhlcmUgd2Fzbid0
IGFueSBtZW51IHRvIGJlIGRlc3Ryb3llZC4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGluIGNh
c2UgbWVudSB3YXMgc3VjY2Vzc2Z1bGx5IGRlc3Ryb3llZCBvciBAYyBFSU5BX1RSVUUgaW4KKyAq
IGNhc2UgdGhlcmUgd2Fzbid0IGFueSBtZW51IHRvIGJlIGRlc3Ryb3llZAogICovCiBFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0ICpvKTsKIAogLyoq
Ci0gKiBTZWFyY2ggdGhlIGdpdmVuIHRleHQgc3RyaW5nIGluIGRvY3VtZW50LgorICogU2VhcmNo
ZXMgdGhlIGdpdmVuIHN0cmluZyBpbiBhIGRvY3VtZW50LgogICoKLSAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0LgotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ug
c3RyaW5nIHRvIHNlYXJjaC4KLSAqIEBwYXJhbSBjYXNlX3NlbnNpdGl2ZSBpZiBzZWFyY2ggc2hv
dWxkIGJlIGNhc2Ugc2Vuc2l0aXZlIG9yIG5vdC4KLSAqIEBwYXJhbSBmb3J3YXJkIGlmIHNlYXJj
aCBpcyBmcm9tIGN1cnNvciBhbmQgb24gb3IgYmFja3dhcmRzLgotICogQHBhcmFtIHdyYXAgaWYg
c2VhcmNoIHNob3VsZCB3cmFwIGF0IGVuZC4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHdoZXJl
IHRvIHNlYXJjaCB0aGUgdGV4dAorICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRv
IHNlYXJjaAorICogQHBhcmFtIGNhc2Vfc2Vuc2l0aXZlIGlmIHNlYXJjaCBzaG91bGQgYmUgY2Fz
ZSBzZW5zaXRpdmUgb3Igbm90CisgKiBAcGFyYW0gZm9yd2FyZCBpZiBzZWFyY2ggaXMgZnJvbSBj
dXJzb3IgYW5kIG9uIG9yIGJhY2t3YXJkcworICogQHBhcmFtIHdyYXAgaWYgc2VhcmNoIHNob3Vs
ZCB3cmFwIGF0IHRoZSBlbmQKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBmb3VuZCwg
QGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIHRoZSBnaXZlbiBzdHJpbmcgd2FzIGZvdW5kLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBm
YWlsdXJlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3RleHRfc2VhcmNoKGNvbnN0
IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNp
dGl2ZSwgRWluYV9Cb29sIGZvcndhcmQsIEVpbmFfQm9vbCB3cmFwKTsKIAogLyoqCi0gKiBHZXQg
aWYgc2hvdWxkIGhpZ2hsaWdodCBtYXRjaGVzIG1hcmtlZCB3aXRoIGV3a192aWV3X3RleHRfbWF0
Y2hlc19tYXJrKCkuCisgKiBNYXJrcyBtYXRjaGVzIHRoZSBnaXZlbiBzdHJpbmcgaW4gYSBkb2N1
bWVudC4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBtYXRjaGVzIGFy
ZSBoaWdobGlnaHRlZCBvciBub3QuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB3aGVyZSB0byBz
ZWFyY2ggdGV4dAorICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIG1hdGNoCisg
KiBAcGFyYW0gY2FzZV9zZW5zaXRpdmUgaWYgbWF0Y2ggc2hvdWxkIGJlIGNhc2Ugc2Vuc2l0aXZl
IG9yIG5vdAorICogQHBhcmFtIGhpZ2hsaWdodCBpZiBtYXRjaGVzIHNob3VsZCBiZSBoaWdobGln
aHRlZAorICogQHBhcmFtIGxpbWl0IG1heGltdW0gYW1vdW50IG9mIG1hdGNoZXMsIG9yIHplcm8g
dG8gdW5saW1pdGVkCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhleSBhcmUgaGln
aGxpZ2h0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBudW1iZXIgb2Yg
bWF0Y2hlZCBAYSBzdHJpbmcKICAqLwogRUFQSSB1bnNpZ25lZCBpbnQgZXdrX3ZpZXdfdGV4dF9t
YXRjaGVzX21hcmsoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywgRWluYV9Cb29s
IGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQgbGltaXQp
OwogCiAvKioKLSAqIFJldmVyc2VzIHRoZSBlZmZlY3Qgb2YgZXdrX3ZpZXdfdGV4dF9tYXRjaGVz
X21hcmsoKQorICogVW5tYXJrcyBhbGwgbWFya2VkIG1hdGNoZXMgaW4gYSBkb2N1bWVudC4KKyAq
CisgKiBSZXZlcnNlcyB0aGUgZWZmZWN0IG9mIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyaygp
LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0LgorICog
QHBhcmFtIG8gdmlldyBvYmplY3Qgd2hlcmUgdG8gdW5tYXJrIG1hdGNoZXMKICAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIGZvciBmYWlsdXJlLgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZh
aWx1cmUKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX3VubWFy
a19hbGwoRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIFNldCBpZiBzaG91bGQgaGlnaGxpZ2h0
IG1hdGNoZXMgbWFya2VkIHdpdGggZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoKS4KKyAqIFNl
dHMgaWYgc2hvdWxkIGhpZ2hsaWdodCBtYXRjaGVzIG1hcmtlZCB3aXRoIGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfbWFyaygpLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHdoZXJlIHRvIHNl
dCBpZiBtYXRjaGVzIGFyZSBoaWdobGlnaHRlZCBvciBub3QuCi0gKiBAcGFyYW0gaGlnaGxpZ2h0
IGlmIEBjIEVJTkFfVFJVRSwgbWF0Y2hlcyB3aWxsIGJlIGhpZ2hsaWdodGVkLgorICogQHBhcmFt
IG8gdmlldyBvYmplY3Qgd2hlcmUgdG8gc2V0IGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkIG9y
IG5vdAorICogQHBhcmFtIGhpZ2hsaWdodCBAYyBFSU5BX1RSVUUgaWYgbWF0Y2hlcyBhcmUgaGln
aGxpZ2h0ZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBmb3IgZmFpbHVyZS4KKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0KTsKIAorLyoqCisgKiBHZXRzIGlmIHNob3Vs
ZCBoaWdobGlnaHQgbWF0Y2hlcyBtYXJrZWQgd2l0aCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21h
cmsoKS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBtYXRjaGVzIGFy
ZSBoaWdobGlnaHRlZCBvciBub3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBtYXRj
aGVzIGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLwogRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pOwogCiAvKioKLSAqIEdldCBjdXJyZW50IGxvYWQgcHJvZ3Jlc3MgZXN0aW1h
dGUgZnJvbSAwLjAgdG8gMS4wLgorICogR2V0cyB0aGUgY3VycmVudCBsb2FkIHByb2dyZXNzIG9m
IHBhZ2UuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGN1cnJlbnQgcHJvZ3Jl
c3MuCisgKiBUaGUgcHJvZ3Jlc3MgZXN0aW1hdGVzIGZyb20gMC4wIHRvIDEuMC4KICAqCi0gKiBA
cmV0dXJuIHByb2dyZXMgdmFsdWUgZnJvbSAwLjAgdG8gMS4wIG9yIC0xLjAgb24gZXJyb3IuCisg
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGN1cnJlbnQgcHJvZ3Jlc3MKKyAqCisg
KiBAcmV0dXJuIHRoZSBsb2FkIHByb2dyZXMgb2YgcGFnZSwgdmFsdWUgZnJvbSAwLjAgdG8gMS4w
IG9uIHN1Y2Nlc3MKKyAqICAgICAgIG9yIC0xLjAgb24gZmFpbHVyZQogICovCiBFQVBJIGRvdWJs
ZSAgICAgICBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7
CiAKIC8qKgotICogQXNrIG1haW4gZnJhbWUgdG8gc3RvcCBsb2FkaW5nLgotICoKLSAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IHRvIHN0b3AgbG9hZGluZy4KKyAqIEFza3MgdGhlIG1haW4gZnJhbWUg
dG8gc3RvcCBsb2FkaW5nLgogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Ms
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc3Rv
cCBsb2FkaW5nCiAgKgotICogQHNlZSBld2tfZnJhbWVfc3RvcCgpCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCiBFQVBJ
IEVpbmFfQm9vbCAgICBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBB
c2sgbWFpbiBmcmFtZSB0byByZWxvYWQgY3VycmVudCBkb2N1bWVudC4KKyAqIEFza3MgdGhlIG1h
aW4gZnJhbWUgdG8gcmVsb2FkIHRoZSBjdXJyZW50IGRvY3VtZW50LgogICoKLSAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHJlbG9hZC4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHJlbG9h
ZCBjdXJyZW50IGRvY3VtZW50CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKgotICogQHNlZSBld2tfZnJhbWVf
cmVsb2FkKCkKKyAqIEBzZWUgZXdrX3ZpZXdfcmVsb2FkX2Z1bGwoKQogICovCiBFQVBJIEVpbmFf
Qm9vbCAgICBld2tfdmlld19yZWxvYWQoRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIEFzayBt
YWluIGZyYW1lIHRvIGZ1bGx5IHJlbG9hZCBjdXJyZW50IGRvY3VtZW50LCB1c2luZyBubyBjYWNo
ZXMuCisgKiBBc2tzIHRoZSBtYWluIGZyYW1lIHRvIGZ1bGx5IHJlbG9hZCB0aGUgY3VycmVudCBk
b2N1bWVudCwgdXNpbmcgbm8gY2FjaGVzLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHJlbG9hZC4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHJlbG9hZCBjdXJyZW50IGRvY3Vt
ZW50CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG8gckBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKgotICogQHNlZSBld2tfZnJhbWVfcmVsb2FkX2Z1bGwoKQor
ICogQHNlZSBld2tfdmlld19yZWxvYWQoKQogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmll
d19yZWxvYWRfZnVsbChFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogQXNrIG1haW4gZnJhbWUg
dG8gbmF2aWdhdGUgYmFjayBpbiBoaXN0b3J5LgorICogQXNrcyB0aGUgZnJhbWUgdG8gbmF2aWdh
dGUgYmFjayBpbiB0aGUgaGlzdG9yeS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBu
YXZpZ2F0ZSBiYWNrLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbmF2aWdhdGUgYmFjawog
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3Ro
ZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZQogICoKICAqIEBzZWUgZXdrX2ZyYW1lX2JhY2soKQogICovCiBFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19iYWNrKEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBBc2sg
bWFpbiBmcmFtZSB0byBuYXZpZ2F0ZSBmb3J3YXJkIGluIGhpc3RvcnkuCisgKiBBc2tzIGZyYW1l
IHRvIG5hdmlnYXRlIGZvcndhcmQgaW4gdGhlIGhpc3RvcnkuCiAgKgotICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gbmF2aWdhdGUgZm9yd2FyZC4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IG5hdmlnYXRlIGZvcndhcmQKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqCiAgKiBAc2VlIGV3a19mcmFtZV9m
b3J3YXJkKCkKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfZm9yd2FyZChFdmFzX09i
amVjdCAqbyk7CiAKIC8qKgotICogTmF2aWdhdGUgYmFjayBvciBmb3J3YXJkIGluIGhpc3Rvcnku
CisgKiBOYXZpZ2F0ZXMgYmFjayBvciBmb3J3YXJkIGluIHRoZSBoaXN0b3J5LgogICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIG5hdmlnYXRlLgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gbmF2aWdhdGUgaW4gdGhlIGhpc3RvcnkKICAqIEBwYXJhbSBzdGVwcyBpZiBwb3NpdGl2ZSBu
YXZpZ2F0ZXMgdGhhdCBhbW91bnQgZm9yd2FyZHMsIGlmIG5lZ2F0aXZlCi0gKiAgICAgICAgZG9l
cyBiYWNrd2FyZHMuCisgKiAgICAgICAgZG9lcyBiYWNrd2FyZHMKICAqCi0gKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAq
CiAgKiBAc2VlIGV3a19mcmFtZV9uYXZpZ2F0ZSgpCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X25hdmlnYXRlKEV2YXNfT2JqZWN0ICpvLCBpbnQgc3RlcHMpOwogCiAvKioKLSAqIENo
ZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGJhY2t3YXJkcyBvbmUgaXRlbSBpbiBo
aXN0b3J5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoZWNrIGlmIGJhY2t3YXJk
IG5hdmlnYXRpb24gaXMgcG9zc2libGUuCisgKiBRdWVyaWVzIGlmIGl0J3MgcG9zc2libGUgdG8g
bmF2aWdhdGUgYmFja3dhcmRzIG9uZSBpdGVtIGluIHRoZSBoaXN0b3J5LgogICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIGJhY2t3YXJkIG5hdmlnYXRpb24gaXMg
cG9zc2libGUKICAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCdzIHBvc3NpYmxlIHRv
IG5hdmlnYXRlIGJhY2t3YXJkIG9uZSBpdGVtIGluIHRoZSBoaXN0b3J5LCBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZQogICogQHNlZSBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZSgpCiAgKi8KIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QgKm8pOwog
CiAvKioKLSAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGZvcndhcmRzIG9u
ZSBpdGVtIGluIGhpc3RvcnkuCisgKiBRdWVyaWVzIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdh
dGUgZm9yd2FyZHMgb25lIGl0ZW0gaW4gdGhlIGhpc3RvcnkuCiAgKgotICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gY2hlY2sgaWYgZm9yd2FyZCBuYXZpZ2F0aW9uIGlzIHBvc3NpYmxlLgorICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgZm9yd2FyZCBuYXZpZ2F0aW9uIGlzIHBv
c3NpYmxlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQncyBwb3NzaWJs
ZSB0byBuYXZpZ2F0ZSBmb3J3YXJkcyBpbiB0aGUgaGlzdG9yeSwgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UKICAqCiAgKiBAc2VlIGV3a192aWV3X25hdmlnYXRlX3Bvc3NpYmxlKCkKICAqLwogRUFQ
SSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCAqbyk7
CiAKIC8qKgotICogQ2hlY2sgaWYgaXQgaXMgcG9zc2libGUgdG8gbmF2aWdhdGUgZ2l2ZW4gQGEg
c3RlcHMgaW4gaGlzdG9yeS4KKyAqIFF1ZXJpZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0
ZSBnaXZlbiBAYSBzdGVwcyBpbiB0aGUgaGlzdG9yeS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBuYXZpZ2F0ZS4KKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIGl0
J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgQGEgc3RlcHMgaW4gdGhlIGhpc3RvcnkKICAqIEBwYXJh
bSBzdGVwcyBpZiBwb3NpdGl2ZSBuYXZpZ2F0ZXMgdGhhdCBhbW91bnQgZm9yd2FyZHMsIGlmIG5l
Z2F0aXZlCi0gKiAgICAgICAgZG9lcyBiYWNrd2FyZHMuCisgKiAgICAgICAgZG9lcyBiYWNrd2Fy
ZHMKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCdzIHBvc3NpYmxlIHRv
IG5hdmlnYXRlIEBhIHN0ZXBzIGluIHRoZSBoaXN0b3J5LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lz
ZQogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFz
X09iamVjdCAqbywgaW50IHN0ZXBzKTsKIAogLyoqCi0gKiBDaGVjayBpZiBuYXZpZ2F0aW9uIGhp
c3RvcnkgKGJhY2stZm9yd2FyZCBsaXN0cykgaXMgZW5hYmxlZC4KKyAqIFF1ZXJpZXMgaWYgbmF2
aWdhdGlvbiBpbiB0aGUgaGlzdG9yeSAoYmFjay1mb3J3YXJkIGxpc3RzKSBpcyBlbmFibGVkLgog
ICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoZWNrIGlmIG5hdmlnYXRpb24gaGlzdG9y
eSBpcyBlbmFibGVkLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgbmF2aWdh
dGlvbiBoaXN0b3J5IGlzIGVuYWJsZWQKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB2
aWV3IGtlZXBzIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgdmlldyBrZWVwcyBoaXN0b3J5LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lz
ZQogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIFNldHMgaWYgbmF2aWdhdGlvbiBoaXN0b3J5
IChiYWNrLWZvcndhcmQgbGlzdHMpIGlzIGVuYWJsZWQuCisgKiBFbmFibGVzL2Rpc2FibGVzIG5h
dmlnYXRpb24gaW4gdGhlIGhpc3RvcnkgKGJhY2stZm9yd2FyZCBsaXN0cykuCiAgKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IGlmIG5hdmlnYXRpb24gaGlzdG9yeSBpcyBlbmFibGVk
LgotICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgaWYgd2Ugd2FudCB0byBlbmFibGUgbmF2
aWdhdGlvbiBoaXN0b3J5OwotICogQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBlbmFibGUvZGlzYWJsZSBuYXZpZ2F0aW9uIGluIHRoZSBoaXN0b3J5
CisgKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgbmF2aWdhdGlvbiBpbiB0
aGUgaGlzdG9yeSwKKyAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKICAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4K
KyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKIAogLyoqCiAgKiBHZXRzIHRoZSBo
aXN0b3J5IChiYWNrLWZvcndhcmQgbGlzdCkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmlldy4KICAq
Ci0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgbmF2aWdhdGlvbiBoaXN0b3J5IGZyb20u
CisgKiBUaGUgcmV0dXJuZWQgaW5zdGFuY2UgaXMgdW5pcXVlIGZvciB0aGlzIHZpZXcgYW5kIHRo
dXMgbXVsdGlwbGUgY2FsbHMKKyAqIHRvIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSB2aWV3
IGFzIHBhcmFtZXRlciByZXR1cm5zIHRoZSBzYW1lCisgKiBoYW5kbGUuIFRoaXMgaGFuZGxlIGlz
IGFsaXZlIHdoaWxlIHZpZXcgaXMgYWxpdmUsIHRodXMgb25lCisgKiBtaWdodCB3YW50IHRvIGxp
c3RlbiBmb3IgRVZBU19DQUxMQkFDS19ERUwgb24gZ2l2ZW4gdmlldworICogKEBhIG8pIHRvIGtu
b3cgd2hlbiB0byBzdG9wIHVzaW5nIHJldHVybmVkIGhhbmRsZS4KICAqCi0gKiBAcmV0dXJuIHJl
dHVybnMgdGhlIGhpc3RvcnkgaW5zdGFuY2UgaGFuZGxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0g
KiAgICAgICAgIHZpZXcgb3IgQGMgMCBvbiBlcnJvcnMgKGluY2x1ZGluZyB3aGVuIGhpc3Rvcnkg
aXMgbm90Ci0gKiAgICAgICAgIGVuYWJsZWQgd2l0aCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9z
ZXQoKSkuIFRoaXMgaW5zdGFuY2UKLSAqICAgICAgICAgaXMgdW5pcXVlIGZvciB0aGlzIHZpZXcg
YW5kIHRodXMgbXVsdGlwbGUgY2FsbHMgdG8gdGhpcwotICogICAgICAgICBmdW5jdGlvbiB3aXRo
IHRoZSBzYW1lIHZpZXcgYXMgcGFyYW1ldGVyIHJldHVybnMgdGhlIHNhbWUKLSAqICAgICAgICAg
aGFuZGxlLiBUaGlzIGhhbmRsZSBpcyBhbGl2ZSB3aGlsZSB2aWV3IGlzIGFsaXZlLCB0aHVzIG9u
ZQotICogICAgICAgICBtaWdodCB3YW50IHRvIGxpc3RlbiBmb3IgRVZBU19DQUxMQkFDS19ERUwg
b24gZ2l2ZW4gdmlldwotICogICAgICAgICAoQGEgbykgdG8ga25vdyB3aGVuIHRvIHN0b3AgdXNp
bmcgcmV0dXJuZWQgaGFuZGxlLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IG5hdmln
YXRpb24gaGlzdG9yeQorICoKKyAqIEByZXR1cm4gdGhlIGhpc3RvcnkgaW5zdGFuY2UgaGFuZGxl
IGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgKiAgICAgICAgIHZpZXcgb24gc3VjY2VzIG9yIEBjIDAg
b24gZmFpbHVyZSAoaW5jbHVkaW5nIHdoZW4gdGhlIGhpc3RvcnkKKyAqICAgICAgICAgbmF2aWdh
dGlvbiBpcyBub3QgZW5hYmxlZCB3aXRoIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldCgpKQog
ICoKICAqIEBzZWUgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KCkKICAqLwogRUFQSSBFd2tf
SGlzdG9yeSAqZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAv
KioKLSAqIEdldCB0aGUgY3VycmVudCB6b29tIGxldmVsIG9mIG1haW4gZnJhbWUuCisgKiBHZXRz
IHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCiAgKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gcXVlcnkgem9vbSBsZXZlbC4KKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAogICoKLSAqIEByZXR1cm4gY3VycmVudCB6b29tIGxl
dmVsIGluIHVzZSBvciAtMS4wIG9uIGVycm9yLgorICogQHJldHVybiBjdXJyZW50IHpvb20gbGV2
ZWwgaW4gdXNlIG9uIHN1Y2Nlc3Mgb3IgQGMgLTEuMCBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgZmxv
YXQgICAgICAgIGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogLyoq
Ci0gKiBTZXQgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiBtYWluIGZyYW1lLgorICogU2V0cyB0
aGUgY3VycmVudCB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1lLCBjZW50ZXJlZCBhdCB0aGUg
Z2l2ZW4gcG9pbnQuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHpvb20gbGV2
ZWwuCi0gKiBAcGFyYW0gem9vbSBuZXcgbGV2ZWwgdG8gdXNlLgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gc2V0IHRoZSB6b29tIGxldmVsCisgKiBAcGFyYW0gem9vbSBhIG5ldyBsZXZlbCB0
byBzZXQKICAqIEBwYXJhbSBjeCB4IG9mIGNlbnRlciBjb29yZGluYXRlCiAgKiBAcGFyYW0gY3kg
eSBvZiBjZW50ZXIgY29vcmRpbmF0ZQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19D
b29yZCBjeCwgRXZhc19Db29yZCBjeSk7CiAKKy8qKgorICogUXVlcmllcyBpZiB0aGUgc21vb3Ro
IHNjYWxlIGlzIGVuYWJsZWQgd2hpbGUgdGhlIHdlYWsgem9vbS4KKyAqCisgKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBxdWVyeSBpZiB0aGUgc21vb3RoIHNjYWxlIGlzIGVuYWJsZWQgd2hpbGUg
dGhlIHdlYWsgem9vbQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBzbW9vdGgg
c2NhbGUgaXMgZW5hYmxlZCB3aGlsZSB0aGUgd2VhayB6b29tLCBvcgorICogICAgICAgICBAYyBF
SU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
KworLyoqCisgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBzbW9vdGggc2NhbGUgd2hpbGUgdGhlIHdl
YWsgem9vbS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHNtb290aCBz
Y2FsZSB3aGlsZSB0aGUgd2VhayB6b29tCisgKiBAcGFyYW0gc21vb3RoX3NjYWxlIEBjIEVJTkFf
VFJVRSB0byBlbmFibGUgdGhlIHNtb290aCBzY2FsZQorICogICAgICAgIEBjIEVJTkFfRkFMU0Ug
dG8gZGlzYWJsZQorICovCiBFQVBJIHZvaWQgICAgICAgICBld2tfdmlld196b29tX3dlYWtfc21v
b3RoX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2FsZSk7CiAK
IC8qKgotICogU2V0IHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgb2YgYmFja2luZyBzdG9yZSwgY2Vu
dGVyZWQgYXQgZ2l2ZW4gcG9pbnQuCisgKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgb2Yg
YmFja2luZyBzdG9yZSwgY2VudGVyZWQgYXQgZ2l2ZW4gcG9pbnQuCiAgKgogICogVW5saWtlIGV3
a192aWV3X3pvb21fc2V0KCksIHRoaXMgY2FsbCBkbyBub3QgYXNrIFdlYktpdCB0byByZW5kZXIK
ICAqIGF0IG5ldyBzaXplLCBidXQgc2NhbGUgd2hhdCBpcyBhbHJlYWR5IHJlbmRlcmVkLCBiZWlu
ZyBtdWNoIGZhc3RlcgpAQCAtOTUyLDI2ICsxMDA3LDI2IEBAIEVBUEkgdm9pZCAgICAgICAgIGV3
a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wKICAqICAgICAgIGxldmVsLCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKCkgYW5k
CiAgKiAgICAgICBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudCgpIHRvIGdpdmVu
IHpvb20gbGV2ZWwuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHdlYWsgem9v
bSBsZXZlbC4KLSAqIEBwYXJhbSB6b29tIGxldmVsIHRvIHNjYWxlIGJhY2tpbmcgc3RvcmUuCi0g
KiBAcGFyYW0gY3ggaG9yaXpvbnRhbCBjZW50ZXIgb2Zmc2V0LCByZWxhdGl2ZSB0byBvYmplY3Qg
KHcvMiBpcyBtaWRkbGUpLgotICogQHBhcmFtIGN5IHZlcnRpY2FsIGNlbnRlciBvZmZzZXQsIHJl
bGF0aXZlIHRvIG9iamVjdCAoaC8yIGlzIG1pZGRsZSkuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBzZXQgdGhlIHdlYWsgem9vbSBsZXZlbAorICogQHBhcmFtIHpvb20gYSBuZXcgbGV2ZWwg
dG8gc2NhbGUgYmFja2luZyBzdG9yZQorICogQHBhcmFtIGN4IGhvcml6b250YWwgY2VudGVyIG9m
ZnNldCwgcmVsYXRpdmUgdG8gb2JqZWN0ICh3LzIgaXMgbWlkZGxlKQorICogQHBhcmFtIGN5IHZl
cnRpY2FsIGNlbnRlciBvZmZzZXQsIHJlbGF0aXZlIHRvIG9iamVjdCAoaC8yIGlzIG1pZGRsZSkK
ICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV93ZWFr
X3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29y
ZCBjeSk7CiAKIC8qKgotICogTWFyayBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbiBzdGF0ZSB0byBn
aXZlbiB6b29tLgorICogU2V0cyBzdGFydCBvZiBhbiBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbiBz
dGF0ZSB0byB0aGUgZ2l2ZW4gem9vbS4KICAqCiAgKiBUaGlzIGRvZXMgbm90IG1vZGlmeSBhbnkg
YWN0dWFsIHpvb20gaW4gV2ViS2l0IG9yIGJhY2tpbmcgc3RvcmUsCi0gKiBqdXN0IHNldCB0aGUg
RXdrX1ZpZXdfU21hcnRfRGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0IHNvCi0gKiBzdWIt
Y2xhc3NlcyB3aWxsIGtub3cgdGhleSBzaG91bGQgbm90IHJlc2V0IHRoZWlyIGludGVybmFsIHN0
YXRlLgorICoganVzdCBzZXQgbmVlZGVkIGZsYWcgc28gc3ViLWNsYXNzZXMga25vd3MgdGhleSBz
aG91bGQgbm90IHJlc2V0CisgKiB0aGVpciBhbiBpbnRlcm5hbCBzdGF0ZS4KICAqCi0gKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBjaGFuZ2UgdmFsdWUuCi0gKiBAcGFyYW0gem9vbSBuZXcgc3Rh
cnQgdmFsdWUuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgc3RhcnQgb2YgYW4gaW50
ZXJuYWwgem9vbSBhbmltYXRpb24KKyAqIEBwYXJhbSB6b29tIGEgbmV3IHN0YXJ0IHZhbHVlCiAg
KgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFM
U0Ugb3RoZXJ3aXNlCiAgKgogICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX3NldCgpCiAg
KiBAc2VlIGV3a192aWV3X3pvb21fd2Vha19zZXQoKQpAQCAtOTgyLDE2ICsxMDM3LDE2IEBAIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8sIGZs
b2F0IHpvb20sIEV2YXNfQ29vcmQKIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5p
bWF0ZWRfbWFya19zdGFydChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSk7CiAKIC8qKgotICog
TWFyayBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbiBzdGF0ZSB0byBnaXZlbiB6b29tLgorICogU2V0
cyBlbmQgb2YgYW4gaW50ZXJuYWwgem9vbSBhbmltYXRpb24gc3RhdGUgdG8gZ2l2ZW4gem9vbS4K
ICAqCiAgKiBUaGlzIGRvZXMgbm90IG1vZGlmeSBhbnkgYWN0dWFsIHpvb20gaW4gV2ViS2l0IG9y
IGJhY2tpbmcgc3RvcmUsCi0gKiBqdXN0IHNldCB0aGUgRXdrX1ZpZXdfU21hcnRfRGF0YS0+YW5p
bWF0ZWRfem9vbS56b29tLmVuZCBzbwotICogc3ViLWNsYXNzZXMgd2lsbCBrbm93IHRoZXkgc2hv
dWxkIG5vdCByZXNldCB0aGVpciBpbnRlcm5hbCBzdGF0ZS4KKyAqIGp1c3Qgc2V0IG5lZWRlZCBm
bGFnIHNvIHN1Yi1jbGFzc2VzIGtub3dzIHRoZXkgc2hvdWxkIG5vdCByZXNldAorICogdGhlaXIg
YW4gaW50ZXJuYWwgc3RhdGUuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdl
IHZhbHVlLgotICogQHBhcmFtIHpvb20gbmV3IGVuZCB2YWx1ZS4KKyAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHNldCBlbmQgb2YgYW4gaW50ZXJuYWwgem9vbSBhbmltYXRpb24KKyAqIEBwYXJh
bSB6b29tIGEgbmV3IGVuZCB2YWx1ZQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICoKICAqIEBzZWUgZXdrX3Zp
ZXdfem9vbV9hbmltYXRlZF9zZXQoKQogICogQHNlZSBld2tfdmlld196b29tX3dlYWtfc2V0KCkK
QEAgLTEwMDIsMTYgKzEwNTcsMTYgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9h
bmltYXRlZF9tYXJrX3N0YXJ0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tKTsKIEVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QgKm8s
IGZsb2F0IHpvb20pOwogCiAvKioKLSAqIE1hcmsgaW50ZXJuYWwgem9vbSBhbmltYXRpb24gc3Rh
dGUgdG8gZ2l2ZW4gem9vbS4KKyAqIFNldHMgYW4gaW50ZXJuYWwgY3VycmVudCB6b29tIGFuaW1h
dGlvbiBzdGF0ZSB0byBnaXZlbiB6b29tLgogICoKICAqIFRoaXMgZG9lcyBub3QgbW9kaWZ5IGFu
eSBhY3R1YWwgem9vbSBpbiBXZWJLaXQgb3IgYmFja2luZyBzdG9yZSwKLSAqIGp1c3Qgc2V0IHRo
ZSBFd2tfVmlld19TbWFydF9EYXRhLT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCBzbwotICog
c3ViLWNsYXNzZXMgd2lsbCBrbm93IHRoZXkgc2hvdWxkIG5vdCByZXNldCB0aGVpciBpbnRlcm5h
bCBzdGF0ZS4KKyAqIGp1c3Qgc2V0IG5lZWRlZCBmbGFnIHNvIHN1Yi1jbGFzc2VzIGtub3dzIHRo
ZXkgc2hvdWxkIG5vdCByZXNldAorICogdGhlaXIgYW4gaW50ZXJuYWwgc3RhdGUuCiAgKgotICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdlIHZhbHVlLgotICogQHBhcmFtIHpvb20gbmV3
IGN1cnJlbnQgdmFsdWUuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgYW4gaW50ZXJu
YWwgY3VycmVudCB6b29tIGFuaW1hdGlvbgorICogQHBhcmFtIHpvb20gYSBuZXcgY3VycmVudCB2
YWx1ZQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFM
U0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBF
SU5BX0ZBTFNFIG90aGVyd2lzZQogICoKICAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9z
ZXQoKQogICogQHNlZSBld2tfdmlld196b29tX3dlYWtfc2V0KCkKQEAgLTEwMjIsMTEgKzEwNzcs
MTEgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZChF
dmFzX09iamVjdCAqbywgZmxvYXQgem9vbSk7CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196
b29tX2FuaW1hdGVkX21hcmtfY3VycmVudChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSk7CiAK
IC8qKgotICogVW5tYXJrIGludGVybmFsIHpvb20gYW5pbWF0aW9uIHN0YXRlLgorICogVW5tYXJr
cyBhbiBpbnRlcm5hbCB6b29tIGFuaW1hdGlvbiBzdGF0ZS4KICAqCi0gKiBUaGlzIHplcm8gYWxs
IHN0YXJ0LCBlbmQgYW5kIGN1cnJlbnQgdmFsdWVzLgorICogVGhlIHN0YXJ0LCBlbmQgYW5kIGN1
cnJlbnQgdmFsdWVzIG9mIGFuIGludGVybmFsIHpvb20gYW5pbWF0aW9uIGFyZSB6ZXJvZWQuCiAg
KgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbWFyayBhcyBhbmltYXRlZCBpcyBzdG9wcGVk
LgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gdW5tYXJrIGFuIGludGVybmFsIHpvb20gYW5p
bWF0aW9uIHN0YXRlCiAgKgogICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3Rh
cnQoKQogICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKCkKQEAgLTEwMzYs
NyArMTA5MSw3IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFy
a19jdXJyZW50KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tCiBFQVBJIEVpbmFfQm9vbCAgICBl
d2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFdmFzX09iamVjdCAqbyk7CiAKIC8qKgot
ICogU2V0IHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgd2hpbGUgYW5pbWF0aW5nLgorICogU2V0cyB0
aGUgY3VycmVudCB6b29tIGxldmVsIHdoaWxlIGFuaW1hdGluZy4KICAqCiAgKiBJZiB0aGUgdmll
dyB3YXMgYWxyZWFkeSBhbmltYXRpbmcgdG8gYW5vdGhlciB6b29tLCBpdCB3aWxsIHN0YXJ0CiAg
KiBmcm9tIGN1cnJlbnQgcG9pbnQgdG8gdGhlIG5leHQgcHJvdmlkZWQgem9vbSAoQGEgem9vbSBw
YXJhbWV0ZXIpCkBAIC0xMDQ5LDM3ICsxMTA0LDM3IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKEV2YXNfT2JqZWN0ICpvKTsKICAqIGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKSBhbmQKICAqIGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
bWFya19zdG9wKCkuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gYW5pbWF0ZS4KLSAq
IEBwYXJhbSB6b29tIGZpbmFsIHpvb20gbGV2ZWwgdG8gdXNlLgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gYW5pbWF0ZQorICogQHBhcmFtIHpvb20gZmluYWwgem9vbSBsZXZlbCB0byB1c2UK
ICAqIEBwYXJhbSBkdXJhdGlvbiB0aW1lIGluIHNlY29uZHMgdGhlIGFuaW1hdGlvbiBzaG91bGQg
dGFrZS4KLSAqIEBwYXJhbSBjeCBvZmZzZXQgaW5zaWRlIG9iamVjdCB0aGF0IGRlZmluZXMgem9v
bSBjZW50ZXIuIDAgaXMgbGVmdCBzaWRlLgotICogQHBhcmFtIGN5IG9mZnNldCBpbnNpZGUgb2Jq
ZWN0IHRoYXQgZGVmaW5lcyB6b29tIGNlbnRlci4gMCBpcyB0b3Agc2lkZS4KKyAqIEBwYXJhbSBj
eCBvZmZzZXQgaW5zaWRlIG9iamVjdCB0aGF0IGRlZmluZXMgem9vbSBjZW50ZXIuIDAgaXMgbGVm
dCBzaWRlCisgKiBAcGFyYW0gY3kgb2Zmc2V0IGluc2lkZSBvYmplY3QgdGhhdCBkZWZpbmVzIHpv
b20gY2VudGVyLiAwIGlzIHRvcCBzaWRlCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBhbmlt
YXRpb24gd2lsbCBiZSBzdGFydGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdAotICogICAgICAgICAg
ICBiZWNhdXNlIHpvb20gaXMgdG9vIHNtYWxsL2JpZy4KKyAqICAgICAgICAgICAgYmVjYXVzZSB6
b29tIGlzIHRvbyBzbWFsbC9iaWcKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9u
LCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKIAogLyoqCi0gKiBRdWVyeSBpZiB6b29t
IGxldmVsIGp1c3QgYXBwbGllcyB0byB0ZXh0IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCisgKiBR
dWVyaWVzIGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQgb25seSBhbmQgbm90IG90
aGVyIGVsZW1lbnRzLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gcXVlcnkgc2V0dGluZy4KKyAq
IEBwYXJhbSBvIHZpZXcgdG8gcXVlcnkgem9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5CiAgKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYganVzdCB0ZXh0IGFyZSBzY2FsZWQsIEBjIEVJTkFfRkFM
U0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSBsZXZlbCBpcyBh
cHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQog
ICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX3RleHRfb25seV9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIFNldCBpZiB6b29tIGxldmVsIGp1c3QgYXBwbGll
cyB0byB0ZXh0IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCisgKiBTZXRzIGlmIHpvb20gbGV2ZWwg
anVzdCBhcHBsaWVzIHRvIHRleHQgb25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgogICoKLSAq
IEBwYXJhbSBvIHZpZXcgdG8gY2hhbmdlIHNldHRpbmcuCi0gKiBAcGFyYW0gc2V0dGluZyBAYyBF
SU5BX1RSVUUgaWYgem9vbSBzaG91bGQganVzdCBiZSBhcHBsaWVkIHRvIHRleHQuCisgKiBAcGFy
YW0gbyB2aWV3IHRvIGFwcGx5IHpvb20gbGV2ZWwgZm9yIHRleHQgb25seQorICogQHBhcmFtIHNl
dHRpbmcgQGMgRUlOQV9UUlVFIGlmIHpvb20gbGV2ZWwgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGV4
dCBvbmx5LCBAYyBFSU5BX0ZBTFNFIGlmIG5vdAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCBzZXR0aW5nKTsKIAogLyoqCi0gKiBIaW50IGVuZ2luZSB0byBwcmUtcmVuZGVyIHJl
Z2lvbi4KKyAqIEFza3MgZW5naW5lIHRvIHByZS1yZW5kZXIgcmVnaW9uLgogICoKICAqIEVuZ2lu
ZXMgYW5kIGJhY2tpbmcgc3RvcmUgbWlnaHQgYmUgYWJsZSB0byBwcmUtcmVuZGVyIHJlZ2lvbnMg
aW4KICAqIG9yZGVyIHRvIHNwZWVkIHVwIHpvb21pbmcgb3Igc2Nyb2xsaW5nIHRvIHRoYXQgcmVn
aW9uLiBOb3QgYWxsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104501</attachid>
            <date>2011-08-19 06:18:54 -0700</date>
            <delta_ts>2011-08-20 22:27:54 -0700</delta_ts>
            <desc>patch  #4 (changes in ewk_view.h) - API descriptions part2</desc>
            <filename>ewk_view_h_API_doc_2.patch</filename>
            <type>text/plain</type>
            <size>46091</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA0MzgyNjI1Li44MzcxYmY1IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMTkgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdl
biBkb2N1bWVudGF0aW9uIGZvciBld2tfdmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKworICAgICAgICBGaXhlcyBk
ZXNjcmlwdGlvbiBvZiBtZXRob2QsIHBhcmFtZXRlcnMgYW5kIHJldHVybmVkIHZhbHVlIG9mIEFQ
SQorICAgICAgICByZWxhdGVkIHRvIHNldHRpbmdzLgorCiAyMDExLTA4LTE3ICBBZGFtIFJvYmVu
ICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdlYkNvcmUga2VlcCB0cmFjayBv
ZiB0aGUgY3VycmVudCBkZXZpY2Ugc2NhbGUgZmFjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
CmluZGV4IGIyZDk0ZWQuLjVmMWUxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCkBAIC0x
MDk0LDU5NiArMTA5NCwxMDI2IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fdGV4
dF9vbmx5X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpCiAgKiBNdWx0aXBs
ZSByZXF1ZXN0cyBtaWdodCBiZSBxdWV1ZWQgYnkgZW5naW5lcy4gT25lIGNhbiBjbGVhci9mb3Jn
ZXQKICAqIGFib3V0IHRoZW0gd2l0aCBld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbCgpLgogICoK
LSAqIEBwYXJhbSBvIHZpZXcgdG8gYXNrIHByZS1yZW5kZXIgb2YgZ2l2ZW4gcmVnaW9uLgotICog
QHBhcmFtIHggYWJzb2x1dGUgY29vcmRpbmF0ZSAoMD1sZWZ0KSB0byBwcmUtcmVuZGVyIGF0IHpv
b20uCi0gKiBAcGFyYW0geSBhYnNvbHV0ZSBjb29yZGluYXRlICgwPXRvcCkgdG8gcHJlLXJlbmRl
ciBhdCB6b29tLgotICogQHBhcmFtIHcgd2lkdGggdG8gcHJlLXJlbmRlciBzdGFydGluZyBmcm9t
IEBhIHggYXQgem9vbS4KLSAqIEBwYXJhbSBoIGhlaWdodCB0byBwcmUtcmVuZGVyIHN0YXJ0aW5n
IGZyb20gQGEgeSBhdCB6b29tLgotICogQHBhcmFtIHpvb20gZGVzaXJlZCB6b29tLgorICogQHBh
cmFtIG8gdmlldyB0byBhc2sgcHJlLXJlbmRlciBvZiBnaXZlbiByZWdpb24KKyAqIEBwYXJhbSB4
IGFic29sdXRlIGNvb3JkaW5hdGUgKDA9bGVmdCkgdG8gcHJlLXJlbmRlciBhdCB6b29tCisgKiBA
cGFyYW0geSBhYnNvbHV0ZSBjb29yZGluYXRlICgwPXRvcCkgdG8gcHJlLXJlbmRlciBhdCB6b29t
CisgKiBAcGFyYW0gdyB3aWR0aCB0byBwcmUtcmVuZGVyIHN0YXJ0aW5nIGZyb20gQGEgeCBhdCB6
b29tCisgKiBAcGFyYW0gaCBoZWlnaHQgdG8gcHJlLXJlbmRlciBzdGFydGluZyBmcm9tIEBhIHkg
YXQgem9vbQorICogQHBhcmFtIHpvb20gZGVzaXJlZCB6b29tCiAgKgogICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgcmVxdWVzdCB3YXMgYWNjZXB0ZWQsIEBjIEVJTkFfRkFMU0UKLSAqICAgICAg
ICAgb3RoZXJ3aXNlIChlcnJvcnMsIHByZS1yZW5kZXIgbm90IHN1cHBvcnRlZCwgZXRjKS4KKyAq
ICAgICAgICAgb3RoZXJ3aXNlIChlcnJvcnMsIHByZS1yZW5kZXIgZmVhdHVyZSBub3Qgc3VwcG9y
dGVkLCBldGMpCiAgKgogICogQHNlZSBld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbCgpCiAgKi8K
IEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0
ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3Jk
IGgsIGZsb2F0IHpvb20pOwogCiAvKioKLSAqIEhpbnQgZW5naW5lIHRvIHByZS1yZW5kZXIgcmVn
aW9uLCBnaXZlbiBuIGV4dHJhIGNvbHMvcm93cworICogQXNrcyBlbmdpbmUgdG8gcHJlLXJlbmRl
ciByZWdpb24sIGdpdmVuIEBhIG4gZXh0cmEgY29scy9yb3dzLgogICoKICAqIFRoaXMgaXMgYW4g
YWx0ZXJuYXRpdmUgbWV0aG9kIHRvIGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKCkuIEl0IGRv
ZXMgbm90CiAgKiBtYWtlIHNlbnNlIGluIGFsbCBlbmdpbmVzIGFuZCB0aGVyZWZvcmUgaXQgbWln
aHQgbm90IGJlIGltcGxlbWVudGVkIGF0IGFsbC4KICAqCiAgKiBJdCdzIG9ubHkgdXNlZnVsIGlm
IGVuZ2luZSBkaXZpZGUgdGhlIGFyZWEgYmVpbmcgcmVuZGVyZWQgaW4gc21hbGxlciB0aWxlcywK
LSAqIGZvcm1pbmcgYSBncmlkLiBUaGVuLCBicm93c2VyIGNvdWxkIGNhbGwgdGhpcyBmdW5jdGlv
biB0byBwcmUtcmVuZGVyIEBwYXJhbSBuCisgKiBmb3JtaW5nIGEgZ3JpZC4gVGhlbiwgYnJvd3Nl
ciBjb3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gcHJlLXJlbmRlciBAYSBuCiAgKiByb3dzL2Nv
bHMgaW52b2x2aW5nIHRoZSBjdXJyZW50IHZpZXdwb3J0LgogICoKLSAqIEBwYXJhbSBvIHZpZXcg
dG8gYXNrIHByZS1yZW5kZXIgb24uCisgKiBAcGFyYW0gbyB2aWV3IHRvIGFzayBwcmUtcmVuZGVy
CiAgKiBAcGFyYW0gbiBudW1iZXIgb2YgY29scy9yb3dzIHRoYXQgbXVzdCBiZSBwYXJ0IG9mIHRo
ZSByZWdpb24gcHJlLXJlbmRlcmVkCiAgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcmVx
dWVzdCB3YXMgYWNjZXB0ZWQsIEBjIEVJTkFfRkFMU0UKKyAqICAgICAgICAgb3RoZXJ3aXNlIChl
cnJvcnMsIHByZS1yZW5kZXIgZmVhdHVyZSBub3Qgc3VwcG9ydGVkLCBldGMpCisgKgogICogQHNl
ZSBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbigpCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25l
ZCBpbnQgbik7CiAKIC8qKgotICogQ2FuY2VsIChjbGVhcikgcHJldmlvdXMgcHJlLXJlbmRlciBy
ZXF1ZXN0cy4KKyAqIENhbmNlbHMgYW5kIGNsZWFycyBwcmV2aW91cyB0aGUgcHJlLXJlbmRlciBy
ZXF1ZXN0cy4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IHRvIGNsZWFyIHByZS1yZW5kZXIgcmVxdWVz
dHMuCisgKiBAcGFyYW0gbyB2aWV3IHRvIGNsZWFyIHByZS1yZW5kZXIgcmVxdWVzdHMKICAqLwog
RUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3Qg
Km8pOwogCiAvKioKLSAgKiBFbmFibGUgcHJvY2Vzc2luZyBvZiB1cGRhdGUgcmVxdWVzdHMuCi0g
ICoKLSAgKiBAcGFyYW0gbyB2aWV3IHRvIGVuYWJsZSByZW5kZXJpbmcuCi0gICoKLSAgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiByZW5kZXIgd2FzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UKLSAg
ICAgICAgICAgIG90aGVyd2lzZSAoZXJyb3JzLCByZW5kZXJpbmcgc3VzcGVuc2lvbiBub3Qgc3Vw
cG9ydGVkKS4KLSAgKi8KKyAqIEVuYWJsZXMgKHJlc3VtZXMpIHJlbmRlcmluZy4KKyAqCisgKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBlbmFibGUgcmVuZGVyaW5nCisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgcmVuZGVyaW5nIHdhcyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFCisgKiAg
ICAgICAgIG90aGVyd2lzZSAoZXJyb3JzLCByZW5kZXJpbmcgc3VzcGVuc2lvbiBmZWF0dXJlIG5v
dCBzdXBwb3J0ZWQpCisgKgorICogQHNlZSBld2tfdmlld19kaXNhYmxlX3JlbmRlcigpCisgKi8K
IEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2VuYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwogCiAvKioKLSAgKiBEaXNhYmxlIHByb2Nlc3Npbmcgb2YgdXBkYXRlIHJlcXVlc3Rz
LgorICAqIERpc2FibGVzIChzdXNwZW5kcykgcmVuZGVyaW5nLgogICAqCi0gICogQHBhcmFtIG8g
dmlldyB0byBkaXNhYmxlIHJlbmRlcmluZy4KKyAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBk
aXNhYmxlIHJlbmRlcmluZwogICAqCi0gICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcmVuZGVy
IHdhcyBkaXNhYmxlZCwgQGMgRUlOQV9GQUxTRQotICAgICAgICAgICAgb3RoZXJ3aXNlIChlcnJv
cnMsIHJlbmRlcmluZyBzdXNwZW5zaW9uIG5vdCBzdXBwb3J0ZWQpLgorICAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIHJlbmRlcmluZyB3YXMgZGlzYWJsZWQsIEBjIEVJTkFfRkFMU0UKKyAgKiAg
ICAgICAgIG90aGVyd2lzZSAoZXJyb3JzLCByZW5kZXJpbmcgc3VzcGVuc2lvbiBub3Qgc3VwcG9y
dGVkKQogICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfZGlzYWJsZV9yZW5kZXIoY29u
c3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIEdldCBpbnB1dCBtZXRob2QgaGludHMKKyAq
IEdldHMgdGhlIGlucHV0IG1ldGhvZCBoaW50cy4KICAqCi0gKiBAcGFyYW0gbyBWaWV3LgorICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBpbnB1dCBtZXRob2QgaGludHMKICAqCi0g
KiBAcmV0dXJuIGlucHV0IG1ldGhvZCBoaW50cworICogQHNlZSBFd2tfSW1oCisgKgorICogQHJl
dHVybiB0aGUgaW5wdXQgbWV0aG9kIGhpbnRzIGFzIEBhIEV3a19JbWggYml0cy1maWVsZAogICov
CiBFQVBJIHVuc2lnbmVkIGludCBld2tfdmlld19pbWhfZ2V0KEV2YXNfT2JqZWN0ICpvKTsKIAot
Lyogc2V0dGluZ3MgKi8KKy8qKgorICogR2V0cyB0aGUgdXNlciBhZ2VudCBzdHJpbmcuCisgKgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSB1c2VyIGFnZW50IHN0cmluZworICoK
KyAqIEByZXR1cm4gdGhlIHVzZXIgYWdlbnQgc3RyaW5nCisgKi8KIEVBUEkgY29uc3QgY2hhciAg
KmV3a192aWV3X3NldHRpbmdfdXNlcl9hZ2VudF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwor
CisvKioKKyAqIFNldHMgdGhlIHVzZXIgYWdlbnQgc3RyaW5nLgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIHNldCB0aGUgdXNlciBhZ2VudCBzdHJpbmcKKyAqCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCiBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBjaGFyICp1c2VyX2FnZW50KTsKIAorLyoqCisgKiBRdWVyaWVzIGlmIHRo
ZSBpbWFnZXMgYXJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LgorICoKKyAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBpbWFnZXMgYXJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Cisg
KgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGltYWdlcyBhcmUgbG9hZGVkIGF1dG9t
YXRpY2FsbHksCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUK
KyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2Vz
X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogRW5hYmxlcy9kaXNhYmxlcyBh
dXRvIGxvYWRpbmcgb2YgdGhlIGltYWdlcy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBzZXQgYXV0byBsb2FkaW5nIG9mIHRoZSBpbWFnZXMKKyAqIEBwYXJhbSBhdXRvbWF0aWMgQGMg
RUlOQV9UUlVFIHRvIGVuYWJsZSBhdXRvIGxvYWRpbmcgb2YgdGhlIGltYWdlcywKKyAqICAgICAg
ICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCiBFQVBJIEVpbmFfQm9v
bCAgICBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgYXV0b21hdGljKTsKIAorLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBpbWFnZXMg
YXJlIHNocmlua2VkIGF1dG9tYXRpY2FsbHkKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBxdWVyeSBpZiB0aGUgaW1hZ2VzIGFyZSBzaHJpbmtlZCBhdXRvbWF0aWNhbGx5CisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGltYWdlcyBhcmUgc2hyaW5rZWQgYXV0b21hdGlj
YWxseSwKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICov
CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIEVuYWJsZXMvZGlzYWJsZXMgYXV0
byBzaHJpbmtpbmcgb2YgdGhlIGltYWdlcy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBzZXQgYXV0byBzaHJpbmtpbmcgb2YgdGhlIGltYWdlcworICogQHBhcmFtIGF1dG9tYXRpYyBA
YyBFSU5BX1RSVUUgdG8gZW5hYmxlIGF1dG8gc2hyaW5raW5nIG9mIHRoZSBpbWFnZXMsCisgKiAg
ICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hdGljKTsKIAogLyoqCi0gKiBHZXRzIGlmIHZpZXcgY2Fu
IGJlIHJlc2l6ZWQgYXV0b21hdGljYWxseS4KKyAqIFF1ZXJpZXMgaWYgdGhlIHZpZXcgY2FuIGJl
IHJlc2l6ZWQgYXV0b21hdGljYWxseS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IHRvIGNoZWNrIHN0
YXR1cworICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIHZpZXcgY2FuIGJl
IHJlc2l6ZWQgYXV0b21hdGljYWxseQogICoKLSAqIEByZXR1cm4gRUlOQV9UUlVFIGlmIHZpZXcg
Y2FuIGJlIHJlc2l6ZWQsIEVJTkFfRkFMU0UKLSAqICAgICAgICAgb3RoZXJ3aXNlIChlcnJvcnMs
IGNhbm5vdCBiZSByZXNpemVkKS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHZpZXcgY2Fu
IGJlIHJlc2l6ZWQgYXV0b21hdGljYWxseSwKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBu
b3Qgb3Igb24gZmFpbHVyZQogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAog
LyoqCi0gKiBTZXRzIGlmIHZpZXcgY2FuIGJlIHJlc2l6ZWQgYXV0b21hdGljYWxseS4KKyAqIEVu
YWJsZXMvZGlzYWJsZXMgaWYgdGhlIHZpZXcgY2FuIGJlIHJlc2l6ZWQgYXV0b21hdGljYWxseS4K
ICAqCi0gKiBAcGFyYW0gbyBWaWV3LgotICogQHBhcmFtIHJlc2l6YWJsZSBAYyBFSU5BX1RSVUUg
aWYgd2Ugd2FudCB0byByZXNpemUgYXV0b21hdGljYWxseTsKLSAqIEBjIEVJTkFfRkFMU0Ugb3Ro
ZXJ3aXNlLiBJdCBkZWZhdWx0cyB0byBAYyBFSU5BX1RSVUUKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIHNldCBpZiB0aGUgdmlldyBjYW4gYmUgcmVzaXplZCBhdXRvbWF0aWNhbGx5CisgKiBA
cGFyYW0gcmVzaXphYmxlIEBjIEVJTkFfVFJVRSBpZiB2aWV3IGNhbiBiZSByZXNpemFibGUgYXV0
b21hdGljYWxseSwKKyAqICAgICAgICBAYyBFSU5BX1RSVUUgaWYgbm90CiAgKgotICogQHJldHVy
biBFSU5BX1RSVUUgaWYgYXV0b19yZXNpemVfd2luZG93IHN0YXR1cyBzZXQsIEVJTkFfRkFMU0UK
LSAqICAgICAgICAgb3RoZXJ3aXNlIChlcnJvcnMpLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwogRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIHJlc2l6YWJsZSk7CisKKy8qKgorICogUXVlcmllcyBpZiB0
aGUgc2NyaXB0cyBjYW4gYmUgZXhlY3V0ZWQuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gcXVlcnkgaWYgdGhlIHNjcmlwdHMgY2FuIGJlIGV4ZWN1dGVkCisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgdGhlIHNjcmlwdHMgY2FuIGJlIGV4ZWN1dGVkCisgKiAgICAgICAgIEBj
IEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OworCisvKioKKyAqIEVuYWJsZXMvZGlzYWJsZXMgc2NyaXB0cyBleGVjdXRpbmcuCisgKgorICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHNjcmlwdCBleGVjdXRpbmcKKyAqIEBwYXJhbSBl
bmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSBzY3JpcHRzIGV4ZWN1dGluZworICogICAgICAg
IEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgZW5hYmxlKTsKIAorLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBwbHVnLWlucyBhcmUg
ZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiB0aGUgcGx1
Zy1pbnMgYXJlIGVuYWJsZWQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgcGx1
Z2lucyBhcmUgZW5hYmxlZAorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBm
YWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3Bs
dWdpbnNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBFbmFibGVzL2Rpc2Fi
bGVzIHRoZSBwbHVnLWlucy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhl
IHBsdWctaW5zCisgKiBAcGFyYW0gZW5hYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIHBs
dWctaW5zCisgKiAgICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCisgKgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAq
LwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogCiAvKioKLSAqIEdldCBzdGF0dXMg
b2YgZnJhbWUgZmxhdHRlbmluZy4KKyAqIFF1ZXJpZXMgaWYgdGhlIGZyYW1lIGZsYXR0ZW5pbmcg
ZmVhdHVyZSBpcyBlbmFibGVkLgogICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gY2hlY2sgc3RhdHVz
CisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiB0aGUgZnJhbWUgZmxhdHRlbmlu
ZyBmZWF0dXJlIGlzIGVuYWJsZWQKICAqCi0gKiBAcmV0dXJuIEVJTkFfVFJVRSBpZiBmbGF0dGVu
aW5nIGlzIGVuYWJsZWQsIEVJTkFfRkFMU0UKLSAqICAgICAgICAgb3RoZXJ3aXNlIChlcnJvcnMs
IGZsYXR0ZW5pbmcgZGlzYWJsZWQpLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGZy
YW1lIGZsYXR0ZW5pbmcgZmVhdHVyZSBpcyBlbmFibGVkLAorICogICAgICAgICBAYyBFSU5BX0ZB
TFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBv
KTsKIAogLyoqCi0gKiBTZXQgZnJhbWUgZmxhdHRlbmluZy4KKyAqIEVuYWJsZXMvZGlzYWJsZXMg
dGhlIGZyYW1lIGZsYXR0ZW5pbmcgZmVhdHVyZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3IHRvIHNl
dCBmbGF0dGVuaW5nCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGZyYW1lIGZs
YXR0ZW5pbmcgZmVhdHVyZQorICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxl
IHRoZSBmcmFtZSBmbGF0dGVuaW5nIGZlYXR1cmUKKyAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRv
IGRpc2FibGUKICAqCi0gKiBAcmV0dXJuIEVJTkFfVFJVRSBpZiBmbGF0dGVuaW5nIHN0YXR1cyBz
ZXQsIEVJTkFfRkFMU0UKLSAqICAgICAgICAgb3RoZXJ3aXNlIChlcnJvcnMpLgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAq
LwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRl
bmluZ19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpOwogCisvKioKKyAqIFF1
ZXJpZXMgaWYgdGhlIHNjcmlwdHMgY2FuIG9wZW4gdGhlIG5ldyB3aW5kb3dzLgorICoKKyAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBzY3JpcHRzIGNhbiBvcGVuIHRoZSBu
ZXcgd2luZG93cworICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBzY3JpcHRzIGNh
biBvcGVuIHRoZSBuZXcgd2luZG93cworICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBv
ciBvbiBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfc2Ny
aXB0c193aW5kb3dfb3Blbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIEVu
YWJsZXMvZGlzYWJsZXMgaWYgdGhlIHNjcmlwdHMgY2FuIG9wZW4gdGhlIG5ldyB3aW5kb3dzLgor
ICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBpZiB0aGUgc2NyaXB0cyBjYW4gb3Bl
biB0aGUgbmV3IHdpbmRvd3MKKyAqIEBwYXJhbSBhbGxvdyBAYyBFSU5BX1RSVUUgaWYgdGhlIHNj
cmlwdHMgY2FuIG9wZW4gdGhlIG5ldyB3aW5kb3dzCisgKiAgICAgICAgQGMgRUlOQV9GQUxTRSBp
ZiBub3QKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFf
RkFMU0Ugb24gZmFpbHVyZSAoc2NyaXB0cyBhcmUgZGlzYWJsZWQpCisgKgorICogQHNlZSBld2tf
dmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX3NldAorICovCiBFQVBJIEVpbmFfQm9vbCAgICBl
d2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgYWxsb3cpOwogCisvKioKKyAqIFF1ZXJpZXMgaWYgSFRNTCBlbGVtZW50cyBAYyB0
ZXh0YXJlYSBjYW4gYmUgcmVzaXphYmxlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHF1ZXJ5IGlmIHRoZSB0ZXh0YXJlYSBlbGVtZW50cyBjYW4gYmUgcmVzaXphYmxlCisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIHRleHRhcmVhIGVsZW1lbnRzIGNhbiBiZSByZXNp
emFibGUKKyAqICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICov
CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBFbmFibGVzL2Rpc2FibGVzIGlm
IEhUTUwgZWxlbWVudHMgQGMgdGV4dGFyZWEgY2FuIGJlIHJlc2l6YWJsZS4KKyAqCisgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBzZXQgaWYgdGhlIHRleHRhcmVhIGVsZW1lbnRzIGNhbiBiZSBy
ZXNpemFibGUKKyAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIGlmIHRoZSB0ZXh0YXJlYSBl
bGVtZW50cyBjYW4gYmUgcmVzaXphYmxlCisgKiAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3QK
KyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ug
b24gZmFpbHVyZQorICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3Jlc2l6
YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKIAor
LyoqCisgKiBHZXRzIHRoZSB1c2VyIHN0eWxlIHNoZWV0LgorICoKKyAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIGdldCB0aGUgdXNlciBzdHlsZSBzaGVldAorICoKKyAqIEByZXR1cm4gdGhlIHVz
ZXIgc3R5bGUgc2hlZXQKKyAqLwogRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ191
c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTZXRz
IHRoZSB1c2VyIHN0eWxlIHNoZWV0LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNl
dCB0aGUgdXNlciBzdHlsZSBzaGVldAorICogQHBhcmFtIHVyaSB1bmlmb3JtIHJlc291cmNlIGlk
ZW50aWZpZXIgdG8gdXNlciBzdHlsZSBzaGVldAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqdXJpKTsKIAorLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBwcml2YXRlIGJy
b3dzaW5nIGZlYXR1cmUgaXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBxdWVyeSBpZiB0aGUgcHJpdmF0ZSBicm93c2luZyBmZWF0dXJlIGlzIGVuYWJsZWQKKyAqCisg
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgcHJpdmF0ZSBicm93c2luZyBmZWF0dXJlIGlz
IGVuYWJsZWQsIG9yCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1
cmUKKyAqCisgKiBAc2VlIGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19zZXQKKyAq
LwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogRW5hYmxlcy9kaXNhYmxlcyB0aGUg
cHJpdmF0ZSBicm93c2luZyBmZWF0dXJlLgorICoKKyAqIFdoZW4gdGhpcyBvcHRpb24gaXMgc2V0
LCBXZWJDb3JlIHdpbGwgYXZvaWQgc3RvcmluZyBhbnkgcmVjb3JkIG9mIGJyb3dzaW5nCisgKiBh
Y3Rpdml0eSAgdGhhdCBtYXkgcGVyc2lzdCBvbiBkaXNrIG9yIHJlbWFpbiBkaXNwbGF5ZWQgd2hl
biB0aGUKKyAqIG9wdGlvbiBpcyByZXNldC4KKyAqCisgKiBUaGlzIG9wdGlvbiBkb2VzIG5vdCBh
ZmZlY3QgdGhlIHN0b3JhZ2Ugb2Ygc3VjaCBpbmZvcm1hdGlvbiBpbiBSQU0uCisgKgorICogVGhl
IGZvbGxvd2luZyBmdW5jdGlvbnMgcmVzcGVjdCB0aGlzIHNldHRpbmc6CisgKiAgLSBIVE1MNS9E
T00gU3RvcmFnZQorICogIC0gSWNvbiBEYXRhYmFzZQorICogIC0gQ29uc29sZSBNZXNzYWdlcwor
ICogIC0gTWVtb3J5Q2FjaGUKKyAqICAtIEFwcGxpY2F0aW9uIENhY2hlCisgKiAgLSBCYWNrL0Zv
cndhcmQgUGFnZSBIaXN0b3J5CisgKiAgLSBQYWdlIFNlYXJjaCBSZXN1bHRzCisgKiAgLSBIVFRQ
IENvb2tpZXMKKyAqICAtIFBsdWctaW5zICh0aGF0IHN1cHBvcnQgTlBOVnByaXZhdGVNb2RlQm9v
bCkKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHByaXZhdGUgYnJvd3Np
bmcgZmVhdHVyZQorICogQHBhcmFtIGVuYWJsZSBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBw
cml2YXRlIGJyb3dzaW5nIGZlYXR1cmUKKyAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2Fi
bGUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFM
U0Ugb24gZmFpbHVyZQorICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3By
aXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKKwor
LyoqCisgKiBRdWVyaWVzIGlmIHRoZSBjYWNoZSBmb3Igb2ZmbGluZSBhcHBsaWNhdGlvbiBpcyBl
bmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBjYWNo
ZSBmb3Igb2ZmbGluZSBhcHBsaWNhdGlvbiBpcyBlbmFibGVkCisgKgorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgdGhlIGNhY2hlIGZvciBvZmZsaW5lIGFwcGxpY2F0aW9uIGlzIGVuYWJsZWQs
CisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKKyAqLwogRUFQ
SSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGNhY2hl
IGZvciBvZmZsaW5lIGFwcGxpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHNldCBpZiB0aGUgY2FjaGUgZm9yIG9mZmxpbmUgYXBwbGljYXRpb24KKyAqIEBwYXJhbSBlbmFi
bGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgY2FjaGUgZm9yIG9mZmxpbmUgYXBwbGljYXRp
b24KKyAqICAgICAgICBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKKyAqCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCiBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7CiAKKy8qKgorICogUXVlcmllcyBpZiB0
aGUgY2FyZXQgYnJvd3NpbmcgZmVhdHVyZSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHRoZSBjYXJldCBicm93c2luZyBmZWF0dXJlIGlzIGVuYWJs
ZWQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgY2FyZXQgYnJvd3NpbmcgZmVh
dHVyZSBpcyBlbmFibGVkLAorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBm
YWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJv
d3NpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBFbmFibGVzL2Rpc2Fi
bGVzIHRoZSBjYXJldCBicm93c2luZyBmZWF0dXJlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIHNldCBjYXJldCBicm93c2luZyBmZWF0dXJlCisgKiBAcGFyYW0gZW5hYmxlIEBjIEVJ
TkFfVFJVRSB0byBlbmFibGUgdGhlIGNhcmV0IGJyb3dzaW5nIGZlYXR1cmUKKyAqICAgICAgICBA
YyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCiBFQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIGVuYWJsZSk7CiAKIC8qKgotICogR2V0IGN1cnJlbnQgZW5jb2Rpbmcgb2YgdGhpcyBW
aWV3LgorICogR2V0cyB0aGUgY3VycmVudCBlbmNvZGluZy4KICAqCi0gKiBAcGFyYW0gbyBWaWV3
LgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBjdXJyZW50IGVuY29kaW5nCiAg
KgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gYW4gZWluYV9zdHJpbnNoYXJlIGNvbnRhaW5pbmcg
dGhlIGN1cnJlbnQgY3VzdG9tCi0gKiBlbmNvZGluZyBmb3IgVmlldyBvYmplY3QgQHBhcmFtIG8s
IG9yIEBjIDAgaWYgaXQncyBub3Qgc2V0LgorICogQHJldHVybiBAYyBlaW5hX3N0cmluc2hhcmUg
Y29udGFpbmluZyB0aGUgY3VycmVudCBlbmNvZGluZywgb3IKKyAqICAgICAgICAgQGMgMCBpZiBp
dCdzIG5vdCBzZXQKICAqLwogRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19lbmNv
ZGluZ19jdXN0b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBTZXQgZW5j
b2Rpbmcgb2YgdGhpcyBWaWV3IGFuZCByZWxvYWQgcGFnZS4KKyAqIFNldHMgdGhlIGVuY29kaW5n
IGFuZCByZWxvYWRzIHRoZSBwYWdlLgogICoKLSAqIEBwYXJhbSBvIFZpZXcuCi0gKiBAcGFyYW0g
ZW5jb2RpbmcgVGhlIG5ldyBlbmNvZGluZyBvciBAYyAwIHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQg
ZW5jb2RpbmcuCisgKiBAcGFyYW0gbyB2aWV3IHRvIHNldCB0aGUgZW5jb2RpbmcKKyAqIEBwYXJh
bSBlbmNvZGluZyB0aGUgbmV3IGVuY29kaW5nIHRvIHNldCBvciBAYyAwIHRvIHJlc3RvcmUgdGhl
IGRlZmF1bHQgb25lCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAq
ZW5jb2RpbmcpOworCisvKioKKyAqIEdldHMgdGhlIGRlZmF1bHQgZW5jb2RpbmcuCisgKgorICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBkZWZhdWx0IGVuY29kaW5nCisgKgorICog
QHJldHVybiBAYyBlaW5hX3N0cmluc2hhcmUgY29udGFpbmluZyB0aGUgZGVmYXVsdCBlbmNvZGlu
Zywgb3IKKyAqICAgICAgICAgQGMgMCBpZiBpdCdzIG5vdCBzZXQKKyAqLwogRUFQSSBjb25zdCBj
aGFyICAqZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X2dldChjb25zdCBFdmFzX09i
amVjdCAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgZGVmYXVsdCBlbmNvZGluZy4KKyAqCisgKiBA
cGFyYW0gbyB2aWV3IHRvIHNldCB0aGUgZGVmYXVsdCBlbmNvZGluZworICogQHBhcmFtIGVuY29k
aW5nIHRoZSBuZXcgZW5jb2RpbmcgdG8gc2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCiBFQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICplbmNvZGluZyk7CiAKKy8qKgorICogR2V0cyB0aGUgbWluaW11bSBmb250IHNp
emUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBtaW5pbXVtIGZvbnQg
c2l6ZQorICoKKyAqIEByZXR1cm4gdGhlIG1pbmltdW0gZm9udCBzaXplLCBvciBAYyAwIG9uIGZh
aWx1cmUKKyAqLwogRUFQSSBpbnQgICAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmlt
dW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIFNldHMgdGhlIG1p
bmltdW0gZm9udCBzaXplLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUg
bWluaW11bSBmb250IHNpemUKKyAqIEBwYXJhbSBzaXplIGEgbmV3IG1pbmltdW0gZm9udCBzaXpl
IHRvIHNldAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKTsKKworLyoqCisg
KiBHZXRzIHRoZSBtaW5pbXVtIGxvZ2ljYWwgZm9udCBzaXplLgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIGdldCB0aGUgbWluaW11bSBsb2dpY2FsIGZvbnQgc2l6ZQorICoKKyAqIEBy
ZXR1cm4gdGhlIG1pbmltdW0gbG9naWNhbCBmb250IHNpemUsIG9yIEBjIDAgb24gZmFpbHVyZQor
ICovCiBFQVBJIGludCAgICAgICAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dp
Y2FsX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBt
aW5pbXVtIGxvZ2ljYWwgZm9udCBzaXplLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHNldCB0aGUgbWluaW11bSBmb250IHNpemUKKyAqIEBwYXJhbSBzaXplIGEgbmV3IG1pbmltdW0g
bG9naWNhbCBmb250IHNpemUgdG8gc2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCiBFQVBJIEVpbmFfQm9vbCAgICBl
d2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3NpemVfc2V0KEV2YXNfT2JqZWN0
ICpvLCBpbnQgc2l6ZSk7CisKKy8qKgorICogR2V0cyB0aGUgZGVmYXVsdCBmb250IHNpemUuCisg
KgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBkZWZhdWx0IGZvbnQgc2l6ZQor
ICoKKyAqIEByZXR1cm4gdGhlIGRlZmF1bHQgZm9udCBzaXplLCBvciBAYyAwIG9uIGZhaWx1cmUK
KyAqLwogRUFQSSBpbnQgICAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIFNldHMgdGhlIGRlZmF1bHQg
Zm9udCBzaXplLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZGVmYXVs
dCBmb250IHNpemUKKyAqIEBwYXJhbSBzaXplIGEgbmV3IGRlZmF1bHQgZm9udCBzaXplIHRvIHNl
dAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X2Rl
ZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKTsKKworLyoqCisgKiBHZXRz
IHRoZSBNb25vc3BhY2UgZm9udCBzaXplLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IGdldCB0aGUgTW9ub3NwYWNlIGZvbnQgc2l6ZQorICoKKyAqIEByZXR1cm4gdGhlIE1vbm9zcGFj
ZSBmb250IHNpemUsIG9yIEBjIDAgb24gZmFpbHVyZQorICovCiBFQVBJIGludCAgICAgICAgICBl
d2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBNb25vc3BhY2UgZm9udCBzaXplLgorICoKKyAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgTW9ub3NwYWNlIGZvbnQgc2l6ZQorICogQHBh
cmFtIHNpemUgYSBuZXcgTW9ub3NwYWNlIGZvbnQgc2l6ZSB0byBzZXQKKyAqCisgKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQo
RXZhc19PYmplY3QgKm8sIGludCBzaXplKTsKIAorLyoqCisgKiBHZXRzIHRoZSBmb250IHN0YW5k
YXJkIGZhbWlseS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGZvbnQg
c3RhbmRhcmQgZmFtaWx5CisgKgorICogQHJldHVybiB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkg
b24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBjb25zdCBjaGFyICAqZXdr
X3ZpZXdfc2V0dGluZ19mb250X3N0YW5kYXJkX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisK
Ky8qKgorICogU2V0cyB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkuCisgKgorICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gc2V0IHRoZSBmb250IHN0YW5kYXJkIGZhbWlseQorICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisg
Ki8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zdGFuZGFyZF9zZXQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7CiAKKy8qKgorICogR2V0cyB0aGUg
Zm9udCBjdXJzaXZlIGZhbWlseS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQg
dGhlIGZvbnQgY3Vyc2l2ZSBmYW1pbHkKKyAqCisgKiBAcmV0dXJuIHRoZSBmb250IGN1cnNpdmUg
ZmFtaWx5IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCisgKi8KIEVBUEkgY29uc3QgY2hh
ciAgKmV3a192aWV3X3NldHRpbmdfZm9udF9jdXJzaXZlX2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7CisKKy8qKgorICogU2V0cyB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkuCisgKgorICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBmb250IHN0YW5kYXJkIGZhbWlseQorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWls
dXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9jdXJzaXZl
X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KTsKIAorLyoqCisgKiBHZXRz
IHRoZSBmb250IG1vbm9zcGFjZSBmYW1pbHkuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gZ2V0IHRoZSBmb250IG1vbm9zcGFjZSBmYW1pbHkKKyAqCisgKiBAcmV0dXJuIHRoZSBmb250
IG1vbm9zcGFjZSBmYW1pbHkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKKyAqLwogRUFQ
SSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIFNldHMgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWls
eS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGZvbnQgbW9ub3NwYWNl
IGZhbWlseQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlO
QV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRp
bmdfZm9udF9tb25vc3BhY2Vfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkp
OwogCisvKioKKyAqIEdldHMgdGhlIGZvbnQgZmFudGFzeSBmYW1pbHkuCisgKgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBmb250IGZhbnRhc3kgZmFtaWx5CisgKgorICogQHJl
dHVybiB0aGUgZm9udCBmYW50YXN5IGZhbWlseSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVy
ZQorICovCiBFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFzeV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIFNldHMgdGhlIGZvbnQgbW9ub3Nw
YWNlIGZhbWlseS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGZvbnQg
bW9ub3NwYWNlIGZhbWlseQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
b3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X3NldHRpbmdfZm9udF9mYW50YXN5X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAq
ZmFtaWx5KTsKIAorLyoqCisgKiBHZXRzIHRoZSBmb250IHNlcmlmIGZhbWlseS4KKyAqCisgKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGZvbnQgc2VyaWYgZmFtaWx5CisgKgorICog
QHJldHVybiB0aGUgZm9udCBzZXJpZiBmYW1pbHkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1
cmUKKyAqLwogRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19mb250X3NlcmlmX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgZm9udCBzZXJpZiBm
YW1pbHkuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBmb250IHNlcmlm
IGZhbWlseQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlO
QV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRp
bmdfZm9udF9zZXJpZl9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7CiAK
Ky8qKgorICogR2V0cyB0aGUgZm9udCBzYW5zIHNlcmlmIGZhbWlseS4KKyAqCisgKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGZvbnQgc2FucyBzZXJpZiBmYW1pbHkKKyAqCisgKiBA
cmV0dXJuIHRoZSBmb250IHNhbnMgc2VyaWYgZmFtaWx5IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBm
YWlsdXJlCisgKi8KIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZm9udF9zYW5z
X3NlcmlmX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgZm9u
dCBzYW5zIHNlcmlmIGZhbWlseS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQg
dGhlIGZvbnQgc2VyaWYgZmFtaWx5CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLwogRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25z
dCBjaGFyICpmYW1pbHkpOwogCiAvKioKLSAqIEdldHMgaWYgdGhlIHNwYXRpYWwgbmF2aWFndGlv
biBpcyBlbmFibGVkLgorICogUXVlcmllcyBpZiB0aGUgc3BhdGlhbCBuYXZpYWd0aW9uIGZlYXR1
cmUgaXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBxdWVyeSBpZiBz
cGF0aWFsIG5hdmlnYXRpb24gZmVhdHVyZSBpcyBlbmFibGVkCiAgKgotICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gZ2V0IHNwYXRpYWwgbmF2aWdhdGlvbiBzZXR0aW5nLgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgc3BhdGlhbCBuYXZpZ2F0aW9uIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFM
U0UgaWYgbm90IG9yIG9uIGVycm9ycy4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHNwYXRp
YWwgbmF2aWdhdGlvbiBpcyBlbmFibGVkLAorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5v
dCBvciBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdf
c3BhdGlhbF9uYXZpZ2F0aW9uX2dldChFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogU2V0cyB0
aGUgc3BhdGlhbCBuYXZpZ2F0aW9uLgorICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgc3BhdGlhbCBu
YXZpZ2F0aW9uIGZlYXR1cmUuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHNw
YXRpYWwgbmF2aWdhdGlvbiBzZXR0aW5nLgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcyBhbmQgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBzZXQgc3BhdGlhbCBuYXZpZ2F0aW9uIGZlYXR1cmUKKyAqIEBwYXJhbSBlbmFibGUgQGMg
RUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgc3BhdGlhbCBuYXZpZ2F0aW9uIGZlYXR1cmUsCisgKiAg
ICAgICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwogRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKIAogLyoqCi0gKiBHZXRzIGlmIHRoZSBsb2NhbCBz
dG9yYWdlIGlzIGVuYWJsZWQuCisgKiBRdWVyaWVzIGlmIHRoZSBsb2NhbCBzdG9yYWdlIGZlYXR1
cmUgb2YgSFRNTDUgaXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBx
dWVyeSBpZiB0aGUgbG9jYWwgc3RvcmFnZSBmZWF0dXJlIGlzIGVuYWJsZWQKICAqCi0gKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBnZXQgaWYgbG9jYWwgc3RvcmFnZSBpcyBlbmFibGVkLgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgbG9jYWwgc3RvcmFnZSBpcyBlbmFibGVkLCBAYyBFSU5B
X0ZBTFNFIGlmIG5vdCBvciBvbiBlcnJvcnMuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBs
b2NhbCBzdG9yYWdlIGlzIGVuYWJsZWQsCisgKiAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90
IG9yIG9uIGZhaWx1cmUKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19s
b2NhbF9zdG9yYWdlX2dldChFdmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogU2V0cyB0aGUgbG9j
YWwgc3RvcmFnZSBvZiBIVE1MNS4KKyAqIEVuYWJsZXMvZGlzYWJsZSB0aGUgbG9jYWwgc3RvcmFn
ZSBmZWF0dXJlIG9mIEhUTUw1LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBp
ZiBsb2NhbCBzdG9yYWdlIGlzIGVuYWJsZWQuCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIGFuZCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIHNldCBpZiBsb2NhbCBzdG9yYWdlIGlzIGVuYWJsZWQKKyAqIEBwYXJhbSBlbmFibGUg
QGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgbG9jYWwgc3RvcmFnZSBmZWF0dXJlLAorICogICAg
ICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCBlbmFibGUpOwogCiAvKioKLSAqIEdldHMgdGhlIGxvY2FsIHN0b3JhZ2UgZGF0
YWJhc2UgcGF0aC4KKyAqIEdldHMgdGhlIGRhdGFiYXNlIHBhdGggdG8gdGhlIGxvY2FsIHN0b3Jh
Z2UgZmVhdHVyZSBvZiBIVE1MNS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQg
dGhlIGRhdGFiYXNlIHBhdGggdG8gdGhlIGxvY2FsIHN0b3JhZ2UgZmVhdHVyZQogICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSBwYXRo
LgotICogQHJldHVybiB0aGUgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSBwYXRoLgorICogQHJldHVy
biBAYyBlaW5hX3N0cmluc2hhcmUgY29udGFpbmluZyB0aGUgZGF0YWJhc2UgcGF0aCB0byB0aGUg
bG9jYWwgc3RvcmFnZSBmZWF0dXJlLCBvcgorICogICAgICAgICBAYyAwIGlmIGl0J3Mgbm90IHNl
dAogICovCiBFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vf
ZGF0YWJhc2VfcGF0aF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIFNldHMg
dGhlIGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2UgcGF0aC4KKyAqIFNldHMgdGhlIGRhdGFiYXNlIHBh
dGggdG8gdGhlIGxvY2FsIHN0b3JhZ2UgZmVhdHVyZSBvZiBIVE1MNS4KKyAqCisgKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGRhdGFiYXNlIHBhdGggdG8gdGhlIGxvY2FsIHN0b3Jh
Z2UgZmVhdHVyZQorICogQHBhcmFtIHBhdGggYSBuZXcgZGF0YWJhc2UgcGF0aCB0byB0aGUgbG9j
YWwgc3RvcmFnZSBmZWF0dXJlCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRo
ZSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIHBhdGguCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIGFuZCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KIEVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRo
X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0aCk7CiAKIC8qKgotICogR2V0cyBp
ZiB0aGUgcGFnZSBjYWNoZSBpcyBlbmFibGVkLgorICogUXVlcmllcyBpZiB0aGUgcGFnZSBjYWNo
ZSBmZWF0dXJlIGlzIGVuYWJsZWQuCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0
IGlmIHBhZ2UgY2FjaGUgaXMgZW5hYmxlZC4KLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBh
Z2UgY2FjaGUgaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3QuCisgKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBxdWVyeSBpZiBwYWdlIGNhY2hlIGZlYXR1cmUgaXMgZW5hYmxlZAorICoK
KyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBhZ2UgY2FjaGUgaXMgZW5hYmxlZCwKKyAqICAg
ICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQogICovCiBFQVBJIEVpbmFf
Qm9vbCAgICBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KEV2YXNfT2JqZWN0ICpvKTsK
IAogLyoqCi0gKiBTZXRzIHRoZSBwYWdlIGNhY2hlLgorICogRW5hYmxlcy9kaXNhYmxlcyB0aGUg
cGFnZSBjYWNoZSBmZWF0dXJlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBw
YWdlIGNhY2hlIGZlYXR1cmUKKyAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJs
ZSB0aGUgcGFnZSBjYWNoZSBmZWF0dXJlLAorICogICAgICAgIEBjIEVJTkFfRkFMU0UgdG8gZGlz
YWJsZQogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBpZiBwYWdlIGNhY2hlIGlz
IGVuYWJsZWQuCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIGFuZCBAYyBFSU5B
X0ZBTFNFIG9uIGZhaWx1cmUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3Ig
QGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUp
OwogCiAvKioKLSAqIEdldHMgaWYgdGhlIGVuY29kaW5nIGRldGVjdG9yIGlzIGVuYWJsZWQuCisg
KiBRdWVyaWVzIGlmIHRoZSBlbmNvZGluZyBkZXRlY3RvciBpcyBlbmFibGVkLgogICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBpZiBlbmNvZGluZyBkZXRlY3RvciBpcyBlbmFibGVk
LgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgZW5jb2RpbmcgZGV0ZWN0b3IgaXMgZW5hYmxl
ZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZXJyb3JzLgorICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gcXVlcnkgaWYgdGhlIGVuY29kaW5nIGRldGVjdG9yIGlzIGVuYWJsZWQKKyAqCisg
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgZW5jb2RpbmcgZmVhdHVyZSBpcyBlbmFibGVk
LAorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCiAgKi8KIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3JfZ2V0KEV2
YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBTZXRzIHRoZSBlbmNvZGluZyBkZXRlY3Rvci4KKyAq
IEVuYWJsZXMvZGlzYWJsZXMgdGhlIGVuY29kaW5nIGRldGVjdG9yLgorICoKKyAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZW5jb2RpbmcgZGV0ZWN0b3IKKyAqIEBwYXJhbSBlbmFi
bGUgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgZW5jb2RpbmcgZGV0ZWN0b3IsCisgKiAgICAg
ICAgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCiAgKgotICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gc2V0IGlmIGVuY29kaW5nIGRldGVjdG9yIGlzIGVuYWJsZWQuCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzIGFuZCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAq
LwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZXRlY3Rvcl9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogCiAvKioKLSAqIFJldHVybnMg
d2hldGhlciBkZXZlbG9wZXIgZXh0ZW5zaW9ucyBhcmUgZW5hYmxlZCBmb3IgdGhlIGdpdmVuIHZp
ZXcuCisgKiBRdWVyaWVzIGlmIGRldmVsb3BlciBleHRlbnNpb25zIGFyZSBlbmFibGVkLgogICoK
ICAqIEN1cnJlbnRseSwgdGhpcyBpcyB1c2VkIHRvIGtub3cgd2hldGhlciB0aGUgV2ViIEluc3Bl
Y3RvciBpcyBlbmFibGVkIGZvciBhCiAgKiBnaXZlbiB2aWV3LgogICoKLSAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIGNoZWNrLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkgaWYg
ZGV2ZWxvcGVyIGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiBkZXZlbG9wZXIgZXh0ZW5zaW9ucyBhcmUgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRQot
ICogICAgICAgICBvdGhlcndpc2UuCisgKiAgICAgICAgIG90aGVyd2lzZQogICovCiBFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX2dldChF
dmFzX09iamVjdCAqbyk7CiAKIC8qKgotICogRW5hYmxlcy9kaXNhYmxlcyBkZXZlbG9wZXIgZXh0
ZW5zaW9ucyBmb3IgdGhlIGdpdmVuIHZpZXcuCisgKiBFbmFibGVzL2Rpc2FibGVzIGRldmVsb3Bl
ciBleHRlbnNpb25zLgogICoKICAqIFRoaXMgY3VycmVudGx5IGNvbnRyb2xzIHdoZXRoZXIgdGhl
IFdlYiBJbnNwZWN0b3Igc2hvdWxkIGJlIGVuYWJsZWQuCiAgKgotICogQHBhcmFtIG8gVGhlIHZp
ZXcgd2hvc2Ugc2V0dGluZyB3aWxsIGJlIGNoYW5nZWQuCisgKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBzZXQgZGV2ZWxvcGVyIGV4dGVuc2lvbnMKICAqIEBwYXJhbSBlbmFibGUgQGMgRUlOQV9U
UlVFIHRvIGVuYWJsZSBkZXZlbG9wZXIgZXh0cmFzLCBAYyBFSU5BX0ZBTFNFIHRvCi0gKiAgICAg
ICAgICAgICAgIGRpc2FibGUuCisgKiAgICAgICAgICAgICAgIGRpc2FibGUKICAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBARUlOQV9GQUxTRSBvbiBmYWlsdXJlLgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBARUlOQV9GQUxTRSBvbiBmYWlsdXJl
CiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Bl
cl9leHRyYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKIAotLyogdG8g
YmUgdXNlZCBieSBzdWJjbGFzcyBpbXBsZW1lbnRhdGlvbnMgKi8KIC8qKgotICogU2ltaWxhciB0
byBldmFzX29iamVjdF9zbWFydF9kYXRhX2dldCgpLCBidXQgZG9lcyB0eXBlIGNoZWNraW5nLgor
ICogR2V0cyB0aGUgaW50ZXJuYWwgZGF0YSBvZiBAYSBvLgogICoKLSAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHF1ZXJ5IGludGVybmFsIGRhdGEuCi0gKiBAcmV0dXJuIGludGVybmFsIGRhdGEg
b3IgQGMgMCBvbiBlcnJvcnMgKGllOiBpbmNvcnJlY3QgdHlwZSBvZiBAYSBvKS4KKyAqIFRoaXMg
aXMgc2ltaWxhciB0byBldmFzX29iamVjdF9zbWFydF9kYXRhX2dldCgpLCBidXQgYWRkaXRpb25h
bGx5IGRvZXMgdHlwZSBjaGVja2luZy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBn
ZXQgdGhlIGludGVybmFsIGRhdGEKKyAqCisgKiBAcmV0dXJuIHRoZSBpbnRlcm5hbCBkYXRhIG9m
IEBhIG8sIG9yIEBjIDAgb24gZmFpbHVyZQogICovCiBFQVBJIEV3a19WaWV3X1NtYXJ0X0RhdGEg
KmV3a192aWV3X3NtYXJ0X2RhdGFfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAotRUFQSSB2
b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZCk7Ci0K
IC8qKgotICogU3RydWN0dXJlIHRoYXQga2VlcHMgcGFpbnQgY29udGV4dC4KKyAqIFByb2Nlc3Mg
c2Nyb2xscy4KICAqCi0gKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1
c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiBAcGFyYW0gcHJpdiB0aGUgcG9pbnRlciB0
byB0aGUgcHJpdmF0ZSBkYXRhIG9mIHRoZSB2aWV3IHRvIHByb2Nlc3Mgc2Nyb2xscworICoKKyAq
IEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3Nl
cyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4K
ICAqLworRUFQSSB2b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9E
YXRhICpzZCk7CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dC4KIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19QYWludF9Db250ZXh0IEV3a19W
aWV3X1BhaW50X0NvbnRleHQ7CiAKIC8qKgotICogQ3JlYXRlIGEgbmV3IHBhaW50IGNvbnRleHQg
dXNpbmcgdGhlIHZpZXcgYXMgc291cmNlIGFuZCBjYWlybyBhcyBvdXRwdXQuCisgKiBDcmVhdGVz
IGEgbmV3IHBhaW50IGNvbnRleHQgdXNpbmcgdGhlIHZpZXcgYXMgc291cmNlIGFuZCBjYWlybyBh
cyBvdXRwdXQuCiAgKgotICogQHBhcmFtIHByaXYgcHJpdmF0ZSBoYW5kbGUgcG9pbnRlciBvZiB0
aGUgdmlldyB0byB1c2UgYXMgcGFpbnQgc291cmNlLgotICogQHBhcmFtIGNyIGNhaXJvIGNvbnRl
eHQgdG8gdXNlIGFzIHBhaW50IGRlc3RpbmF0aW9uLiBBIG5ldwotICogICAgICAgIHJlZmVyZW5j
ZSBpcyB0YWtlbiwgc28gaXQncyBzYWZlIHRvIGNhbGwgY2Fpcm9fZGVzdHJveSgpCisgKiBAcGFy
YW0gcHJpdiB0aGUgcG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhIG9mIHRoZSB2aWV3IHRvIHVz
ZSBhcyBwYWludCBzb3VyY2UKKyAqIEBwYXJhbSBjciBjYWlybyBjb250ZXh0IHRvIHVzZSBhcyBw
YWludCBkZXN0aW5hdGlvbiwgYSBuZXcKKyAqICAgICAgICByZWZlcmVuY2UgaXMgdGFrZW4sIHNv
IGl0J3Mgc2FmZSB0byBjYWxsIEBjIGNhaXJvX2Rlc3Ryb3koKQogICogICAgICAgIGFmdGVyIHRo
aXMgZnVuY3Rpb24gcmV0dXJucy4KICAqCi0gKiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRlZCBpbnN0
YW5jZSBvciBAYyAwIG9uIGVycm9ycy4KKyAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW5z
dGFuY2Ugb2YgQGMgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCBvbiBzdWNjZXNzLAorICogICAgICAg
ICBvciBAYyAwIG9uIGZhaWx1cmUKICAqCi0gKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJh
bCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiBAbm90ZSBUaGlzIGlz
IG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAg
KiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KIEVBUEkgRXdr
X1ZpZXdfUGFpbnRfQ29udGV4dCAqZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjcik7CiAKIC8qKgotICogRGVzdHJveSBwcmV2
aW91c2x5IGNyZWF0ZWQgcGFpbnQgY29udGV4dC4KKyAqIERlc3Ryb3lzIHRoZSBwcmV2aW91c2x5
IGNyZWF0ZWQgdGhlIHBhaW50IGNvbnRleHQuCiAgKgotICogQHBhcmFtIGN0eHQgcGFpbnQgY29u
dGV4dCB0byBkZXN0cm95LiBNdXN0IEBiIG5vdCBiZSBAYyAwLgorICogQHBhcmFtIGN0eHQgdGhl
IHBhaW50IGNvbnRleHQgdG8gZGVzdHJveSwgbXVzdCBAYiBub3QgYmUgQGMgMAogICoKLSAqIEBu
b3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0
aGF0IHdhbnQKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBm
b3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFj
a2luZyBzdG9yZS4KICAqLwogRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShF
d2tfVmlld19QYWludF9Db250ZXh0ICpjdHh0KTsKIAogLyoqCi0gKiBTYXZlIChwdXNoIHRvIHN0
YWNrKSBwYWludCBjb250ZXh0IHN0YXR1cy4KKyAqIFNhdmVzIChwdXNoIHRvIHN0YWNrKSB0aGUg
cGFpbnQgY29udGV4dCBzdGF0dXMuCiAgKgotICogQHBhcmFtIGN0eHQgcGFpbnQgY29udGV4dCB0
byBzYXZlLiBNdXN0IEBiIG5vdCBiZSBAYyAwLgorICogQHBhcmFtIGN0eHQgdGhlIHBhaW50IGNv
bnRleHQgdG8gc2F2ZSwgbXVzdCBAYiBub3QgYmUgQGMgMAogICoKICAqIEBzZWUgZXdrX3ZpZXdf
cGFpbnRfY29udGV4dF9yZXN0b3JlKCkKICAqCi0gKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2Vu
ZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiBAbm90ZSBUaGlz
IGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50
CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KIEVBUEkg
dm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NhdmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAq
Y3R4dCk7CiAKIC8qKgotICogUmVzdG9yZSAocG9wIGZyb20gc3RhY2spIHBhaW50IGNvbnRleHQg
c3RhdHVzLgorICogUmVzdG9yZXMgKHBvcCBmcm9tIHN0YWNrKSB0aGUgcGFpbnQgY29udGV4dCBz
dGF0dXMuCiAgKgotICogQHBhcmFtIGN0eHQgcGFpbnQgY29udGV4dCB0byByZXN0b3JlLiBNdXN0
IEBiIG5vdCBiZSBAYyAwLgorICogQHBhcmFtIGN0eHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcmVz
dG9yZSwgbXVzdCBAYiBub3QgYmUgQGMgMAogICoKICAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9zYXZlKCkKICAqCi0gKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0
IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3Ig
Z2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0
byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KIEVBUEkgdm9pZCBld2tfdmll
d19wYWludF9jb250ZXh0X3Jlc3RvcmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCk7CiAK
IC8qKgotICogQ2xpcCBwYWludCBjb250ZXh0IGRyYXdpbmdzIHRvIGdpdmVuIGFyZWEuCisgKiBD
bGlwcyB0aGUgcGFpbnQgY29udGV4dCBkcmF3aW5ncyB0byB0aGUgZ2l2ZW4gYXJlYS4KICAqCi0g
KiBAcGFyYW0gY3R4dCBwYWludCBjb250ZXh0IHRvIGNsaXAuIE11c3QgQGIgbm90IGJlIEBjIDAu
Ci0gKiBAcGFyYW0gYXJlYSBjbGlwIGFyZWEgdG8gdXNlLgorICogQHBhcmFtIGN0eHQgdGhlIHBh
aW50IGNvbnRleHQgdG8gY2xpcCwgbXVzdCBAYiBub3QgYmUgQGMgMAorICogQHBhcmFtIGFyZWEg
Y2xpcCBhcmVhIHRvIHVzZSwgbXVzdCBAYiBub3QgYmUgQGMgMAogICoKICAqIEBzZWUgZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9zYXZlKCkKICAqIEBzZWUgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9y
ZXN0b3JlKCkKICAqCi0gKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1
c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2Vu
ZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBk
ZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KIEVBUEkgdm9pZCBld2tfdmlld19w
YWludF9jb250ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWlu
YV9SZWN0YW5nbGUgKmFyZWEpOwogCiAvKioKLSAqIFBhaW50IHVzaW5nIGNvbnRleHQgdXNpbmcg
Z2l2ZW4gYXJlYS4KKyAqIFBhaW50cyB0aGUgY29udGV4dCB1c2luZyBnaXZlbiBhcmVhLgogICoK
LSAqIEBwYXJhbSBjdHh0IHBhaW50IGNvbnRleHQgdG8gcGFpbnQuIE11c3QgQGIgbm90IGJlIEBj
IDAuCi0gKiBAcGFyYW0gYXJlYSBwYWludCBhcmVhIHRvIHVzZS4gQ29vcmRpbmF0ZXMgYXJlIHJl
bGF0aXZlIHRvIGN1cnJlbnQgdmlld3BvcnQsCi0gKiAgICAgICAgdGh1cyAic2Nyb2xsZWQiLgor
ICogQHBhcmFtIGN0eHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcGFpbnQsIG11c3QgQGIgbm90IGJl
IEBjIDAKKyAqIEBwYXJhbSBhcmVhIHRoZSBwYWludCBhcmVhIHRvIHVzZSwgY29vcmRpbmF0ZXMg
YXJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgdmlld3BvcnQsCisgKiAgICAgICAgdGh1cyAic2Nyb2xs
ZWQiLCBtdXN0IEBiIG5vdCBiZSBAYyAwCiAgKgotICogQG5vdGUgb25lIG1heSB1c2UgY2Fpcm8g
ZnVuY3Rpb25zIG9uIHRoZSBjYWlybyBjb250ZXh0IHRvCisgKiBAbm90ZSBPbmUgbWF5IHVzZSBj
YWlybyBmdW5jdGlvbnMgb24gdGhlIGNhaXJvIGNvbnRleHQgdG8KICAqICAgICAgIHRyYW5zbGF0
ZSwgc2NhbGUgb3IgYW55IG1vZGlmaWNhdGlvbiB0aGF0IG1heSBmaXQgaGlzIGRlc2lyZXMuCiAg
KgogICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoKQogICogQHNlZSBld2tfdmll
d19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKCkKICAqCi0gKiBAbm90ZSB0aGlzIGlzIG5v
dCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CisgKiBA
bm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMg
dGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAg
Ki8KIEVBUEkgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KEV3a19WaWV3X1BhaW50
X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKTsKIAogLyoqCi0gKiBQ
YWludCBqdXN0IGNvbnRlbnRzIHVzaW5nIGNvbnRleHQgdXNpbmcgZ2l2ZW4gYXJlYS4KKyAqIFBh
aW50cyBqdXN0IGNvbnRlbnRzIHVzaW5nIGNvbnRleHQgdXNpbmcgZ2l2ZW4gYXJlYS4KICAqCiAg
KiBVbmxpa2UgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludCgpLCB0aGlzIGZ1bmN0aW9uIHBh
aW50IGp1c3QKICAqIGJhcmUgY29udGVudHMgYW5kIGlnbm9yZXMgYW55IHNjcm9sbGluZywgc2Ny
b2xsYmFycyBhbmQgZXh0cmFzLiBJdAogICogd2lsbCB3YWxrIHRoZSByZW5kZXJpbmcgdHJlZSBh
bmQgcGFpbnQgY29udGVudHMgaW5zaWRlIHRoZSBnaXZlbgogICogYXJlYSB0byB0aGUgY2Fpcm8g
Y29udGV4dCBzcGVjaWZpZWQgaW4gQGEgY3R4dC4KICAqCi0gKiBAcGFyYW0gY3R4dCBwYWludCBj
b250ZXh0IHRvIHBhaW50LiBNdXN0IEBiIG5vdCBiZSBAYyAwLgotICogQHBhcmFtIGFyZWEgcGFp
bnQgYXJlYSB0byB1c2UuIENvb3JkaW5hdGVzIGFyZSBhYnNvbHV0ZSB0byBwYWdlLgorICogQHBh
cmFtIGN0eHQgdGhlIHBhaW50IGNvbnRleHQgdG8gcGFpbnQsIG11c3QgQGIgbm90IGJlIEBjIDAu
CisgKiBAcGFyYW0gYXJlYSB0aGUgcGFpbnQgYXJlYSB0byB1c2UsIGNvb3JkaW5hdGVzIGFyZSBh
YnNvbHV0ZSB0byBwYWdlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCiAgKgotICogQG5vdGUgb25lIG1h
eSB1c2UgY2Fpcm8gZnVuY3Rpb25zIG9uIHRoZSBjYWlybyBjb250ZXh0IHRvCisgKiBAbm90ZSBP
bmUgbWF5IHVzZSBjYWlybyBmdW5jdGlvbnMgb24gdGhlIGNhaXJvIGNvbnRleHQgdG8KICAqICAg
ICAgIHRyYW5zbGF0ZSwgc2NhbGUgb3IgYW55IG1vZGlmaWNhdGlvbiB0aGF0IG1heSBmaXQgaGlz
IGRlc2lyZXMuCiAgKgogICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X2NsaXAoKQogICog
QHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KCkKICAqCi0gKiBAbm90ZSB0aGlzIGlz
IG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50Cisg
KiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNz
ZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUu
CiAgKi8KIEVBUEkgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50X2NvbnRlbnRzKEV3
a19WaWV3X1BhaW50X0NvbnRleHQgKmN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKTsK
IAogLyoqCi0gKiBTY2FsZSB0aGUgY29udGVudHMgYnkgdGhlIGdpdmVuIGZhY3RvcnMuCisgKiBT
Y2FsZXMgdGhlIGNvbnRlbnRzIGJ5IHRoZSBnaXZlbiBmYWN0b3JzLgogICoKICAqIFRoaXMgZnVu
Y3Rpb24gYXBwbGllcyBhIHNjYWxpbmcgdHJhbnNmb3JtYXRpb24gdXNpbmcgQ2Fpcm8uCiAgKgot
ICogQHBhcmFtIGN0eHQgICAgcGFpbnQgY29udGV4dCB0byBwYWludC4gTXVzdCBAYiBub3QgYmUg
QGMgMC4KLSAqIEBwYXJhbSBzY2FsZV94IHNjYWxlIGZhY3RvciBmb3IgdGhlIFggZGltZW5zaW9u
LgotICogQHBhcmFtIHNjYWxlX3kgc2NhbGUgZmFjdG9yIGZvciB0aGUgWSBkaW1lbnNpb24uCisg
KiBAcGFyYW0gY3R4dCB0aGUgcGFpbnQgY29udGV4dCB0byBzY2FsZSwgbXVzdCBAYiBub3QgYmUg
QGMgMAorICogQHBhcmFtIHNjYWxlX3ggdGhlIHNjYWxlIGZhY3RvciBmb3IgdGhlIFggZGltZW5z
aW9uCisgKiBAcGFyYW0gc2NhbGVfeSB0aGUgc2NhbGUgZmFjdG9yIGZvciB0aGUgWSBkaW1lbnNp
b24KICAqLwogRUFQSSB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdf
UGFpbnRfQ29udGV4dCAqY3R4dCwgZmxvYXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVfeSk7CiAKIC8q
KgogICogUGVyZm9ybXMgYSB0cmFuc2xhdGlvbiBvZiB0aGUgb3JpZ2luIGNvb3JkaW5hdGVzLgog
ICoKLSAqIFRoaXMgZnVuY3Rpb24gbW92ZXMgdGhlIG9yaWdpbiBjb29yZGluYXRlcyBieSBAcCB4
IGFuZCBAcCB5IHBpeGVscy4KKyAqIFRoaXMgZnVuY3Rpb24gbW92ZXMgdGhlIG9yaWdpbiBjb29y
ZGluYXRlcyBieSBAYSB4IGFuZCBAYSB5IHBpeGVscy4KICAqCi0gKiBAcGFyYW0gY3R4dCBwYWlu
dCBjb250ZXh0IHRvIHBhaW50LiBNdXN0IEBiIG5vdCBiZSBAYyAwLgotICogQHBhcmFtIHggICAg
YW1vdW50IG9mIHBpeGVscyB0byB0cmFuc2xhdGUgaW4gdGhlIFggZGltZW5zaW9uLgotICogQHBh
cmFtIHkgICAgYW1vdW50IG9mIHBpeGVscyB0byB0cmFuc2xhdGUgaW4gdGhlIFkgZGltZW5zaW9u
LgorICogQHBhcmFtIGN0eHQgdGhlIHBhaW50IGNvbnRleHQgdG8gdHJhbnNsYXRlLCBtdXN0IEBi
IG5vdCBiZSBAYyAwCisgKiBAcGFyYW0geCBhbW91bnQgb2YgcGl4ZWxzIHRvIHRyYW5zbGF0ZSBp
biB0aGUgWCBkaW1lbnNpb24KKyAqIEBwYXJhbSB5IGFtb3VudCBvZiBwaXhlbHMgdG8gdHJhbnNs
YXRlIGluIHRoZSBZIGRpbWVuc2lvbgogICovCiBFQVBJIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF90cmFuc2xhdGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgZmxvYXQgeCwgZmxv
YXQgeSk7CiAKIC8qKgotICogUGFpbnQgdXNpbmcgZ2l2ZW4gZ3JhcGhpY3MgY29udGV4dCB0aGUg
Z2l2ZW4gYXJlYS4KKyAqIFBhaW50cyB1c2luZyBnaXZlbiBncmFwaGljcyBjb250ZXh0IHRoZSBn
aXZlbiBhcmVhLgogICoKICAqIFRoaXMgdXNlcyB2aWV3cG9ydCByZWxhdGl2ZSBhcmVhIGFuZCB3
aWxsIGFsc28gaGFuZGxlIHNjcm9sbGJhcnMKICAqIGFuZCBvdGhlciBleHRyYSBlbGVtZW50cy4g
U2VlIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKCkgZm9yIHRoZQogICogYWx0ZXJuYXRpdmUgZnVu
Y3Rpb24uCiAgKgotICogQHBhcmFtIHByaXYgcHJpdmF0ZSBoYW5kbGUgcG9pbnRlciBvZiB2aWV3
IHRvIHVzZSBhcyBwYWludCBzb3VyY2UuCi0gKiBAcGFyYW0gY3IgY2Fpcm8gY29udGV4dCB0byB1
c2UgYXMgcGFpbnQgZGVzdGluYXRpb24uIEl0cyBzdGF0ZSB3aWxsCi0gKiAgICAgICAgYmUgc2F2
ZWQgYmVmb3JlIG9wZXJhdGlvbiBhbmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcy4KLSAqIEBwYXJhbSBh
cmVhIHZpZXdwb3J0IHJlbGF0aXZlIGdlb21ldHJ5IHRvIHBhaW50LgorICogQHBhcmFtIHByaXYg
dGhlIHBvaW50ZXIgdG8gdGhlIHByaXZhdGUgZGF0YSBvZiB0aGUgdmlldyB0byB1c2UgYXMgcGFp
bnQgc291cmNlCisgKiBAcGFyYW0gY3IgdGhlIGNhaXJvIGNvbnRleHQgdG8gdXNlIGFzIHBhaW50
IGRlc3RpbmF0aW9uLCBpdHMgc3RhdGUgd2lsbAorICogICAgICAgIGJlIHNhdmVkIGJlZm9yZSBv
cGVyYXRpb24gYW5kIHJlc3RvcmVkIGFmdGVyd2FyZHMKKyAqIEBwYXJhbSBhcmVhIHZpZXdwb3J0
IHJlbGF0aXZlIGdlb21ldHJ5IHRvIHBhaW50CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBhbmQgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLCBsaWtlCi0gKiAgICAgICAg
IGluY29ycmVjdCBwYXJhbWV0ZXJzLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqCi0gKiBAbm90ZSB0aGlzIGlzIGFuIGVh
c3kgdG8gdXNlIHZlcnNpb24sIGJ1dCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFyZQorICogQG5vdGUg
VGhpcyBpcyBhbiBlYXN5IHRvIHVzZSB2ZXJzaW9uLCBidXQgaW50ZXJuYWwgc3RydWN0dXJlcyBh
cmUKICAqICAgICAgIGFsd2F5cyBjcmVhdGVkLCB0aGVuIGdyYXBoaWNzIGNvbnRleHQgaXMgY2xp
cHBlZCwgdGhlbgogICogICAgICAgcGFpbnRlZCwgcmVzdG9yZWQgYW5kIGRlc3Ryb3llZC4gVGhp
cyBtaWdodCBub3QgYmUgb3B0aW11bSwKLSAqICAgICAgIHNvIHVzaW5nICNFd2tfVmlld19QYWlu
dF9Db250ZXh0IG1heSBiZSBhIGJldHRlciBzb2x1dGlvbnMKKyAqICAgICAgIHNvIHVzaW5nIEBh
IEV3a19WaWV3X1BhaW50X0NvbnRleHQgbWF5IGJlIGEgYmV0dGVyIHNvbHV0aW9ucwogICogICAg
ICAgZm9yIGxhcmdlIG51bWJlciBvZiBvcGVyYXRpb25zLgogICoKICAqIEBzZWUgZXdrX3ZpZXdf
cGFpbnRfY29udGVudHMoKQogICogQHNlZSBld2tfdmlld19wYWludF9jb250ZXh0X3BhaW50KCkK
ICAqCi0gKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1
YmNsYXNzZXMgdGhhdCB3YW50CisgKiBAbm90ZSBUaGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2Ug
YnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhl
aXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3BhaW50
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgY2Fpcm9fdCAqY3IsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlICphcmVhKTsKIAogLyoqCi0gKiBQYWludCBqdXN0IGNvbnRlbnRzIHVzaW5nIGdpdmVu
IGdyYXBoaWNzIGNvbnRleHQgdGhlIGdpdmVuIGFyZWEuCisgKiBQYWludHMganVzdCBjb250ZW50
cyB1c2luZyBnaXZlbiBncmFwaGljcyBjb250ZXh0IHRoZSBnaXZlbiBhcmVhLgogICoKICAqIFRo
aXMgdXNlcyBhYnNvbHV0ZSBjb29yZGluYXRlcyBmb3IgYXJlYSBhbmQgd2lsbCBqdXN0IGhhbmRs
ZQogICogY29udGVudHMsIG5vIHNjcm9sbGJhcnMgb3IgZXh0cmFzLiBTZWUgZXdrX3ZpZXdfcGFp
bnQoKSBmb3IgdGhlCiAgKiBhbHRlcm5hdGl2ZSBzb2x1dGlvbi4KICAqCi0gKiBAcGFyYW0gcHJp
diBwcml2YXRlIGhhbmRsZSBwb2ludGVyIG9mIHZpZXcgdG8gdXNlIGFzIHBhaW50IHNvdXJjZS4K
LSAqIEBwYXJhbSBjciBjYWlybyBjb250ZXh0IHRvIHVzZSBhcyBwYWludCBkZXN0aW5hdGlvbi4g
SXRzIHN0YXRlIHdpbGwKLSAqICAgICAgICBiZSBzYXZlZCBiZWZvcmUgb3BlcmF0aW9uIGFuZCBy
ZXN0b3JlZCBhZnRlcndhcmRzLgotICogQHBhcmFtIGFyZWEgYWJzb2x1dGUgZ2VvbWV0cnkgdG8g
cGFpbnQuCisgKiBAcGFyYW0gcHJpdiB0aGUgcG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhIG9m
IHRoZSB2aWV3IHRvIHVzZSBhcyBwYWludCBzb3VyY2UKKyAqIEBwYXJhbSBjciB0aGUgY2Fpcm8g
Y29udGV4dCB0byB1c2UgYXMgcGFpbnQgZGVzdGluYXRpb24sIGl0cyBzdGF0ZSB3aWxsCisgKiAg
ICAgICAgYmUgc2F2ZWQgYmVmb3JlIG9wZXJhdGlvbiBhbmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcwor
ICogQHBhcmFtIGFyZWEgYWJzb2x1dGUgZ2VvbWV0cnkgdG8gcGFpbnQKICAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIGFuZCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUsIGxp
a2UKLSAqICAgICAgICAgaW5jb3JyZWN0IHBhcmFtZXRlcnMuCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICoKLSAqIEBub3Rl
IHRoaXMgaXMgYW4gZWFzeSB0byB1c2UgdmVyc2lvbiwgYnV0IGludGVybmFsIHN0cnVjdHVyZXMg
YXJlCisgKiBAbm90ZSBUaGlzIGlzIGFuIGVhc3kgdG8gdXNlIHZlcnNpb24sIGJ1dCBpbnRlcm5h
bCBzdHJ1Y3R1cmVzIGFyZQogICogICAgICAgYWx3YXlzIGNyZWF0ZWQsIHRoZW4gZ3JhcGhpY3Mg
Y29udGV4dCBpcyBjbGlwcGVkLCB0aGVuCiAgKiAgICAgICBwYWludGVkLCByZXN0b3JlZCBhbmQg
ZGVzdHJveWVkLiBUaGlzIG1pZ2h0IG5vdCBiZSBvcHRpbXVtLAotICogICAgICAgc28gdXNpbmcg
I0V3a19WaWV3X1BhaW50X0NvbnRleHQgbWF5IGJlIGEgYmV0dGVyIHNvbHV0aW9ucworICogICAg
ICAgc28gdXNpbmcgQGEgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCBtYXkgYmUgYSBiZXR0ZXIgc29s
dXRpb25zCiAgKiAgICAgICBmb3IgbGFyZ2UgbnVtYmVyIG9mIG9wZXJhdGlvbnMuCiAgKgogICog
QHNlZSBld2tfdmlld19wYWludCgpCiAgKiBAc2VlIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFp
bnRfY29udGVudHMoKQogICoKLSAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBi
dXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKKyAqIEBub3RlIFRoaXMgaXMgbm90IGZv
ciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAgICAg
IHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwogRUFQSSBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWly
b190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogCiAvKioKLSAqIEdldHMgYXR0
cmlidXRlcyBvZiB2aWV3cG9ydCBtZXRhIHRhZy4KKyAqIEdldHMgdGhlIGF0dHJpYnV0ZXMgb2Yg
dGhlIHZpZXdwb3J0IG1ldGEgdGFnLgorICoKKyAqIFByb3BlcnRpZXMgYXJlIHJldHVybmVkIGlu
IHRoZSByZXNwZWN0aXZlIHBvaW50ZXJzLiBQYXNzaW5nIEBjIDAgdG8gYW55IG9mCisgKiB0aGVz
ZSBwb2ludGVycyB3aWxsIG1ha2UgdGhhdCBwcm9wZXJ0eSB0byBub3QgYmUgcmV0dXJuZWQuCiAg
KgotICogQHBhcmFtIG8gdmlldy4KLSAqIEBwYXJhbSB3IHdpZHRoLgotICogQHBhcmFtIGggaGVp
Z2h0LgotICogQHBhcmFtIGluaXRfc2NhbGUgaW5pdGlhbCBTY2FsZSB2YWx1ZS4KLSAqIEBwYXJh
bSBtYXhfc2NhbGUgbWF4aW11bSBTY2FsZSB2YWx1ZS4KLSAqIEBwYXJhbSBtaW5fc2NhbGUgbWlu
aW11bSBTY2FsZSB2YWx1ZS4KLSAqIEBwYXJhbSBkZXZpY2VfcGl4ZWxfcmF0aW8gdmFsdWUuCi0g
KiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2VyIFNjYWxhYmxlIHZhbHVlLgorICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gZ2V0IHRoZSB2aWV3cG9ydCBhdHRyaWJ1dGVzCisgKiBAcGFyYW0gdyB0
aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgd2lkdGggb2YgdGhlIHZpZXdwb3J0CisgKiBAcGFyYW0g
aCB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgaGVpZ2h0IG9mIHRoZSB2aWV3cG9ydAorICogQHBh
cmFtIGluaXRfc2NhbGUgdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGluaXRpYWwgc2NhbGUgdmFs
dWUKKyAqIEBwYXJhbSBtYXhfc2NhbGUgdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIG1heGltdW0g
c2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBtaW5fc2NhbGUgdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhl
IG1pbmltdW0gc2NhbGUgdmFsdWUKKyAqIEBwYXJhbSBkZXZpY2VfcGl4ZWxfcmF0aW8gdGhlIHBv
aW50ZXIgdG8gc3RvcmUgdGhlIGRldmljZSBwaXhlbCByYXRpbyB2YWx1ZQorICogQHBhcmFtIHVz
ZXJfc2NhbGFibGUgdGhlIHBvaW50ZXIgdG8gc3RvcmUgaWYgdXNlciBjYW4gc2NhbGUgdmlld3Bv
cnQKICAqLwogRUFQSSB2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KEV2YXNf
T2JqZWN0ICpvLCBmbG9hdCAqdywgZmxvYXQgKmgsIGZsb2F0ICppbml0X3NjYWxlLCBmbG9hdCAq
bWF4X3NjYWxlLCBmbG9hdCAqbWluX3NjYWxlLCBmbG9hdCAqZGV2aWNlX3BpeGVsX3JhdGlvICwg
RWluYV9Cb29sICp1c2VyX3NjYWxhYmxlKTsKIAogLyoqCiAgKiBTZXRzIHRoZSB6b29tIHJhbmdl
LgogICoKLSAqIEBwYXJhbSBvIHZpZXcuCi0gKiBAcGFyYW0gbWluX3NjYWxlIG1pbmltdW0gdmFs
dWUgb2Ygem9vbSByYW5nZS4KLSAqIEBwYXJhbSBtYXhfc2NhbGUgbWF4aW11bSB2YWx1ZSBvZiB6
b29tIHJhbmdlLgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSB6b29tIHJhbmdl
CisgKiBAcGFyYW0gbWluX3NjYWxlIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdl
CisgKiBAcGFyYW0gbWF4X3NjYWxlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdl
CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSByYW5nZSBpcyBjaGFuZ2VkLCBA
YyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBmYWlsdXJlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgem9vbSByYW5nZSBpcyBjaGFuZ2VkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWls
dXJlCiAgKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBmbG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSk7CiAKIC8qKgotICogR2V0
cyB0aGUgbWluaW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICogR2V0cyB0aGUgbWluaW11bSB2
YWx1ZSBvZiB0aGUgem9vbSByYW5nZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3LgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSB6b29tIHJhbmdl
CiAgKgotICogQHJldHVybiBtaW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UsIG9yIEBjIC0xLjAg
b24gZmFpbHVyZS4KKyAqIEByZXR1cm4gdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIHpvb20gcmFu
Z2Ugb24gc3VjY2Vzcywgb3IKKyAqICAgICAgICAgQGMgLTEgb24gZmFpbHVyZQogICovCiBFQVBJ
IGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldChFdmFzX09iamVjdCAqbyk7CiAKIC8q
KgotICogR2V0cyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgorICogR2V0cyB0aGUg
bWF4aW11bSB2YWx1ZSBvZiB0aGUgem9vbSByYW5nZS4KICAqCi0gKiBAcGFyYW0gbyB2aWV3Lgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSB6
b29tIHJhbmdlCiAgKgotICogQHJldHVybiBtYXhpbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UsIG9y
IEBjIC0xLjAgb24gZmFpbHVyZS4KKyAqIEByZXR1cm4gdGhlIG1heGltdW0gdmFsdWUgb2YgdGhl
IHpvb20gcmFuZ2Ugb24gc3VjY2Vzcywgb3IKKyAqICAgICAgICAgQGMgLTEuMCBvbiBmYWlsdXJl
CiAgKi8KIEVBUEkgZmxvYXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KEV2YXNfT2JqZWN0
ICpvKTsKIAogLyoqCi0gKiBTZXRzIGlmIHpvb20gaXMgZW5hYmxlZC4KKyAqIEVuYWJsZXMvZGlz
YWJsZXMgdGhlIHpvb20uCiAgKgotICogQHBhcmFtIG8gdmlldy4KLSAqIEBwYXJhbSB1c2VyX3Nj
YWxhYmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3aGljaCB0byBlbmFibGUgem9vbS4gSXQgZGVmYXVs
dHMKLSAqIHRvIEBjIEVJTkFfVFJVRS4KKyAqIEBwYXJhbSBvIHZpZXcgdG8gc2V0IHpvb20KKyAq
IEBwYXJhbSB1c2VyX3NjYWxhYmxlIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgem9vbSwgQGMgRUlO
QV9GQUxTRSB0byBkaXNhYmxlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCiBFQVBJIEVpbmFfQm9v
bCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHVz
ZXJfc2NhbGFibGUpOwogCiAvKioKLSAqIEdldHMgaWYgem9vbSBpcyBlbmFibGVkLgorICogUXVl
cmllcyBpZiB0aGUgem9vbSBpcyBlbmFibGVkLgogICoKLSAqIEBwYXJhbSBvIHZpZXcuCi0gKiBA
cGFyYW0gdXNlcl9zY2FsYWJsZSB3aGVyZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBzY2Fs
YWJsZSB2YWx1ZS4KKyAqIEBwYXJhbSBvIHZpZXcgdG8gcXVlcnkgaWYgem9vbSBpcyBlbmFibGVk
CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSBpcyBlbmFibGVkLCBAYyBFSU5B
X0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
dGhlIHpvb20gaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQog
ICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVj
dCAqbyk7CiAKIC8qKgotICogR2V0cyBkZXZpY2UgcGl4ZWwgcmF0aW8gdmFsdWUuCisgKiBHZXRz
IHRoZSBkZXZpY2UgcGl4ZWwgcmF0aW8gdmFsdWUuCiAgKgotICogQHBhcmFtIG8gdmlldy4KLSAq
IEBwYXJhbSB1c2VyX3NjYWxhYmxlIHdoZXJlIHRvIHJldHVybiB0aGUgY3VycmVudCB1c2VyIHNj
YWxhYmxlIHZhbHVlLgorICogQHBhcmFtIG8gdmlldyB0byBnZXQgdGhlIGRldmljZSBwaXhlbCBy
YXRpbyB2YWx1ZQogICoKLSAqIEByZXR1cm4gZGV2aWNlIHBpeGVsIHJhdGlvIG9yIEBjIC0xLjAg
b24gZmFpbHVyZS4KKyAqIEByZXR1cm4gdGhlIGRldmljZSBwaXhlbCByYXRpbyB2YWx1ZSBvbiBz
dWNjZXNzIG9yIEBjIC0xLjAgb24gZmFpbHVyZQogICovCiBFQVBJIGZsb2F0IGV3a192aWV3X2Rl
dmljZV9waXhlbF9yYXRpb19nZXQoRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIFNldHMgdmll
dyBtb2RlLiBUaGUgdmlldy1tb2RlIG1lZGlhIGZlYXR1cmUgZGVzY3JpYmVzIHRoZSBtb2RlIGlu
IHdoaWNoIHRoZQorICogU2V0cyB0aGUgdmlldyBtb2RlLgorICoKKyAqIFRoZSB2aWV3LW1vZGUg
bWVkaWEgZmVhdHVyZSBkZXNjcmliZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlCiAgKiBXZWIgYXBw
bGljYXRpb24gaXMgYmVpbmcgc2hvd24gYXMgYSBydW5uaW5nIGFwcGxpY2F0aW9uLgogICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGNoYW5nZSB2aWV3IG1vZGUuCi0gKiBAcGFyYW0gdmll
d19tb2RlIHBhZ2UgdmlldyBtb2RlIHRvIGJlIHNldAorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gY2hhbmdlIHRoZSB2aWV3IG1vZGUKKyAqIEBwYXJhbSB2aWV3X21vZGUgcGFnZSB2aWV3IG1v
ZGUgdG8gc2V0CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdmlldyBtb2RlIGlzIHNl
dCBhcyB2aWV3X21vZGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFQVBJ
IEVpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1ZpZXdfTW9k
ZSB2aWV3X21vZGUpOwogCiAvKioKLSAqIEdldHMgdmlldyBtb2RlLiBUaGUgdmlldy1tb2RlIG1l
ZGlhIGZlYXR1cmUgZGVzY3JpYmVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZQotICogV2ViIGFwcGxp
Y2F0aW9uIGlzIGJlaW5nIHNob3duIGFzIGEgcnVubmluZyBhcHBsaWNhdGlvbi4KKyAqIEdldHMg
dGhlIHZpZXcgbW9kZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHZp
ZXcgbW9kZQogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IHZpZXcgbW9kZS4K
KyAqIEByZXR1cm4gZW51bSB2YWx1ZSBvZiBAYSBFd2tfVmlld19Nb2RlIHRoYXQgaW5kaWNhdGVz
IGN1cnJlbnQgdmlldyBtb2RlCiAgKgotICogQHJldHVybiBlbnVtIHZhbHVlIG9mIEV3a19WaWV3
X01vZGUgdGhhdCBpbmRpY2F0ZXMgY3VycmVudCB2aWV3IG1vZGUuCisgKiBAc2VlIGV3a192aWV3
X21vZGVfc2V0KCkKICAqLwogRUFQSSBFd2tfVmlld19Nb2RlIGV3a192aWV3X21vZGVfZ2V0KEV2
YXNfT2JqZWN0ICpvKTsKICNpZmRlZiBfX2NwbHVzcGx1cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>