<?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>16115</bug_id>
          
          <creation_ts>2007-11-24 04:47:38 -0800</creation_ts>
          <short_desc>[GTK] ContextMenu and ContextMenuItem lacks an implementation</short_desc>
          <delta_ts>2008-01-03 03:28:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Holger Freyther">zecke</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>christian</cc>
    
    <cc>lars</cc>
    
    <cc>lethalman88</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>62165</commentid>
    <comment_count>0</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-11-24 04:47:38 -0800</bug_when>
    <thetext>The classes ContextMenu and ContextMenuItem lack an implementation. These should be implemented using GtkMenu and GtkMenuItem but integrating the menu into the API needs discussions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62284</commentid>
    <comment_count>1</comment_count>
      <attachid>17507</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-11-25 08:39:06 -0800</bug_when>
    <thetext>Created attachment 17507
ContextMenu Implementation WIP

Known issues or not yet checked:
  - Is the ref counting done right? Should we sink it? Should we just ref it?
  - We exploit the GObject to attach ContextMenuAction to a GtkMenuItem. We could keep them mapping in a hash map but would we store it in ContextMenu or ContextMenuItem.
  - How to map that into an API?
  - The code to activate the context menu by keyboard (in webkitgtkpage.cpp) is mostly taken from the Windows port. It would be nice to share some of the calculations to find the right element.
  - We need to morph a GtkMenuItem to a GtkCheckMenuItem on the fly. So it might make sense to not create a GtkMenuItem in ContextMenuItem until we need it or not at all. With the internal API we do not know what we are going to be.

Anyway with this patch you can right click and see a context menu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62292</commentid>
    <comment_count>2</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2007-11-25 11:45:26 -0800</bug_when>
    <thetext>Nice work, apparently you were faster than me with this one. :)

&gt; - How to map that into an API?
The &quot;populate-popup&quot; seems to be a natural choice. It provides a pointer to a GtkMenu to append or prepend custom items. This of course only really makes sense once we have means of retrieving the element in question.

We probably want imageMenuItem&apos;s and make the edit items match those of a GtkEntry. And connect to &quot;popup-menu&quot; to show the menu via keyboard.

&gt; - We need to morph a GtkMenuItem to a GtkCheckMenuItem on the fly. So it
might make sense to not create a GtkMenuItem in ContextMenuItem until we need
it or not at all. With the internal API we do not know what we are going to be.
On the fly creation of the items makes the most sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65485</commentid>
    <comment_count>3</comment_count>
      <attachid>18153</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2007-12-28 14:25:50 -0800</bug_when>
    <thetext>Created attachment 18153
updated patch

I just updated the patch for the new API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65487</commentid>
    <comment_count>4</comment_count>
      <attachid>18153</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-28 14:56:55 -0800</bug_when>
    <thetext>Comment on attachment 18153
updated patch

This didn&apos;t build when applied to SVN TOT. WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp needed some modifications to make it build.

After the modifications, I wasn&apos;t able to get a menu up. Is this patch meant to get that far?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65577</commentid>
    <comment_count>5</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2007-12-29 01:24:22 -0800</bug_when>
    <thetext>Not really, it doesn&apos;t handle the mouse button. So i was just finding out a cleaner way of doing things. The purpose of this patch was to port the previous patch to the new API for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65724</commentid>
    <comment_count>6</comment_count>
      <attachid>18186</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2007-12-30 02:30:41 -0800</bug_when>
    <thetext>Created attachment 18186
done port of context menu

I think the port from the original patch is done.
The menu shows but it&apos;s really really buggy, the problem is might be caused by the wrong use of ref/unref on items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65725</commentid>
    <comment_count>7</comment_count>
      <attachid>18187</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2007-12-30 02:49:12 -0800</bug_when>
    <thetext>Created attachment 18187
base of context menu

Sorry was my mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66013</commentid>
    <comment_count>8</comment_count>
      <attachid>18187</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-01-02 02:16:24 -0800</bug_when>
    <thetext>Comment on attachment 18187
base of context menu

r=me

ChangeLog entry next time please.

Will fix up one or two minor coding style issues eg. event.button()+1 and also the old terminology &quot;gtkPage&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66014</commentid>
    <comment_count>9</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-01-02 02:26:25 -0800</bug_when>
    <thetext>Landed in r29080. There are a few FIXMEs and TODOs we&apos;ll have to look into.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66043</commentid>
    <comment_count>10</comment_count>
      <attachid>18240</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-01-02 09:28:47 -0800</bug_when>
    <thetext>Created attachment 18240
Create the GtkMenuItem on the fly.

This patch creates the GtkMenuItem on the fly. This allows to change the type, title and action easily. These values can be populated from an existing GtkMenuItem, e.g. when an item has been activated.

ContextMenuItem::setChecked is a pretty bad for the Gtk+ platform. We must know if an item is supposed to be checkable or not as we have GtkMenuItem and GtkCheckMenuItem and both get drawn differently. We should add another ActionType for checkable menuitems and make use of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66059</commentid>
    <comment_count>11</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-01-02 13:37:40 -0800</bug_when>
    <thetext>Do you plan to also implement support for icons for appropriate menu items? The menus feel very alienated like this and icons would make a big difference. If you prefer I can just as well defer this to a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66117</commentid>
    <comment_count>12</comment_count>
      <attachid>18240</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-01-03 03:28:12 -0800</bug_when>
    <thetext>Comment on attachment 18240
Create the GtkMenuItem on the fly.

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17507</attachid>
            <date>2007-11-25 08:39:06 -0800</date>
            <delta_ts>2007-12-28 14:25:50 -0800</delta_ts>
            <desc>ContextMenu Implementation WIP</desc>
            <filename>GTK_CONTEXT_MENU.diff</filename>
            <type>text/plain</type>
            <size>14854</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcAppbmRleCAzNDAxOWQ4Li44YWEx
MDMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCkBAIC0yOSwzMSAr
MjksNTggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Lmgi
Ci0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q29u
dHJvbGxlci5oIgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitzdGF0aWMgdm9pZCBtZW51SXRlbUFjdGl2YXRlZChHdGtNZW51SXRlbSogaXRlbSwgQ29udGV4
dE1lbnUqIG1lbnUpCit7CisgICAgQ29udGV4dE1lbnVJdGVtIGNvbnRleHRJdGVtKGl0ZW0pOwor
ICAgIG1lbnUtPmNvbnRyb2xsZXIoKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoJmNvbnRleHRJ
dGVtKTsKK30KKwogQ29udGV4dE1lbnU6OkNvbnRleHRNZW51KGNvbnN0IEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCkKICAgICA6IG1faGl0VGVzdFJlc3VsdChyZXN1bHQpCi0gICAgLCBtX3BsYXRmb3Jt
RGVzY3JpcHRpb24oMCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGxhdGZvcm1E
ZXNjcmlwdGlvbiA9IEdUS19NRU5VKGd0a19tZW51X25ldygpKTsKKworI2lmIEdMSUJfQ0hFQ0tf
VkVSU0lPTigyLDEwLDApCisgICAgZ19vYmplY3RfcmVmX3NpbmsoR19PQkpFQ1QobV9wbGF0Zm9y
bURlc2NyaXB0aW9uKSk7CisjZWxzZQorICAgIGdfb2JqZWN0X3JlZihHX09CSkVDVChtX3BsYXRm
b3JtRGVzY3JpcHRpb24pKTsKKyAgICBndGtfb2JqZWN0X3NpbmsoR1RLX09CSkVDVChtX3BsYXRm
b3JtRGVzY3JpcHRpb24pKTsKKyNlbmRpZgogfQogCiBDb250ZXh0TWVudTo6fkNvbnRleHRNZW51
KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX3BsYXRmb3JtRGVzY3JpcHRp
b24pCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CiB9CiAK
LXZvaWQgQ29udGV4dE1lbnU6OmFwcGVuZEl0ZW0oQ29udGV4dE1lbnVJdGVtJikKK3ZvaWQgQ29u
dGV4dE1lbnU6OmFwcGVuZEl0ZW0oQ29udGV4dE1lbnVJdGVtJiBpdGVtKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgQVNTRVJUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CisgICAgY2hl
Y2tPckVuYWJsZUlmTmVlZGVkKGl0ZW0pOworCisgICAgR3RrTWVudUl0ZW0qIHBsYXRmb3JtSXRl
bSA9IGl0ZW0ucmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICBBU1NFUlQocGxhdGZv
cm1JdGVtKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QocGxhdGZvcm1JdGVtLCAiYWN0aXZhdGUi
LCBHX0NBTExCQUNLKG1lbnVJdGVtQWN0aXZhdGVkKSwgdGhpcyk7CisgICAgZ3RrX21lbnVfc2hl
bGxfYXBwZW5kKEdUS19NRU5VX1NIRUxMKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiksIEdUS19XSURH
RVQocGxhdGZvcm1JdGVtKSk7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQocGxhdGZv
cm1JdGVtKSk7CisgICAgZ19vYmplY3RfdW5yZWYocGxhdGZvcm1JdGVtKTsKIH0KIAogdm9pZCBD
b250ZXh0TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlvbihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlv
biBtZW51KQogeworICAgIEFTU0VSVChtZW51KTsKKyAgICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0
aW9uKQorICAgICAgICBnX29iamVjdF91bnJlZihtX3BsYXRmb3JtRGVzY3JpcHRpb24pOworCiAg
ICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gbWVudTsKKyAgICAvL2dfb2JqZWN0X3JlZihtX3Bs
YXRmb3JtRGVzY3JpcHRpb24pOwogfQogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0
TWVudTo6cGxhdGZvcm1EZXNjcmlwdGlvbigpIGNvbnN0CkBAIC02Myw4ICs5MCwxMCBAQCBQbGF0
Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudTo6cGxhdGZvcm1EZXNjcmlwdGlvbigpIGNv
bnN0CiAKIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51OjpyZWxlYXNlUGxhdGZv
cm1EZXNjcmlwdGlvbigpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsgCi0gICAgcmV0dXJuIDA7
CisgICAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSBtX3BsYXRmb3JtRGVz
Y3JpcHRpb247CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gMDsKKworICAgIHJldHVybiBk
ZXNjcmlwdGlvbjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29u
dGV4dE1lbnVJdGVtR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRl
bUd0ay5jcHAKaW5kZXggNmUwZGJiZC4uZDA5OTMyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCkBAIC0yOSw1NyArMjksODcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgorI2luY2x1ZGUgIkNvbnRl
eHRNZW51LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgog
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAorI2RlZmluZSBXRUJLSVRfQ09OVEVYVF9N
RU5VX0FDVElPTiAid2Via2l0LWNvbnRleHQtbWVudSIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1Db250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShQbGF0Zm9ybU1lbnVJdGVtRGVzY3Jp
cHRpb24pCitDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShQbGF0Zm9ybU1lbnVJdGVt
RGVzY3JpcHRpb24gaXRlbSkKKyAgICA6IG1fcGxhdGZvcm1EZXNjcmlwdGlvbihpdGVtKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZ19vYmplY3RfcmVmKG1fcGxhdGZvcm1EZXNjcmlw
dGlvbik7CiB9CiAKLUNvbnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51
KikKK0NvbnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51SXRlbVR5cGUg
dHlwZSwgQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBDb250
ZXh0TWVudSogc3ViTWVudSkKKyAgICA6IG1fcGxhdGZvcm1EZXNjcmlwdGlvbigwKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19CisgICAgaWYgKHR5cGUgPT0gU2VwYXJhdG9yVHlwZSkgewor
ICAgICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBHVEtfTUVOVV9JVEVNKGd0a19zZXBhcmF0
b3JfbWVudV9pdGVtX25ldygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3BsYXRmb3JtRGVz
Y3JpcHRpb24gPSBHVEtfTUVOVV9JVEVNKGd0a19tZW51X2l0ZW1fbmV3X3dpdGhfbGFiZWwodGl0
bGUudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBzZXRBY3Rpb24oYWN0aW9uKTsKIAotQ29udGV4
dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSwgQ29udGV4dE1l
bnVBY3Rpb24sIGNvbnN0IFN0cmluZyYsIENvbnRleHRNZW51KikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgICAgICBpZiAoc3ViTWVudSkKKyAgICAgICAgICAgIHNldFN1Yk1lbnUoc3Vi
TWVudSk7CisgICAgfQorCisjaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsMTAsMCkKKyAgICBnX29i
amVjdF9yZWZfc2luayhHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pKTsKKyNlbHNlCisg
ICAgZ19vYmplY3RfcmVmKEdfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOworICAgIGd0
a19vYmplY3Rfc2luayhHVEtfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOworI2VuZGlm
CiB9CiAKIENvbnRleHRNZW51SXRlbTo6fkNvbnRleHRNZW51SXRlbSgpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0aW9uKQorICAgICAgICBnX29i
amVjdF91bnJlZihtX3BsYXRmb3JtRGVzY3JpcHRpb24pOwogfQogCiBQbGF0Zm9ybU1lbnVJdGVt
RGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVtOjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0
aW9uOworICAgIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiBtZW51SXRlbSA9IG1fcGxhdGZv
cm1EZXNjcmlwdGlvbjsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSAwOworICAgIHJldHVy
biBtZW51SXRlbTsKIH0KIAogQ29udGV4dE1lbnVJdGVtVHlwZSBDb250ZXh0TWVudUl0ZW06OnR5
cGUoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEFjdGlvblR5
cGU7IAorICAgIGlmIChHVEtfSVNfU0VQQVJBVE9SX01FTlVfSVRFTShtX3BsYXRmb3JtRGVzY3Jp
cHRpb24pKQorICAgICAgICByZXR1cm4gU2VwYXJhdG9yVHlwZTsKKyAgICBpZiAoZ3RrX21lbnVf
aXRlbV9nZXRfc3VibWVudShtX3BsYXRmb3JtRGVzY3JpcHRpb24pKQorICAgICAgICByZXR1cm4g
U3VibWVudVR5cGU7CisgICAgcmV0dXJuIEFjdGlvblR5cGU7CiB9CiAKKyNpZiAwCiB2b2lkIENv
bnRleHRNZW51SXRlbTo6c2V0VHlwZShDb250ZXh0TWVudUl0ZW1UeXBlKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CisjZW5kaWYKIAogQ29udGV4dE1lbnVBY3Rpb24gQ29udGV4dE1lbnVJ
dGVtOjphY3Rpb24oKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uOworICAgIEFTU0VSVChtX3BsYXRmb3JtRGVzY3Jp
cHRpb24pOworCisgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbio+KGdf
b2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiksIFdFQktJVF9D
T05URVhUX01FTlVfQUNUSU9OKSk7CiB9CiAKLXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRBY3Rp
b24oQ29udGV4dE1lbnVBY3Rpb24pCit2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENv
bnRleHRNZW51QWN0aW9uIGFjdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFT
U0VSVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pOworCisgICAgQ29udGV4dE1lbnVBY3Rpb24qIG1l
bnVBY3Rpb24gPSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbio+KG1hbGxvYyhzaXplb2Yo
Q29udGV4dE1lbnVBY3Rpb24qKSkpOworICAgICptZW51QWN0aW9uID0gYWN0aW9uOworICAgIGdf
b2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiksIFdFQktJVF9D
T05URVhUX01FTlVfQUNUSU9OLCBtZW51QWN0aW9uKTsKIH0KIAogU3RyaW5nIENvbnRleHRNZW51
SXRlbTo6dGl0bGUoKSBjb25zdApAQCAtOTUsMjMgKzEyNSwyOSBAQCB2b2lkIENvbnRleHRNZW51
SXRlbTo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJikKIAogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24g
Q29udGV4dE1lbnVJdGVtOjpwbGF0Zm9ybVN1Yk1lbnUoKSBjb25zdAogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEdUS19NRU5VKGd0a19tZW51X2l0
ZW1fZ2V0X3N1Ym1lbnUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CiB9CiAKLXZvaWQgQ29udGV4
dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KikKK3ZvaWQgQ29udGV4dE1lbnVJdGVt
OjpzZXRTdWJNZW51KENvbnRleHRNZW51KiBtZW51KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgZ3RrX21lbnVfaXRlbV9zZXRfc3VibWVudShtX3BsYXRmb3JtRGVzY3JpcHRpb24sIEdU
S19XSURHRVQobWVudS0+cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKSkpOwogfQogCi12b2lk
IENvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29sKQordm9pZCBDb250ZXh0TWVudUl0ZW06
OnNldENoZWNrZWQoYm9vbCBzaG91bGRDaGVjaykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIEFTU0VSVCh0eXBlKCkgPT0gQWN0aW9uVHlwZSk7CisKKyAgICBpZiAoR1RLX0lTX0NIRUNL
X01FTlVfSVRFTShtX3BsYXRmb3JtRGVzY3JpcHRpb24pKSB7CisgICAgICAgIGd0a19jaGVja19t
ZW51X2l0ZW1fc2V0X2FjdGl2ZShHVEtfQ0hFQ0tfTUVOVV9JVEVNKG1fcGxhdGZvcm1EZXNjcmlw
dGlvbiksIHNob3VsZENoZWNrKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBOb3QgSW1wbGVt
ZW50ZWQ6IE5lZWQgdG8gbW9ycGggdGhpcyBpbnRvIGEgR3RrQ2hlY2tNZW51SXRlbS4uLgorICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0KIH0KIAotdm9pZCBDb250ZXh0TWVudUl0ZW06
OnNldEVuYWJsZWQoYm9vbCkKK3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRFbmFibGVkKGJvb2wg
c2hvdWxkRW5hYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZ3RrX3dpZGdldF9z
ZXRfc2Vuc2l0aXZlKEdUS19XSURHRVQobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSwgc2hvdWxkRW5h
YmxlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0LnByaSBiL1dlYktpdC5wcmkKaW5kZXgg
NWNiMjE1Zi4uMTcxYjAyYSAxMDA2NDQKLS0tIGEvV2ViS2l0LnByaQorKysgYi9XZWJLaXQucHJp
CkBAIC0xLDQgKzEsNiBAQAogIyBJbmNsdWRlIGZpbGUgdG8gbWFrZSBpdCBlYXN5IHRvIGluY2x1
ZGUgV2ViS2l0IGludG8gUXQgcHJvamVjdHMKK1FNQUtFX0NYWEZMQUdTICs9IC1nZHdhcmYtMgor
UU1BS0VfQ0ZMQUdTICs9IC1nZHdhcmYtMgogCiAKIGlzRW1wdHkoT1VUUFVUX0RJUikgewpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcGFnZS5jcHAgYi9XZWJLaXQvZ3RrL0Fw
aS93ZWJraXRndGtwYWdlLmNwcAppbmRleCA1NDM1NjI1Li40ZjkyYTczIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtwYWdlLmNwcAorKysgYi9XZWJLaXQvZ3RrL0FwaS93ZWJr
aXRndGtwYWdlLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
SG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwNyBDaHJpc3Rp
YW4gRHl3YW4gPGNocmlzdGlhbkB0d290b2FzdHMuZGU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDkgKzM3LDEzIEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRHdGsuaCIKICNpbmNsdWRlICJDb250ZXh0TWVu
dUNsaWVudEd0ay5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCisjaW5jbHVkZSAiQ29udGV4
dE1lbnVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiRHJhZ0Ns
aWVudEd0ay5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkV2ZW50
SGFuZGxlci5oIgorI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhpdFRl
c3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgpAQCAtNDcsNiArNTIsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hl
ZWxFdmVudC5oIgorI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
dWJzdGl0dXRlRGF0YS5oIgogCiAKQEAgLTk5LDExICsxMDUsMTAxIEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfcGFnZV9rZXlfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5KiBl
dmVudCkKICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoZXZlbnQpKTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0X3BhZ2VfY29u
dGV4dF9tZW51X3Bvc2l0aW9uX2Z1bmMoR3RrTWVudSosIGdpbnQqIHgsIGdpbnQqIHksIGdib29s
ZWFuKiBwdXNoSW4sIFdlYktpdFBhZ2VQcml2YXRlKiBkYXRhKQoreworICAgICpwdXNoSW4gPSBG
QUxTRTsKKyAgICAqeCA9IGRhdGEtPmxhc3RQb3B1cFhQb3NpdGlvbjsKKyAgICAqeSA9IGRhdGEt
Pmxhc3RQb3B1cFlQb3NpdGlvbjsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF9wYWdlX2Zv
cndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFBhZ2UqIGd0a1BhZ2UsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBjb250ZXh0TWVu
dU1hcmdpbiA9IDE7CisKKyAgICBQYWdlKiBwYWdlID0gY29yZShndGtQYWdlKTsKKyAgICBwYWdl
LT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOworICAgIEZyYW1l
KiBmb2N1c2VkRnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7CisgICAgZm9jdXNlZEZyYW1lLT52aWV3KCktPnNldEN1cnNvcihwb2ludGVyQ3Vyc29y
KCkpOworICAgIGJvb2wgaGFuZGxlZEV2ZW50ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+c2VuZENvbnRleHRNZW51RXZlbnQoZXZlbnQpOworICAgIGlmICghaGFuZGxlZEV2ZW50KQor
ICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBDb250ZXh0TWVudSogY29yZU1lbnUgPSBwYWdl
LT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y29udGV4dE1lbnUoKTsKKyAgICBpZiAoIWNvcmVN
ZW51KQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoIWNvcmVNZW51LT5wbGF0Zm9y
bURlc2NyaXB0aW9uKCkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworCisgICAgV2ViS2l0UGFn
ZVByaXZhdGUqIHBhZ2VEYXRhID0gV0VCS0lUX1BBR0VfR0VUX1BSSVZBVEUoZ3RrUGFnZSk7Cisg
ICAgcGFnZURhdGEtPmxhc3RQb3B1cFhQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFgoKTsKKyAgICBw
YWdlRGF0YS0+bGFzdFBvcHVwWVBvc2l0aW9uID0gZXZlbnQuZ2xvYmFsWSgpOworICAgIGd0a19t
ZW51X3BvcHVwKEdUS19NRU5VKGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCkpLCBOVUxM
LCBOVUxMLAorICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R3RrTWVudVBvc2l0
aW9uRnVuYz4od2Via2l0X3BhZ2VfY29udGV4dF9tZW51X3Bvc2l0aW9uX2Z1bmMpLCBwYWdlRGF0
YSwKKyAgICAgICAgICAgICAgICAgICBldmVudC5idXR0b24oKSsxLCBndGtfZ2V0X2N1cnJlbnRf
ZXZlbnRfdGltZSgpKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuIHdl
YmtpdF9wYWdlX3BvcHVwX21lbnVfaGFuZGxlcihHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBz
dGF0aWMgY29uc3QgaW50IGNvbnRleHRNZW51TWFyZ2luID0gMTsKKworICAgIC8vIFRoZSBjb250
ZXh0IG1lbnUgZXZlbnQgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBrZXlib2FyZCwgc28gc2hvdyB0
aGUgY29udGV4dCBtZW51IGJ5IHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KKyAgICBQYWdlKiBwYWdl
ID0gY29yZShXRUJLSVRfUEFHRSh3aWRnZXQpKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIFBvc2l0aW9uIHN0YXJ0ID0gcGFnZS0+bWFpbkZy
YW1lKCktPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKKyAgICBQ
b3NpdGlvbiBlbmQgPSBwYWdlLT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5z
ZWxlY3Rpb24oKS5lbmQoKTsKKworICAgIGludCByaWdodEFsaWduZWQgPSBGQUxTRTsKKyAgICBJ
bnRQb2ludCBsb2NhdGlvbjsKKworICAgIGlmICghc3RhcnQubm9kZSgpIHx8ICFlbmQubm9kZSgp
KQorICAgICAgICBsb2NhdGlvbiA9IEludFBvaW50KHJpZ2h0QWxpZ25lZCA/IHZpZXctPmNvbnRl
bnRzV2lkdGgoKSAtIGNvbnRleHRNZW51TWFyZ2luIDogY29udGV4dE1lbnVNYXJnaW4sIGNvbnRl
eHRNZW51TWFyZ2luKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHN0YXJ0Lm5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJlcikKKyAg
ICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHJlY3Qg
b2YgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNlbGVjdGlvbiAoY3JpYmJlZCBmcm9tIC1bV2ViQ29y
ZUZyYW1lQnJpZGdlIGZpcnN0UmVjdEZvckRPTVJhbmdlOl0pLgorICAgICAgICBpbnQgZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lID0gMDsKKyAgICAgICAgSW50UmVjdCBzdGFydENhcmV0UmVjdCA9IHJl
bmRlcmVyLT5jYXJldFJlY3Qoc3RhcnQub2Zmc2V0KCksIERPV05TVFJFQU0sICZleHRyYVdpZHRo
VG9FbmRPZkxpbmUpOworICAgICAgICBJbnRSZWN0IGVuZENhcmV0UmVjdCA9IHJlbmRlcmVyLT5j
YXJldFJlY3QoZW5kLm9mZnNldCgpLCBVUFNUUkVBTSk7CisKKyAgICAgICAgSW50UmVjdCBmaXJz
dFJlY3Q7CisgICAgICAgIGlmIChzdGFydENhcmV0UmVjdC55KCkgPT0gZW5kQ2FyZXRSZWN0Lnko
KSkKKyAgICAgICAgICAgIGZpcnN0UmVjdCA9IEludFJlY3QoTUlOKHN0YXJ0Q2FyZXRSZWN0Lngo
KSwgZW5kQ2FyZXRSZWN0LngoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXJ0Q2FyZXRSZWN0LnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzKGVu
ZENhcmV0UmVjdC54KCkgLSBzdGFydENhcmV0UmVjdC54KCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNQVgoc3RhcnRDYXJldFJlY3QuaGVpZ2h0KCksIGVuZENhcmV0UmVjdC5o
ZWlnaHQoKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmaXJzdFJlY3QgPSBJbnRSZWN0
KHN0YXJ0Q2FyZXRSZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
cnRDYXJldFJlY3QueSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENh
cmV0UmVjdC53aWR0aCgpICsgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFydENhcmV0UmVjdC5oZWlnaHQoKSk7CisKKyAgICAgICAgbG9j
YXRpb24gPSBJbnRQb2ludChyaWdodEFsaWduZWQgPyBmaXJzdFJlY3QucmlnaHQoKSA6IGZpcnN0
UmVjdC54KCksIGZpcnN0UmVjdC5ib3R0b20oKSk7CisgICAgfQorCisgICAgaW50IHgsIHk7Cisg
ICAgZ2RrX3dpbmRvd19nZXRfb3JpZ2luKEdUS19XSURHRVQodmlldy0+Y29udGFpbmluZ1dpbmRv
dygpKS0+d2luZG93LCAmeCwgJnkpOworCisgICAgLy8gRklYTUU6IFRoZSBJbnRTaXplKDAsIC0x
KSBpcyBhIGhhY2sgdG8gZ2V0IHRoZSBoaXQtdGVzdGluZyB0byByZXN1bHQgaW4gdGhlIHNlbGVj
dGVkIGVsZW1lbnQuCisgICAgLy8gSWRlYWxseSB3ZSdkIGhhdmUgdGhlIHBvc2l0aW9uIG9mIGEg
Y29udGV4dCBtZW51IGV2ZW50IGJlIHNlcGFyYXRlIGZyb20gaXRzIHRhcmdldCBub2RlLgorICAg
IGxvY2F0aW9uID0gdmlldy0+Y29udGVudHNUb1dpbmRvdyhsb2NhdGlvbikgKyBJbnRTaXplKDAs
IC0xKTsKKyAgICBJbnRQb2ludCBnbG9iYWwgPSBsb2NhdGlvbiArIEludFNpemUoeCx5KTsKKyAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQobG9jYXRpb24sIGdsb2JhbCwgTm9CdXR0b24sIE1v
dXNlRXZlbnRQcmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dldF9j
dXJyZW50X2V2ZW50X3RpbWUoKSk7CisKKyAgICByZXR1cm4gd2Via2l0X3BhZ2VfZm9yd2FyZF9j
b250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1BBR0Uod2lkZ2V0KSwgZXZlbnQpOworfQorCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3BhZ2VfYnV0dG9uX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudEJ1dHRvbiogZXZlbnQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShnZXRGcmFt
ZUZyb21QYWdlKFdFQktJVF9QQUdFKHdpZGdldCkpKTsKIAotICAgIGlmIChldmVudC0+dHlwZSA9
PSBHREtfQlVUVE9OX1JFTEVBU0UpCisgICAgaWYgKGV2ZW50LT5idXR0b24gPT0gMyAmJiBldmVu
dC0+dHlwZSA9PSBHREtfQlVUVE9OX1JFTEVBU0UpCisgICAgICAgIHJldHVybiB3ZWJraXRfcGFn
ZV9mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfUEFHRSh3aWRnZXQpLCBQbGF0Zm9y
bU1vdXNlRXZlbnQoZXZlbnQpKTsKKyAgICBlbHNlIGlmIChldmVudC0+dHlwZSA9PSBHREtfQlVU
VE9OX1JFTEVBU0UpCiAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRs
ZU1vdXNlUmVsZWFzZUV2ZW50KFBsYXRmb3JtTW91c2VFdmVudChldmVudCkpOwogCiAgICAgLy8g
RklYTUU6IG5lZWQgdG8ga2VlcCB0cmFjayBvZiBzdWJmcmFtZSBmb2N1cyBmb3Iga2V5IGV2ZW50
cwpAQCAtNTM1LDYgKzYzMSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9wYWdlX2NsYXNzX2luaXQo
V2ViS2l0UGFnZUNsYXNzKiBwYWdlQ2xhc3MpCiAgICAgd2lkZ2V0Q2xhc3MtPm1vdGlvbl9ub3Rp
ZnlfZXZlbnQgPSB3ZWJraXRfcGFnZV9tb3Rpb25fZXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPnNj
cm9sbF9ldmVudCA9IHdlYmtpdF9wYWdlX3Njcm9sbF9ldmVudDsKICAgICB3aWRnZXRDbGFzcy0+
c2l6ZV9hbGxvY2F0ZSA9IHdlYmtpdF9wYWdlX3NpemVfYWxsb2NhdGU7CisgICAgd2lkZ2V0Q2xh
c3MtPnBvcHVwX21lbnUgPSB3ZWJraXRfcGFnZV9wb3B1cF9tZW51X2hhbmRsZXI7CiAKICAgICBH
dGtDb250YWluZXJDbGFzcyogY29udGFpbmVyQ2xhc3MgPSBHVEtfQ09OVEFJTkVSX0NMQVNTKHBh
Z2VDbGFzcyk7CiAgICAgY29udGFpbmVyQ2xhc3MtPmFkZCA9IHdlYmtpdF9wYWdlX2NvbnRhaW5l
cl9hZGQ7CkBAIC01NzUsNiArNjcyLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3BhZ2VfaW5pdChX
ZWJLaXRQYWdlKiBwYWdlKQogCiAgICAgR1RLX1dJREdFVF9TRVRfRkxBR1MocGFnZSwgR1RLX0NB
Tl9GT0NVUyk7CiAgICAgcGFnZURhdGEtPm1haW5GcmFtZSA9IFdFQktJVF9GUkFNRSh3ZWJraXRf
ZnJhbWVfbmV3KHBhZ2UpKTsKKyAgICBwYWdlRGF0YS0+bGFzdFBvcHVwWFBvc2l0aW9uID0gcGFn
ZURhdGEtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IC0xOwogfQogCiBHdGtXaWRnZXQqIHdlYmtpdF9w
YWdlX25ldyh2b2lkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcHJpdmF0
ZS5oIGIvV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcHJpdmF0ZS5oCmluZGV4IDEwZjY3YjcuLmNm
NmIzMmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQXBpL3dlYmtpdGd0a3ByaXZhdGUuaAorKysg
Yi9XZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtwcml2YXRlLmgKQEAgLTY5LDYgKzY5LDkgQEAgZXh0
ZXJuICJDIiB7CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQ7CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyogdXNlckFnZW50OwogCisgICAgICAgIGdp
bnQgbGFzdFBvcHVwWFBvc2l0aW9uOworICAgICAgICBnaW50IGxhc3RQb3B1cFlQb3NpdGlvbjsK
KwogICAgICAgICBIYXNoU2V0PEd0a1dpZGdldCo+IGNoaWxkcmVuOwogICAgIH07CiAgICAgCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3Rr
LmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3Bw
CmluZGV4IDhhZTcwNTcuLjIxODU0NTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEd0ay5oIgorI2luY2x1
ZGUgIkNvbnRleHRNZW51LmgiCiAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVk
ZSAiS1VSTC5oIgpAQCAtNDEsMTAgKzQyLDkgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudDo6Y29u
dGV4dE1lbnVEZXN0cm95ZWQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVBsYXRmb3Jt
TWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1
bHRJdGVtcyhDb250ZXh0TWVudSopCitQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVu
dUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqIG1lbnUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUGxhdGZvcm1NZW51RGVzY3Jp
cHRpb24oKTsKKyAgICByZXR1cm4gbWVudS0+cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsK
IH0KIAogdm9pZCBDb250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29u
dGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18153</attachid>
            <date>2007-12-28 14:25:50 -0800</date>
            <delta_ts>2007-12-30 02:30:41 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>menu.patch</filename>
            <type>text/plain</type>
            <size>13115</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiAyOTAxMSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q29udGV4dE1lbnVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw3IEBA
CiAKIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21N
ZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gUGxhdGZvcm1NZW51RGVzY3JpcHRpb24oKTsKKyAgICByZXR1cm4gbWVu
dS0+cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKIH0KIAogdm9pZCBDb250ZXh0TWVudUNs
aWVudDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29u
dGV4dE1lbnUqKQpJbmRleDogV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYnZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNp
b24gMjkwMTEpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDEwIEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCisjaW5j
bHVkZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEd0ay5oIgor
I2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkN1cnNvci5oIgog
I2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRl
ICJFZGl0b3JDbGllbnRHdGsuaCIKQEAgLTg4LDYgKzkxLDk0IEBACiAKIEdfREVGSU5FX1RZUEUo
V2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBHVEtfVFlQRV9DT05UQUlORVIpCiAKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jb250ZXh0X21lbnVfcG9zaXRpb25fZnVuYyhHdGtN
ZW51KiwgZ2ludCogeCwgZ2ludCogeSwgZ2Jvb2xlYW4qIHB1c2hJbiwgV2ViS2l0V2ViVmlld1By
aXZhdGUqIGRhdGEpCit7CisgICAgKnB1c2hJbiA9IEZBTFNFOworICAgICp4ID0gZGF0YS0+bGFz
dFBvcHVwWFBvc2l0aW9uOworICAgICp5ID0gZGF0YS0+bGFzdFBvcHVwWVBvc2l0aW9uOworfQor
CitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2
ZW50KFdlYktpdFdlYlZpZXcqIGd0a1BhZ2UsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBjb250ZXh0TWVudU1hcmdpbiA9IDE7CisKKyAg
ICBQYWdlKiBwYWdlID0gY29yZShndGtQYWdlKTsKKyAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOworICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBw
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgZm9jdXNl
ZEZyYW1lLT52aWV3KCktPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOworICAgIGJvb2wgaGFu
ZGxlZEV2ZW50ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51
RXZlbnQoZXZlbnQpOworICAgIGlmICghaGFuZGxlZEV2ZW50KQorICAgICAgICByZXR1cm4gRkFM
U0U7CisKKyAgICBDb250ZXh0TWVudSogY29yZU1lbnUgPSBwYWdlLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS0+Y29udGV4dE1lbnUoKTsKKyAgICBpZiAoIWNvcmVNZW51KQorICAgICAgICByZXR1
cm4gRkFMU0U7CisKKyAgICBpZiAoIWNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBGQUxTRTsKKworCisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHBhZ2VE
YXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKGd0a1BhZ2UpOworICAgIHBhZ2VEYXRh
LT5sYXN0UG9wdXBYUG9zaXRpb24gPSBldmVudC5nbG9iYWxYKCk7CisgICAgcGFnZURhdGEtPmxh
c3RQb3B1cFlQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFkoKTsKKyAgICBndGtfbWVudV9wb3B1cChH
VEtfTUVOVShjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKSwgTlVMTCwgTlVMTCwKKyAg
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEd0a01lbnVQb3NpdGlvbkZ1bmM+KHdl
YmtpdF93ZWJfdmlld19jb250ZXh0X21lbnVfcG9zaXRpb25fZnVuYyksIHBhZ2VEYXRhLAorICAg
ICAgICAgICAgICAgICAgIGV2ZW50LmJ1dHRvbigpKzEsIGd0a19nZXRfY3VycmVudF9ldmVudF90
aW1lKCkpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcihHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgaW50IGNvbnRleHRNZW51TWFyZ2luID0gMTsKKworICAgIC8vIFRoZSBjb250ZXh0
IG1lbnUgZXZlbnQgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBrZXlib2FyZCwgc28gc2hvdyB0aGUg
Y29udGV4dCBtZW51IGJ5IHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KKyAgICBQYWdlKiBwYWdlID0g
Y29yZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gcGFn
ZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBQb3NpdGlvbiBzdGFydCA9IHBhZ2UtPm1haW5G
cmFtZSgpLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNlbGVjdGlvbigpLnN0YXJ0KCk7CisgICAg
UG9zaXRpb24gZW5kID0gcGFnZS0+bWFpbkZyYW1lKCktPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+
c2VsZWN0aW9uKCkuZW5kKCk7CisKKyAgICBpbnQgcmlnaHRBbGlnbmVkID0gRkFMU0U7CisgICAg
SW50UG9pbnQgbG9jYXRpb247CisKKyAgICBpZiAoIXN0YXJ0Lm5vZGUoKSB8fCAhZW5kLm5vZGUo
KSkKKyAgICAgICAgbG9jYXRpb24gPSBJbnRQb2ludChyaWdodEFsaWduZWQgPyB2aWV3LT5jb250
ZW50c1dpZHRoKCkgLSBjb250ZXh0TWVudU1hcmdpbiA6IGNvbnRleHRNZW51TWFyZ2luLCBjb250
ZXh0TWVudU1hcmdpbik7CisgICAgZWxzZSB7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSByZWN0
IG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzZWxlY3Rpb24gKGNyaWJiZWQgZnJvbSAtW1dlYkNv
cmVGcmFtZUJyaWRnZSBmaXJzdFJlY3RGb3JET01SYW5nZTpdKS4KKyAgICAgICAgaW50IGV4dHJh
V2lkdGhUb0VuZE9mTGluZSA9IDA7CisgICAgICAgIEludFJlY3Qgc3RhcnRDYXJldFJlY3QgPSBy
ZW5kZXJlci0+Y2FyZXRSZWN0KHN0YXJ0Lm9mZnNldCgpLCBET1dOU1RSRUFNLCAmZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lKTsKKyAgICAgICAgSW50UmVjdCBlbmRDYXJldFJlY3QgPSByZW5kZXJlci0+
Y2FyZXRSZWN0KGVuZC5vZmZzZXQoKSwgVVBTVFJFQU0pOworCisgICAgICAgIEludFJlY3QgZmly
c3RSZWN0OworICAgICAgICBpZiAoc3RhcnRDYXJldFJlY3QueSgpID09IGVuZENhcmV0UmVjdC55
KCkpCisgICAgICAgICAgICBmaXJzdFJlY3QgPSBJbnRSZWN0KE1JTihzdGFydENhcmV0UmVjdC54
KCksIGVuZENhcmV0UmVjdC54KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydENhcmV0UmVjdC55KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicyhl
bmRDYXJldFJlY3QueCgpIC0gc3RhcnRDYXJldFJlY3QueCgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTUFYKHN0YXJ0Q2FyZXRSZWN0LmhlaWdodCgpLCBlbmRDYXJldFJlY3Qu
aGVpZ2h0KCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmlyc3RSZWN0ID0gSW50UmVj
dChzdGFydENhcmV0UmVjdC54KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXJ0Q2FyZXRSZWN0LnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRD
YXJldFJlY3Qud2lkdGgoKSArIGV4dHJhV2lkdGhUb0VuZE9mTGluZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnRDYXJldFJlY3QuaGVpZ2h0KCkpOworCisgICAgICAgIGxv
Y2F0aW9uID0gSW50UG9pbnQocmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0LnJpZ2h0KCkgOiBmaXJz
dFJlY3QueCgpLCBmaXJzdFJlY3QuYm90dG9tKCkpOworICAgIH0KKworICAgIGludCB4LCB5Owor
ICAgIGdka193aW5kb3dfZ2V0X29yaWdpbihHVEtfV0lER0VUKHZpZXctPmNvbnRhaW5pbmdXaW5k
b3coKSktPndpbmRvdywgJngsICZ5KTsKKworICAgIC8vIEZJWE1FOiBUaGUgSW50U2l6ZSgwLCAt
MSkgaXMgYSBoYWNrIHRvIGdldCB0aGUgaGl0LXRlc3RpbmcgdG8gcmVzdWx0IGluIHRoZSBzZWxl
Y3RlZCBlbGVtZW50LgorICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRoZSBwb3NpdGlvbiBvZiBh
IGNvbnRleHQgbWVudSBldmVudCBiZSBzZXBhcmF0ZSBmcm9tIGl0cyB0YXJnZXQgbm9kZS4KKyAg
ICBsb2NhdGlvbiA9IHZpZXctPmNvbnRlbnRzVG9XaW5kb3cobG9jYXRpb24pICsgSW50U2l6ZSgw
LCAtMSk7CisgICAgSW50UG9pbnQgZ2xvYmFsID0gbG9jYXRpb24gKyBJbnRTaXplKHgseSk7Cisg
ICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxvY2F0aW9uLCBnbG9iYWwsIE5vQnV0dG9uLCBN
b3VzZUV2ZW50UHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGd0a19nZXRf
Y3VycmVudF9ldmVudF90aW1lKCkpOworCisgICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3
YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSwgZXZlbnQpOwor
fQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Byb3BlcnR5KEdPYmplY3QgKm9i
amVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICp2YWx1ZSwgR1BhcmFtU3BlYyAqcHNwZWMpIHsK
ICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCk7CiAK
QEAgLTgwMyw2ICs4OTQsNyBAQAogICAgIHdpZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5X2V2ZW50
ID0gd2Via2l0X3dlYl92aWV3X21vdGlvbl9ldmVudDsKICAgICB3aWRnZXRDbGFzcy0+c2Nyb2xs
X2V2ZW50ID0gd2Via2l0X3dlYl92aWV3X3Njcm9sbF9ldmVudDsKICAgICB3aWRnZXRDbGFzcy0+
c2l6ZV9hbGxvY2F0ZSA9IHdlYmtpdF93ZWJfdmlld19zaXplX2FsbG9jYXRlOworICAgIHdpZGdl
dENsYXNzLT5wb3B1cF9tZW51ID0gd2Via2l0X3dlYl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcjsK
IAogICAgIEd0a0NvbnRhaW5lckNsYXNzKiBjb250YWluZXJDbGFzcyA9IEdUS19DT05UQUlORVJf
Q0xBU1Mod2ViVmlld0NsYXNzKTsKICAgICBjb250YWluZXJDbGFzcy0+YWRkID0gd2Via2l0X3dl
Yl92aWV3X2NvbnRhaW5lcl9hZGQ7CkBAIC04ODYsNiArOTc4LDcgQEAKIAogICAgIEdUS19XSURH
RVRfU0VUX0ZMQUdTKHdlYlZpZXcsIEdUS19DQU5fRk9DVVMpOwogICAgIHdlYlZpZXdEYXRhLT5t
YWluRnJhbWUgPSBXRUJLSVRfV0VCX0ZSQU1FKHdlYmtpdF93ZWJfZnJhbWVfbmV3KHdlYlZpZXcp
KTsKKyAgICB3ZWJWaWV3RGF0YS0+bGFzdFBvcHVwWFBvc2l0aW9uID0gd2ViVmlld0RhdGEtPmxh
c3RQb3B1cFlQb3NpdGlvbiA9IC0xOwogICAgIHdlYlZpZXdEYXRhLT5lZGl0YWJsZSA9IGZhbHNl
OwogCiAjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwxMCwwKQpJbmRleDogV2ViS2l0L2d0ay9XZWJW
aWV3L3dlYmtpdHByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Vi
a2l0cHJpdmF0ZS5oCShyZXZpc2lvbiAyOTAxMSkKKysrIFdlYktpdC9ndGsvV2ViVmlldy93ZWJr
aXRwcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDkgQEAKICAgICAgICAgV2Vi
Q29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKICAgICAgICAgV2ViQ29y
ZTo6U3RyaW5nKiB1c2VyQWdlbnQ7CiAKKyAgICAgICAgZ2ludCBsYXN0UG9wdXBYUG9zaXRpb247
CisgICAgICAgIGdpbnQgbGFzdFBvcHVwWVBvc2l0aW9uOworCiAgICAgICAgIEhhc2hTZXQ8R3Rr
V2lkZ2V0Kj4gY2hpbGRyZW47CiAgICAgICAgIGJvb2wgZWRpdGFibGU7CiAgICAgICAgIEd0a0lN
Q29udGV4dCogaW1Db250ZXh0OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1l
bnVJdGVtR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0
TWVudUl0ZW1HdGsuY3BwCShyZXZpc2lvbiAyOTAxMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NvbnRleHRNZW51SXRlbUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1LDE1ICsxNSwyMCBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudS5oIgog
I2luY2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgotCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKKyNkZWZp
bmUgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT04gIndlYmtpdC1jb250ZXh0LW1lbnUiCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oUGxh
dGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKQorQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0
ZW0oUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIGl0ZW0pCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBnX29iamVjdF9yZWYobV9wbGF0Zm9ybURlc2NyaXB0aW9uKTsKIH0KIAogQ29u
dGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnUqKQpAQCAtMzEsMjYgKzM2
LDQ3IEBACiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotQ29udGV4dE1lbnVJdGVtOjpDb250
ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSwgQ29udGV4dE1lbnVBY3Rpb24sIGNvbnN0
IFN0cmluZyYsIENvbnRleHRNZW51KikKK0NvbnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVt
KENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSwgQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBDb250ZXh0TWVudSogc3ViTWVudSkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIGlmICh0eXBlID09IFNlcGFyYXRvclR5cGUpIHsKKyAgICAgICAgbV9wbGF0
Zm9ybURlc2NyaXB0aW9uID0gR1RLX01FTlVfSVRFTShndGtfc2VwYXJhdG9yX21lbnVfaXRlbV9u
ZXcoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gR1RL
X01FTlVfSVRFTShndGtfbWVudV9pdGVtX25ld193aXRoX2xhYmVsKHRpdGxlLnV0ZjgoKS5kYXRh
KCkpKTsKKyAgICAgICAgc2V0QWN0aW9uKGFjdGlvbik7CisKKyAgICAgICAgaWYgKHN1Yk1lbnUp
CisgICAgICAgICAgICBzZXRTdWJNZW51KHN1Yk1lbnUpOworICAgIH0KKworI2lmIEdMSUJfQ0hF
Q0tfVkVSU0lPTigyLDEwLDApCisgICAgZ19vYmplY3RfcmVmX3NpbmsoR19PQkpFQ1QobV9wbGF0
Zm9ybURlc2NyaXB0aW9uKSk7CisjZWxzZQorICAgIGdfb2JqZWN0X3JlZihHX09CSkVDVChtX3Bs
YXRmb3JtRGVzY3JpcHRpb24pKTsKKyAgICBndGtfb2JqZWN0X3NpbmsoR1RLX09CSkVDVChtX3Bs
YXRmb3JtRGVzY3JpcHRpb24pKTsKKyNlbmRpZgogfQogCiBDb250ZXh0TWVudUl0ZW06On5Db250
ZXh0TWVudUl0ZW0oKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1fcGxhdGZv
cm1EZXNjcmlwdGlvbikKKyAgICAgICAgZ19vYmplY3RfdW5yZWYobV9wbGF0Zm9ybURlc2NyaXB0
aW9uKTsKIH0KIAogUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIENvbnRleHRNZW51SXRlbTo6
cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKKyAgICBQbGF0Zm9ybU1lbnVJdGVtRGVz
Y3JpcHRpb24gbWVudUl0ZW0gPSBtX3BsYXRmb3JtRGVzY3JpcHRpb247CisgICAgbV9wbGF0Zm9y
bURlc2NyaXB0aW9uID0gMDsKKyAgICByZXR1cm4gbWVudUl0ZW07CiB9CiAKIENvbnRleHRNZW51
SXRlbVR5cGUgQ29udGV4dE1lbnVJdGVtOjp0eXBlKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBBY3Rpb25UeXBlOyAKKyAgICBpZiAoR1RLX0lTX1NFUEFSQVRP
Ul9NRU5VX0lURU0obV9wbGF0Zm9ybURlc2NyaXB0aW9uKSkKKyAgICAgICAgcmV0dXJuIFNlcGFy
YXRvclR5cGU7CisgICAgaWYgKGd0a19tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUobV9wbGF0Zm9ybURl
c2NyaXB0aW9uKSkKKyAgICAgICAgcmV0dXJuIFN1Ym1lbnVUeXBlOworCisgICAgcmV0dXJuIEFj
dGlvblR5cGU7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKENvbnRleHRNZW51
SXRlbVR5cGUpCkBAIC02MCwxMyArODYsMTggQEAKIAogQ29udGV4dE1lbnVBY3Rpb24gQ29udGV4
dE1lbnVJdGVtOjphY3Rpb24oKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uOworICAgIEFTU0VSVChtX3BsYXRmb3Jt
RGVzY3JpcHRpb24pOworICAgIAorICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVB
Y3Rpb24qPihnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24p
LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTikpOwogfQogCi12b2lkIENvbnRleHRNZW51SXRl
bTo6c2V0QWN0aW9uKENvbnRleHRNZW51QWN0aW9uKQordm9pZCBDb250ZXh0TWVudUl0ZW06OnNl
dEFjdGlvbihDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBBU1NFUlQobV9wbGF0Zm9ybURlc2NyaXB0aW9uKTsKKworICAgIENvbnRleHRNZW51
QWN0aW9uKiBtZW51QWN0aW9uID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24qPihtYWxs
b2Moc2l6ZW9mKENvbnRleHRNZW51QWN0aW9uKikpKTsKKyAgICAqbWVudUFjdGlvbiA9IGFjdGlv
bjsKKyAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24p
LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTiwgbWVudUFjdGlvbik7CiB9CiAKIFN0cmluZyBD
b250ZXh0TWVudUl0ZW06OnRpdGxlKCkgY29uc3QKQEAgLTgyLDIzICsxMTMsMjkgQEAKIAogUGxh
dGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVtOjpwbGF0Zm9ybVN1Yk1lbnUoKSBj
b25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IEdUS19NRU5VKGd0a19tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUobV9wbGF0Zm9ybURlc2NyaXB0aW9u
KSk7CiB9CiAKLXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KikK
K3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KiBtZW51KQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZ3RrX21lbnVfaXRlbV9zZXRfc3VibWVudShtX3Bs
YXRmb3JtRGVzY3JpcHRpb24sIEdUS19XSURHRVQobWVudS0+cmVsZWFzZVBsYXRmb3JtRGVzY3Jp
cHRpb24oKSkpOwogfQogCi12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29sKQor
dm9pZCBDb250ZXh0TWVudUl0ZW06OnNldENoZWNrZWQoYm9vbCBzaG91bGRDaGVjaykKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVCh0eXBlKCkgPT0gQWN0aW9uVHlwZSk7CisK
KyAgICBpZiAoR1RLX0lTX0NIRUNLX01FTlVfSVRFTShtX3BsYXRmb3JtRGVzY3JpcHRpb24pKSB7
CisgICAgICAgIGd0a19jaGVja19tZW51X2l0ZW1fc2V0X2FjdGl2ZShHVEtfQ0hFQ0tfTUVOVV9J
VEVNKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiksIHNob3VsZENoZWNrKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBOb3QgSW1wbGVtZW50ZWQ6IE5lZWQgdG8gbW9ycGggdGhpcyBpbnRvIGEgR3Rr
Q2hlY2tNZW51SXRlbS4uLgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0KIH0KIAot
dm9pZCBDb250ZXh0TWVudUl0ZW06OnNldEVuYWJsZWQoYm9vbCkKK3ZvaWQgQ29udGV4dE1lbnVJ
dGVtOjpzZXRFbmFibGVkKGJvb2wgc2hvdWxkRW5hYmxlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKEdUS19XSURHRVQobV9wbGF0Zm9ybURl
c2NyaXB0aW9uKSwgc2hvdWxkRW5hYmxlKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3RrL0NvbnRleHRNZW51R3RrLmNwcAkocmV2aXNpb24gMjkwMTEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDMxICsxNiw2
MCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKLQor
I2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RhdGljIHZvaWQgbWVudUl0ZW1BY3RpdmF0ZWQoR3RrTWVudUl0ZW0qIGl0ZW0sIENvbnRleHRN
ZW51KiBtZW51KQoreworICAgIENvbnRleHRNZW51SXRlbSBjb250ZXh0SXRlbShpdGVtKTsKKyAg
ICBtZW51LT5jb250cm9sbGVyKCktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCZjb250ZXh0SXRl
bSk7Cit9CisKIENvbnRleHRNZW51OjpDb250ZXh0TWVudShjb25zdCBIaXRUZXN0UmVzdWx0JiBy
ZXN1bHQpCiAgICAgOiBtX2hpdFRlc3RSZXN1bHQocmVzdWx0KQotICAgICwgbV9wbGF0Zm9ybURl
c2NyaXB0aW9uKDApCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BsYXRmb3JtRGVz
Y3JpcHRpb24gPSBHVEtfTUVOVShndGtfbWVudV9uZXcoKSk7CisKKyNpZiBHTElCX0NIRUNLX1ZF
UlNJT04oMiwxMCwwKQorICAgIGdfb2JqZWN0X3JlZl9zaW5rKEdfT0JKRUNUKG1fcGxhdGZvcm1E
ZXNjcmlwdGlvbikpOworI2Vsc2UKKyAgICBnX29iamVjdF9yZWYoR19PQkpFQ1QobV9wbGF0Zm9y
bURlc2NyaXB0aW9uKSk7CisgICAgZ3RrX29iamVjdF9zaW5rKEdUS19PQkpFQ1QobV9wbGF0Zm9y
bURlc2NyaXB0aW9uKSk7CisjZW5kaWYKIH0KIAogQ29udGV4dE1lbnU6On5Db250ZXh0TWVudSgp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgaWYgKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikK
KyAgICAgIGdfb2JqZWN0X3VucmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQg
Q29udGV4dE1lbnU6OmFwcGVuZEl0ZW0oQ29udGV4dE1lbnVJdGVtJikKK3ZvaWQgQ29udGV4dE1l
bnU6OmFwcGVuZEl0ZW0oQ29udGV4dE1lbnVJdGVtJiBpdGVtKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgQVNTRVJUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CisgICAgY2hlY2tPckVu
YWJsZUlmTmVlZGVkKGl0ZW0pOworCisgICAgR3RrTWVudUl0ZW0qIHBsYXRmb3JtSXRlbSA9IGl0
ZW0ucmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICBBU1NFUlQocGxhdGZvcm1JdGVt
KTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QocGxhdGZvcm1JdGVtLCAiYWN0aXZhdGUiLCBHX0NB
TExCQUNLKG1lbnVJdGVtQWN0aXZhdGVkKSwgdGhpcyk7CisgICAgZ3RrX21lbnVfc2hlbGxfYXBw
ZW5kKEdUS19NRU5VX1NIRUxMKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiksIEdUS19XSURHRVQocGxh
dGZvcm1JdGVtKSk7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQocGxhdGZvcm1JdGVt
KSk7CisgICAgZ19vYmplY3RfdW5yZWYocGxhdGZvcm1JdGVtKTsKIH0KIAogdm9pZCBDb250ZXh0
TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlvbihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51
KQogeworICAgIEFTU0VSVChtZW51KTsKKyAgICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0aW9uKQor
ICAgICAgICBnX29iamVjdF91bnJlZihtX3BsYXRmb3JtRGVzY3JpcHRpb24pOworCiAgICAgbV9w
bGF0Zm9ybURlc2NyaXB0aW9uID0gbWVudTsKKyAgICAvL2dfb2JqZWN0X3JlZihtX3BsYXRmb3Jt
RGVzY3JpcHRpb24pOwogfQogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudTo6
cGxhdGZvcm1EZXNjcmlwdGlvbigpIGNvbnN0CkBAIC01MCw4ICs3OSwxMCBAQAogCiBQbGF0Zm9y
bU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24o
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7IAotICAgIHJldHVybiAwOworICAgIFBsYXRmb3Jt
TWVudURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworICAg
IG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IDA7CisKKyAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9
CiAKIH0=
</data>
<flag name="review"
          id="7884"
          type_id="1"
          status="-"
          setter="alp"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18186</attachid>
            <date>2007-12-30 02:30:41 -0800</date>
            <delta_ts>2007-12-30 02:49:12 -0800</delta_ts>
            <desc>done port of context menu</desc>
            <filename>menu.patch</filename>
            <type>text/plain</type>
            <size>13934</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiAyOTAzNikKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q29udGV4dE1lbnVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAj
aW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRHdGsuaCIKIAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1
bHQuaCIKQEAgLTMwLDEwICszMSw5IEBACiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVBsYXRmb3Jt
TWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1
bHRJdGVtcyhDb250ZXh0TWVudSopCitQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVu
dUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqIG1lbnUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUGxhdGZvcm1NZW51RGVzY3Jp
cHRpb24oKTsKKyAgICByZXR1cm4gbWVudS0+cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsK
IH0KIAogdm9pZCBDb250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29u
dGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKQpJbmRleDogV2ViS2l0L2d0ay9XZWJW
aWV3L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93
ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMjkwMzYpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcv
d2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDEwIEBACiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50R3RrLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJD
b250ZXh0TWVudUNsaWVudEd0ay5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5o
IgorI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIKICNpbmNs
dWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRHdGsuaCIKQEAgLTg4LDYgKzkx
LDk0IEBACiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBH
VEtfVFlQRV9DT05UQUlORVIpCiAKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jb250ZXh0
X21lbnVfcG9zaXRpb25fZnVuYyhHdGtNZW51KiwgZ2ludCogeCwgZ2ludCogeSwgZ2Jvb2xlYW4q
IHB1c2hJbiwgV2ViS2l0V2ViVmlld1ByaXZhdGUqIGRhdGEpCit7CisgICAgKnB1c2hJbiA9IEZB
TFNFOworICAgICp4ID0gZGF0YS0+bGFzdFBvcHVwWFBvc2l0aW9uOworICAgICp5ID0gZGF0YS0+
bGFzdFBvcHVwWVBvc2l0aW9uOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3
X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIGd0a1BhZ2UsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBjb250
ZXh0TWVudU1hcmdpbiA9IDE7CisKKyAgICBQYWdlKiBwYWdlID0gY29yZShndGtQYWdlKTsKKyAg
ICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOworICAg
IEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7CisgICAgZm9jdXNlZEZyYW1lLT52aWV3KCktPnNldEN1cnNvcihwb2ludGVy
Q3Vyc29yKCkpOworICAgIGJvb2wgaGFuZGxlZEV2ZW50ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQoZXZlbnQpOworICAgIGlmICghaGFuZGxlZEV2
ZW50KQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBDb250ZXh0TWVudSogY29yZU1lbnUg
PSBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y29udGV4dE1lbnUoKTsKKyAgICBpZiAo
IWNvcmVNZW51KQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoIWNvcmVNZW51LT5w
bGF0Zm9ybURlc2NyaXB0aW9uKCkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworCisgICAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUqIHBhZ2VEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRF
KGd0a1BhZ2UpOworICAgIHBhZ2VEYXRhLT5sYXN0UG9wdXBYUG9zaXRpb24gPSBldmVudC5nbG9i
YWxYKCk7CisgICAgcGFnZURhdGEtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFko
KTsKKyAgICBndGtfbWVudV9wb3B1cChHVEtfTUVOVShjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlw
dGlvbigpKSwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PEd0a01lbnVQb3NpdGlvbkZ1bmM+KHdlYmtpdF93ZWJfdmlld19jb250ZXh0X21lbnVfcG9zaXRp
b25fZnVuYyksIHBhZ2VEYXRhLAorICAgICAgICAgICAgICAgICAgIGV2ZW50LmJ1dHRvbigpKzEs
IGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOworICAgIHJldHVybiBUUlVFOworfQorCitz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcihHdGtXaWRn
ZXQqIHdpZGdldCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGNvbnRleHRNZW51TWFyZ2luID0g
MTsKKworICAgIC8vIFRoZSBjb250ZXh0IG1lbnUgZXZlbnQgd2FzIGdlbmVyYXRlZCBmcm9tIHRo
ZSBrZXlib2FyZCwgc28gc2hvdyB0aGUgY29udGV4dCBtZW51IGJ5IHRoZSBjdXJyZW50IHNlbGVj
dGlvbi4KKyAgICBQYWdlKiBwYWdlID0gY29yZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSk7Cisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBQb3Np
dGlvbiBzdGFydCA9IHBhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNl
bGVjdGlvbigpLnN0YXJ0KCk7CisgICAgUG9zaXRpb24gZW5kID0gcGFnZS0+bWFpbkZyYW1lKCkt
PnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+c2VsZWN0aW9uKCkuZW5kKCk7CisKKyAgICBpbnQgcmln
aHRBbGlnbmVkID0gRkFMU0U7CisgICAgSW50UG9pbnQgbG9jYXRpb247CisKKyAgICBpZiAoIXN0
YXJ0Lm5vZGUoKSB8fCAhZW5kLm5vZGUoKSkKKyAgICAgICAgbG9jYXRpb24gPSBJbnRQb2ludChy
aWdodEFsaWduZWQgPyB2aWV3LT5jb250ZW50c1dpZHRoKCkgLSBjb250ZXh0TWVudU1hcmdpbiA6
IGNvbnRleHRNZW51TWFyZ2luLCBjb250ZXh0TWVudU1hcmdpbik7CisgICAgZWxzZSB7CisgICAg
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCk7Cisg
ICAgICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAg
ICAgLy8gQ2FsY3VsYXRlIHRoZSByZWN0IG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzZWxlY3Rp
b24gKGNyaWJiZWQgZnJvbSAtW1dlYkNvcmVGcmFtZUJyaWRnZSBmaXJzdFJlY3RGb3JET01SYW5n
ZTpdKS4KKyAgICAgICAgaW50IGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDA7CisgICAgICAgIElu
dFJlY3Qgc3RhcnRDYXJldFJlY3QgPSByZW5kZXJlci0+Y2FyZXRSZWN0KHN0YXJ0Lm9mZnNldCgp
LCBET1dOU1RSRUFNLCAmZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKyAgICAgICAgSW50UmVjdCBl
bmRDYXJldFJlY3QgPSByZW5kZXJlci0+Y2FyZXRSZWN0KGVuZC5vZmZzZXQoKSwgVVBTVFJFQU0p
OworCisgICAgICAgIEludFJlY3QgZmlyc3RSZWN0OworICAgICAgICBpZiAoc3RhcnRDYXJldFJl
Y3QueSgpID09IGVuZENhcmV0UmVjdC55KCkpCisgICAgICAgICAgICBmaXJzdFJlY3QgPSBJbnRS
ZWN0KE1JTihzdGFydENhcmV0UmVjdC54KCksIGVuZENhcmV0UmVjdC54KCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcmV0UmVjdC55KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFicyhlbmRDYXJldFJlY3QueCgpIC0gc3RhcnRDYXJldFJlY3Qu
eCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYKHN0YXJ0Q2FyZXRSZWN0
LmhlaWdodCgpLCBlbmRDYXJldFJlY3QuaGVpZ2h0KCkpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZmlyc3RSZWN0ID0gSW50UmVjdChzdGFydENhcmV0UmVjdC54KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FyZXRSZWN0LnkoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnRDYXJldFJlY3Qud2lkdGgoKSArIGV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXJldFJlY3Qu
aGVpZ2h0KCkpOworCisgICAgICAgIGxvY2F0aW9uID0gSW50UG9pbnQocmlnaHRBbGlnbmVkID8g
Zmlyc3RSZWN0LnJpZ2h0KCkgOiBmaXJzdFJlY3QueCgpLCBmaXJzdFJlY3QuYm90dG9tKCkpOwor
ICAgIH0KKworICAgIGludCB4LCB5OworICAgIGdka193aW5kb3dfZ2V0X29yaWdpbihHVEtfV0lE
R0VUKHZpZXctPmNvbnRhaW5pbmdXaW5kb3coKSktPndpbmRvdywgJngsICZ5KTsKKworICAgIC8v
IEZJWE1FOiBUaGUgSW50U2l6ZSgwLCAtMSkgaXMgYSBoYWNrIHRvIGdldCB0aGUgaGl0LXRlc3Rp
bmcgdG8gcmVzdWx0IGluIHRoZSBzZWxlY3RlZCBlbGVtZW50LgorICAgIC8vIElkZWFsbHkgd2Un
ZCBoYXZlIHRoZSBwb3NpdGlvbiBvZiBhIGNvbnRleHQgbWVudSBldmVudCBiZSBzZXBhcmF0ZSBm
cm9tIGl0cyB0YXJnZXQgbm9kZS4KKyAgICBsb2NhdGlvbiA9IHZpZXctPmNvbnRlbnRzVG9XaW5k
b3cobG9jYXRpb24pICsgSW50U2l6ZSgwLCAtMSk7CisgICAgSW50UG9pbnQgZ2xvYmFsID0gbG9j
YXRpb24gKyBJbnRTaXplKHgseSk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxvY2F0
aW9uLCBnbG9iYWwsIE5vQnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOworCisgICAgcmV0
dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VC
X1ZJRVcod2lkZ2V0KSwgZXZlbnQpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3Byb3BlcnR5KEdPYmplY3QgKm9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICp2YWx1
ZSwgR1BhcmFtU3BlYyAqcHNwZWMpIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKG9iamVjdCk7CiAKQEAgLTE4MCw3ICsyNzEsMTEgQEAKIAogICAgIC8vIEZJ
WE1FOiBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygc3ViZnJhbWUgZm9jdXMgZm9yIGtleSBldmVudHMK
ICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoR1RLX1dJREdFVCh3aWRnZXQpKTsKLSAgICByZXR1
cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoUGxhdGZvcm1N
b3VzZUV2ZW50KGV2ZW50KSk7CisKKyAgICBpZiAoZXZlbnQtPmJ1dHRvbiA9PSAzKQorICAgICAg
ICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdFQktJ
VF9XRUJfVklFVyh3aWRnZXQpLCBQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpKTsKKyAgICBlbHNl
CisgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NF
dmVudChQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfdmlld19idXR0b25fcmVsZWFzZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRCdXR0b24qIGV2ZW50KQpAQCAtODAzLDYgKzg5OCw3IEBACiAgICAgd2lkZ2V0Q2xhc3Mt
Pm1vdGlvbl9ub3RpZnlfZXZlbnQgPSB3ZWJraXRfd2ViX3ZpZXdfbW90aW9uX2V2ZW50OwogICAg
IHdpZGdldENsYXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRfd2ViX3ZpZXdfc2Nyb2xsX2V2ZW50
OwogICAgIHdpZGdldENsYXNzLT5zaXplX2FsbG9jYXRlID0gd2Via2l0X3dlYl92aWV3X3NpemVf
YWxsb2NhdGU7CisgICAgd2lkZ2V0Q2xhc3MtPnBvcHVwX21lbnUgPSB3ZWJraXRfd2ViX3ZpZXdf
cG9wdXBfbWVudV9oYW5kbGVyOwogCiAgICAgR3RrQ29udGFpbmVyQ2xhc3MqIGNvbnRhaW5lckNs
YXNzID0gR1RLX0NPTlRBSU5FUl9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAgIGNvbnRhaW5lckNs
YXNzLT5hZGQgPSB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2FkZDsKQEAgLTg4Niw2ICs5ODIs
NyBAQAogCiAgICAgR1RLX1dJREdFVF9TRVRfRkxBR1Mod2ViVmlldywgR1RLX0NBTl9GT0NVUyk7
CiAgICAgd2ViVmlld0RhdGEtPm1haW5GcmFtZSA9IFdFQktJVF9XRUJfRlJBTUUod2Via2l0X3dl
Yl9mcmFtZV9uZXcod2ViVmlldykpOworICAgIHdlYlZpZXdEYXRhLT5sYXN0UG9wdXBYUG9zaXRp
b24gPSB3ZWJWaWV3RGF0YS0+bGFzdFBvcHVwWVBvc2l0aW9uID0gLTE7CiAgICAgd2ViVmlld0Rh
dGEtPmVkaXRhYmxlID0gZmFsc2U7CiAKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLDEwLDApCklu
ZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0cHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9ndGsvV2ViVmlldy93ZWJraXRwcml2YXRlLmgJKHJldmlzaW9uIDI5MDM2KQorKysgV2Vi
S2l0L2d0ay9XZWJWaWV3L3dlYmtpdHByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsOSBAQAogICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50OwogICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHVzZXJBZ2VudDsKIAorICAgICAgICBnaW50
IGxhc3RQb3B1cFhQb3NpdGlvbjsKKyAgICAgICAgZ2ludCBsYXN0UG9wdXBZUG9zaXRpb247CisK
ICAgICAgICAgSGFzaFNldDxHdGtXaWRnZXQqPiBjaGlsZHJlbjsKICAgICAgICAgYm9vbCBlZGl0
YWJsZTsKICAgICAgICAgR3RrSU1Db250ZXh0KiBpbUNvbnRleHQ7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAJKHJldmlzaW9uIDI5MDM2KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUsMTUgKzE1LDIwIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVJdGVtLmgiCi0KKyNpbmNs
dWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAorI2luY2x1ZGUg
PGd0ay9ndGsuaD4KKworI2RlZmluZSBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTiAid2Via2l0
LWNvbnRleHQtbWVudSIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db250ZXh0TWVudUl0ZW06
OkNvbnRleHRNZW51SXRlbShQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24pCitDb250ZXh0TWVu
dUl0ZW06OkNvbnRleHRNZW51SXRlbShQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gaXRlbSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGdfb2JqZWN0X3JlZihtX3BsYXRmb3JtRGVz
Y3JpcHRpb24pOwogfQogCiBDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0
TWVudSopCkBAIC0zMSwyNiArMzYsNDcgQEAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1D
b250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlLCBDb250
ZXh0TWVudUFjdGlvbiwgY29uc3QgU3RyaW5nJiwgQ29udGV4dE1lbnUqKQorQ29udGV4dE1lbnVJ
dGVtOjpDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVu
dUFjdGlvbiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIENvbnRleHRNZW51KiBzdWJNZW51
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKHR5cGUgPT0gU2VwYXJhdG9yVHlw
ZSkgeworICAgICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBHVEtfTUVOVV9JVEVNKGd0a19z
ZXBhcmF0b3JfbWVudV9pdGVtX25ldygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3BsYXRm
b3JtRGVzY3JpcHRpb24gPSBHVEtfTUVOVV9JVEVNKGd0a19tZW51X2l0ZW1fbmV3X3dpdGhfbGFi
ZWwodGl0bGUudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBzZXRBY3Rpb24oYWN0aW9uKTsKKwor
ICAgICAgICBpZiAoc3ViTWVudSkKKyAgICAgICAgICAgIHNldFN1Yk1lbnUoc3ViTWVudSk7Cisg
ICAgfQorCisjaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsMTAsMCkKKyAgICBnX29iamVjdF9yZWZf
c2luayhHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pKTsKKyNlbHNlCisgICAgZ19vYmpl
Y3RfcmVmKEdfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOworICAgIGd0a19vYmplY3Rf
c2luayhHVEtfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOworI2VuZGlmCiB9CiAKIENv
bnRleHRNZW51SXRlbTo6fkNvbnRleHRNZW51SXRlbSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0aW9uKQorICAgICAgICBnX29iamVjdF91bnJl
ZihtX3BsYXRmb3JtRGVzY3JpcHRpb24pOwogfQogCiBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRp
b24gQ29udGV4dE1lbnVJdGVtOjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworICAg
IFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiBtZW51SXRlbSA9IG1fcGxhdGZvcm1EZXNjcmlw
dGlvbjsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSAwOworICAgIHJldHVybiBtZW51SXRl
bTsKIH0KIAogQ29udGV4dE1lbnVJdGVtVHlwZSBDb250ZXh0TWVudUl0ZW06OnR5cGUoKSBjb25z
dAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEFjdGlvblR5cGU7IAorICAg
IGlmIChHVEtfSVNfU0VQQVJBVE9SX01FTlVfSVRFTShtX3BsYXRmb3JtRGVzY3JpcHRpb24pKQor
ICAgICAgICByZXR1cm4gU2VwYXJhdG9yVHlwZTsKKyAgICBpZiAoZ3RrX21lbnVfaXRlbV9nZXRf
c3VibWVudShtX3BsYXRmb3JtRGVzY3JpcHRpb24pKQorICAgICAgICByZXR1cm4gU3VibWVudVR5
cGU7CisKKyAgICByZXR1cm4gQWN0aW9uVHlwZTsKIH0KIAogdm9pZCBDb250ZXh0TWVudUl0ZW06
OnNldFR5cGUoQ29udGV4dE1lbnVJdGVtVHlwZSkKQEAgLTYwLDEzICs4NiwxOCBAQAogCiBDb250
ZXh0TWVudUFjdGlvbiBDb250ZXh0TWVudUl0ZW06OmFjdGlvbigpIGNvbnN0CiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb247Cisg
ICAgQVNTRVJUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CisgICAgCisgICAgcmV0dXJuICpzdGF0
aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbio+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKG1f
cGxhdGZvcm1EZXNjcmlwdGlvbiksIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OKSk7CiB9CiAK
LXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRBY3Rpb24oQ29udGV4dE1lbnVBY3Rpb24pCit2b2lk
IENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChtX3BsYXRmb3JtRGVzY3JpcHRpb24p
OworCisgICAgQ29udGV4dE1lbnVBY3Rpb24qIG1lbnVBY3Rpb24gPSBzdGF0aWNfY2FzdDxDb250
ZXh0TWVudUFjdGlvbio+KG1hbGxvYyhzaXplb2YoQ29udGV4dE1lbnVBY3Rpb24qKSkpOworICAg
ICptZW51QWN0aW9uID0gYWN0aW9uOworICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKG1f
cGxhdGZvcm1EZXNjcmlwdGlvbiksIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OLCBtZW51QWN0
aW9uKTsKIH0KIAogU3RyaW5nIENvbnRleHRNZW51SXRlbTo6dGl0bGUoKSBjb25zdApAQCAtODIs
MjMgKzExMywyOSBAQAogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUl0ZW06
OnBsYXRmb3JtU3ViTWVudSgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gR1RLX01FTlUoZ3RrX21lbnVfaXRlbV9nZXRfc3VibWVudSht
X3BsYXRmb3JtRGVzY3JpcHRpb24pKTsKIH0KIAotdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFN1
Yk1lbnUoQ29udGV4dE1lbnUqKQordm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFN1Yk1lbnUoQ29u
dGV4dE1lbnUqIG1lbnUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBndGtfbWVudV9p
dGVtX3NldF9zdWJtZW51KG1fcGxhdGZvcm1EZXNjcmlwdGlvbiwgR1RLX1dJREdFVChtZW51LT5y
ZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpKSk7CiB9CiAKLXZvaWQgQ29udGV4dE1lbnVJdGVt
OjpzZXRDaGVja2VkKGJvb2wpCit2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29s
IHNob3VsZENoZWNrKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKHR5cGUo
KSA9PSBBY3Rpb25UeXBlKTsKKworICAgIGlmIChHVEtfSVNfQ0hFQ0tfTUVOVV9JVEVNKG1fcGxh
dGZvcm1EZXNjcmlwdGlvbikpIHsKKyAgICAgICAgZ3RrX2NoZWNrX21lbnVfaXRlbV9zZXRfYWN0
aXZlKEdUS19DSEVDS19NRU5VX0lURU0obV9wbGF0Zm9ybURlc2NyaXB0aW9uKSwgc2hvdWxkQ2hl
Y2spOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE5vdCBJbXBsZW1lbnRlZDogTmVlZCB0byBt
b3JwaCB0aGlzIGludG8gYSBHdGtDaGVja01lbnVJdGVtLi4uCisgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgfQogfQogCi12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0RW5hYmxlZChib29s
KQordm9pZCBDb250ZXh0TWVudUl0ZW06OnNldEVuYWJsZWQoYm9vbCBzaG91bGRFbmFibGUpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUoR1RL
X1dJREdFVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pLCBzaG91bGRFbmFibGUpOwogfQogCiB9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCShyZXZpc2lvbiAyOTAz
NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYsMzEgKzE2LDYwIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJDb250ZXh0TWVudS5oIgotCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgdm9pZCBtZW51SXRlbUFjdGl2YXRlZChHdGtNZW51
SXRlbSogaXRlbSwgQ29udGV4dE1lbnUqIG1lbnUpCit7CisgICAgQ29udGV4dE1lbnVJdGVtIGNv
bnRleHRJdGVtKGl0ZW0pOworICAgIG1lbnUtPmNvbnRyb2xsZXIoKS0+Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQoJmNvbnRleHRJdGVtKTsKK30KKwogQ29udGV4dE1lbnU6OkNvbnRleHRNZW51KGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICA6IG1faGl0VGVzdFJlc3VsdChyZXN1bHQp
Ci0gICAgLCBtX3BsYXRmb3JtRGVzY3JpcHRpb24oMCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IEdUS19NRU5VKGd0a19tZW51X25ldygpKTsK
KworI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLDEwLDApCisgICAgZ19vYmplY3RfcmVmX3Npbmso
R19PQkpFQ1QobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CisjZWxzZQorICAgIGdfb2JqZWN0X3Jl
ZihHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pKTsKKyAgICBndGtfb2JqZWN0X3Npbmso
R1RLX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pKTsKKyNlbmRpZgogfQogCiBDb250ZXh0
TWVudTo6fkNvbnRleHRNZW51KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICBpZiAobV9w
bGF0Zm9ybURlc2NyaXB0aW9uKQorICAgICAgZ19vYmplY3RfdW5yZWYobV9wbGF0Zm9ybURlc2Ny
aXB0aW9uKTsKIH0KIAotdm9pZCBDb250ZXh0TWVudTo6YXBwZW5kSXRlbShDb250ZXh0TWVudUl0
ZW0mKQordm9pZCBDb250ZXh0TWVudTo6YXBwZW5kSXRlbShDb250ZXh0TWVudUl0ZW0mIGl0ZW0p
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQobV9wbGF0Zm9ybURlc2NyaXB0
aW9uKTsKKyAgICBjaGVja09yRW5hYmxlSWZOZWVkZWQoaXRlbSk7CisKKyAgICBHdGtNZW51SXRl
bSogcGxhdGZvcm1JdGVtID0gaXRlbS5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAg
IEFTU0VSVChwbGF0Zm9ybUl0ZW0pOworCisgICAgZ19zaWduYWxfY29ubmVjdChwbGF0Zm9ybUl0
ZW0sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0sobWVudUl0ZW1BY3RpdmF0ZWQpLCB0aGlzKTsKKyAg
ICBndGtfbWVudV9zaGVsbF9hcHBlbmQoR1RLX01FTlVfU0hFTEwobV9wbGF0Zm9ybURlc2NyaXB0
aW9uKSwgR1RLX1dJREdFVChwbGF0Zm9ybUl0ZW0pKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RL
X1dJREdFVChwbGF0Zm9ybUl0ZW0pKTsKKyAgICBnX29iamVjdF91bnJlZihwbGF0Zm9ybUl0ZW0p
OwogfQogCiB2b2lkIENvbnRleHRNZW51OjpzZXRQbGF0Zm9ybURlc2NyaXB0aW9uKFBsYXRmb3Jt
TWVudURlc2NyaXB0aW9uIG1lbnUpCiB7CisgICAgQVNTRVJUKG1lbnUpOworICAgIGlmIChtX3Bs
YXRmb3JtRGVzY3JpcHRpb24pCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fcGxhdGZvcm1EZXNj
cmlwdGlvbik7CisKICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBtZW51OworICAgIC8vZ19v
YmplY3RfcmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CiB9CiAKIFBsYXRmb3JtTWVudURlc2Ny
aXB0aW9uIENvbnRleHRNZW51OjpwbGF0Zm9ybURlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTUwLDgg
Kzc5LDEwIEBACiAKIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51OjpyZWxlYXNl
UGxhdGZvcm1EZXNjcmlwdGlvbigpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsgCi0gICAgcmV0
dXJuIDA7CisgICAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSBtX3BsYXRm
b3JtRGVzY3JpcHRpb247CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gMDsKKworICAgIHJl
dHVybiBkZXNjcmlwdGlvbjsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18187</attachid>
            <date>2007-12-30 02:49:12 -0800</date>
            <delta_ts>2008-01-02 09:28:47 -0800</delta_ts>
            <desc>base of context menu</desc>
            <filename>menu.patch</filename>
            <type>text/plain</type>
            <size>14001</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiAyOTAzNikKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q29udGV4dE1lbnVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAj
aW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRHdGsuaCIKIAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1
bHQuaCIKQEAgLTMwLDEwICszMSw5IEBACiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVBsYXRmb3Jt
TWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1
bHRJdGVtcyhDb250ZXh0TWVudSopCitQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVu
dUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqIG1lbnUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUGxhdGZvcm1NZW51RGVzY3Jp
cHRpb24oKTsKKyAgICByZXR1cm4gbWVudS0+cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsK
IH0KIAogdm9pZCBDb250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29u
dGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKQpJbmRleDogV2ViS2l0L2d0ay9XZWJW
aWV3L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93
ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMjkwMzYpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcv
d2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDEwIEBACiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50R3RrLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJD
b250ZXh0TWVudUNsaWVudEd0ay5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5o
IgorI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIKICNpbmNs
dWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRHdGsuaCIKQEAgLTg4LDYgKzkx
LDk0IEBACiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBH
VEtfVFlQRV9DT05UQUlORVIpCiAKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jb250ZXh0
X21lbnVfcG9zaXRpb25fZnVuYyhHdGtNZW51KiwgZ2ludCogeCwgZ2ludCogeSwgZ2Jvb2xlYW4q
IHB1c2hJbiwgV2ViS2l0V2ViVmlld1ByaXZhdGUqIGRhdGEpCit7CisgICAgKnB1c2hJbiA9IEZB
TFNFOworICAgICp4ID0gZGF0YS0+bGFzdFBvcHVwWFBvc2l0aW9uOworICAgICp5ID0gZGF0YS0+
bGFzdFBvcHVwWVBvc2l0aW9uOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3
X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIGd0a1BhZ2UsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBjb250
ZXh0TWVudU1hcmdpbiA9IDE7CisKKyAgICBQYWdlKiBwYWdlID0gY29yZShndGtQYWdlKTsKKyAg
ICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOworICAg
IEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7CisgICAgZm9jdXNlZEZyYW1lLT52aWV3KCktPnNldEN1cnNvcihwb2ludGVy
Q3Vyc29yKCkpOworICAgIGJvb2wgaGFuZGxlZEV2ZW50ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQoZXZlbnQpOworICAgIGlmICghaGFuZGxlZEV2
ZW50KQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBDb250ZXh0TWVudSogY29yZU1lbnUg
PSBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y29udGV4dE1lbnUoKTsKKyAgICBpZiAo
IWNvcmVNZW51KQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoIWNvcmVNZW51LT5w
bGF0Zm9ybURlc2NyaXB0aW9uKCkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworCisgICAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUqIHBhZ2VEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRF
KGd0a1BhZ2UpOworICAgIHBhZ2VEYXRhLT5sYXN0UG9wdXBYUG9zaXRpb24gPSBldmVudC5nbG9i
YWxYKCk7CisgICAgcGFnZURhdGEtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFko
KTsKKyAgICBndGtfbWVudV9wb3B1cChHVEtfTUVOVShjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlw
dGlvbigpKSwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PEd0a01lbnVQb3NpdGlvbkZ1bmM+KHdlYmtpdF93ZWJfdmlld19jb250ZXh0X21lbnVfcG9zaXRp
b25fZnVuYyksIHBhZ2VEYXRhLAorICAgICAgICAgICAgICAgICAgIGV2ZW50LmJ1dHRvbigpKzEs
IGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOworICAgIHJldHVybiBUUlVFOworfQorCitz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcihHdGtXaWRn
ZXQqIHdpZGdldCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGNvbnRleHRNZW51TWFyZ2luID0g
MTsKKworICAgIC8vIFRoZSBjb250ZXh0IG1lbnUgZXZlbnQgd2FzIGdlbmVyYXRlZCBmcm9tIHRo
ZSBrZXlib2FyZCwgc28gc2hvdyB0aGUgY29udGV4dCBtZW51IGJ5IHRoZSBjdXJyZW50IHNlbGVj
dGlvbi4KKyAgICBQYWdlKiBwYWdlID0gY29yZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSk7Cisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBQb3Np
dGlvbiBzdGFydCA9IHBhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNl
bGVjdGlvbigpLnN0YXJ0KCk7CisgICAgUG9zaXRpb24gZW5kID0gcGFnZS0+bWFpbkZyYW1lKCkt
PnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+c2VsZWN0aW9uKCkuZW5kKCk7CisKKyAgICBpbnQgcmln
aHRBbGlnbmVkID0gRkFMU0U7CisgICAgSW50UG9pbnQgbG9jYXRpb247CisKKyAgICBpZiAoIXN0
YXJ0Lm5vZGUoKSB8fCAhZW5kLm5vZGUoKSkKKyAgICAgICAgbG9jYXRpb24gPSBJbnRQb2ludChy
aWdodEFsaWduZWQgPyB2aWV3LT5jb250ZW50c1dpZHRoKCkgLSBjb250ZXh0TWVudU1hcmdpbiA6
IGNvbnRleHRNZW51TWFyZ2luLCBjb250ZXh0TWVudU1hcmdpbik7CisgICAgZWxzZSB7CisgICAg
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCk7Cisg
ICAgICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAg
ICAgLy8gQ2FsY3VsYXRlIHRoZSByZWN0IG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzZWxlY3Rp
b24gKGNyaWJiZWQgZnJvbSAtW1dlYkNvcmVGcmFtZUJyaWRnZSBmaXJzdFJlY3RGb3JET01SYW5n
ZTpdKS4KKyAgICAgICAgaW50IGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDA7CisgICAgICAgIElu
dFJlY3Qgc3RhcnRDYXJldFJlY3QgPSByZW5kZXJlci0+Y2FyZXRSZWN0KHN0YXJ0Lm9mZnNldCgp
LCBET1dOU1RSRUFNLCAmZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKyAgICAgICAgSW50UmVjdCBl
bmRDYXJldFJlY3QgPSByZW5kZXJlci0+Y2FyZXRSZWN0KGVuZC5vZmZzZXQoKSwgVVBTVFJFQU0p
OworCisgICAgICAgIEludFJlY3QgZmlyc3RSZWN0OworICAgICAgICBpZiAoc3RhcnRDYXJldFJl
Y3QueSgpID09IGVuZENhcmV0UmVjdC55KCkpCisgICAgICAgICAgICBmaXJzdFJlY3QgPSBJbnRS
ZWN0KE1JTihzdGFydENhcmV0UmVjdC54KCksIGVuZENhcmV0UmVjdC54KCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcmV0UmVjdC55KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFicyhlbmRDYXJldFJlY3QueCgpIC0gc3RhcnRDYXJldFJlY3Qu
eCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYKHN0YXJ0Q2FyZXRSZWN0
LmhlaWdodCgpLCBlbmRDYXJldFJlY3QuaGVpZ2h0KCkpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZmlyc3RSZWN0ID0gSW50UmVjdChzdGFydENhcmV0UmVjdC54KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FyZXRSZWN0LnkoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnRDYXJldFJlY3Qud2lkdGgoKSArIGV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXJldFJlY3Qu
aGVpZ2h0KCkpOworCisgICAgICAgIGxvY2F0aW9uID0gSW50UG9pbnQocmlnaHRBbGlnbmVkID8g
Zmlyc3RSZWN0LnJpZ2h0KCkgOiBmaXJzdFJlY3QueCgpLCBmaXJzdFJlY3QuYm90dG9tKCkpOwor
ICAgIH0KKworICAgIGludCB4LCB5OworICAgIGdka193aW5kb3dfZ2V0X29yaWdpbihHVEtfV0lE
R0VUKHZpZXctPmNvbnRhaW5pbmdXaW5kb3coKSktPndpbmRvdywgJngsICZ5KTsKKworICAgIC8v
IEZJWE1FOiBUaGUgSW50U2l6ZSgwLCAtMSkgaXMgYSBoYWNrIHRvIGdldCB0aGUgaGl0LXRlc3Rp
bmcgdG8gcmVzdWx0IGluIHRoZSBzZWxlY3RlZCBlbGVtZW50LgorICAgIC8vIElkZWFsbHkgd2Un
ZCBoYXZlIHRoZSBwb3NpdGlvbiBvZiBhIGNvbnRleHQgbWVudSBldmVudCBiZSBzZXBhcmF0ZSBm
cm9tIGl0cyB0YXJnZXQgbm9kZS4KKyAgICBsb2NhdGlvbiA9IHZpZXctPmNvbnRlbnRzVG9XaW5k
b3cobG9jYXRpb24pICsgSW50U2l6ZSgwLCAtMSk7CisgICAgSW50UG9pbnQgZ2xvYmFsID0gbG9j
YXRpb24gKyBJbnRTaXplKHgseSk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxvY2F0
aW9uLCBnbG9iYWwsIE5vQnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOworCisgICAgcmV0
dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VC
X1ZJRVcod2lkZ2V0KSwgZXZlbnQpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3Byb3BlcnR5KEdPYmplY3QgKm9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICp2YWx1
ZSwgR1BhcmFtU3BlYyAqcHNwZWMpIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKG9iamVjdCk7CiAKQEAgLTE4MCw3ICsyNzEsMTEgQEAKIAogICAgIC8vIEZJ
WE1FOiBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygc3ViZnJhbWUgZm9jdXMgZm9yIGtleSBldmVudHMK
ICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoR1RLX1dJREdFVCh3aWRnZXQpKTsKLSAgICByZXR1
cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoUGxhdGZvcm1N
b3VzZUV2ZW50KGV2ZW50KSk7CisKKyAgICBpZiAoZXZlbnQtPmJ1dHRvbiA9PSAzKQorICAgICAg
ICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdFQktJ
VF9XRUJfVklFVyh3aWRnZXQpLCBQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpKTsKKyAgICBlbHNl
CisgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NF
dmVudChQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfdmlld19idXR0b25fcmVsZWFzZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRCdXR0b24qIGV2ZW50KQpAQCAtODAzLDYgKzg5OCw3IEBACiAgICAgd2lkZ2V0Q2xhc3Mt
Pm1vdGlvbl9ub3RpZnlfZXZlbnQgPSB3ZWJraXRfd2ViX3ZpZXdfbW90aW9uX2V2ZW50OwogICAg
IHdpZGdldENsYXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRfd2ViX3ZpZXdfc2Nyb2xsX2V2ZW50
OwogICAgIHdpZGdldENsYXNzLT5zaXplX2FsbG9jYXRlID0gd2Via2l0X3dlYl92aWV3X3NpemVf
YWxsb2NhdGU7CisgICAgd2lkZ2V0Q2xhc3MtPnBvcHVwX21lbnUgPSB3ZWJraXRfd2ViX3ZpZXdf
cG9wdXBfbWVudV9oYW5kbGVyOwogCiAgICAgR3RrQ29udGFpbmVyQ2xhc3MqIGNvbnRhaW5lckNs
YXNzID0gR1RLX0NPTlRBSU5FUl9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAgIGNvbnRhaW5lckNs
YXNzLT5hZGQgPSB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2FkZDsKQEAgLTg4Niw2ICs5ODIs
NyBAQAogCiAgICAgR1RLX1dJREdFVF9TRVRfRkxBR1Mod2ViVmlldywgR1RLX0NBTl9GT0NVUyk7
CiAgICAgd2ViVmlld0RhdGEtPm1haW5GcmFtZSA9IFdFQktJVF9XRUJfRlJBTUUod2Via2l0X3dl
Yl9mcmFtZV9uZXcod2ViVmlldykpOworICAgIHdlYlZpZXdEYXRhLT5sYXN0UG9wdXBYUG9zaXRp
b24gPSB3ZWJWaWV3RGF0YS0+bGFzdFBvcHVwWVBvc2l0aW9uID0gLTE7CiAgICAgd2ViVmlld0Rh
dGEtPmVkaXRhYmxlID0gZmFsc2U7CiAKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLDEwLDApCklu
ZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0cHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9ndGsvV2ViVmlldy93ZWJraXRwcml2YXRlLmgJKHJldmlzaW9uIDI5MDM2KQorKysgV2Vi
S2l0L2d0ay9XZWJWaWV3L3dlYmtpdHByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsOSBAQAogICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50OwogICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHVzZXJBZ2VudDsKIAorICAgICAgICBnaW50
IGxhc3RQb3B1cFhQb3NpdGlvbjsKKyAgICAgICAgZ2ludCBsYXN0UG9wdXBZUG9zaXRpb247CisK
ICAgICAgICAgSGFzaFNldDxHdGtXaWRnZXQqPiBjaGlsZHJlbjsKICAgICAgICAgYm9vbCBlZGl0
YWJsZTsKICAgICAgICAgR3RrSU1Db250ZXh0KiBpbUNvbnRleHQ7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAJKHJldmlzaW9uIDI5MDM2KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUsMTUgKzE1LDIxIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVJdGVtLmgiCi0KKyNpbmNs
dWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAorI2luY2x1ZGUg
PGd0ay9ndGsuaD4KKworI2RlZmluZSBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTiAid2Via2l0
LWNvbnRleHQtbWVudSIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db250ZXh0TWVudUl0ZW06
OkNvbnRleHRNZW51SXRlbShQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24pCitDb250ZXh0TWVu
dUl0ZW06OkNvbnRleHRNZW51SXRlbShQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gaXRlbSkK
KyAgICA6IG1fcGxhdGZvcm1EZXNjcmlwdGlvbihpdGVtKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgZ19vYmplY3RfcmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CiB9CiAKIENvbnRl
eHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51KikKQEAgLTMxLDI2ICszNyw0
OCBAQAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUNvbnRleHRNZW51SXRlbTo6Q29udGV4
dE1lbnVJdGVtKENvbnRleHRNZW51SXRlbVR5cGUsIENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBT
dHJpbmcmLCBDb250ZXh0TWVudSopCitDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShD
b250ZXh0TWVudUl0ZW1UeXBlIHR5cGUsIENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgQ29udGV4dE1lbnUqIHN1Yk1lbnUpCisgICAgOiBtX3BsYXRmb3JtRGVz
Y3JpcHRpb24oMCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICh0eXBlID09IFNl
cGFyYXRvclR5cGUpIHsKKyAgICAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gR1RLX01FTlVf
SVRFTShndGtfc2VwYXJhdG9yX21lbnVfaXRlbV9uZXcoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gR1RLX01FTlVfSVRFTShndGtfbWVudV9pdGVtX25l
d193aXRoX2xhYmVsKHRpdGxlLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgc2V0QWN0aW9uKGFj
dGlvbik7CisKKyAgICAgICAgaWYgKHN1Yk1lbnUpCisgICAgICAgICAgICBzZXRTdWJNZW51KHN1
Yk1lbnUpOworICAgIH0KKworI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLDEwLDApCisgICAgZ19v
YmplY3RfcmVmX3NpbmsoR19PQkpFQ1QobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CisjZWxzZQor
ICAgIGdfb2JqZWN0X3JlZihHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pKTsKKyAgICBn
dGtfb2JqZWN0X3NpbmsoR1RLX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pKTsKKyNlbmRp
ZgogfQogCiBDb250ZXh0TWVudUl0ZW06On5Db250ZXh0TWVudUl0ZW0oKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgaWYgKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikKKyAgICAgICAgZ19v
YmplY3RfdW5yZWYobV9wbGF0Zm9ybURlc2NyaXB0aW9uKTsKIH0KIAogUGxhdGZvcm1NZW51SXRl
bURlc2NyaXB0aW9uIENvbnRleHRNZW51SXRlbTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24o
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlw
dGlvbjsKKyAgICBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gbWVudUl0ZW0gPSBtX3BsYXRm
b3JtRGVzY3JpcHRpb247CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gMDsKKyAgICByZXR1
cm4gbWVudUl0ZW07CiB9CiAKIENvbnRleHRNZW51SXRlbVR5cGUgQ29udGV4dE1lbnVJdGVtOjp0
eXBlKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBBY3Rpb25U
eXBlOyAKKyAgICBpZiAoR1RLX0lTX1NFUEFSQVRPUl9NRU5VX0lURU0obV9wbGF0Zm9ybURlc2Ny
aXB0aW9uKSkKKyAgICAgICAgcmV0dXJuIFNlcGFyYXRvclR5cGU7CisgICAgaWYgKGd0a19tZW51
X2l0ZW1fZ2V0X3N1Ym1lbnUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSkKKyAgICAgICAgcmV0dXJu
IFN1Ym1lbnVUeXBlOworCisgICAgcmV0dXJuIEFjdGlvblR5cGU7CiB9CiAKIHZvaWQgQ29udGV4
dE1lbnVJdGVtOjpzZXRUeXBlKENvbnRleHRNZW51SXRlbVR5cGUpCkBAIC02MCwxMyArODgsMTgg
QEAKIAogQ29udGV4dE1lbnVBY3Rpb24gQ29udGV4dE1lbnVJdGVtOjphY3Rpb24oKSBjb25zdAog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIENvbnRleHRNZW51SXRlbVRhZ05v
QWN0aW9uOworICAgIEFTU0VSVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pOworICAgIAorICAgIHJl
dHVybiAqc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24qPihnX29iamVjdF9nZXRfZGF0YShH
X09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElP
TikpOwogfQogCi12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENvbnRleHRNZW51QWN0
aW9uKQordm9pZCBDb250ZXh0TWVudUl0ZW06OnNldEFjdGlvbihDb250ZXh0TWVudUFjdGlvbiBh
Y3Rpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQobV9wbGF0Zm9ybURl
c2NyaXB0aW9uKTsKKworICAgIENvbnRleHRNZW51QWN0aW9uKiBtZW51QWN0aW9uID0gc3RhdGlj
X2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24qPihtYWxsb2Moc2l6ZW9mKENvbnRleHRNZW51QWN0aW9u
KikpKTsKKyAgICAqbWVudUFjdGlvbiA9IGFjdGlvbjsKKyAgICBnX29iamVjdF9zZXRfZGF0YShH
X09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElP
TiwgbWVudUFjdGlvbik7CiB9CiAKIFN0cmluZyBDb250ZXh0TWVudUl0ZW06OnRpdGxlKCkgY29u
c3QKQEAgLTgyLDIzICsxMTUsMjkgQEAKIAogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4
dE1lbnVJdGVtOjpwbGF0Zm9ybVN1Yk1lbnUoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEdUS19NRU5VKGd0a19tZW51X2l0ZW1fZ2V0
X3N1Ym1lbnUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CiB9CiAKLXZvaWQgQ29udGV4dE1lbnVJ
dGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KikKK3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRT
dWJNZW51KENvbnRleHRNZW51KiBtZW51KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
Z3RrX21lbnVfaXRlbV9zZXRfc3VibWVudShtX3BsYXRmb3JtRGVzY3JpcHRpb24sIEdUS19XSURH
RVQobWVudS0+cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKSkpOwogfQogCi12b2lkIENvbnRl
eHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29sKQordm9pZCBDb250ZXh0TWVudUl0ZW06OnNldENo
ZWNrZWQoYm9vbCBzaG91bGRDaGVjaykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFT
U0VSVCh0eXBlKCkgPT0gQWN0aW9uVHlwZSk7CisKKyAgICBpZiAoR1RLX0lTX0NIRUNLX01FTlVf
SVRFTShtX3BsYXRmb3JtRGVzY3JpcHRpb24pKSB7CisgICAgICAgIGd0a19jaGVja19tZW51X2l0
ZW1fc2V0X2FjdGl2ZShHVEtfQ0hFQ0tfTUVOVV9JVEVNKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiks
IHNob3VsZENoZWNrKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBOb3QgSW1wbGVtZW50ZWQ6
IE5lZWQgdG8gbW9ycGggdGhpcyBpbnRvIGEgR3RrQ2hlY2tNZW51SXRlbS4uLgorICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIH0KIH0KIAotdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldEVu
YWJsZWQoYm9vbCkKK3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRFbmFibGVkKGJvb2wgc2hvdWxk
RW5hYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZ3RrX3dpZGdldF9zZXRfc2Vu
c2l0aXZlKEdUS19XSURHRVQobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSwgc2hvdWxkRW5hYmxlKTsK
IH0KIAogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcAkocmV2
aXNpb24gMjkwMzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2LDMxICsxNiw2MCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKLQorI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKKyNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIHZvaWQgbWVudUl0ZW1BY3RpdmF0
ZWQoR3RrTWVudUl0ZW0qIGl0ZW0sIENvbnRleHRNZW51KiBtZW51KQoreworICAgIENvbnRleHRN
ZW51SXRlbSBjb250ZXh0SXRlbShpdGVtKTsKKyAgICBtZW51LT5jb250cm9sbGVyKCktPmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKCZjb250ZXh0SXRlbSk7Cit9CisKIENvbnRleHRNZW51OjpDb250
ZXh0TWVudShjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgOiBtX2hpdFRlc3RSZXN1
bHQocmVzdWx0KQotICAgICwgbV9wbGF0Zm9ybURlc2NyaXB0aW9uKDApCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBHVEtfTUVOVShndGtfbWVu
dV9uZXcoKSk7CisKKyNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwxMCwwKQorICAgIGdfb2JqZWN0
X3JlZl9zaW5rKEdfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOworI2Vsc2UKKyAgICBn
X29iamVjdF9yZWYoR19PQkpFQ1QobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CisgICAgZ3RrX29i
amVjdF9zaW5rKEdUS19PQkpFQ1QobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CisjZW5kaWYKIH0K
IAogQ29udGV4dE1lbnU6On5Db250ZXh0TWVudSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgaWYgKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikKKyAgICAgIGdfb2JqZWN0X3VucmVmKG1fcGxh
dGZvcm1EZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQgQ29udGV4dE1lbnU6OmFwcGVuZEl0ZW0oQ29u
dGV4dE1lbnVJdGVtJikKK3ZvaWQgQ29udGV4dE1lbnU6OmFwcGVuZEl0ZW0oQ29udGV4dE1lbnVJ
dGVtJiBpdGVtKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKG1fcGxhdGZv
cm1EZXNjcmlwdGlvbik7CisgICAgY2hlY2tPckVuYWJsZUlmTmVlZGVkKGl0ZW0pOworCisgICAg
R3RrTWVudUl0ZW0qIHBsYXRmb3JtSXRlbSA9IGl0ZW0ucmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRp
b24oKTsKKyAgICBBU1NFUlQocGxhdGZvcm1JdGVtKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
cGxhdGZvcm1JdGVtLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKG1lbnVJdGVtQWN0aXZhdGVkKSwg
dGhpcyk7CisgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kKEdUS19NRU5VX1NIRUxMKG1fcGxhdGZv
cm1EZXNjcmlwdGlvbiksIEdUS19XSURHRVQocGxhdGZvcm1JdGVtKSk7CisgICAgZ3RrX3dpZGdl
dF9zaG93KEdUS19XSURHRVQocGxhdGZvcm1JdGVtKSk7CisgICAgZ19vYmplY3RfdW5yZWYocGxh
dGZvcm1JdGVtKTsKIH0KIAogdm9pZCBDb250ZXh0TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlv
bihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51KQogeworICAgIEFTU0VSVChtZW51KTsKKyAg
ICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0aW9uKQorICAgICAgICBnX29iamVjdF91bnJlZihtX3Bs
YXRmb3JtRGVzY3JpcHRpb24pOworCiAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gbWVudTsK
KyAgICAvL2dfb2JqZWN0X3JlZihtX3BsYXRmb3JtRGVzY3JpcHRpb24pOwogfQogCiBQbGF0Zm9y
bU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudTo6cGxhdGZvcm1EZXNjcmlwdGlvbigpIGNvbnN0
CkBAIC01MCw4ICs3OSwxMCBAQAogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVu
dTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
IAotICAgIHJldHVybiAwOworICAgIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIGRlc2NyaXB0aW9u
ID0gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IDA7
CisKKyAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKIH0K
</data>
<flag name="review"
          id="7906"
          type_id="1"
          status="+"
          setter="alp"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18240</attachid>
            <date>2008-01-02 09:28:47 -0800</date>
            <delta_ts>2008-01-03 03:28:12 -0800</delta_ts>
            <desc>Create the GtkMenuItem on the fly.</desc>
            <filename>gtk-context-menu-on-the-fly.patch</filename>
            <type>text/plain</type>
            <size>9158</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCmluZGV4IGFmMTBlZGIuLjI0Njk0MDMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaApAQCAtMTQ0LDcgKzE0NCwyMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgZW5hYmxlZDsKICAgICB9OwogI2VsaWYgUExBVEZPUk0o
