<?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>144549</bug_id>
          
          <creation_ts>2015-05-03 09:34:44 -0700</creation_ts>
          <short_desc>[GTK] Paste data is removed from clipboard when closing browser tab</short_desc>
          <delta_ts>2015-07-29 23:41:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=144547</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>andersca</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091235</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-05-03 09:34:44 -0700</bug_when>
    <thetext>Select some text on this page, right click, Copy. Paste it into another app. Paste works great, yay! Now do the same again, but close the current tab (in Ephy, or close MiniBrowser if you&apos;re using that). There is no longer any data to paste. If the user was copying, say, a long Bugzilla reply, he is now quite frustrated that his copied data was deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110057</commentid>
    <comment_count>1</comment_count>
      <attachid>256948</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-16 19:20:42 -0700</bug_when>
    <thetext>Created attachment 256948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110068</commentid>
    <comment_count>2</comment_count>
      <attachid>256948</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-07-16 19:59:11 -0700</bug_when>
    <thetext>Comment on attachment 256948
Patch

Hrm...I&apos;m not sure about this. I think there can be multiple Pasteboards at one time. Is it possible to simply store the clipboard data as soon as a &quot;copy&quot; occurs in a WebView?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110093</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-16 23:28:19 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Select some text on this page, right click, Copy. Paste it into another app.
&gt; Paste works great, yay! Now do the same again, but close the current tab (in
&gt; Ephy, or close MiniBrowser if you&apos;re using that). There is no longer any
&gt; data to paste. If the user was copying, say, a long Bugzilla reply, he is
&gt; now quite frustrated that his copied data was deleted.

Yeah, I&apos;ve suffered this a lot of times, and I always wondered why. Thanks for working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110102</commentid>
    <comment_count>4</comment_count>
      <attachid>256948</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-17 01:26:30 -0700</bug_when>
    <thetext>Comment on attachment 256948
Patch

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

&gt; Source/WebCore/platform/gtk/PasteboardGtk.cpp:96
&gt; +    if (hasData()) {
&gt; +        ASSERT(m_gtkClipboard);
&gt; +        gtk_clipboard_store(m_gtkClipboard);
&gt; +    }

This is not correct, and not the correct place either. First you are asserting m_gtkClipboard is not nullptr, but it can be nullptr. In case of private or drag and drop Pasteboard the clipboard will be nullptr, and the data object might have data. Also, I don&apos;t think we need to check if there&apos;s data first, since that retrieves the data, something that gtk_clipboard_store will do anyway. And finally, this should be done only when the process finishes, not everytime a Pasteboard object is deleted. GTK+ stores all clipboards in gtk_main or gtk_application_shutdown when the main loop finishes. We don&apos;t use gtk_main() in the web process, that&apos;s why it has never worked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110110</commentid>
    <comment_count>5</comment_count>
      <attachid>256963</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-17 02:33:58 -0700</bug_when>
    <thetext>Created attachment 256963
Different approach

This approach adds API to PasteboardHelper to store all clipboards that is used from WebProcessMain::platformFinalize(). This doesn&apos;t currently work due to bug #147036, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110124</commentid>
    <comment_count>6</comment_count>
      <attachid>256963</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-07-17 07:16:16 -0700</bug_when>
    <thetext>Comment on attachment 256963
Different approach

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

&gt; Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:70
&gt; +        PasteboardHelper::storeAllClipboards();
&gt; +

How exactly does gtk_clipboard_store work? Does it override the current X11 selection?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110133</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-17 08:50:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 256963 [details]
&gt; Different approach
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256963&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:70
&gt; &gt; +        PasteboardHelper::storeAllClipboards();
&gt; &gt; +
&gt; 
&gt; How exactly does gtk_clipboard_store work? Does it override the current X11
&gt; selection?

