<?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>51241</bug_id>
          
          <creation_ts>2010-12-17 02:38:46 -0800</creation_ts>
          <short_desc>[GTK] GRefPtr should not be used with Gtk widgets</short_desc>
          <delta_ts>2011-01-11 03:21:37 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>323674</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-17 02:38:46 -0800</bug_when>
    <thetext>PlatformRefPtr breaks the widget life-cycle, the main problem is that PlatformRefPtr calls g_object_unref() when it&apos;s destroyed, which is undesirable for widgets. In gtk+ widgets are created with a floating reference and when added to a container, the container takes the ownership of the widget consuming the floating reference. So you don&apos;t usually need to call g_object_ref/unref on widgets (only for some operations like reparent a widget) and toplevel widgets are destroyed with gtk_widget_destroy(). 

There are some cases like EditorClientGtk where the widget used is not a toplevel and it&apos;s not going to be added to a container, in this case using PlatformRefPtr is correct, since you are taking the ownership of the widget.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323677</commentid>
    <comment_count>1</comment_count>
      <attachid>76860</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-17 02:42:35 -0800</bug_when>
    <thetext>Created attachment 76860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323993</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-17 14:36:31 -0800</bug_when>
    <thetext>Is this necessarily an error for non-toplevel widgets? If you add a widget to a container from a PlatformRefPtr the reference count should still be fine, assuming the PlatformRefPtr goes out of scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324301</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-19 23:57:10 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Is this necessarily an error for non-toplevel widgets?

It&apos;s not necessarily an error, you keep a reference, so that when the widget is desroyed you still have the reference and when PlatormRefPtr release the last reference the widget is finally destroyed. But that&apos;s not how we expect gtk+ widgets to work. PlatformRefPtr is supposed to be for taking the ownership of objects to release them when they are not needed anymore, gtk+ already does that for widgets, you create a widget, add it to a container and forget about it. 

&gt; If you add a widget to a container from a PlatformRefPtr the reference count should still be fine, assuming the PlatformRefPtr goes out of scope.

No it isn&apos;t, when the widget is created by gtk+ it has a floating reference, then PlatformRefPtr consumes the reference, so that when the widget is added to the container it has a real reference, rather than a floating one which is what the container expects. If you use adoptPlatformRef to not take the reference and let the parent widget do it as expected, PlatformRefPtr would release a reference that it doesn&apos;t have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324839</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-20 22:59:27 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Is this necessarily an error for non-toplevel widgets?
&gt; 
&gt; It&apos;s not necessarily an error, you keep a reference, so that when the widget is desroyed you still have the reference and when PlatormRefPtr release the last reference the widget is finally destroyed. But that&apos;s not how we expect gtk+ widgets to work. PlatformRefPtr is supposed to be for taking the ownership of objects to release them when they are not needed anymore, gtk+ already does that for widgets, you create a widget, add it to a container and forget about it. 

In this case it should still be appropriate for situations where WebKit wants to control the lifetime of the GTK+ object or if it&apos;s shared between WebKit classes. For instance, ContextMenu isn&apos;t copyable, but if it was we would want the menu widget to be a PlatformRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324858</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-20 23:13:00 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; 
&gt; In this case it should still be appropriate for situations where WebKit wants to control the lifetime of the GTK+ object or if it&apos;s shared between WebKit classes. For instance, ContextMenu isn&apos;t copyable, but if it was we would want the menu widget to be a PlatformRefPtr.

Sure, as I said in the bug description there are some situations where using PlatformRefPtr with widgets is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326553</commentid>
    <comment_count>6</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-12-24 02:46:30 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; 
&gt; &gt; In this case it should still be appropriate for situations where WebKit wants to control the lifetime of the GTK+ object or if it&apos;s shared between WebKit classes. For instance, ContextMenu isn&apos;t copyable, but if it was we would want the menu widget to be a PlatformRefPtr.
&gt; 
&gt; Sure, as I said in the bug description there are some situations where using PlatformRefPtr with widgets is correct.

