<?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>54199</bug_id>
          
          <creation_ts>2011-02-10 05:54:33 -0800</creation_ts>
          <short_desc>[GTK] Implement NativeWebKeyboard and WebContext classes for WebKit2</short_desc>
          <delta_ts>2011-02-25 11:47: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>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>
          
          <blocked>52805</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>348994</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-10 05:54:33 -0800</bug_when>
    <thetext>Add those classes and compile them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348996</commentid>
    <comment_count>1</comment_count>
      <attachid>81963</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-10 05:56:37 -0800</bug_when>
    <thetext>Created attachment 81963
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349096</commentid>
    <comment_count>2</comment_count>
      <attachid>81963</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-10 08:41:47 -0800</bug_when>
    <thetext>Comment on attachment 81963
Proposed patch

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

&gt; Source/WebKit2/Shared/NativeWebKeyboardEvent.h:38
&gt; +#include &lt;gdk/gdk.h&gt;

I recommend using a tyepdef here instead of including all of GDK. You may need to change the member below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349803</commentid>
    <comment_count>3</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-11 09:18:11 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 81963 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81963&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/NativeWebKeyboardEvent.h:38
&gt; &gt; +#include &lt;gdk/gdk.h&gt;
&gt; 
&gt; I recommend using a tyepdef here instead of including all of GDK. You may need to change the member below.

OK, I&apos;ll review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351190</commentid>
    <comment_count>4</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-15 04:35:00 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 81963 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81963&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/NativeWebKeyboardEvent.h:38
&gt; &gt; +#include &lt;gdk/gdk.h&gt;
&gt; 
&gt; I recommend using a tyepdef here instead of including all of GDK. You may need to change the member below.

I&apos;ve tried to use a smart pointer but it also requires the struct definition, I guess the only option would be to use a raw pointer and handle it directly but not sure if avoiding the include deserves adding that kind of code. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351298</commentid>
    <comment_count>5</comment_count>
      <attachid>81963</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-15 08:43:23 -0800</bug_when>
    <thetext>Comment on attachment 81963
Proposed patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/Shared/NativeWebKeyboardEvent.h:38
&gt;&gt;&gt;&gt; +#include &lt;gdk/gdk.h&gt;
&gt;&gt;&gt; 
&gt;&gt;&gt; I recommend using a tyepdef here instead of including all of GDK. You may need to change the member below.
&gt;&gt; 
&gt;&gt; OK, I&apos;ll review it.
&gt; 
&gt; I&apos;ve tried to use a smart pointer but it also requires the struct definition, I guess the only option would be to use a raw pointer and handle it directly but not sure if avoiding the include deserves adding that kind of code. What do you think?

You should just be able to do a typedef union _GdkEvent GdkEvent; and have it hold a GOwnPtr&lt;GdkEvent&gt;.  I believe we do that in other places.

&gt; Source/WebKit2/Shared/gtk/NativeWebKeyboardEventGtk.cpp:36
&gt; +    , m_nativeEvent(*event)

I think you&apos;ll need to do gdk_event_copy here to ensure proper reference counting for the members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357881</commentid>
    <comment_count>6</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-25 06:30:22 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; 
&gt; &gt; I&apos;ve tried to use a smart pointer but it also requires the struct definition, I guess the only option would be to use a raw pointer and handle it directly but not sure if avoiding the include deserves adding that kind of code. What do you think?
&gt; 
&gt; You should just be able to do a typedef union _GdkEvent GdkEvent; and have it hold a GOwnPtr&lt;GdkEvent&gt;.  I believe we do that in other places.
&gt; 

You are right I was just missing the proper constructor to make it work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357884</commentid>
    <comment_count>7</comment_count>
      <attachid>83802</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-25 06:38:29 -0800</bug_when>
    <thetext>Created attachment 83802
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357956</commentid>
    <comment_count>8</comment_count>
      <attachid>83802</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-25 09:07:07 -0800</bug_when>
    <thetext>Comment on attachment 83802
Proposed patch

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

&gt; Source/WebKit2/Shared/gtk/NativeWebKeyboardEventGtk.cpp:39
&gt; +static inline GdkEventKey* copyGdkEventKey(const GdkEventKey* event)
&gt; +{
&gt; +    return reinterpret_cast&lt;GdkEventKey*&gt;(gdk_event_copy(reinterpret_cast&lt;const GdkEvent*&gt;(event)));
&gt; +}

I think this may be uneeded. See below.

&gt; Source/WebKit2/Shared/gtk/NativeWebKeyboardEventGtk.cpp:43
&gt; +    , m_nativeEvent(copyGdkEventKey(event))

Could you just have these accept a GdkEvent* and then just do:

, m_nativeEvent(gdk_even_copy(event)-&gt;key)