I don&apos;t know the details, the doc says &quot;Stores the current clipboard data somewhere so that it will stay around after the application has quit.&quot;, and GTK+ does that in gtk_main (once the loop finishes) and gtk_application_shutdown for all applications using gtk_main or GtkApplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110134</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-07-17 08:55:31 -0700</bug_when>
    <thetext>This seems okay to me, but could you do a quick test that this does not override the clipboard contents if the selection belongs to another application when the WebKitGTK+ exits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110137</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-17 09:03:37 -0700</bug_when>
    <thetext>Thanks Carlos, your patch looks better indeed.

(In reply to comment #7)
&gt; I don&apos;t know the details, the doc says &quot;Stores the current clipboard data
&gt; somewhere so that it will stay around after the application has quit.&quot;, and
&gt; GTK+ does that in gtk_main (once the loop finishes) and
&gt; gtk_application_shutdown for all applications using gtk_main or
&gt; GtkApplication.

It goes in the ICCCM clipboard manager:

http://www.freedesktop.org/wiki/Specifications/clipboard-manager-spec/
http://www.x.org/releases/X11R7.7/doc/xorg-docs/icccm/icccm.html

(I have no clue what that is in GNOME; probably mutter I would guess.)

(In reply to comment #8)
&gt; This seems okay to me, but could you do a quick test that this does not
&gt; override the clipboard contents if the selection belongs to another
&gt; application when the WebKitGTK+ exits?

Oh good point. Only the CLIPBOARD selection should be saved, not PRIMARY. But, I am not sure if GTK+ makes sure to ignore gtk_clipboard_store() when called on PRIMARY, or if it&apos;s our responsibility to not do that. Probably that will simply never happen, because surely we won&apos;t have PRIMARY at the same time as another app does? I am glad PRIMARY does not exist in Wayland; it really complicates things, and I don&apos;t pretend to understand it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110146</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-17 09:31:35 -0700</bug_when>
    <thetext>Yes, primary selection is not affected. This patch makes WebKitGTK+ behave like any other GTK+ application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110643</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-20 09:54:30 -0700</bug_when>
    <thetext>Thanks for the review, unfortunately this patch doesn&apos;t work if patch attached to bug #147036 isn&apos;t landed first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113074</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-29 06:18:37 -0700</bug_when>
    <thetext>Another way to solve this without depending on bug #147036 that it seems it&apos;s not going to be fixed, would be making PasteboardHelper singleton destructible, and store the clipboards in the destructor. The pasteboard helpers created in other processes than the web process won&apos;t be a problem, since they won&apos;t have any clipboard registered. And another way to solve this, would be to move all the pasteboard handling to the ui process so that only the UI process writes into the clipboard, and the clipboard will be saved when gtk_main_quit or gtk_application_shutdown is called, but that would be a lot more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113077</commentid>
    <comment_count>13</comment_count>
      <attachid>257747</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-29 06:39:45 -0700</bug_when>
    <thetext>Created attachment 257747
Another approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113080</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-29 07:35:26 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Another way to solve this without depending on bug #147036 that it seems
&gt; it&apos;s not going to be fixed, would be making PasteboardHelper singleton
&gt; destructible, and store the clipboards in the destructor.

This seems cleaner to me anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113089</commentid>
    <comment_count>15</comment_count>
      <attachid>256963</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-29 08:32:38 -0700</bug_when>
    <thetext>Comment on attachment 256963
Different approach

Clearing flags here then</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113321</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-29 23:41:39 -0700</bug_when>
    <thetext>Committed r187580: &lt;http://trac.webkit.org/changeset/187580&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256948</attachid>
            <date>2015-07-16 19:20:42 -0700</date>
            <delta_ts>2015-07-17 09:18:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144549-20150716211932.patch</filename>
            <type>text/plain</type>
            <size>1604</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2OTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg5NDczMjcwM2Q3OGJh
NjRhODVkOGFjZmQ4NmMwY2IwOTVkYmRlYy4uYmQzNWJkOTA2MmM4MzYzNWQ1NWIxZTQ5NDUyNTJl
OTE5NzA0NjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTA3LTE2ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBQ
YXN0ZSBkYXRhIGlzIHJlbW92ZWQgZnJvbSBjbGlwYm9hcmQgd2hlbiBjbG9zaW5nIGJyb3dzZXIg
dGFiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiB0
aGUgcGFzdGVib2FyZCBpcyBkZXN0cm95ZWQgd2hpbGUgaXQgc3RpbGwgaGFzIGRhdGEgKGUuZy4g
YWZ0ZXIgY29weWluZyBkYXRhIHRvIGl0IGFuZAorICAgICAgICB0aGVuIGNsb3NpbmcgdGhlIGJy
b3dzZXIgb3IgYSBicm93c2VyIHRhYiksIHN0b3JlIGl0IGluIHRoZSBjbGlwYm9hcmQgbWFuYWdl
ciBzbyB0aGF0IGl0IGlzCisgICAgICAgIHN0aWxsIGF2YWlsYWJsZSBhZnRlciB0aGUgd2ViIHBy
b2Nlc3MgaGFzIHF1aXQuIFRoaXMgYXZvaWRzIGZydXN0cmF0aW5nIGNsaXBib2FyZCBkYXRhIGxv
c3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp+UGFzdGVib2FyZCk6CisKIDIwMTUtMDctMTYgIE1hdHQg
UmFqY2EgIDxtcmFqY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhIFNlc3Npb246IGhhbmRs
ZSAnVHJhbnNpZW50JyBhbmQgJ1RyYW5zaWVudCBTb2xvJyBpbnRlcnJ1cHRpb24gZXZlbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggYTQz
MDc2MGRlMTAzNjYyZDExZDE1NWQ1MTg1ZTIzZmU1MTMyZDgzYi4uNGYwZGUzN2QwYmYwZDY4NjQ5
MDE2YWZlODM2YzZiMWQyYjFkNWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtOTAsNiArOTAsMTAgQEAgUGFzdGVib2FyZDo6UGFzdGVi
b2FyZChHdGtDbGlwYm9hcmQqIGd0a0NsaXBib2FyZCkKIAogUGFzdGVib2FyZDo6flBhc3RlYm9h
cmQoKQogeworICAgIGlmIChoYXNEYXRhKCkpIHsKKyAgICAgICAgQVNTRVJUKG1fZ3RrQ2xpcGJv
YXJkKTsKKyAgICAgICAgZ3RrX2NsaXBib2FyZF9zdG9yZShtX2d0a0NsaXBib2FyZCk7CisgICAg
fQogfQogCiBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+IFBhc3RlYm9hcmQ6OmRhdGFPYmplY3Qo
KSBjb25zdAo=
</data>
<flag name="review"
          id="282057"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256963</attachid>
            <date>2015-07-17 02:33:58 -0700</date>
            <delta_ts>2015-07-29 23:11:44 -0700</delta_ts>
            <desc>Different approach</desc>
            <filename>wk2-persistent-clipboard.diff</filename>
            <type>text/plain</type>
            <size>5419</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNTJiMWYzLi43MzAxMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYg
QEAKIDIwMTUtMDctMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIFBhc3RlIGRhdGEgaXMgcmVtb3ZlZCBmcm9tIGNsaXBib2FyZCB3
aGVuIGNsb3NpbmcgYnJvd3NlciB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NDU0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEdUSysgc3RvcmVzIGFsbCBjbGlwYm9hcmRzIGluIGd0a19tYWluIG9y
IGd0a19hcHBsaWNhdGlvbl9zaHV0ZG93bgorICAgICAgICB3aGVuIHRoZSBtYWluIGxvb3AgZmlu
aXNoZXMuIFdlIGRvbid0IHVzZSBndGtfbWFpbigpIGluIHRoZSB3ZWIKKyAgICAgICAgcHJvY2Vz
cywgc28gd2UgbmVlZCB0byBkbyB0aGUgc2FtZSBhbmQgc3RvcmUgYWxsIGNsaXBib2FyZHMgb24K
KyAgICAgICAgcHJvY2VzcyBzaHV0ZG93bi4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQp
OiBSZWdpc3RlciB0aGUgR3RrQ2xpcGJvYXJkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OnJl
Z2lzdGVyQ2xpcGJvYXJkKTogU2F2ZSB0aGUgZ2l2ZW4KKyAgICAgICAgR3RrQ2xpcGJvYXJkIGlu
IGEgZ2xvYmxhIEhhc2hzZXQuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjpz
dG9yZUFsbENsaXBib2FyZHMpOiBDYWxsCisgICAgICAgIGd0a19jbGlwYm9hcmRfc3RvcmUgZm9y
IGV2ZXJ5IHJlZ2lzdGVyZWQgR3RrQ2xpcGJvYXJkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmg6CisKKzIwMTUtMDctMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIENsZWFudXAgUGFzdGVib2FyZEhl
bHBlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3
MDM1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApp
bmRleCAwYzhjY2VmLi5mODUwZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFBhc3RlYm9hcmRJbWFnZTo6flBh
c3RlYm9hcmRJbWFnZSgpCiAKIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoUGFzc1JlZlB0cjxEYXRh
T2JqZWN0R3RrPiBkYXRhT2JqZWN0KQogICAgIDogbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCi0g
ICAgLCBtX2d0a0NsaXBib2FyZCgwKQorICAgICwgbV9ndGtDbGlwYm9hcmQobnVsbHB0cikKIHsK
ICAgICBBU1NFUlQobV9kYXRhT2JqZWN0KTsKIH0KQEAgLTg2LDYgKzg2LDcgQEAgUGFzdGVib2Fy
ZDo6UGFzdGVib2FyZChHdGtDbGlwYm9hcmQqIGd0a0NsaXBib2FyZCkKICAgICAsIG1fZ3RrQ2xp
cGJvYXJkKGd0a0NsaXBib2FyZCkKIHsKICAgICBBU1NFUlQobV9kYXRhT2JqZWN0KTsKKyAgICBQ
YXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS5yZWdpc3RlckNsaXBib2FyZChndGtDbGlwYm9h
cmQpOwogfQogCiBQYXN0ZWJvYXJkOjp+UGFzdGVib2FyZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggODdhYjgyYi4uYzg4YmI0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsOCBAQCBzdGF0aWMgR2RrQXRv
bSB1bmtub3duQXRvbTsKIAogc3RhdGljIGNvbnN0IFN0cmluZyBnTWFya3VwUHJlZml4ID0gQVND
SUlMaXRlcmFsKCI8bWV0YSBodHRwLWVxdWl2PVwiY29udGVudC10eXBlXCIgY29udGVudD1cInRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOFwiPiIpOwogCitzdGF0aWMgSGFzaFNldDxHdGtDbGlwYm9h
cmQqPiBnR3RrQ2xpcGJvYXJkczsKKwogc3RhdGljIHZvaWQgcmVtb3ZlTWFya3VwUHJlZml4KFN0
cmluZyYgbWFya3VwKQogewogICAgIC8vIFRoZSBtYXJrdXAgcHJlZml4IGlzIG5vdCBoYXJtZnVs
LCBidXQgd2UgcmVtb3ZlIGl0IGZyb20gdGhlIHN0cmluZyBhbnl3YXksIHNvIHRoYXQKQEAgLTMx
Niw1ICszMTksMTcgQEAgYm9vbCBQYXN0ZWJvYXJkSGVscGVyOjpjbGlwYm9hcmRDb250ZW50U3Vw
cG9ydHNTbWFydFJlcGxhY2UoR3RrQ2xpcGJvYXJkKiBjbGlwYm8KICAgICByZXR1cm4gZ3RrX2Ns
aXBib2FyZF93YWl0X2lzX3RhcmdldF9hdmFpbGFibGUoY2xpcGJvYXJkLCBzbWFydFBhc3RlQXRv
bSk7CiB9CiAKK3ZvaWQgUGFzdGVib2FyZEhlbHBlcjo6cmVnaXN0ZXJDbGlwYm9hcmQoR3RrQ2xp
cGJvYXJkKiBjbGlwYm9hcmQpCit7CisgICAgQVNTRVJUKGNsaXBib2FyZCk7CisgICAgZ0d0a0Ns
aXBib2FyZHMuYWRkKGNsaXBib2FyZCk7Cit9CisKK3ZvaWQgUGFzdGVib2FyZEhlbHBlcjo6c3Rv
cmVBbGxDbGlwYm9hcmRzKCkKK3sKKyAgICBmb3IgKGF1dG8qIGNsaXBib2FyZCA6IGdHdGtDbGlw
Ym9hcmRzKQorICAgICAgICBndGtfY2xpcGJvYXJkX3N0b3JlKGNsaXBib2FyZCk7Cit9CisKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKaW5k
ZXggMWEyYWZiYS4uMjVkNzMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEhlbHBlci5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICBlbnVtIFBh
c3RlYm9hcmRUYXJnZXRUeXBlIHsgVGFyZ2V0VHlwZU1hcmt1cCwgVGFyZ2V0VHlwZVRleHQsIFRh
cmdldFR5cGVJbWFnZSwgVGFyZ2V0VHlwZVVSSUxpc3QsIFRhcmdldFR5cGVOZXRzY2FwZVVSTCwg
VGFyZ2V0VHlwZVNtYXJ0UGFzdGUsIFRhcmdldFR5cGVVbmtub3duIH07CiAgICAgYm9vbCBjbGlw
Ym9hcmRDb250ZW50U3VwcG9ydHNTbWFydFJlcGxhY2UoR3RrQ2xpcGJvYXJkKik7CiAKKyAgICB2
b2lkIHJlZ2lzdGVyQ2xpcGJvYXJkKEd0a0NsaXBib2FyZCopOworICAgIHN0YXRpYyB2b2lkIHN0
b3JlQWxsQ2xpcGJvYXJkcygpOworCiBwcml2YXRlOgogICAgIFBhc3RlYm9hcmRIZWxwZXIoKTsK
ICAgICB+UGFzdGVib2FyZEhlbHBlcigpID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDAwYTNmYTgu
LjQ0NzhiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxNS0wNy0xNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS10gUGFz
dGUgZGF0YSBpcyByZW1vdmVkIGZyb20gY2xpcGJvYXJkIHdoZW4gY2xvc2luZyBicm93c2VyIHRh
YgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbCBQ
YXN0ZWJvYXJkSGVscGVyOjpzdG9yZUFsbENsaXBib2FyZHMoKSBvbiBwcm9jZXNzIHNodXRkb3du
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwOgorCisy
MDE1LTA3LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwog
ICAgICAgICBbR1RLXSBXZWJQcm9jZXNzTWFpbjo6cGxhdGZvcm1GaW5hbGl6ZSgpIGlzIG5vdCBj
YWxsZWQgd2hlbiB3ZWIgcHJvY2VzcyBmaW5pc2hlZCB3aXRoIGV4aXQoMCkKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzAzNgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKaW5kZXgg
ZDVlZWFlMS4uOTUzZTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9n
dGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
Q2hpbGRQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1Bhc3RlYm9hcmRIZWxwZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDxsaWJpbnRsLmg+CkBA
IC02NSw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGxhdGZvcm1GaW5hbGl6ZSgpIG92
ZXJyaWRlCiAgICAgeworICAgICAgICBQYXN0ZWJvYXJkSGVscGVyOjpzdG9yZUFsbENsaXBib2Fy
ZHMoKTsKKwogICAgICAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nl
c3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgewogICAgICAgICAgICAgc291cF9jYWNo
ZV9mbHVzaChzb3VwQ2FjaGUpOwogICAgICAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNo
ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257747</attachid>
            <date>2015-07-29 06:39:45 -0700</date>
            <delta_ts>2015-07-29 08:23:59 -0700</delta_ts>
            <desc>Another approach</desc>
            <filename>wk-store-clipboards.diff</filename>
            <type>text/plain</type>
            <size>4207</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZTYyNGUwLi4xYjVhMGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTUtMDctMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFBhc3RlIGRhdGEgaXMgcmVtb3ZlZCBmcm9tIGNsaXBib2FyZCB3
aGVuIGNsb3NpbmcgYnJvd3NlciB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NDU0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEdUSysgc3RvcmVzIGFsbCBjbGlwYm9hcmRzIGluIGd0a19tYWluIG9y
IGd0a19hcHBsaWNhdGlvbl9zaHV0ZG93bgorICAgICAgICB3aGVuIHRoZSBtYWluIGxvb3AgZmlu
aXNoZXMuIFdlIGRvbid0IHVzZSBndGtfbWFpbigpIGluIHRoZSB3ZWIKKyAgICAgICAgcHJvY2Vz
cywgc28gd2UgbmVlZCB0byBkbyB0aGUgc2FtZSBhbmQgc3RvcmUgYWxsIGNsaXBib2FyZHMgb24K
KyAgICAgICAgcHJvY2VzcyBzaHV0ZG93bi4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQp
OiBSZWdpc3RlciB0aGUgR3RrQ2xpcGJvYXJkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OnNp
bmdsZXRvbik6IE1ha2UgaXQgZGVzdHJ1Y3RpYmxlLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEhlbHBlcjo6flBhc3RlYm9hcmRIZWxwZXIpOiBDYWxsCisgICAgICAgIGd0a19jbGlwYm9h
cmRfc3RvcmUgZm9yIGV2ZXJ5IHJlZ2lzdGVyZWQgR3RrQ2xpcGJvYXJkLgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEhlbHBlcjo6cmVnaXN0ZXJDbGlwYm9hcmQpOiBTYXZlIHRoZSBnaXZl
bgorICAgICAgICBHdGtDbGlwYm9hcmQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuaDoKKwogMjAxNS0wNy0yOSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIGRpc3BhdGNoX2FwcGx5X2YgYW5kIGluc3RlYWQgdXNlIHZJbWFn
ZSBtb3JlIGRpcmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKaW5kZXggMGM4Y2NlZi4uZjg1MGQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNzYsNyArNzYsNyBAQCBQYXN0ZWJvYXJk
SW1hZ2U6On5QYXN0ZWJvYXJkSW1hZ2UoKQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKFBhc3NS
ZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCkKICAgICA6IG1fZGF0YU9iamVjdChkYXRh
T2JqZWN0KQotICAgICwgbV9ndGtDbGlwYm9hcmQoMCkKKyAgICAsIG1fZ3RrQ2xpcGJvYXJkKG51
bGxwdHIpCiB7CiAgICAgQVNTRVJUKG1fZGF0YU9iamVjdCk7CiB9CkBAIC04Niw2ICs4Niw3IEBA
IFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoR3RrQ2xpcGJvYXJkKiBndGtDbGlwYm9hcmQpCiAgICAg
LCBtX2d0a0NsaXBib2FyZChndGtDbGlwYm9hcmQpCiB7CiAgICAgQVNTRVJUKG1fZGF0YU9iamVj
dCk7CisgICAgUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJDbGlwYm9hcmQo
Z3RrQ2xpcGJvYXJkKTsKIH0KIAogUGFzdGVib2FyZDo6flBhc3RlYm9hcmQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDg3YWI4
MmIuLmRjNzY1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlTWFya3Vw
UHJlZml4KFN0cmluZyYgbWFya3VwKQogCiBQYXN0ZWJvYXJkSGVscGVyJiBQYXN0ZWJvYXJkSGVs
cGVyOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXN0ZWJvYXJk
SGVscGVyPiBoZWxwZXI7CisgICAgc3RhdGljIFBhc3RlYm9hcmRIZWxwZXIgaGVscGVyOwogICAg
IHJldHVybiBoZWxwZXI7CiB9CiAKQEAgLTc1LDYgKzc1LDEyIEBAIFBhc3RlYm9hcmRIZWxwZXI6
OlBhc3RlYm9hcmRIZWxwZXIoKQogICAgIGd0a190YXJnZXRfbGlzdF9hZGQobV90YXJnZXRMaXN0
LmdldCgpLCB1bmtub3duQXRvbSwgMCwgUGFzdGVib2FyZEhlbHBlcjo6VGFyZ2V0VHlwZVVua25v
d24pOwogfQogCitQYXN0ZWJvYXJkSGVscGVyOjp+UGFzdGVib2FyZEhlbHBlcigpCit7CisgICAg
Zm9yIChhdXRvKiBjbGlwYm9hcmQgOiBtX2d0a0NsaXBib2FyZHMpCisgICAgICAgIGd0a19jbGlw
Ym9hcmRfc3RvcmUoY2xpcGJvYXJkKTsKK30KKwogR3RrVGFyZ2V0TGlzdCogUGFzdGVib2FyZEhl
bHBlcjo6dGFyZ2V0TGlzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGFyZ2V0TGlzdC5nZXQo
KTsKQEAgLTMxNiw1ICszMjIsMTEgQEAgYm9vbCBQYXN0ZWJvYXJkSGVscGVyOjpjbGlwYm9hcmRD
b250ZW50U3VwcG9ydHNTbWFydFJlcGxhY2UoR3RrQ2xpcGJvYXJkKiBjbGlwYm8KICAgICByZXR1
cm4gZ3RrX2NsaXBib2FyZF93YWl0X2lzX3RhcmdldF9hdmFpbGFibGUoY2xpcGJvYXJkLCBzbWFy
dFBhc3RlQXRvbSk7CiB9CiAKK3ZvaWQgUGFzdGVib2FyZEhlbHBlcjo6cmVnaXN0ZXJDbGlwYm9h
cmQoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCit7CisgICAgQVNTRVJUKGNsaXBib2FyZCk7Cisg
ICAgbV9ndGtDbGlwYm9hcmRzLmFkZChjbGlwYm9hcmQpOworfQorCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oCmluZGV4IDFhMmFmYmEuLjgw
ZWY5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
SGVscGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxw
ZXIuaApAQCAtMjUsNyArMjUsNyBAQAogI2lmbmRlZiBQYXN0ZWJvYXJkSGVscGVyX2gKICNkZWZp
bmUgUGFzdGVib2FyZEhlbHBlcl9oCiAKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBA
IC01MiwxMyArNTIsMTQgQEAgcHVibGljOgogICAgIGVudW0gUGFzdGVib2FyZFRhcmdldFR5cGUg
eyBUYXJnZXRUeXBlTWFya3VwLCBUYXJnZXRUeXBlVGV4dCwgVGFyZ2V0VHlwZUltYWdlLCBUYXJn
ZXRUeXBlVVJJTGlzdCwgVGFyZ2V0VHlwZU5ldHNjYXBlVVJMLCBUYXJnZXRUeXBlU21hcnRQYXN0
ZSwgVGFyZ2V0VHlwZVVua25vd24gfTsKICAgICBib29sIGNsaXBib2FyZENvbnRlbnRTdXBwb3J0
c1NtYXJ0UmVwbGFjZShHdGtDbGlwYm9hcmQqKTsKIAorICAgIHZvaWQgcmVnaXN0ZXJDbGlwYm9h
cmQoR3RrQ2xpcGJvYXJkKik7CisKIHByaXZhdGU6CiAgICAgUGFzdGVib2FyZEhlbHBlcigpOwot
ICAgIH5QYXN0ZWJvYXJkSGVscGVyKCkgPSBkZWxldGU7CisgICAgflBhc3RlYm9hcmRIZWxwZXIo
KTsKIAogICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gbV90YXJnZXRMaXN0OwotCi0gICAgZnJp
ZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8UGFzdGVib2FyZEhlbHBlcj47CisgICAgSGFz
aFNldDxHdGtDbGlwYm9hcmQqPiBtX2d0a0NsaXBib2FyZHM7CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="282923"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>