How did you find this? Review or did it misbehave?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326557</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-24 02:52:26 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; 
&gt; &gt; &gt; In this case it should still be appropriate for situations where WebKit wants to control the lifetime of the GTK+ object or if it&apos;s shared between WebKit classes. For instance, ContextMenu isn&apos;t copyable, but if it was we would want the menu widget to be a PlatformRefPtr.
&gt; &gt; 
&gt; &gt; Sure, as I said in the bug description there are some situations where using PlatformRefPtr with widgets is correct.
&gt; 
&gt; How did you find this? Review or did it misbehave?

I noticed it when I was working on bug #49658, then I reviewed all other cases where PlatformRefPtr was used with widgets. There&apos;s no misbehaviour actually since it works, but it&apos;s not how gtk widgets are expected to work and it makes the code confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326559</commentid>
    <comment_count>8</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-12-24 02:57:55 -0800</bug_when>
    <thetext>(In reply to comment #7)

&gt; &gt; 
&gt; &gt; How did you find this? Review or did it misbehave?
&gt; 
&gt; I noticed it when I was working on bug #49658, then I reviewed all other cases where PlatformRefPtr was used with widgets. There&apos;s no misbehaviour actually since it works, but it&apos;s not how gtk widgets are expected to work and it makes the code confusing.

I agree that it should be changed, I was just interested in how this was found. I try to find time to review your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331644</commentid>
    <comment_count>9</comment_count>
      <attachid>76860</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-10 08:55:36 -0800</bug_when>
    <thetext>Comment on attachment 76860
Patch

Okay. :) This probably needs to be updated against HEAD though sicne PlatformRefPtr is now called GRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332228</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-11 03:19:15 -0800</bug_when>
    <thetext>Committed r75481: &lt;http://trac.webkit.org/changeset/75481&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76860</attachid>
            <date>2010-12-17 02:42:35 -0800</date>
            <delta_ts>2011-01-11 03:21:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>platform-ref-widgets.diff</filename>
            <type>text/plain</type>
            <size>14242</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTc0NGVhNS4uNDA1OTQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0xMi0xNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gUGxhdGZvcm1SZWZQdHIgc2hvdWxkIG5vdCBi
