<?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>93979</bug_id>
          
          <creation_ts>2012-08-14 09:32:25 -0700</creation_ts>
          <short_desc>[WK2] Implement eventSender.scheduleAsynchronousKeyDown</short_desc>
          <delta_ts>2013-01-09 14:38:16 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>695046</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-08-14 09:32:25 -0700</bug_when>
    <thetext>Needed by: fast/mutation/end-of-task-delivery.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798434</commentid>
    <comment_count>1</comment_count>
      <attachid>180989</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-01 05:27:26 -0800</bug_when>
    <thetext>Created attachment 180989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802860</commentid>
    <comment_count>2</comment_count>
      <attachid>180989</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-08 17:56:53 -0800</bug_when>
    <thetext>Comment on attachment 180989
Patch

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

The patch looks good. Some nitpick:

&gt; Tools/ChangeLog:14
&gt; +        (WTR):

You can remove this.

&gt; Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp:269
&gt; +    return EventSenderMessageBody.leakRef();

I think it would be reasonable to return a WKRetainPtr here to avoid accidents if someone forgets to use Adopt.

&gt; Tools/WebKitTestRunner/TestController.cpp:800
&gt; +            WKRetainPtr&lt;WKStringRef&gt; keyKey = adoptWK(WKStringCreateWithUTF8CString(&quot;Key&quot;));
&gt; +            WKStringRef key = static_cast&lt;WKStringRef&gt;(WKDictionaryGetItemForKey(messageBodyDictionary, keyKey.get()));
&gt; +
&gt; +            WKRetainPtr&lt;WKStringRef&gt; modifiersKey = adoptWK(WKStringCreateWithUTF8CString(&quot;Modifiers&quot;));
&gt; +            WKEventModifiers modifiers = static_cast&lt;WKEventModifiers&gt;(WKUInt64GetValue(static_cast&lt;WKUInt64Ref&gt;(WKDictionaryGetItemForKey(messageBodyDictionary, modifiersKey.get()))));
&gt; +
&gt; +            WKRetainPtr&lt;WKStringRef&gt; locationKey = adoptWK(WKStringCreateWithUTF8CString(&quot;Location&quot;));
&gt; +            unsigned location = static_cast&lt;unsigned&gt;(WKUInt64GetValue(static_cast&lt;WKUInt64Ref&gt;(WKDictionaryGetItemForKey(messageBodyDictionary, locationKey.get()))));
&gt; +
&gt; +            // Forward to WebProcess
&gt; +            WKPageSetShouldSendEventsSynchronously(mainWebView()-&gt;page(), false);
&gt; +            m_eventSenderProxy-&gt;keyDown(key, modifiers, location);
&gt; +
&gt; +            return;

This is duplicated code from the synchronous message handler.
Please refactor to make a common path as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803119</commentid>
    <comment_count>3</comment_count>
      <attachid>181870</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-09 01:04:55 -0800</bug_when>
    <thetext>Created attachment 181870
Patch

Take Benjamin&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803700</commentid>
    <comment_count>4</comment_count>
      <attachid>181870</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-09 14:21:29 -0800</bug_when>
    <thetext>Comment on attachment 181870
Patch

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

Looks good.
One comment but it is not blocking:

&gt; Tools/WebKitTestRunner/TestController.cpp:815
&gt; +            didReceiveKeyDownMessageFromInjectedBundle(messageBodyDictionary, false);

You can avoid this kind of code by using a enum instead of a boolean
    didReceiveKeyDownMessageFromInjectedBundle(messageBodyDictionary, SendSynchronously);
    didReceiveKeyDownMessageFromInjectedBundle(messageBodyDictionary, SendAsynchronously);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803711</commentid>
    <comment_count>5</comment_count>
      <attachid>181870</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 14:38:11 -0800</bug_when>
    <thetext>Comment on attachment 181870
Patch

Clearing flags on attachment: 181870

Committed r139242: &lt;http://trac.webkit.org/changeset/139242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803712</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 14:38:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180989</attachid>
            <date>2013-01-01 05:27:26 -0800</date>
            <delta_ts>2013-01-09 01:04:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>93979_scheduleAsynchronousKeyDown.patch</filename>
            <type>text/plain</type>
            <size>10272</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YjM2OTZkLi44OGZkYTM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDEt
MDEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXSBJbXBsZW1lbnQgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3luY2hyb25vdXNLZXlE
b3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBXSzIgZXhwZWN0YXRpb25zIGZvciB0ZXN0cyByZXF1aXJpbmcKKyAgICAgICAgZXZlbnRTZW5k
ZXIuc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duIG5vdyB0aGF0IGl0IGlzCisgICAgICAgIGlt
cGxlbWVudGVkIGluIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwt
d2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDEyLTEyLTMxICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBbRUZMXSBjc3MzL21hc2tpbmcvY2xpcC1wYXRoLWNpcmNsZS1yZWxhdGl2ZS1vdmVyZmxvdy5o
dG1sIG5lZWRzIGV4cGVjdGVkIHJlc3VsdHMgdXBkYXRlIGFmdGVyIDk3MjE3CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmFmYzkwZC4uY2Zk
NjYxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMzA4LDggKzMwOCw4IEBAIEJ1ZyhFRkwpIGZhc3QvZXZlbnRzL3RvdWNoL2Jhc2ljLXNp
bmdsZS10b3VjaC1ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQogQnVnKEVGTCkgZWRpdGluZy9zcGVs
bGluZy9ncmFtbWFyLWVkaXQtd29yZC5odG1sIFsgRmFpbHVyZSBdCiBCdWcoRUZMKSBlZGl0aW5n
L3NwZWxsaW5nL21hcmtlcnMuaHRtbCBbIEZhaWx1cmUgXQogCi0jIFdlYktpdFRlc3RSdW5uZXIg
bmVlZHMgYW4gaW1wbGVtZW50YXRpb24gZm9yIGV2ZW50U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9u
b3VzS2V5RG93bgotd2Via2l0Lm9yZy9iLzkzOTc5IGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
ZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbCBbIEZhaWx1cmUgXQorIyBGYWlscyBiZWNhdXNlIE11
dGF0aW9uT2JzZXJ2ZXJzIGFyZSBub3Qgbm90aWZpZWQgYXQgZW5kLW9mLXRhc2suCit3ZWJraXQu
b3JnL2IvNzgyOTAgZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9lbmQtb2YtdGFzay1kZWxpdmVy
eS5odG1sIFsgRmFpbHVyZSBdCiAKICMgdGVzdFJ1bm5lci5zZXRVc2VEZWZlcnJlZEZyYW1lTG9h
ZGluZygpIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBXSzIuIFNraXBwZWQgc28gaXQgZG9lcyBub3Qg
Z2VuZXJhdGUgUE5HIHJlc3VsdHMuCiB3ZWJraXQub3JnL2IvOTM5ODAgaHR0cC90ZXN0cy9hcHBj
YWNoZS9sb2FkLWZyb20tYXBwY2FjaGUtZGVmZXItcmVzdW1lLWNyYXNoLmh0bWwgWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBm
YWVkNWM2Li5iNmI5OTNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xNzksOSArMTc5LDggQEAgd2Via2l0Lm9yZy9iLzgxMDQyIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1kaXNhYmxlZC5odG1sIFsgRmFpbHVyZSBdCiAj
IGh0dHA6Ly93ZWJraXQub3JnL2IvOTM5NzcKIHdlYmtpdC5vcmcvYi85Mzk3NyBmYXN0L2RvbS9H
ZW9sb2NhdGlvbi9wYWdlLXJlbG9hZC1jYW5jZWwtcGVybWlzc2lvbi1yZXF1ZXN0cy5odG1sIFsg
RmFpbHVyZSBdCiAKLSMgSW1wbGVtZW50IGV2ZW50U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9ub3Vz
S2V5RG93bgotIyBodHRwOi8vd2Via2l0Lm9yZy9iLzkzOTc5Ci1CdWcoR1RLKSBmYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwgWyBGYWlsdXJlIFRpbWVv
dXQgXQorIyBGYWlscyBiZWNhdXNlIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBub3Qgbm90aWZpZWQg
YXQgZW5kLW9mLXRhc2suCit3ZWJraXQub3JnL2IvNzgyOTAgZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sIFsgRmFpbHVyZSBUaW1lb3V0IF0KIAogIyBJ
bXBsZW1lbnQgdGVzdFJ1bm5lci5zZXRVc2VEZWZlcnJlZEZyYW1lTG9hZGluZwogIyBodHRwOi8v
d2Via2l0Lm9yZy9iLzkzOTgwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDA4ZTg4ZDQuLjk1Mjg4ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC01MjQsMTAgKzUyNCw2IEBAIHN0b3JhZ2UvZG9tc3RvcmFnZS9s
b2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTctdXNhZ2UuaHRtbAog
ZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwKIGZhc3QvZm9ybXMvcmVzZXQtYXV0b2Zp
bGxlZC5odG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhIG1vcmUtY29tcGxldGUgaW1w
bGVtZW50YXRpb24gb2YgZXZlbnRTZW5kZXIKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQyMTk0Ci1mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2lubGluZS1ldmVu
dC1saXN0ZW5lci5odG1sCi0KICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBldmVudFNlbmRlci5j
b250ZXh0Q2xpY2soKQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY4ODEKIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRleHQtbWVudS10ZXh0LXNlbGVjdGlvbi5odG1s
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTc1
YzkyNi4uNGU3MzViNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAxLTAxICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gSW1wbGVtZW50IGV2
ZW50U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5NzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgZXZlbnRTZW5kZXIuc2NoZWR1
bGVBc3luY2hyb25vdXNLZXlEb3duKCkgaW4KKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lci4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRl
S2V5RG93bk1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OmtleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdD
b250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24pOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oOgorICAg
ICAgICAoRXZlbnRTZW5kaW5nQ29udHJvbGxlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTItMTItMzEgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1vdmUg
SW1hZ2VEaWZmIHRvIHRoZSBUb29scyBkaXJlY3Rvcnkgcm9vdApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwKaW5kZXggMWQ2MmM5Yi4uNjU3MTZmMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9F
dmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCkBAIC0zNSw2
ICszNSw3IEBAIGludGVyZmFjZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIHsKICAgICB2b2lkIGxl
YXBGb3J3YXJkKGluIGxvbmcgbWlsbGlzZWNvbmRzKTsKIAogICAgIHZvaWQga2V5RG93bihpbiBE
T01TdHJpbmcga2V5LCBpbiBvYmplY3QgbW9kaWZpZXJBcnJheSwgaW4gbG9uZyBsb2NhdGlvbik7
CisgICAgdm9pZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oaW4gRE9NU3RyaW5nIGtleSk7
CiAKICAgICAvLyBab29tIGZ1bmN0aW9ucy4KICAgICB2b2lkIHRleHRab29tSW4oKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRlZTc4MjEuLmNiNGEwMDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9F
dmVudFNlbmRpbmdDb250cm9sbGVyLmNwcApAQCAtMjQ3LDE0ICsyNDcsOCBAQCB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2soKQogICAgIFdLQnVu
ZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNl
bmRlck1lc3NhZ2VOYW1lLmdldCgpLCBtb3VzZVVwTWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCi12
b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmtleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1Zh
bHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3N0YXRpYyBXS011dGFibGVEaWN0
aW9uYXJ5UmVmIGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShKU1N0cmluZ1JlZiBrZXksIFdLRXZl
bnRNb2RpZmllcnMgbW9kaWZpZXJzLCBpbnQgbG9jYXRpb24pCiB7Ci0gICAgV0tCdW5kbGVQYWdl
UmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCk7Ci0gICAg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdlKTsK
LSAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29u
dGV4dChmcmFtZSk7Ci0gICAgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMgPSBwYXJzZU1vZGlm
aWVyQXJyYXkoY29udGV4dCwgbW9kaWZpZXJBcnJheSk7Ci0KLSAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxl
RGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9keShBZG9wdFdLLCBXS011dGFibGVE
aWN0aW9uYXJ5Q3JlYXRlKCkpOwogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1l
c3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN1Yk1lc3Nh
Z2UiKSk7CkBAIC0yNzIsNyArMjY2LDI4IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwKICAgICBX
S1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gbG9jYXRpb25SZWYoQWRvcHRXSywgV0tVSW50NjRDcmVh
dGUobG9jYXRpb24pKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkuZ2V0KCksIGxvY2F0aW9uS2V5LmdldCgpLCBsb2NhdGlvblJlZi5nZXQoKSk7CiAKLSAg
ICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3Nh
Z2VCb2R5LmdldCgpLCAwKTsKKyAgICByZXR1cm4gRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5sZWFr
UmVmKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1N0cmlu
Z1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQoreworICAg
IFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+
cGFnZSgpOworICAgIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWlu
RnJhbWUocGFnZSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0
SmF2YVNjcmlwdENvbnRleHQoZnJhbWUpOworICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJz
ID0gcGFyc2VNb2RpZmllckFycmF5KGNvbnRleHQsIG1vZGlmaWVyQXJyYXkpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWlu
UHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGtleURvd25NZXNzYWdlQm9keShBZG9wdFdLLCBj
cmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCBtb2RpZmllcnMsIGxvY2F0aW9uKSk7CisKKyAg
ICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBrZXlEb3duTWVzc2FnZUJv
ZHkuZ2V0KCksIDApOworfQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxl
QXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmluZ1JlZiBrZXkpCit7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0
YWJsZURpY3Rpb25hcnlSZWY+IGtleURvd25NZXNzYWdlQm9keShBZG9wdFdLLCBjcmVhdGVLZXlE
b3duTWVzc2FnZUJvZHkoa2V5LCAwIC8qIG1vZGlmaWVycyAqLywgMCAvKiBsb2NhdGlvbiAqLykp
OworCisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVu
ZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIGtleURvd25NZXNzYWdlQm9keS5n
ZXQoKSk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VTY3JvbGxCeShp
bnQgeCwgaW50IHkpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCmluZGV4IDY5YzU0ZjkuLmJk
YWNmZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2soKTsKIAogICAgIHZvaWQg
a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxv
Y2F0aW9uKTsKKyAgICB2b2lkIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmluZ1Jl
ZiBrZXkpOwogCiAgICAgLy8gWm9vbSBmdW5jdGlvbnMuCiAgICAgdm9pZCB0ZXh0Wm9vbUluKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGExYTI0NTku
LjhhYjMxNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBA
IC03ODIsNiArNzgyLDI0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiS2V5RG93biIpKSB7CisgICAgICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4ga2V5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiS2V5IikpOworICAgICAgICAgICAgV0tTdHJpbmdSZWYga2V5ID0gc3RhdGljX2Nh
c3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCBrZXlLZXkuZ2V0KCkpKTsKKworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1vZGlmaWVyc0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIk1vZGlmaWVycyIpKTsKKyAgICAgICAgICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJz
ID0gc3RhdGljX2Nhc3Q8V0tFdmVudE1vZGlmaWVycz4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNf
Y2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURp
Y3Rpb25hcnksIG1vZGlmaWVyc0tleS5nZXQoKSkpKSk7CisKKyAgICAgICAgICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBsb2NhdGlvbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkxvY2F0aW9uIikpOworICAgICAgICAgICAgdW5zaWduZWQgbG9jYXRpb24g
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJ
bnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnks
IGxvY2F0aW9uS2V5LmdldCgpKSkpKTsKKworICAgICAgICAgICAgLy8gRm9yd2FyZCB0byBXZWJQ
cm9jZXNzCisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNs
eShtYWluV2ViVmlldygpLT5wYWdlKCksIGZhbHNlKTsKKyAgICAgICAgICAgIG1fZXZlbnRTZW5k
ZXJQcm94eS0+a2V5RG93bihrZXksIG1vZGlmaWVycywgbG9jYXRpb24pOworCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAjZW5kaWYK
</data>
<flag name="review"
          id="198441"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181870</attachid>
            <date>2013-01-09 01:04:55 -0800</date>
            <delta_ts>2013-01-09 14:38:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>93979_scheduleAsynchronousKeyDown.patch</filename>
            <type>text/plain</type>
            <size>13407</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWMxMjA3Li4zNDE1ZGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDEt
MDkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXSBJbXBsZW1lbnQgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3luY2hyb25vdXNLZXlE
b3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBXSzIgZXhwZWN0YXRpb25zIGZvciB0ZXN0cyByZXF1aXJpbmcKKyAgICAgICAgZXZlbnRTZW5k
ZXIuc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duIG5vdyB0aGF0IGl0IGlzCisgICAgICAgIGlt
cGxlbWVudGVkIGluIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwt
d2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDEzLTAxLTA4ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBVc2Ugd2luZG93LldlYktpdFNoYWRvd1Jvb3QgZm9yIGNoZWNraW5nIHdoZXRoZXIgYSBub2Rl
IGlzIHNoYWRvdyByb290IG9yIG5vdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCA2NDdjZjkyLi5jZWNiMzQ3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMDUsOCArMzA1LDggQEAg
QnVnKEVGTCkgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5odG1s
IFsgRmFpbHVyZSBdCiBCdWcoRUZMKSBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItZWRpdC13b3Jk
Lmh0bWwgWyBGYWlsdXJlIF0KIEJ1ZyhFRkwpIGVkaXRpbmcvc3BlbGxpbmcvbWFya2Vycy5odG1s
IFsgRmFpbHVyZSBdCiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhbiBpbXBsZW1lbnRhdGlv
biBmb3IgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duCi13ZWJraXQub3Jn
L2IvOTM5NzkgZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9lbmQtb2YtdGFzay1kZWxpdmVyeS5o
dG1sIFsgRmFpbHVyZSBdCisjIEZhaWxzIGJlY2F1c2UgTXV0YXRpb25PYnNlcnZlcnMgYXJlIG5v
dCBub3RpZmllZCBhdCBlbmQtb2YtdGFzay4KK3dlYmtpdC5vcmcvYi83ODI5MCBmYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwgWyBGYWlsdXJlIF0KIAog
IyB0ZXN0UnVubmVyLnNldFVzZURlZmVycmVkRnJhbWVMb2FkaW5nKCkgaXMgbm90IGltcGxlbWVu
dGVkIGluIFdLMi4gU2tpcHBlZCBzbyBpdCBkb2VzIG5vdCBnZW5lcmF0ZSBQTkcgcmVzdWx0cy4K
IHdlYmtpdC5vcmcvYi85Mzk4MCBodHRwL3Rlc3RzL2FwcGNhY2hlL2xvYWQtZnJvbS1hcHBjYWNo
ZS1kZWZlci1yZXN1bWUtY3Jhc2guaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGJjYzA3OGMuLmZmYTBiZGQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3NSw5
ICsxNzUsOCBAQCB3ZWJraXQub3JnL2IvODEwNDIgZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNr
LXBhc3RlLWRpc2FibGVkLmh0bWwgWyBGYWlsdXJlIF0KICMgaHR0cDovL3dlYmtpdC5vcmcvYi85
Mzk3Nwogd2Via2l0Lm9yZy9iLzkzOTc3IGZhc3QvZG9tL0dlb2xvY2F0aW9uL3BhZ2UtcmVsb2Fk
LWNhbmNlbC1wZXJtaXNzaW9uLXJlcXVlc3RzLmh0bWwgWyBGYWlsdXJlIF0KIAotIyBJbXBsZW1l
bnQgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duCi0jIGh0dHA6Ly93ZWJr
aXQub3JnL2IvOTM5NzkKLUJ1ZyhHVEspIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZW5kLW9m
LXRhc2stZGVsaXZlcnkuaHRtbCBbIEZhaWx1cmUgVGltZW91dCBdCisjIEZhaWxzIGJlY2F1c2Ug
TXV0YXRpb25PYnNlcnZlcnMgYXJlIG5vdCBub3RpZmllZCBhdCBlbmQtb2YtdGFzay4KK3dlYmtp
dC5vcmcvYi83ODI5MCBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2VuZC1vZi10YXNrLWRlbGl2
ZXJ5Lmh0bWwgWyBGYWlsdXJlIFRpbWVvdXQgXQogCiAjIEltcGxlbWVudCB0ZXN0UnVubmVyLnNl
dFVzZURlZmVycmVkRnJhbWVMb2FkaW5nCiAjIGh0dHA6Ly93ZWJraXQub3JnL2IvOTM5ODAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTc0N2JhNy4uMjVk
ZDhhZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUx
MiwxMCArNTEyLDYgQEAgc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJh
Y2tlci9zdG9yYWdlLXRyYWNrZXItNy11c2FnZS5odG1sCiBmYXN0L2Zvcm1zL2lucHV0LWF1dG9m
aWxsZWQuaHRtbAogZmFzdC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0bWwKIAotIyBXZWJLaXRU
ZXN0UnVubmVyIG5lZWRzIGEgbW9yZS1jb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBldmVudFNl
bmRlcgotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxOTQKLWZh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvaW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwKLQogIyBX
ZWJLaXRUZXN0UnVubmVyIG5lZWRzIGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpCiAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njg4MQogZWRpdGluZy9zZWxlY3Rp
b24vY29udGV4dC1tZW51LXRleHQtc2VsZWN0aW9uLmh0bWwKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODVhNGY4Li44MjEzZGQxIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTMtMDEtMDkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXSBJbXBsZW1lbnQgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3lu
Y2hyb25vdXNLZXlEb3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05Mzk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCBldmVudFNlbmRlci5zY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24o
KSBpbgorICAgICAgICBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkpOgor
ICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjprZXlEb3duKToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3du
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUtleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFRlc3RDb250cm9sbGVyKToKKwog
MjAxMy0wMS0wOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFJlZ3Jlc3Npb24ocjEzODY4MSk6IEFkZCBIQVZFKEFDQ0VTU0lCSUxJVFkpIGd1YXJk
IHRvIGF0ayBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5pZGwKaW5kZXggMWQ2MmM5Yi4uNjU3MTZmMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlk
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCkBAIC0zNSw2ICszNSw3IEBAIGludGVyZmFjZSBFdmVu
dFNlbmRpbmdDb250cm9sbGVyIHsKICAgICB2b2lkIGxlYXBGb3J3YXJkKGluIGxvbmcgbWlsbGlz
ZWNvbmRzKTsKIAogICAgIHZvaWQga2V5RG93bihpbiBET01TdHJpbmcga2V5LCBpbiBvYmplY3Qg
bW9kaWZpZXJBcnJheSwgaW4gbG9uZyBsb2NhdGlvbik7CisgICAgdm9pZCBzY2hlZHVsZUFzeW5j
aHJvbm91c0tleURvd24oaW4gRE9NU3RyaW5nIGtleSk7CiAKICAgICAvLyBab29tIGZ1bmN0aW9u
cy4KICAgICB2b2lkIHRleHRab29tSW4oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3Bw
CmluZGV4IDRlZTc4MjEuLjcwMDVkZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNw
cApAQCAtMjQ3LDE0ICsyNDcsOCBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVk
dWxlQXN5bmNocm9ub3VzQ2xpY2soKQogICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBt
b3VzZVVwTWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCi12b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6OmtleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGlu
dCBsb2NhdGlvbikKK3N0YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBj
cmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoSlNTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVycywgaW50IGxvY2F0aW9uKQogewotICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0g
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOwotICAgIFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7Ci0gICAgSlNDb250
ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQoZnJhbWUp
OwotICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzID0gcGFyc2VNb2RpZmllckFycmF5KGNv
bnRleHQsIG1vZGlmaWVyQXJyYXkpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2
ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkV2ZW50U2VuZGVyIikpOwogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlS
ZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNy
ZWF0ZSgpKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdWJNZXNzYWdlIikpOwpAQCAt
MjcyLDcgKzI2NiwyOCBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmtleURvd24oSlNT
dHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksCiAgICAgV0tSZXRhaW5QdHI8
V0tVSW50NjRSZWY+IGxvY2F0aW9uUmVmKEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKGxvY2F0aW9u
KSk7CiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgp
LCBsb2NhdGlvbktleS5nZXQoKSwgbG9jYXRpb25SZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgMCk7CisgICAgcmV0dXJuIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHk7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYg
bW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQoreworICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdl
ID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CisgICAgSlND
b250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQoZnJh
bWUpOworICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzID0gcGFyc2VNb2RpZmllckFycmF5
KGNvbnRleHQsIG1vZGlmaWVyQXJyYXkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25h
cnlSZWY+IGtleURvd25NZXNzYWdlQm9keSA9IGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShrZXks
IG1vZGlmaWVycywgbG9jYXRpb24pOworCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdl
TmFtZS5nZXQoKSwga2V5RG93bk1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKK30KKwordm9pZCBFdmVu
dFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdS
ZWYga2V5KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3Nh
Z2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRl
ciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBrZXlEb3duTWVz
c2FnZUJvZHkgPSBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCAwIC8qIG1vZGlmaWVycyAq
LywgMCAvKiBsb2NhdGlvbiAqLyk7CisKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwg
a2V5RG93bk1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9s
bGVyOjptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmgKaW5kZXggNjljNTRmOS4uYmRhY2ZkMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgK
QEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1bGVBc3luY2hyb25vdXND
bGljaygpOwogCiAgICAgdm9pZCBrZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBt
b2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOworICAgIHZvaWQgc2NoZWR1bGVBc3luY2hyb25v
dXNLZXlEb3duKEpTU3RyaW5nUmVmIGtleSk7CiAKICAgICAvLyBab29tIGZ1bmN0aW9ucy4KICAg
ICB2b2lkIHRleHRab29tSW4oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKaW5kZXggYTU2YTBlZC4uN2ZkNWVkZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTc2NCw2ICs3NjQsMjYgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRl
eHRSZWYKICAgICAqcmV0dXJuRGF0YSA9IHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSkubGVha1JlZigpOwog
fQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBz
eW5jaHJvbm91cykKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4ga2V5S2V5ID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiS2V5IikpOworICAgIFdLU3RyaW5n
UmVmIGtleSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwga2V5S2V5LmdldCgpKSk7CisKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbW9kaWZpZXJzS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiTW9kaWZpZXJzIikpOworICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZp
ZXJzID0gc3RhdGljX2Nhc3Q8V0tFdmVudE1vZGlmaWVycz4oV0tVSW50NjRHZXRWYWx1ZShzdGF0
aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9k
eURpY3Rpb25hcnksIG1vZGlmaWVyc0tleS5nZXQoKSkpKSk7CisKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbG9jYXRpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJMb2NhdGlvbiIpKTsKKyAgICB1bnNpZ25lZCBsb2NhdGlvbiA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgbG9jYXRpb25LZXku
Z2V0KCkpKSkpOworCisgICAgaWYgKHN5bmNocm9ub3VzKQorICAgICAgICBXS1BhZ2VTZXRTaG91
bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIHRydWUpOwor
CisgICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlEb3duKGtleSwgbW9kaWZpZXJzLCBsb2NhdGlv
bik7CisKKyAgICBpZiAoc3luY2hyb25vdXMpCisgICAgICAgIFdLUGFnZVNldFNob3VsZFNlbmRF
dmVudHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworfQorCiB2
b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KQogewogI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKQpAQCAtNzkwLDYgKzgxMCwxMyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIktleURvd24iKSkgeworICAgICAgICAgICAg
ZGlkUmVjZWl2ZUtleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VCb2R5RGlj
dGlvbmFyeSwgZmFsc2UpOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAjZW5kaWYKQEAgLTgxMSwxOSArODM4
LDggQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgV0tTdHJpbmdSZWYgc3ViTWVz
c2FnZU5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCkpKTsKIAogICAg
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIktl
eURvd24iKSkgewotICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGtleUtleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIktleSIpKTsKLSAgICAgICAg
ICAgIFdLU3RyaW5nUmVmIGtleSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwga2V5S2V5LmdldCgpKSk7Ci0K
LSAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtb2RpZmllcnNLZXkgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNb2RpZmllcnMiKSk7Ci0gICAgICAg
ICAgICBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycyA9IHN0YXRpY19jYXN0PFdLRXZlbnRNb2Rp
ZmllcnM+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBtb2RpZmllcnNLZXkuZ2V0
KCkpKSkpOwotCi0gICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbG9jYXRpb25L
ZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMb2NhdGlvbiIpKTsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGxvY2F0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdL
VUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBsb2NhdGlvbktleS5nZXQoKSkpKSk7Cisg
ICAgICAgICAgICBkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCB0cnVlKTsKIAotICAgICAgICAgICAgLy8gRm9yd2FyZCB0byBX
ZWJQcm9jZXNzCi0gICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25v
dXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIHRydWUpOwotICAgICAgICAgICAgbV9ldmVudFNl
bmRlclByb3h5LT5rZXlEb3duKGtleSwgbW9kaWZpZXJzLCBsb2NhdGlvbik7Ci0gICAgICAgICAg
ICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5w
YWdlKCksIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA5ZDRlMjg3Li5kZmFiZmI3IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xMTEsNiArMTExLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogICAgIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5
KTsKIAorICAgIHZvaWQgZGlkUmVjZWl2ZUtleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMp
OworCiAgICAgLy8gV0tQYWdlTG9hZGVyQ2xpZW50CiAgICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBj
b25zdCB2b2lkKik7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>