R1RLKQotICAgIHR5cGVkZWYgR3RrTWVudUl0ZW0qIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlv
bjsKKyAgICBzdHJ1Y3QgUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIHsKKyAgICAgICAgUGxh
dGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKCkKKyAgICAgICAgICAgIDogdHlwZShBY3Rpb25UeXBl
KQorICAgICAgICAgICAgLCBhY3Rpb24oQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pCisgICAg
ICAgICAgICAsIHN1Yk1lbnUoMCkKKyAgICAgICAgICAgICwgY2hlY2tlZChmYWxzZSkKKyAgICAg
ICAgICAgICwgZW5hYmxlZCh0cnVlKQorICAgICAgICB7fQorCisgICAgICAgIENvbnRleHRNZW51
SXRlbVR5cGUgdHlwZTsKKyAgICAgICAgQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uOworICAgICAg
ICBTdHJpbmcgdGl0bGU7CisgICAgICAgIEd0a01lbnUqIHN1Yk1lbnU7CisgICAgICAgIGJvb2wg
Y2hlY2tlZDsKKyAgICAgICAgYm9vbCBlbmFibGVkOworICAgIH07CiAjZWxpZiBQTEFURk9STShX
WCkKICAgICB0eXBlZGVmIHd4TWVudUl0ZW0qIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbjsK
ICNlbmRpZgpAQCAtMTU0LDYgKzE2OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Q29udGV4dE1lbnVJdGVtKFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbik7CiAgICAgICAgIENv
bnRleHRNZW51SXRlbShDb250ZXh0TWVudSogc3ViTWVudSA9IDApOwogICAgICAgICBDb250ZXh0
TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIENvbnRleHRNZW51KiBzdWJNZW51ID0gMCk7CisjaWYg
UExBVEZPUk0oR1RLKQorICAgICAgICBDb250ZXh0TWVudUl0ZW0oR3RrTWVudUl0ZW0qKTsKKyNl
bmRpZgogICAgICAgICB+Q29udGV4dE1lbnVJdGVtKCk7CiAKICAgICAgICAgUGxhdGZvcm1NZW51
SXRlbURlc2NyaXB0aW9uIHJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCk7CkBAIC0xNzYsNiAr
MTk0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGVuYWJsZWQoKSBjb25z
dDsKIAogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBhIGtleWJvYXJkIGFjY2VsZXJhdG9y
IGhlcmU/CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBzdGF0aWMgR3RrTWVudUl0ZW0qIGNy
ZWF0ZU5hdGl2ZU1lbnVJdGVtKGNvbnN0IFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiYpOwor
I2VuZGlmCiAKICAgICBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0NvbnRleHRNZW51R3RrLmNwcAppbmRleCBmMmVhYmU3Li4wZjM1NDVkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gVE9ETzogT24tdGhlLWZseSBtZW51IGl0ZW0gY3JlYXRpb24g
YW5kIHJlZi1jb3VudGluZyBjb3JyZWN0bmVzcyBjaGVja2luZy4KKy8vIFRPRE86IHJlZi1jb3Vu
dGluZyBjb3JyZWN0bmVzcyBjaGVja2luZy4KIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjExNQogCiBzdGF0aWMgdm9pZCBtZW51SXRlbUFjdGl2YXRlZChH
dGtNZW51SXRlbSogaXRlbSwgQ29udGV4dE1lbnUqIG1lbnUpCkBAIC01OCwxMyArNTgsMTIgQEAg
dm9pZCBDb250ZXh0TWVudTo6YXBwZW5kSXRlbShDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCiAgICAg
QVNTRVJUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CiAgICAgY2hlY2tPckVuYWJsZUlmTmVlZGVk
KGl0ZW0pOwogCi0gICAgR3RrTWVudUl0ZW0qIHBsYXRmb3JtSXRlbSA9IGl0ZW0ucmVsZWFzZVBs
YXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICBHdGtNZW51SXRlbSogcGxhdGZvcm1JdGVtID0gQ29u
dGV4dE1lbnVJdGVtOjpjcmVhdGVOYXRpdmVNZW51SXRlbShpdGVtLnJlbGVhc2VQbGF0Zm9ybURl
c2NyaXB0aW9uKCkpOwogICAgIEFTU0VSVChwbGF0Zm9ybUl0ZW0pOwogCiAgICAgZ19zaWduYWxf
Y29ubmVjdChwbGF0Zm9ybUl0ZW0sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0sobWVudUl0ZW1BY3Rp
dmF0ZWQpLCB0aGlzKTsKICAgICBndGtfbWVudV9zaGVsbF9hcHBlbmQoR1RLX01FTlVfU0hFTEwo
bV9wbGF0Zm9ybURlc2NyaXB0aW9uKSwgR1RLX1dJREdFVChwbGF0Zm9ybUl0ZW0pKTsKICAgICBn
dGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChwbGF0Zm9ybUl0ZW0pKTsKLSAgICBnX29iamVjdF91
bnJlZihwbGF0Zm9ybUl0ZW0pOwogfQogCiB2b2lkIENvbnRleHRNZW51OjpzZXRQbGF0Zm9ybURl
c2NyaXB0aW9uKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1lbnUpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAppbmRleCA2YzQ5NGQ2Li44NjY2MTQ5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAKQEAgLTI4LDEwICsy
OCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNvbnRleHRNZW51SXRlbTo6Q29udGV4
dE1lbnVJdGVtKFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiBpdGVtKQotICAgIDogbV9wbGF0
Zm9ybURlc2NyaXB0aW9uKGl0ZW0pCisvLyBFeHRyYWN0IHRoZSBBY3Rpb25UeXBlIGZyb20gdGhl
IG1lbnUgaXRlbQorQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oR3RrTWVudUl0ZW0q
IGl0ZW0pCisgICAgOiBtX3BsYXRmb3JtRGVzY3JpcHRpb24oKQogewotICAgIGdfb2JqZWN0X3Jl
ZihtX3BsYXRmb3JtRGVzY3JpcHRpb24pOworICAgIGlmIChHVEtfSVNfU0VQQVJBVE9SX01FTlVf
SVRFTShpdGVtKSkKKyAgICAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnR5cGUgPSBTZXBhcmF0
b3JUeXBlOworICAgIGVsc2UgaWYgKGd0a19tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbSkpCisg
ICAgICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi50eXBlID0gU3VibWVudVR5cGU7CisgICAgZWxz
ZQorICAgICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24udHlwZSA9IEFjdGlvblR5cGU7CisKKyAg
ICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uYWN0aW9uID0gKnN0YXRpY19jYXN0PENvbnRleHRNZW51
QWN0aW9uKj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoaXRlbSksIFdFQktJVF9DT05URVhU
X01FTlVfQUNUSU9OKSk7CisKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uc3ViTWVudSA9IEdU
S19NRU5VKGd0a19tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbSkpOworICAgIGlmIChtX3BsYXRm
b3JtRGVzY3JpcHRpb24uc3ViTWVudSkKKyAgICAgICAgZ19vYmplY3RfcmVmKG1fcGxhdGZvcm1E
ZXNjcmlwdGlvbi5zdWJNZW51KTsKIH0KIAogQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0
ZW0oQ29udGV4dE1lbnUqKQpAQCAtNDAsNjkgKzUyLDY5IEBAIENvbnRleHRNZW51SXRlbTo6Q29u
dGV4dE1lbnVJdGVtKENvbnRleHRNZW51KikKIH0KIAogQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0
TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIENvbnRleHRNZW51KiBzdWJNZW51KQotICAgIDogbV9w
bGF0Zm9ybURlc2NyaXB0aW9uKDApCiB7Ci0gICAgaWYgKHR5cGUgPT0gU2VwYXJhdG9yVHlwZSkg
ewotICAgICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBHVEtfTUVOVV9JVEVNKGd0a19zZXBh
cmF0b3JfbWVudV9pdGVtX25ldygpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX3BsYXRmb3Jt
RGVzY3JpcHRpb24gPSBHVEtfTUVOVV9JVEVNKGd0a19tZW51X2l0ZW1fbmV3X3dpdGhfbGFiZWwo
dGl0bGUudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICBzZXRBY3Rpb24oYWN0aW9uKTsKLQotICAg
ICAgICBpZiAoc3ViTWVudSkKLSAgICAgICAgICAgIHNldFN1Yk1lbnUoc3ViTWVudSk7Ci0gICAg
fQotCi0jaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsMTAsMCkKLSAgICBnX29iamVjdF9yZWZfc2lu
ayhHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pKTsKLSNlbHNlCi0gICAgZ19vYmplY3Rf
cmVmKEdfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOwotICAgIGd0a19vYmplY3Rfc2lu
ayhHVEtfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOwotI2VuZGlmCisgICAgbV9wbGF0
Zm9ybURlc2NyaXB0aW9uLnR5cGUgPSB0eXBlOworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5h
Y3Rpb24gPSBhY3Rpb247CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnRpdGxlID0gdGl0bGU7
CiB9CiAKIENvbnRleHRNZW51SXRlbTo6fkNvbnRleHRNZW51SXRlbSgpCiB7Ci0gICAgaWYgKG1f
cGxhdGZvcm1EZXNjcmlwdGlvbikKLSAgICAgICAgZ19vYmplY3RfdW5yZWYobV9wbGF0Zm9ybURl
c2NyaXB0aW9uKTsKKyAgICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0aW9uLnN1Yk1lbnUpCisgICAg
ICAgIGdfb2JqZWN0X3VucmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51KTsKK30KKwor
R3RrTWVudUl0ZW0qIENvbnRleHRNZW51SXRlbTo6Y3JlYXRlTmF0aXZlTWVudUl0ZW0oY29uc3Qg
UGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uJiBtZW51KQoreworICAgIEd0a01lbnVJdGVtKiBp
dGVtID0gMDsKKyAgICBpZiAobWVudS50eXBlID09IFNlcGFyYXRvclR5cGUpCisgICAgICAgIGl0
ZW0gPSBHVEtfTUVOVV9JVEVNKGd0a19zZXBhcmF0b3JfbWVudV9pdGVtX25ldygpKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgaWYgKG1lbnUuY2hlY2tlZCkgeworICAgICAgICAgICAgaXRlbSA9IEdU
S19NRU5VX0lURU0oZ3RrX2NoZWNrX21lbnVfaXRlbV9uZXdfd2l0aF9sYWJlbChtZW51LnRpdGxl
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIGd0a19jaGVja19tZW51X2l0ZW1fc2V0X2Fj
dGl2ZShHVEtfQ0hFQ0tfTUVOVV9JVEVNKGl0ZW0pLCBtZW51LmNoZWNrZWQpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGl0ZW0gPSBHVEtfTUVOVV9JVEVNKGd0a19tZW51X2l0ZW1fbmV3
X3dpdGhfbGFiZWwobWVudS50aXRsZS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIAorICAgICAg
ICBDb250ZXh0TWVudUFjdGlvbiogbWVudUFjdGlvbiA9IHN0YXRpY19jYXN0PENvbnRleHRNZW51
QWN0aW9uKj4obWFsbG9jKHNpemVvZihDb250ZXh0TWVudUFjdGlvbiopKSk7CisgICAgICAgICpt
ZW51QWN0aW9uID0gbWVudS5hY3Rpb247CisgICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JK
RUNUKGl0ZW0pLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTiwgbWVudUFjdGlvbik7CisKKyAg
ICAgICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKEdUS19XSURHRVQoaXRlbSksIG1lbnUuZW5h
YmxlZCk7CisKKyAgICAgICAgaWYgKG1lbnUuc3ViTWVudSkKKyAgICAgICAgICAgZ3RrX21lbnVf
aXRlbV9zZXRfc3VibWVudShpdGVtLCBHVEtfV0lER0VUKG1lbnUuc3ViTWVudSkpOyAKKyAgICB9
CisKKyAgICByZXR1cm4gaXRlbTsKIH0KIAogUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIENv
bnRleHRNZW51SXRlbTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKQogewotICAgIFBsYXRm
b3JtTWVudUl0ZW1EZXNjcmlwdGlvbiBtZW51SXRlbSA9IG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsK
LSAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSAwOwotICAgIHJldHVybiBtZW51SXRlbTsKKyAg
ICBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSBtX3BsYXRmb3JtRGVz
Y3JpcHRpb247CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gUGxhdGZvcm1NZW51SXRlbURl
c2NyaXB0aW9uKCk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCiBDb250ZXh0TWVudUl0
ZW1UeXBlIENvbnRleHRNZW51SXRlbTo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgaWYgKEdUS19JU19T
RVBBUkFUT1JfTUVOVV9JVEVNKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpCi0gICAgICAgIHJldHVy
biBTZXBhcmF0b3JUeXBlOwotICAgIGlmIChndGtfbWVudV9pdGVtX2dldF9zdWJtZW51KG1fcGxh
dGZvcm1EZXNjcmlwdGlvbikpCi0gICAgICAgIHJldHVybiBTdWJtZW51VHlwZTsKLQotICAgIHJl
dHVybiBBY3Rpb25UeXBlOworICAgIHJldHVybiBtX3BsYXRmb3JtRGVzY3JpcHRpb24udHlwZTsK
IH0KIAotdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFR5cGUoQ29udGV4dE1lbnVJdGVtVHlwZSkK
K3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi50eXBl
ID0gdHlwZTsKIH0KIAogQ29udGV4dE1lbnVBY3Rpb24gQ29udGV4dE1lbnVJdGVtOjphY3Rpb24o
KSBjb25zdAogewotICAgIEFTU0VSVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pOwotICAgIAotICAg
IHJldHVybiAqc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24qPihnX29iamVjdF9nZXRfZGF0
YShHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FD
VElPTikpOworICAgIHJldHVybiBtX3BsYXRmb3JtRGVzY3JpcHRpb24uYWN0aW9uOwogfQogCiB2
b2lkIENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbikK
IHsKLSAgICBBU1NFUlQobV9wbGF0Zm9ybURlc2NyaXB0aW9uKTsKKyAgICBtX3BsYXRmb3JtRGVz
Y3JpcHRpb24uYWN0aW9uID0gYWN0aW9uOwogCi0gICAgLy8gRklYTUU6IENoZWNrIHRoZSBtZW1v
cnkgbWFuYWdlbWVudCBvZiBtZW51QWN0aW9uLgotICAgIENvbnRleHRNZW51QWN0aW9uKiBtZW51
QWN0aW9uID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24qPihtYWxsb2Moc2l6ZW9mKENv
bnRleHRNZW51QWN0aW9uKikpKTsKLSAgICAqbWVudUFjdGlvbiA9IGFjdGlvbjsKLSAgICBnX29i
amVjdF9zZXRfZGF0YShHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pLCBXRUJLSVRfQ09O
VEVYVF9NRU5VX0FDVElPTiwgbWVudUFjdGlvbik7CiB9CiAKIFN0cmluZyBDb250ZXh0TWVudUl0
ZW06OnRpdGxlKCkgY29uc3QKQEAgLTExOCwyOSArMTMwLDM1IEBAIHZvaWQgQ29udGV4dE1lbnVJ
dGVtOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmKQogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBD
b250ZXh0TWVudUl0ZW06OnBsYXRmb3JtU3ViTWVudSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdU
S19NRU5VKGd0a19tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7
CisgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51OwogfQogCiB2b2lkIENv
bnRleHRNZW51SXRlbTo6c2V0U3ViTWVudShDb250ZXh0TWVudSogbWVudSkKIHsKLSAgICBndGtf
bWVudV9pdGVtX3NldF9zdWJtZW51KG1fcGxhdGZvcm1EZXNjcmlwdGlvbiwgR1RLX1dJREdFVCht
ZW51LT5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpKSk7CisgICAgaWYgKG1fcGxhdGZvcm1E
ZXNjcmlwdGlvbi5zdWJNZW51KQorICAgICAgICBnX29iamVjdF91bnJlZihtX3BsYXRmb3JtRGVz
Y3JpcHRpb24uc3ViTWVudSk7CisKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uc3ViTWVudSA9
IG1lbnUtPnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCk7CisKKyAgICBpZiAobV9wbGF0Zm9y
bURlc2NyaXB0aW9uLnN1Yk1lbnUpIHsKKyNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwxMCwwKQor
ICAgICAgICBnX29iamVjdF9yZWZfc2luayhHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRpb24u
c3ViTWVudSkpOworI2Vsc2UKKyAgICAgICAgZ19vYmplY3RfcmVmKEdfT0JKRUNUKG1fcGxhdGZv
cm1EZXNjcmlwdGlvbi5zdWJNZW51KSk7CisgICAgICAgIGd0a19vYmplY3Rfc2luayhHVEtfT0JK
RUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51KSk7CisjZW5kaWYKKyAgICB9CiB9CiAK
IHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRDaGVja2VkKGJvb2wgc2hvdWxkQ2hlY2spCiB7CiAg
ICAgQVNTRVJUKHR5cGUoKSA9PSBBY3Rpb25UeXBlKTsKLQotICAgIGlmIChHVEtfSVNfQ0hFQ0tf
TUVOVV9JVEVNKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpIHsKLSAgICAgICAgZ3RrX2NoZWNrX21l
bnVfaXRlbV9zZXRfYWN0aXZlKEdUS19DSEVDS19NRU5VX0lURU0obV9wbGF0Zm9ybURlc2NyaXB0
aW9uKSwgc2hvdWxkQ2hlY2spOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRPRE86IE5lZWQg
dG8gbW9ycGggdGhpcyBpbnRvIGEgR3RrQ2hlY2tNZW51SXRlbS4KLSAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICB9CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmNoZWNrZWQgPSBzaG91
bGRDaGVjazsKIH0KIAogdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldEVuYWJsZWQoYm9vbCBzaG91
bGRFbmFibGUpCiB7Ci0gICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKEdUS19XSURHRVQobV9w
bGF0Zm9ybURlc2NyaXB0aW9uKSwgc2hvdWxkRW5hYmxlKTsKKyAgICBtX3BsYXRmb3JtRGVzY3Jp
cHRpb24uZW5hYmxlZCA9IHNob3VsZEVuYWJsZTsKIH0KIAogfQo=
</data>
<flag name="review"
          id="7941"
          type_id="1"
          status="+"
          setter="alp"
    />
          </attachment>
      

    </bug>

</bugzilla>