ZSB1c2VkIHdpdGggR3RrIHdpZGdldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUxMjQxCisKKyAgICAgICAgUGxhdGZvcm1SZWZQdHIgYnJlYWtzIHRo
ZSB3aWRnZXQgbGlmZS1jeWNsZSwgdGhlIG1haW4gcHJvYmxlbSBpcworICAgICAgICB0aGF0IFBs
YXRmb3JtUmVmUHRyIGNhbGxzIGdfb2JqZWN0X3VucmVmKCkgd2hlbiBpdCdzIGRlc3Ryb3llZCwK
KyAgICAgICAgd2hpY2ggaXMgdW5kZXNpcmFibGUgZm9yIHdpZGdldHMuIEluIGd0aysgd2lkZ2V0
cyBhcmUgY3JlYXRlZCB3aXRoCisgICAgICAgIGEgZmxvYXRpbmcgcmVmZXJlbmNlIGFuZCB3aGVu
IGFkZGVkIHRvIGEgY29udGFpbmVyLCB0aGUgY29udGFpbmVyCisgICAgICAgIHRha2VzIHRoZSBv
d25lcnNoaXAgb2YgdGhlIHdpZGdldCBjb25zdW1pbmcgdGhlIGZsb2F0aW5nCisgICAgICAgIHJl
ZmVyZW5jZS4gU28geW91IGRvbid0IHVzdWFsbHkgbmVlZCB0byBjYWxsIGdfb2JqZWN0X3JlZi91
bnJlZiBvbgorICAgICAgICB3aWRnZXRzIChvbmx5IGZvciBzb21lIG9wZXJhdGlvbnMgbGlrZSBy
ZXBhcmVudCBhIHdpZGdldCkgYW5kCisgICAgICAgIHRvcGxldmVsIHdpZGdldHMgYXJlIGRlc3Ry
b3llZCB3aXRoIGd0a193aWRnZXRfZGVzdHJveSgpLgorCisgICAgICAgICogcGxhdGZvcm0vQ29u
dGV4dE1lbnVJdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51OjpDb250ZXh0TWVudSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZXh0TWVudTo6fkNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51OjpzZXRQbGF0Zm9ybURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6dGl0bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtOjpzZXRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW06OnBsYXRmb3JtU3ViTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW06OnNldFN1Yk1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
OjpzZXRDaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6c2V0RW5h
YmxlZCk6CisKIDIwMTAtMTItMTYgIEtvYW4tU2luIFRhbiAgPGtvYW5zaW4udGFuQGdtYWlsLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMmZlZWY1NC4uMzQ3
ODc1YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0xMi0xNyAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW0dUS10gUGxhdGZvcm1SZWZQdHIgc2hvdWxkIG5vdCBiZSB1c2Vk
IHdpdGggR3RrIHdpZGdldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUxMjQxCisKKyAgICAgICAgUGxhdGZvcm1SZWZQdHIgYnJlYWtzIHRoZSB3aWRn
ZXQgbGlmZS1jeWNsZSwgdGhlIG1haW4gcHJvYmxlbSBpcworICAgICAgICB0aGF0IFBsYXRmb3Jt
UmVmUHRyIGNhbGxzIGdfb2JqZWN0X3VucmVmKCkgd2hlbiBpdCdzIGRlc3Ryb3llZCwKKyAgICAg
ICAgd2hpY2ggaXMgdW5kZXNpcmFibGUgZm9yIHdpZGdldHMuIEluIGd0aysgd2lkZ2V0cyBhcmUg
Y3JlYXRlZCB3aXRoCisgICAgICAgIGEgZmxvYXRpbmcgcmVmZXJlbmNlIGFuZCB3aGVuIGFkZGVk
IHRvIGEgY29udGFpbmVyLCB0aGUgY29udGFpbmVyCisgICAgICAgIHRha2VzIHRoZSBvd25lcnNo
aXAgb2YgdGhlIHdpZGdldCBjb25zdW1pbmcgdGhlIGZsb2F0aW5nCisgICAgICAgIHJlZmVyZW5j
ZS4gU28geW91IGRvbid0IHVzdWFsbHkgbmVlZCB0byBjYWxsIGdfb2JqZWN0X3JlZi91bnJlZiBv
bgorICAgICAgICB3aWRnZXRzIChvbmx5IGZvciBzb21lIG9wZXJhdGlvbnMgbGlrZSByZXBhcmVu
dCBhIHdpZGdldCkgYW5kCisgICAgICAgIHRvcGxldmVsIHdpZGdldHMgYXJlIGRlc3Ryb3llZCB3
aXRoIGd0a193aWRnZXRfZGVzdHJveSgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJh
Z0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OkRyYWdDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpEcmFnQ2xpZW50Ojp+RHJhZ0NsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHJhZ0NsaWVudEd0ay5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cG9zdENvbW1pdEZyYW1lVmlld1NldHVwKToK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfZGlzcG9zZSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmg6
CisKIDIwMTAtMTItMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRl
eHRNZW51SXRlbS5oCmluZGV4IDY0ZDllNGIuLjZhNzc5NWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0
TWVudUl0ZW0uaApAQCAtMjg0LDggKzI4NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbHNl
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBSZXRhaW5QdHI8TlNNZW51SXRlbT4gbV9wbGF0
Zm9ybURlc2NyaXB0aW9uOwotI2VsaWYgUExBVEZPUk0oR1RLKQotICAgICAgICBQbGF0Zm9ybVJl
ZlB0cjxHdGtNZW51SXRlbT4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOwogI2Vsc2UKICAgICAgICAg
UGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCmluZGV4IDQyMzk1OWEuLjdk
YjdiMjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAKQEAgLTI2LDE0
ICsyNiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDb250ZXh0TWVudTo6Q29udGV4dE1lbnUo
KQogewogICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IEdUS19NRU5VKGd0a19tZW51X25ldygp
KTsKLQotICAgIGdfb2JqZWN0X3JlZl9zaW5rKEdfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlv
bikpOwogfQogCiBDb250ZXh0TWVudTo6fkNvbnRleHRNZW51KCkKIHsKICAgICBpZiAobV9wbGF0
Zm9ybURlc2NyaXB0aW9uKQotICAgICAgICBnX29iamVjdF91bnJlZihtX3BsYXRmb3JtRGVzY3Jp
cHRpb24pOworICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChtX3BsYXRmb3Jt
RGVzY3JpcHRpb24pKTsKIH0KIAogdm9pZCBDb250ZXh0TWVudTo6YXBwZW5kSXRlbShDb250ZXh0
TWVudUl0ZW0mIGl0ZW0pCkBAIC01MCwxMCArNDgsOSBAQCB2b2lkIENvbnRleHRNZW51OjpzZXRQ
bGF0Zm9ybURlc2NyaXB0aW9uKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1lbnUpCiB7CiAgICAg
QVNTRVJUKG1lbnUpOwogICAgIGlmIChtX3BsYXRmb3JtRGVzY3JpcHRpb24pCi0gICAgICAgIGdf
b2JqZWN0X3VucmVmKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CisgICAgICAgIGd0a193aWRnZXRf
ZGVzdHJveShHVEtfV0lER0VUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOwogCiAgICAgbV9wbGF0
Zm9ybURlc2NyaXB0aW9uID0gbWVudTsKLSAgICBnX29iamVjdF9yZWYobV9wbGF0Zm9ybURlc2Ny
aXB0aW9uKTsKIH0KIAogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnU6OnBsYXRm
b3JtRGVzY3JpcHRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
Q29udGV4dE1lbnVJdGVtR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51
SXRlbUd0ay5jcHAKaW5kZXggNGQ3OWYxMy4uMGQ3ZDU1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgQ29udGV4dE1l
bnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0
TWVudUFjdGlvbiBhY3QKICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBHVEtfTUVOVV9JVEVN
KGd0a19hY3Rpb25fY3JlYXRlX21lbnVfaXRlbShwbGF0Zm9ybUFjdGlvbikpOwogICAgIGdfb2Jq
ZWN0X3VucmVmKHBsYXRmb3JtQWN0aW9uKTsKIAotICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JK
RUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSksIFdFQktJVF9DT05URVhUX01FTlVfQUNU
SU9OLCBHSU5UX1RPX1BPSU5URVIoYWN0aW9uKSk7CisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19P
QkpFQ1QobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT04s
IEdJTlRfVE9fUE9JTlRFUihhY3Rpb24pKTsKIAogICAgIGlmIChzdWJNZW51KQogICAgICAgICBz
ZXRTdWJNZW51KHN1Yk1lbnUpOwpAQCAtMTU2LDE2ICsxNTYsMTggQEAgQ29udGV4dE1lbnVJdGVt
Ojp+Q29udGV4dE1lbnVJdGVtKCkKIAogUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIENvbnRl
eHRNZW51SXRlbTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKQogewotICAgIHJldHVybiBt
X3BsYXRmb3JtRGVzY3JpcHRpb24ubGVha1JlZigpOworICAgIFBsYXRmb3JtTWVudUl0ZW1EZXNj
cmlwdGlvbiBwbGF0Zm9ybURlc2NyaXB0aW9uID0gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworICAg
IG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IDA7CisgICAgcmV0dXJuIHBsYXRmb3JtRGVzY3JpcHRp
b247CiB9CiAKIENvbnRleHRNZW51SXRlbVR5cGUgQ29udGV4dE1lbnVJdGVtOjp0eXBlKCkgY29u
c3QKIHsKLSAgICBpZiAoR1RLX0lTX1NFUEFSQVRPUl9NRU5VX0lURU0obV9wbGF0Zm9ybURlc2Ny
aXB0aW9uLmdldCgpKSkKKyAgICBpZiAoR1RLX0lTX1NFUEFSQVRPUl9NRU5VX0lURU0obV9wbGF0
Zm9ybURlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIFNlcGFyYXRvclR5cGU7Ci0gICAgaWYg
KEdUS19JU19DSEVDS19NRU5VX0lURU0obV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpKSkKKyAg
ICBpZiAoR1RLX0lTX0NIRUNLX01FTlVfSVRFTShtX3BsYXRmb3JtRGVzY3JpcHRpb24pKQogICAg
ICAgICByZXR1cm4gQ2hlY2thYmxlQWN0aW9uVHlwZTsKLSAgICBpZiAoZ3RrX21lbnVfaXRlbV9n
ZXRfc3VibWVudShtX3BsYXRmb3JtRGVzY3JpcHRpb24uZ2V0KCkpKQorICAgIGlmIChndGtfbWVu
dV9pdGVtX2dldF9zdWJtZW51KG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpCiAgICAgICAgIHJldHVy
biBTdWJtZW51VHlwZTsKICAgICByZXR1cm4gQWN0aW9uVHlwZTsKIH0KQEAgLTE3OCw0OCArMTgw
LDQ4IEBAIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKENvbnRleHRNZW51SXRlbVR5cGUg
dHlwZSkKIAogQ29udGV4dE1lbnVBY3Rpb24gQ29udGV4dE1lbnVJdGVtOjphY3Rpb24oKSBjb25z
dAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4oR1BPSU5URVJf
VE9fSU5UKGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5n
ZXQoKSksIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OKSkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDb250ZXh0TWVudUFjdGlvbj4oR1BPSU5URVJfVE9fSU5UKGdfb2JqZWN0X2dldF9kYXRh
KEdfT0JKRUNUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiksIFdFQktJVF9DT05URVhUX01FTlVfQUNU
SU9OKSkpOwogfQogCiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbikKIHsKLSAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChtX3BsYXRm
b3JtRGVzY3JpcHRpb24uZ2V0KCkpLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTiwgR0lOVF9U
T19QT0lOVEVSKGFjdGlvbikpOworICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKG1fcGxh
dGZvcm1EZXNjcmlwdGlvbiksIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OLCBHSU5UX1RPX1BP
SU5URVIoYWN0aW9uKSk7CiB9CiAKIFN0cmluZyBDb250ZXh0TWVudUl0ZW06OnRpdGxlKCkgY29u
c3QKIHsKLSAgICBHdGtBY3Rpb24qIGFjdGlvbiA9IGd0a19hY3RpdmF0YWJsZV9nZXRfcmVsYXRl
ZF9hY3Rpb24oR1RLX0FDVElWQVRBQkxFKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSkpOwor
ICAgIEd0a0FjdGlvbiogYWN0aW9uID0gZ3RrX2FjdGl2YXRhYmxlX2dldF9yZWxhdGVkX2FjdGlv
bihHVEtfQUNUSVZBVEFCTEUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CiAgICAgcmV0dXJuIGFj
dGlvbiA/IFN0cmluZyhndGtfYWN0aW9uX2dldF9sYWJlbChhY3Rpb24pKSA6IFN0cmluZygpOwog
fQogCiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkK
IHsKLSAgICBHdGtBY3Rpb24qIGFjdGlvbiA9IGd0a19hY3RpdmF0YWJsZV9nZXRfcmVsYXRlZF9h
Y3Rpb24oR1RLX0FDVElWQVRBQkxFKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSkpOworICAg
IEd0a0FjdGlvbiogYWN0aW9uID0gZ3RrX2FjdGl2YXRhYmxlX2dldF9yZWxhdGVkX2FjdGlvbihH
VEtfQUNUSVZBVEFCTEUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CiAgICAgaWYgKGFjdGlvbikK
ICAgICAgICAgZ3RrX2FjdGlvbl9zZXRfbGFiZWwoYWN0aW9uLCB0aXRsZS51dGY4KCkuZGF0YSgp
KTsKIH0KIAogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVtOjpwbGF0Zm9y
bVN1Yk1lbnUoKSBjb25zdAogewotICAgIEd0a1dpZGdldCogc3ViTWVudSA9IGd0a19tZW51X2l0
ZW1fZ2V0X3N1Ym1lbnUobV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpKTsKKyAgICBHdGtXaWRn
ZXQqIHN1Yk1lbnUgPSBndGtfbWVudV9pdGVtX2dldF9zdWJtZW51KG1fcGxhdGZvcm1EZXNjcmlw
dGlvbik7CiAgICAgcmV0dXJuIHN1Yk1lbnUgPyBHVEtfTUVOVShzdWJNZW51KSA6IDA7CiB9CiAK
IHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KiBtZW51KQogewot
ICAgIGd0a19tZW51X2l0ZW1fc2V0X3N1Ym1lbnUobV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgp
LCBHVEtfV0lER0VUKG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKSkpOworICAgIGd0a19tZW51
X2l0ZW1fc2V0X3N1Ym1lbnUobV9wbGF0Zm9ybURlc2NyaXB0aW9uLCBHVEtfV0lER0VUKG1lbnUt
PnBsYXRmb3JtRGVzY3JpcHRpb24oKSkpOwogfQogCiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0
Q2hlY2tlZChib29sIHNob3VsZENoZWNrKQogewotICAgIEd0a0FjdGlvbiogYWN0aW9uID0gZ3Rr
X2FjdGl2YXRhYmxlX2dldF9yZWxhdGVkX2FjdGlvbihHVEtfQUNUSVZBVEFCTEUobV9wbGF0Zm9y
bURlc2NyaXB0aW9uLmdldCgpKSk7CisgICAgR3RrQWN0aW9uKiBhY3Rpb24gPSBndGtfYWN0aXZh
dGFibGVfZ2V0X3JlbGF0ZWRfYWN0aW9uKEdUS19BQ1RJVkFUQUJMRShtX3BsYXRmb3JtRGVzY3Jp
cHRpb24pKTsKICAgICBpZiAoYWN0aW9uICYmIEdUS19JU19UT0dHTEVfQUNUSU9OKGFjdGlvbikp
CiAgICAgICAgIGd0a190b2dnbGVfYWN0aW9uX3NldF9hY3RpdmUoR1RLX1RPR0dMRV9BQ1RJT04o
YWN0aW9uKSwgc2hvdWxkQ2hlY2spOwogfQogCiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0RW5h
YmxlZChib29sIHNob3VsZEVuYWJsZSkKIHsKLSAgICBHdGtBY3Rpb24qIGFjdGlvbiA9IGd0a19h
Y3RpdmF0YWJsZV9nZXRfcmVsYXRlZF9hY3Rpb24oR1RLX0FDVElWQVRBQkxFKG1fcGxhdGZvcm1E
ZXNjcmlwdGlvbi5nZXQoKSkpOworICAgIEd0a0FjdGlvbiogYWN0aW9uID0gZ3RrX2FjdGl2YXRh
YmxlX2dldF9yZWxhdGVkX2FjdGlvbihHVEtfQUNUSVZBVEFCTEUobV9wbGF0Zm9ybURlc2NyaXB0
aW9uKSk7CiAgICAgaWYgKGFjdGlvbikKICAgICAgICAgZ3RrX2FjdGlvbl9zZXRfc2Vuc2l0aXZl
KGFjdGlvbiwgc2hvdWxkRW5hYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Ry
YWdDbGllbnRHdGsuY3BwCmluZGV4IDVmMzkxZWMuLmJjNTc3MTQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcApAQCAtNjYsMTUgKzY2LDE1IEBAIERyYWdD
bGllbnQ6OkRyYWdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAsIG1fZHJhZ0lj
b25XaW5kb3coZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19QT1BVUCkpCiB7CiAjaWZkZWYgR1RL
X0FQSV9WRVJTSU9OXzIKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fZHJhZ0ljb25XaW5kb3cuZ2V0
KCksICJleHBvc2UtZXZlbnQiLCBHX0NBTExCQUNLKGRyYWdJY29uV2luZG93RHJhd0V2ZW50Q2Fs
bGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZHJhZ0ljb25XaW5kb3csICJl
eHBvc2UtZXZlbnQiLCBHX0NBTExCQUNLKGRyYWdJY29uV2luZG93RHJhd0V2ZW50Q2FsbGJhY2sp
LCB0aGlzKTsKICNlbHNlCi0gICAgZ19zaWduYWxfY29ubmVjdChtX2RyYWdJY29uV2luZG93Lmdl
dCgpLCAiZHJhdyIsIEdfQ0FMTEJBQ0soZHJhZ0ljb25XaW5kb3dEcmF3RXZlbnRDYWxsYmFjayks
IHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kcmFnSWNvbldpbmRvdywgImRyYXciLCBH
X0NBTExCQUNLKGRyYWdJY29uV2luZG93RHJhd0V2ZW50Q2FsbGJhY2spLCB0aGlzKTsKICNlbmRp
ZgogfQogCiBEcmFnQ2xpZW50Ojp+RHJhZ0NsaWVudCgpCiB7Ci0gICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fZHJhZ0ljb25XaW5kb3cuZ2V0KCksIChncG9pbnRlcikg
ZHJhZ0ljb25XaW5kb3dEcmF3RXZlbnRDYWxsYmFjaywgdGhpcyk7CisgICAgZ3RrX3dpZGdldF9k
ZXN0cm95KG1fZHJhZ0ljb25XaW5kb3cpOwogfQogCiB2b2lkIERyYWdDbGllbnQ6OndpbGxQZXJm
b3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgRHJhZ0RhdGEq
KQpAQCAtMTE5LDI0ICsxMTksMjQgQEAgdm9pZCBEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0lt
YWdlUmVmIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLAogICAgIGlmIChp
bWFnZSkgewogICAgICAgICBtX2RyYWdJbWFnZSA9IGltYWdlOwogICAgICAgICBJbnRTaXplIGlt
YWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChpbWFnZSksIGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2hlaWdodChpbWFnZSkpOwotICAgICAgICBndGtfd2luZG93X3Jlc2l6ZShH
VEtfV0lORE9XKG1fZHJhZ0ljb25XaW5kb3cuZ2V0KCkpLCBpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpKTsKKyAgICAgICAgZ3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyht
X2RyYWdJY29uV2luZG93KSwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSk7
CiAKLSAgICAgICAgaWYgKCFndGtfd2lkZ2V0X2dldF9yZWFsaXplZChtX2RyYWdJY29uV2luZG93
LmdldCgpKSkgewotICAgICAgICAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2lkZ2V0X2dl
dF9zY3JlZW4obV9kcmFnSWNvbldpbmRvdy5nZXQoKSk7CisgICAgICAgIGlmICghZ3RrX3dpZGdl
dF9nZXRfcmVhbGl6ZWQobV9kcmFnSWNvbldpbmRvdykpIHsKKyAgICAgICAgICAgIEdka1NjcmVl
biogc2NyZWVuID0gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKG1fZHJhZ0ljb25XaW5kb3cpOwogI2lm
ZGVmIEdUS19BUElfVkVSU0lPTl8yCiAgICAgICAgICAgICBHZGtDb2xvcm1hcCogcmdiYSA9IGdk
a19zY3JlZW5fZ2V0X3JnYmFfY29sb3JtYXAoc2NyZWVuKTsKICAgICAgICAgICAgIGlmIChyZ2Jh
KQotICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2V0X2NvbG9ybWFwKG1fZHJhZ0ljb25XaW5k
b3cuZ2V0KCksIHJnYmEpOworICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2V0X2NvbG9ybWFw
KG1fZHJhZ0ljb25XaW5kb3csIHJnYmEpOwogI2Vsc2UKICAgICAgICAgICAgIEdka1Zpc3VhbCog
dmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwoc2NyZWVuKTsKICAgICAgICAgICAg
IGlmICghdmlzdWFsKQogICAgICAgICAgICAgICAgIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3N5
c3RlbV92aXN1YWwoc2NyZWVuKTsKLSAgICAgICAgICAgIGd0a193aWRnZXRfc2V0X3Zpc3VhbCht
X2RyYWdJY29uV2luZG93LmdldCgpLCB2aXN1YWwpOworICAgICAgICAgICAgZ3RrX3dpZGdldF9z
ZXRfdmlzdWFsKG1fZHJhZ0ljb25XaW5kb3csIHZpc3VhbCk7CiAjZW5kaWYgLy8gR1RLX0FQSV9W
RVJTSU9OXzIKICAgICAgICAgfQogCiAgICAgICAgIEludFNpemUgb3JpZ2luID0gZXZlbnRQb3Mg
LSBkcmFnSW1hZ2VPcmlnaW47Ci0gICAgICAgIGd0a19kcmFnX3NldF9pY29uX3dpZGdldChjb250
ZXh0LCBtX2RyYWdJY29uV2luZG93LmdldCgpLAorICAgICAgICBndGtfZHJhZ19zZXRfaWNvbl93
aWRnZXQoY29udGV4dCwgbV9kcmFnSWNvbldpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9yaWdpbi53aWR0aCgpLCBvcmlnaW4uaGVpZ2h0KCkpOwogICAgIH0gZWxzZQog
ICAgICAgICBndGtfZHJhZ19zZXRfaWNvbl9kZWZhdWx0KGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAppbmRleCAwODZlYzY5Li4zYTE2YWU1IDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAorKysgYi9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaApAQCAtNTksNyArNTksNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3
KiBtX3dlYlZpZXc7CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3RhcnRQb3M7Ci0gICAg
ICAgIFBsYXRmb3JtUmVmUHRyPEd0a1dpZGdldD4gbV9kcmFnSWNvbldpbmRvdzsKKyAgICAgICAg
R3RrV2lkZ2V0KiBtX2RyYWdJY29uV2luZG93OwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBtX2RyYWdJbWFnZTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA5YmFjMmQwLi4zMDIyYmU0IDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcApAQCAtMTI5Nyw5ICsxMjk3LDggQEAgc3RhdGljIHZvaWQgcG9zdENvbW1pdEZyYW1lVmll
d1NldHVwKFdlYktpdFdlYkZyYW1lICpmcmFtZSwgRnJhbWVWaWV3ICp2aWV3LCBib28KICAgICBn
X29iamVjdF9ub3RpZnkoR19PQkpFQ1QoY29udGFpbmluZ1dpbmRvdy0+cHJpdi0+dmlld3BvcnRB
dHRyaWJ1dGVzLmdldCgpKSwgInZhbGlkIik7CiAKICAgICBpZiAocHJpdi0+Y3VycmVudE1lbnUp
IHsKLSAgICAgICAgUGxhdGZvcm1SZWZQdHI8R3RrTWVudT4gbWVudShwcml2LT5jdXJyZW50TWVu
dSk7Ci0gICAgICAgIHByaXYtPmN1cnJlbnRNZW51LmNsZWFyKCk7Ci0gICAgICAgIGd0a19tZW51
X3BvcGRvd24obWVudS5nZXQoKSk7CisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lE
R0VUKHByaXYtPmN1cnJlbnRNZW51KSk7CisgICAgICAgIHByaXYtPmN1cnJlbnRNZW51ID0gMDsK
ICAgICB9CiAKICAgICAvLyBEbyBub3QgYWxsb3cgY2xpY2sgY291bnRpbmcgYmV0d2VlbiBtYWlu
IGZyYW1lIGxvYWRzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBjODE0NDc0
Li41MmM1YjRiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMTM5Miw2ICsx
MzkyLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKEdPYmplY3QqIG9i
amVjdCkKICAgICAgICAgcHJpdi0+d2ViU2V0dGluZ3MuY2xlYXIoKTsKICAgICB9CiAKKyAgICBp
ZiAocHJpdi0+Y3VycmVudE1lbnUpIHsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19X
SURHRVQocHJpdi0+Y3VycmVudE1lbnUpKTsKKyAgICAgICAgcHJpdi0+Y3VycmVudE1lbnUgPSAw
OworICAgIH0KKwogICAgIHByaXYtPndlYkluc3BlY3Rvci5jbGVhcigpOwogICAgIHByaXYtPnZp
ZXdwb3J0QXR0cmlidXRlcy5jbGVhcigpOwogICAgIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzLmNs
ZWFyKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0
ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAppbmRleCBkZWM2
ZGFkLi4zZjgzZTA5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgK
QEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgV2Vi
S2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKICAgICBQbGF0Zm9ybVJlZlB0cjxXZWJLaXRXZWJCYWNr
Rm9yd2FyZExpc3Q+IGJhY2tGb3J3YXJkTGlzdDsKIAotICAgIFBsYXRmb3JtUmVmUHRyPEd0a01l
bnU+IGN1cnJlbnRNZW51OworICAgIEd0a01lbnUqIGN1cnJlbnRNZW51OwogICAgIGdpbnQgbGFz
dFBvcHVwWFBvc2l0aW9uOwogICAgIGdpbnQgbGFzdFBvcHVwWVBvc2l0aW9uOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>