&gt; Source/WebKit2/Shared/gtk/NativeWebKeyboardEventGtk.cpp:49
&gt; +    , m_nativeEvent(copyGdkEventKey(event.nativeEvent()))

Here I guess you can do:
gdk_event_copy(reinterpret_cast&lt;const GdkEvent*&gt;(event.nativeEvent())-&gt;key)

&gt; Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp:47
&gt; +    // FIXME: Implement.
&gt; +    return &quot;&quot;;

Let&apos;s fill this in with the default we use now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357959</commentid>
    <comment_count>9</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-25 09:17:55 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 83802 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=83802&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/gtk/NativeWebKeyboardEventGtk.cpp:39
&gt; &gt; +static inline GdkEventKey* copyGdkEventKey(const GdkEventKey* event)
&gt; &gt; +{
&gt; &gt; +    return reinterpret_cast&lt;GdkEventKey*&gt;(gdk_event_copy(reinterpret_cast&lt;const GdkEvent*&gt;(event)));
&gt; &gt; +}
&gt; 
&gt; I think this may be uneeded. See below.
&gt; 
&gt; &gt; Source/WebKit2/Shared/gtk/NativeWebKeyboardEventGtk.cpp:43
&gt; &gt; +    , m_nativeEvent(copyGdkEventKey(event))
&gt; 
&gt; Could you just have these accept a GdkEvent* and then just do:
&gt; 

Yeah, I thought about it but then we will have to change the calls to do the reinterpret_cast, this seemed a better option leaving here all the casts.

&gt; , m_nativeEvent(gdk_even_copy(event)-&gt;key)
&gt; 
&gt; &gt; Source/WebKit2/Shared/gtk/NativeWebKeyboardEventGtk.cpp:49
&gt; &gt; +    , m_nativeEvent(copyGdkEventKey(event.nativeEvent()))
&gt; 
&gt; Here I guess you can do:
&gt; gdk_event_copy(reinterpret_cast&lt;const GdkEvent*&gt;(event.nativeEvent())-&gt;key)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp:47
&gt; &gt; +    // FIXME: Implement.
&gt; &gt; +    return &quot;&quot;;
&gt; 
&gt; Let&apos;s fill this in with the default we use now.

Ok, I&apos;ll do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358025</commentid>
    <comment_count>10</comment_count>
      <attachid>83837</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-25 10:39:03 -0800</bug_when>
    <thetext>Created attachment 83837
Proposed patch

I&apos;ve decided to move all to gdkevent not just the API, looks nicer I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358029</commentid>
    <comment_count>11</comment_count>
      <attachid>83837</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-25 10:44:58 -0800</bug_when>
    <thetext>Comment on attachment 83837
Proposed patch

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

&gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:98
&gt;  void WebView::handleKeyboardEvent(GdkEventKey* event)
&gt;  {
&gt; -    m_page-&gt;handleKeyboardEvent(NativeWebKeyboardEvent(event));
&gt; +    m_page-&gt;handleKeyboardEvent(NativeWebKeyboardEvent(reinterpret_cast&lt;GdkEvent*&gt;(event)));
&gt;  }

Might want to change this call to simply take a GdkEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358095</commentid>
    <comment_count>12</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-25 11:47:12 -0800</bug_when>
    <thetext>Landed http://trac.webkit.org/changeset/79711

Thanks martin!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81963</attachid>
            <date>2011-02-10 05:56:37 -0800</date>
            <delta_ts>2011-02-25 06:38:29 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>context.patch</filename>
            <type>text/plain</type>
            <size>8908</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDc1OTc4ZTgxMDZjZDRhNTAzMWU4MGM3ODMwNjFmMDA0OWQ2ZTM4ZmYKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEphbiAyMSAx
MjoyMDoxOSAyMDExICswMTAwCgogICAgMjAxMS0wMi0xMCAgQW1ydXRoIFJhaiAgPGFtcnV0aHJh
akBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2Fz
aWJoYXRsYUBtb3Rvcm9sYS5jb20+CiAgICAKICAgICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCiAgICAKICAgICAgICAgICAgW0dUS10gSW1wbGVtZW50IE5hdGl2ZVdlYktleWJv
YXJkIGFuZCBXZWJDb250ZXh0IGNsYXNzZXMgZm9yIFdlYktpdDIKICAgICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MTk5CiAgICAKICAgICAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudC5oOgogICAgICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpuYXRp
dmVFdmVudCk6CiAgICAgICAgICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50
R3RrLmNwcDogQWRkZWQuIFN0dWJiZWQKICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gZm9yIEdU
SyBwb3J0LiBZZXQgdG8gaW1wbGVtZW50LgogICAgICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KToKICAgICAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwOiBBZGRlZC4gU3R1YmJlZCBpbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICBmb3IgR1RLIHBvcnQuIFlldCB0byBpbXBsZW1lbnQuCiAgICAgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgogICAgICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToK
ICAgICAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGF0YWJhc2VE
aXJlY3RvcnkpOgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2NzMyNjZiLi5mNmM4YTdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTEtMDItMTAgIEFtcnV0aCBSYWogIDxhbXJ1dGhyYWpAbW90b3Jv
bGEuY29tPiBhbmQgUmF2aSBQaGFuZWVuZHJhIEthc2liaGF0bGEgIDxyYXZpLmthc2liaGF0bGFA
bW90b3JvbGEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtHVEtdIEltcGxlbWVudCBOYXRpdmVXZWJLZXlib2FyZCBhbmQgV2ViQ29udGV4dCBj
bGFzc2VzIGZvciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NDE5OQorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
U2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZl
V2ViS2V5Ym9hcmRFdmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9ndGsvTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHA6IEFkZGVkLiBTdHViYmVkCisgICAgICAgIGltcGxl
bWVudGF0aW9uIGZvciBHVEsgcG9ydC4gWWV0IHRvIGltcGxlbWVudC4KKyAgICAgICAgKFdlYktp
dDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcDogQWRkZWQuIFN0dWJiZWQgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgZm9yIEdUSyBwb3J0LiBZZXQgdG8gaW1wbGVtZW50LgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGly
ZWN0b3J5KToKKwogMjAxMS0wMi0xMCAgUGV0ZXIgVmFyZ2EgIDxwdmFyZ2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDU4YTM4NzYuLjc1ZjBmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0xNzgs
NiArMTc4LDcgQEAgbGliV2ViS2l0Ml9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9EcmF3aW5nQXJlYUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRTbW9v
dGhpbmdMZXZlbC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1NoYXJlYWJsZUJpdG1h
cEd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJDb3JlQXJndW1lbnRD
b2RlcnNHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1hZ2VPcHRpb25zLmggXApA
QCAtMzQ2LDYgKzM0Nyw3IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlH
dGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNw
cCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oCmluZGV4IGNkZjFhZWYuLmJj
Y2E2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZl
bnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICszNCw4IEBACiBPQkpDX0NMQVNTIE5TVmlldzsK
ICNlbGlmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFLZXlFdmVudD4KKyNlbGlmIFBMQVRGT1JN
KEdUSykKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC00NSw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KEhX
TkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pOwogI2VsaWYgUExBVEZPUk0oUVQpCiAg
ICAgZXhwbGljaXQgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChRS2V5RXZlbnQqKTsKKyNlbGlmIFBM
QVRGT1JNKEdUSykKKyAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50S2V5Kik7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTUzLDYgKzU4LDggQEAgcHVibGljOgogICAg
IGNvbnN0IE1TRyogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiAmbV9uYXRpdmVFdmVudDsg
fQogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgY29uc3QgUUtleUV2ZW50KiBuYXRpdmVFdmVudCgp
IGNvbnN0IHsgcmV0dXJuICZtX25hdGl2ZUV2ZW50OyB9CisjZWxpZiBQTEFURk9STShHVEspCisg
ICAgY29uc3QgR2RrRXZlbnRLZXkqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gJm1fbmF0
aXZlRXZlbnQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNjIsNiArNjksOCBAQCBwcml2YXRl
OgogICAgIE1TRyBtX25hdGl2ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgUUtleUV2
ZW50IG1fbmF0aXZlRXZlbnQ7CisjZWxpZiBQTEFURk9STShHVEspCisgICAgR2RrRXZlbnRLZXkg
bV9uYXRpdmVFdmVudDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYjU4ODlhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKQEAgLTAsMCAr
MSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCisKKyNpbmNsdWRlICJX
ZWJFdmVudEZhY3RvcnkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYktleWJv
YXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQorICAg
IDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZl
bnQoZXZlbnQpKQorICAgICwgbV9uYXRpdmVFdmVudCgqZXZlbnQpCit7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4
dEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2MTBjZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0
ay5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorCisjaW5jbHVkZSAi
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV1RGOjpTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgp
LmNhY2hlRGlyZWN0b3J5KCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKK30KKworU3Ry
aW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiAiIjsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83802</attachid>
            <date>2011-02-25 06:38:29 -0800</date>
            <delta_ts>2011-02-25 10:39:03 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>events.patch</filename>
            <type>text/plain</type>
            <size>13129</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IGRkOWNkMjVmZTVkNzFiOWZiMDAzYzQxMGUzMzY1M2Q3ZTQxYTk2OTkKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEphbiAyMSAx
MjoyMDoxOSAyMDExICswMTAwCgogICAgMjAxMS0wMi0yNSAgQW1ydXRoIFJhaiAgPGFtcnV0aHJh
akBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2Fz
aWJoYXRsYUBtb3Rvcm9sYS5jb20+IGFuZCBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2Fs
aWEuY29tPgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAg
CiAgICAgICAgICAgIFtHVEtdIEltcGxlbWVudCBXZWJDb250ZXh0IGFuZCBOYXRpdmVLZXlib2Fy
ZEV2ZW50IGNsYXNzZXMgZm9yIFdlYktpdDIKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NTEwCiAgICAKICAgICAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKICAgICAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oOiBBZGRl
ZCB0aGUgR1RLIGV2ZW50IGF0dHJpYnV0ZQogICAgICAgICAgICBhbmQgY29uc3RydWN0b3JzLCBp
biBvdXIgY2FzZSB3ZSBuZWVkIGl0IGJlY2F1c2Ugd2UgdXNlIGEgcG9pbnRlcgogICAgICAgICAg
ICBhbmQgY29weSB0aGUgZXZlbnQuCiAgICAgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJv
YXJkRXZlbnQ6Om5hdGl2ZUV2ZW50KToKICAgICAgICAgICAgKiBTaGFyZWQvZ3RrL05hdGl2ZVdl
YktleWJvYXJkRXZlbnRHdGsuY3BwOiBBZGRlZC4KICAgICAgICAgICAgKFdlYktpdDo6Y29weUdk
a0V2ZW50S2V5KToKICAgICAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6IFdlIG5lZWQKICAgICAgICAgICAgdG8gY29weSB0aGUg
ZXZlbnQgaW4gdGhlIGNvbnN0cnVjdG9yIHRvIGF2b2lkIHR3byByZWZlcmVuY2VzIHRvCiAgICAg
ICAgICAgIHRoZSBzYW1lIGV2ZW50LgogICAgICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRG
YWN0b3J5LmNwcDogQ2hhbmdlZCB0aGUgcHJvdG90eXBlIG9mIHRoZQogICAgICAgICAgICBmdW5j
dGlvbnMgdG8gYWRkIGNvbnN0LCB3ZSBuZWVkIGl0IGZvciB0aGUgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudAogICAgICAgICAgICBjb25zdHJ1Y3Rvci4KICAgICAgICAgICAgKFdlYktpdDo6bW9kaWZp
ZXJzRm9yRXZlbnQpOgogICAgICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0
ZVdlYktleWJvYXJkRXZlbnQpOgogICAgICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4
dEd0ay5jcHA6IEFkZGVkLiBTdHViYmVkIGltcGxlbWVudGF0aW9uCiAgICAgICAgICAgIGZvciBH
VEsgcG9ydC4gWWV0IHRvIGltcGxlbWVudC4KICAgICAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgogICAgICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSk6CgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGY5ODM0ZjIuLjNiOGFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMyBAQAogMjAx
MS0wMi0yNSAgQW1ydXRoIFJhaiAgPGFtcnV0aHJhakBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBo
YW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2FzaWJoYXRsYUBtb3Rvcm9sYS5jb20+IGFuZCBB
bGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgogCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBXZWJDb250ZXh0
IGFuZCBOYXRpdmVLZXlib2FyZEV2ZW50IGNsYXNzZXMgZm9yIFdlYktpdDIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NTEwCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5o
OiBBZGRlZCB0aGUgR1RLIGV2ZW50IGF0dHJpYnV0ZQorICAgICAgICBhbmQgY29uc3RydWN0b3Jz
LCBpbiBvdXIgY2FzZSB3ZSBuZWVkIGl0IGJlY2F1c2Ugd2UgdXNlIGEgcG9pbnRlcgorICAgICAg
ICBhbmQgY29weSB0aGUgZXZlbnQuCisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJk
RXZlbnQ6Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJv
YXJkRXZlbnRHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Y29weUdka0V2ZW50S2V5
KToKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCk6IFdlIG5lZWQKKyAgICAgICAgdG8gY29weSB0aGUgZXZlbnQgaW4gdGhlIGNv
bnN0cnVjdG9yIHRvIGF2b2lkIHR3byByZWZlcmVuY2VzIHRvCisgICAgICAgIHRoZSBzYW1lIGV2
ZW50LgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDogQ2hhbmdlZCB0
aGUgcHJvdG90eXBlIG9mIHRoZQorICAgICAgICBmdW5jdGlvbnMgdG8gYWRkIGNvbnN0LCB3ZSBu
ZWVkIGl0IGZvciB0aGUgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudAorICAgICAgICBjb25zdHJ1Y3Rv
ci4KKyAgICAgICAgKFdlYktpdDo6bW9kaWZpZXJzRm9yRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHA6IEFkZGVkLiBTdHViYmVkIGltcGxlbWVudGF0
aW9uCisgICAgICAgIGZvciBHVEsgcG9ydC4gWWV0IHRvIGltcGxlbWVudC4KKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSk6
CisKKzIwMTEtMDItMjUgIEFtcnV0aCBSYWogIDxhbXJ1dGhyYWpAbW90b3JvbGEuY29tPiBhbmQg
UmF2aSBQaGFuZWVuZHJhIEthc2liaGF0bGEgIDxyYXZpLmthc2liaGF0bGFAbW90b3JvbGEuY29t
PiBhbmQgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKwogICAgICAgICBS
ZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCiAKICAgICAgICAgW0dUS10gSW1wbGVtZW50IFdl
YlZpZXcgYW5kIFdlYktpdFdlYlZpZXcgY2xhc3NlcyBmb3IgV2ViS2l0MgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQppbmRleCBhZmMzNWM3Li4wYjczYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMTg1
LDYgKzE4NSw3IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRHJhd2luZ0FyZWFJbmZvLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250U21v
b3RoaW5nTGV2ZWwuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9TaGFyZWFibGVCaXRt
YXBHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJk
RXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1BsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvVXBkYXRlQ2h1bmsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1VwZGF0ZUNodW5rLmggXApAQCAtMzY5LDYg
KzM3MCw3IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcCBcCisJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXdXaWRnZXQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlZpZXdXaWRnZXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05h
dGl2ZVdlYktleWJvYXJkRXZlbnQuaAppbmRleCBjZGYxYWVmLi44YmJlZTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKQEAgLTEsNSArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEg
Uy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzM1LDkgQEAKIE9C
SkNfQ0xBU1MgTlNWaWV3OwogI2VsaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UUtleUV2ZW50
PgorI2VsaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPEdPd25QdHIuaD4KK3R5cGVkZWYgc3Ry
dWN0IF9HZGtFdmVudEtleSBHZGtFdmVudEtleTsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTQ1LDYgKzUwLDkgQEAgcHVibGljOgogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQo
SFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CiAjZWxpZiBQTEFURk9STShRVCkK
ICAgICBleHBsaWNpdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KFFLZXlFdmVudCopOworI2VsaWYg
UExBVEZPUk0oR1RLKQorICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCYpOworICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkq
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNTMsNiArNjEsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgTVNHKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuICZtX25hdGl2ZUV2
ZW50OyB9CiAjZWxpZiBQTEFURk9STShRVCkKICAgICBjb25zdCBRS2V5RXZlbnQqIG5hdGl2ZUV2
ZW50KCkgY29uc3QgeyByZXR1cm4gJm1fbmF0aXZlRXZlbnQ7IH0KKyNlbGlmIFBMQVRGT1JNKEdU
SykKKyAgICBjb25zdCBHZGtFdmVudEtleSogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBt
X25hdGl2ZUV2ZW50LmdldCgpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTYyLDYgKzcyLDgg
QEAgcHJpdmF0ZToKICAgICBNU0cgbV9uYXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKFFUKQog
ICAgIFFLZXlFdmVudCBtX25hdGl2ZUV2ZW50OworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIEdP
d25QdHI8R2RrRXZlbnRLZXk+IG1fbmF0aXZlRXZlbnQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MzAxNzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZl
bnRHdGsuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKworI2luY2x1ZGUgIldlYkV2
ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgPGdkay9nZGsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0YXRpYyBpbmxpbmUgR2RrRXZlbnRLZXkqIGNvcHlHZGtFdmVudEtleShjb25zdCBHZGtF
dmVudEtleSogZXZlbnQpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnRL
ZXkqPihnZGtfZXZlbnRfY29weShyZWludGVycHJldF9jYXN0PGNvbnN0IEdka0V2ZW50Kj4oZXZl
bnQpKSk7Cit9CisKK05hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZl
bnQoR2RrRXZlbnRLZXkqIGV2ZW50KQorICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQpKQorICAgICwgbV9uYXRpdmVFdmVu
dChjb3B5R2RrRXZlbnRLZXkoZXZlbnQpKQoreworfQorCitOYXRpdmVXZWJLZXlib2FyZEV2ZW50
OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2
ZW50KQorICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktl
eWJvYXJkRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGNv
cHlHZGtFdmVudEtleShldmVudC5uYXRpdmVFdmVudCgpKSkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5j
cHAKaW5kZXggZDM5NjkxNi4uYTlhY2JiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNHZGtLZXlDb2RlRnJvbUtleVBhZCh1bnNpZ25lZCBrZXl2YWwpCiAgICAgcmV0dXJuIGtl
eXZhbCA+PSBHREtfS0VZX0tQX1NwYWNlICYmIGtleXZhbCA8PSBHREtfS0VZX0tQXzk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JFdmVudChHZGtF
dmVudCogZXZlbnQpCitzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJz
Rm9yRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50KQogewogICAgIHVuc2lnbmVkIG1vZGlmaWVy
cyA9IDA7CiAgICAgR2RrTW9kaWZpZXJUeXBlIHN0YXRlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIFdl
YldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KEdka0V2ZW50
U2Nyb2xsKiBzY3JvbGxFdmVudCkKICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfZXZlbnRf
Z2V0X3RpbWUoZXZlbnQpKTsKIH0KIAotV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQorV2ViS2V5Ym9hcmRF
dmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgR2RrRXZl
bnRLZXkqIGV2ZW50KQogewogICAgIHJldHVybiBXZWJLZXlib2FyZEV2ZW50KChldmVudC0+dHlw
ZSA9PSBHREtfS0VZX1JFTEVBU0UpID8gV2ViRXZlbnQ6OktleVVwIDogV2ViRXZlbnQ6OktleURv
d24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojpz
aW5nbGVDaGFyYWN0ZXJTdHJpbmcoZXZlbnQtPmtleXZhbCksCkBAIC0xODIsOCArMTgyLDggQEAg
V2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQo
R2RrRXZlbnRLZXkqIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8q
IGlzQXV0b1JlcGVhdCAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0dka0tleUNv
ZGVGcm9tS2V5UGFkKGV2ZW50LT5rZXl2YWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZhbHNlIC8qIGlzU3lzdGVtS2V5ICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
ZGlmaWVyc0ZvckV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdka19ldmVudF9nZXRfdGltZShyZWludGVycHJldF9j
YXN0PEdka0V2ZW50Kj4oZXZlbnQpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k
aWZpZXJzRm9yRXZlbnQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHZGtFdmVudCo+KGV2ZW50KSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR2RrRXZlbnQqPihldmVudCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAppbmRl
eCA1ZDkwMDc5Li5mMTM4OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L1dlYkV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZl
bnRGYWN0b3J5LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgV2ViRXZlbnRGYWN0b3J5IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KEdka0V2
ZW50KiwgaW50KTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50
KEdka0V2ZW50U2Nyb2xsKik7Ci0gICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChHZGtFdmVudEtleSopOworICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50
IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgR2RrRXZlbnRLZXkqKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29u
dGV4dEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2MTBjZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4
dEd0ay5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIw
MTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorCisjaW5jbHVk
ZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV1RGOjpTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhY2hlU3RvcmFn
ZSgpLmNhY2hlRGlyZWN0b3J5KCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKK30KKwor
U3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiAiIjsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83837</attachid>
            <date>2011-02-25 10:39:03 -0800</date>
            <delta_ts>2011-02-25 10:44:58 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>events.patch</filename>
            <type>text/plain</type>
            <size>13521</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDZlZDM4NjM2ZjQxMWVhMzU1YTEyNWQ4YjA1ZDgyMTgzOTE3OWQ1MjgKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEphbiAyMSAx
MjoyMDoxOSAyMDExICswMTAwCgogICAgMjAxMS0wMi0yNSAgQW1ydXRoIFJhaiAgPGFtcnV0aHJh
akBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2Fz
aWJoYXRsYUBtb3Rvcm9sYS5jb20+IGFuZCBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2Fs
aWEuY29tPgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAg
CiAgICAgICAgICAgIFtHVEtdIEltcGxlbWVudCBXZWJDb250ZXh0IGFuZCBOYXRpdmVLZXlib2Fy
ZEV2ZW50IGNsYXNzZXMgZm9yIFdlYktpdDIKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NTEwCiAgICAKICAgICAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKICAgICAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oOiBBZGRl
ZCB0aGUgR1RLIGV2ZW50IGF0dHJpYnV0ZQogICAgICAgICAgICBhbmQgY29uc3RydWN0b3JzLCBp
biBvdXIgY2FzZSB3ZSBuZWVkIGl0IGJlY2F1c2Ugd2UgdXNlIGEgcG9pbnRlcgogICAgICAgICAg
ICBhbmQgY29weSB0aGUgZXZlbnQuCiAgICAgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJv
YXJkRXZlbnQ6Om5hdGl2ZUV2ZW50KToKICAgICAgICAgICAgKiBTaGFyZWQvZ3RrL05hdGl2ZVdl
YktleWJvYXJkRXZlbnRHdGsuY3BwOiBBZGRlZC4KICAgICAgICAgICAgKFdlYktpdDo6TmF0aXZl
V2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6IFdlIG5lZWQKICAgICAg
ICAgICAgdG8gY29weSB0aGUgZXZlbnQgaW4gdGhlIGNvbnN0cnVjdG9yIHRvIGF2b2lkIHR3byBy
ZWZlcmVuY2VzIHRvCiAgICAgICAgICAgIHRoZSBzYW1lIGV2ZW50LgogICAgICAgICAgICAqIFNo
YXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDogQ2hhbmdlZCB0aGUgcHJvdG90eXBlIG9mIHRo
ZQogICAgICAgICAgICBmdW5jdGlvbnMgdG8gYWRkIGNvbnN0LCB3ZSBuZWVkIGl0IGZvciB0aGUg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudAogICAgICAgICAgICBjb25zdHJ1Y3Rvci4KICAgICAgICAg
ICAgKFdlYktpdDo6bW9kaWZpZXJzRm9yRXZlbnQpOgogICAgICAgICAgICAoV2ViS2l0OjpXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQpOgogICAgICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHA6IEFkZGVkLiBTdHViYmVkIGltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgIGZvciBHVEsgcG9ydC4gWWV0IHRvIGltcGxlbWVudC4KICAgICAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CiAgICAgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgog
ICAgICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURp
cmVjdG9yeSk6CiAgICAgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcDoKICAgICAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGViY2ViZjQuLjFkY2EwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0w
Mi0yNSAgQW1ydXRoIFJhaiAgPGFtcnV0aHJhakBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5l
ZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2FzaWJoYXRsYUBtb3Rvcm9sYS5jb20+IGFuZCBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBXZWJDb250ZXh0IGFu
ZCBOYXRpdmVLZXlib2FyZEV2ZW50IGNsYXNzZXMgZm9yIFdlYktpdDIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NTEwCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oOiBB
ZGRlZCB0aGUgR1RLIGV2ZW50IGF0dHJpYnV0ZQorICAgICAgICBhbmQgY29uc3RydWN0b3JzLCBp
biBvdXIgY2FzZSB3ZSBuZWVkIGl0IGJlY2F1c2Ugd2UgdXNlIGEgcG9pbnRlcgorICAgICAgICBh
bmQgY29weSB0aGUgZXZlbnQuCisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZl
bnQ6Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJk
RXZlbnRHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRF
dmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6IFdlIG5lZWQKKyAgICAgICAgdG8gY29weSB0
aGUgZXZlbnQgaW4gdGhlIGNvbnN0cnVjdG9yIHRvIGF2b2lkIHR3byByZWZlcmVuY2VzIHRvCisg
ICAgICAgIHRoZSBzYW1lIGV2ZW50LgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0
b3J5LmNwcDogQ2hhbmdlZCB0aGUgcHJvdG90eXBlIG9mIHRoZQorICAgICAgICBmdW5jdGlvbnMg
dG8gYWRkIGNvbnN0LCB3ZSBuZWVkIGl0IGZvciB0aGUgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudAor
ICAgICAgICBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYktpdDo6bW9kaWZpZXJzRm9yRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZl
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHA6IEFkZGVkLiBT
dHViYmVkIGltcGxlbWVudGF0aW9uCisgICAgICAgIGZvciBHVEsgcG9ydC4gWWV0IHRvIGltcGxl
bWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRE
YXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIwMTEt
MDItMjUgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggYWZjMzVj
Ny4uMGI3M2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTE4NSw2ICsxODUsNyBAQCBsaWJX
ZWJLaXQyX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYXdpbmdBcmVh
SW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRm9udFNtb290aGluZ0xldmVsLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvU2hhcmVhYmxlQml0bWFwR3RrLmNwcCBcCisJU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1VwZGF0ZUNodW5rLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9VcGRhdGVDaHVuay5oIFwKQEAgLTM2OSw2ICszNzAsNyBAQCBsaWJXZWJL
aXQyX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViSW5zcGVjdG9yR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJWaWV3V2lkZ2V0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3
V2lkZ2V0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktl
eWJvYXJkRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgKaW5kZXggY2RmMWFlZi4uZDg4NDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oCkBAIC0xLDUgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9u
cyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTAogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICszNSw5IEBACiBPQkpDX0NMQVNTIE5TVmlldzsK
ICNlbGlmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFLZXlFdmVudD4KKyNlbGlmIFBMQVRGT1JN
KEdUSykKKyNpbmNsdWRlIDxHT3duUHRyR3RrLmg+Cit0eXBlZGVmIHVuaW9uIF9HZGtFdmVudCBH
ZGtFdmVudDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ1LDYgKzUwLDkgQEAg
cHVibGljOgogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoSFdORCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0sIExQQVJBTSk7CiAjZWxpZiBQTEFURk9STShRVCkKICAgICBleHBsaWNpdCBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50KFFLZXlFdmVudCopOworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOworICAg
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZlbnQqKTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtNTMsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTVNHKiBuYXRpdmVF
dmVudCgpIGNvbnN0IHsgcmV0dXJuICZtX25hdGl2ZUV2ZW50OyB9CiAjZWxpZiBQTEFURk9STShR
VCkKICAgICBjb25zdCBRS2V5RXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gJm1f
bmF0aXZlRXZlbnQ7IH0KKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBjb25zdCBHZGtFdmVudCog
bmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CiAjZW5k
aWYKIAogcHJpdmF0ZToKQEAgLTYyLDYgKzcyLDggQEAgcHJpdmF0ZToKICAgICBNU0cgbV9uYXRp
dmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIFFLZXlFdmVudCBtX25hdGl2ZUV2ZW50
OworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZl
bnQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsv
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjRmZjg1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJk
RXZlbnQuaCIKKworI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgPGdkay9n
ZGsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5h
dGl2ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZlbnQqIGV2ZW50KQorICAgIDogV2ViS2V5Ym9hcmRF
dmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoJmV2ZW50LT5rZXkp
KQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudCkpCit7Cit9CisKK05h
dGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCisgICAgOiBXZWJLZXlib2FyZEV2ZW50KFdlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudCgmZXZlbnQubmF0aXZlRXZlbnQoKS0+a2V5
KSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQubmF0aXZlRXZlbnQo
KSkpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGQzOTY5MTYuLmE5YWNiYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzR2RrS2V5Q29kZUZyb21LZXlQYWQodW5zaWdu
ZWQga2V5dmFsKQogICAgIHJldHVybiBrZXl2YWwgPj0gR0RLX0tFWV9LUF9TcGFjZSAmJiBrZXl2
YWwgPD0gR0RLX0tFWV9LUF85OwogfQogCi1zdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpNb2RpZmll
cnMgbW9kaWZpZXJzRm9yRXZlbnQoR2RrRXZlbnQqIGV2ZW50KQorc3RhdGljIGlubGluZSBXZWJF
dmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0ZvckV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCkK
IHsKICAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOwogICAgIEdka01vZGlmaWVyVHlwZSBzdGF0
ZTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCogc2Nyb2xsRXZlbnQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKLVdlYktleWJv
YXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50
S2V5KiBldmVudCkKK1dlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJL
ZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50S2V5KiBldmVudCkKIHsKICAgICByZXR1cm4gV2Vi
S2V5Ym9hcmRFdmVudCgoZXZlbnQtPnR5cGUgPT0gR0RLX0tFWV9SRUxFQVNFKSA/IFdlYkV2ZW50
OjpLZXlVcCA6IFdlYkV2ZW50OjpLZXlEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV2ZW50LT5rZXl2
YWwpLApAQCAtMTgyLDggKzE4Miw4IEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50S2V5KiBldmVudCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc0F1dG9SZXBlYXQgKi8sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXNHZGtLZXlDb2RlRnJvbUtleVBhZChldmVudC0+a2V5dmFsKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc1N5c3RlbUtleSAqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChyZWludGVycHJldF9jYXN0
PEdka0V2ZW50Kj4oZXZlbnQpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfZXZl
bnRfZ2V0X3RpbWUocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR2RrRXZlbnQqPihldmVudCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdk
a19ldmVudF9nZXRfdGltZShyZWludGVycHJldF9jYXN0PGNvbnN0IEdka0V2ZW50Kj4oZXZlbnQp
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggNWQ5MDA3OS4uZjEzODkwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIFdlYkV2ZW50RmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQg
Y3JlYXRlV2ViTW91c2VFdmVudChHZGtFdmVudCosIGludCk7CiAgICAgc3RhdGljIFdlYldoZWVs
RXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCopOwotICAgIHN0YXRpYyBX
ZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqKTsKKyAg
ICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdk
a0V2ZW50S2V5Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQ2NzcyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKKworI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dURjo6
U3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5jYWNoZURpcmVjdG9yeSgpOworfQorCit2b2lk
IFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYpCit7Cit9CisKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1
bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpm
cm9tVVRGOChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdCIs
ICJkYXRhYmFzZXMiLCBOVUxMKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5jcHAKaW5kZXggYmE1OGFkZS4uNGFhMzVlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuY3BwCkBAIC05NCw3ICs5NCw3
IEBAIHZvaWQgV2ViVmlldzo6c2V0U2l6ZShHdGtXaWRnZXQqLCBJbnRTaXplIHdpbmRvd1NpemUp
CiAKIHZvaWQgV2ViVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChHZGtFdmVudEtleSogZXZlbnQp
CiB7Ci0gICAgbV9wYWdlLT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQoZXZlbnQpKTsKKyAgICBtX3BhZ2UtPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKSk7CiB9CiAKIHZv
aWQgV2ViVmlldzo6aGFuZGxlTW91c2VFdmVudChHZGtFdmVudCogZXZlbnQsIGludCBjdXJyZW50
Q2xpY2tDb3VudCkK
</data>
<flag name="review"
          id="75728"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>