<?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>57379</bug_id>
          
          <creation_ts>2011-03-29 13:00:57 -0700</creation_ts>
          <short_desc>Clean up WK1 key event handling logic</short_desc>
          <delta_ts>2011-03-29 14:13:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>375686</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-29 13:00:57 -0700</bug_when>
    <thetext>I want to make the code less confusing to make porting to WK2 easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375729</commentid>
    <comment_count>1</comment_count>
      <attachid>87405</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-29 13:58:42 -0700</bug_when>
    <thetext>Created attachment 87405
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375733</commentid>
    <comment_count>2</comment_count>
      <attachid>87405</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-29 14:02:21 -0700</bug_when>
    <thetext>Comment on attachment 87405
proposed patch

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

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:5446
&gt; +    // Avoid an infinite loop that would occur if executing a command saved it back.

I don’t understand the phrase “saved it back”.

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:5453
&gt; +        if (commands[i].commandName == &quot;insertText:&quot;)

I’d be happier if we didn’t have multiple copies of the insertText: selector string, and instead used a constant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375744</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-29 14:13:13 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/82320&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87405</attachid>
            <date>2011-03-29 13:58:42 -0700</date>
            <delta_ts>2011-03-29 14:02:20 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>BreakWK1TextInput.txt</filename>
            <type>text/plain</type>
            <size>17281</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMzAzKQorKysgU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDMtMjkg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3Mzc5CisgICAgICAgIENsZWFuIHVwIFdLMSBrZXkgZXZlbnQgaGFuZGxp
bmcgbG9naWMKKworICAgICAgICBObyBidWdzIGtub3dpbmdseSBmaXhlZCwgYnV0IHRoaXMgbWFr
ZXMgdGhlIGNvZGUgbW9yZSBjb25zaXN0ZW50LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlldy5tbToKKyAgICAgICAgKHN0cnVjdCBXZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50c1Bh
cmFtZXRlcnMpOiBSZW5hbWVkIGV2ZW50V2FzSGFuZGxlZCB0bworICAgICAgICBldmVudEludGVy
cHJldGF0aW9uSGFkU2lkZUVmZmVjdHMsIGJlY2F1c2UgImhhbmRsZWQiIGRvZXNuJ3QgcmVhbGx5
IG1lYW4gbXVjaC4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2V4ZWN1dGVTYXZlZEVkaXRpbmdD
b21tYW5kc10pOiBGYWN0b3JlZCBvdXQgZnJvbSBfaW50ZXJwcmV0S2V5RXZlbnQgZm9yIHVzZQor
ICAgICAgICBmcm9tIG90aGVyIGZ1bmN0aW9ucy4gV2UgbmVlZCB0byBleGVjdXRlIHNhdmVkIGNv
bW1hbmRzIHdoZW4gYW4gaW5wdXQgbWV0aG9kIGFza3MgZm9yIGN1cnJlbnQKKyAgICAgICAgc3Rh
dGUsIGJlY2F1c2UgcHJvdmlkaW5nIHN0YWxlIHN0YXRlIGNvdWxkIGNvbmZ1c2UgaXQuCisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IF9pbnRlcnByZXRLZXlFdmVudDpzYXZpbmdDb21tYW5kczpdKTog
SGVhdmlseSBjb21tZW50ZWQsIGFuZCB1cGRhdGVkIGZvciBvdGhlcgorICAgICAgICBjaGFuZ2Vz
LgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjaGFyYWN0ZXJJbmRleEZvclBvaW50Ol0pOiBDYWxs
IF9leGVjdXRlU2F2ZWRFZGl0aW5nQ29tbWFuZHMsIGJlY2F1c2Ugb3RoZXJ3aXNlLAorICAgICAg
ICB0aGUgYW5zd2VyIHdvdWxkIGJlIHN0YWxlLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBmaXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZTpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkhUTUxWaWV3
IHNlbGVjdGVkUmFuZ2VdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1hcmtlZFJh
bmdlXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBhdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbVJhbmdlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgaGFzTWFya2VkVGV4
dF0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdW5tYXJrVGV4dF0pOiBDYWxsIF9l
eGVjdXRlU2F2ZWRFZGl0aW5nQ29tbWFuZHMsIGJlY2F1c2Ugb3RoZXJ3aXNlLCB3ZSdkIGJlCisg
ICAgICAgIG9wZXJhdGluZyBvbiBzdGFsZSBkYXRhLiBBbHNvLCB1cGRhdGVkIGZvciBldmVudFdh
c0hhbmRsZWQgcmVuYW1pbmcuCisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldE1hcmtlZFRleHQ6
c2VsZWN0ZWRSYW5nZTpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRvQ29tbWFu
ZEJ5U2VsZWN0b3I6XSk6IFJlbW92ZWQgc3BlY2lhbCBoYW5kbGluZyBmb3Igbm9vcDouIEkgdmVy
aWZpZWQgdGhhdAorICAgICAgICBpdCdzIG5vIGxvbmdlciBuZWVkZWQgZm9yIGJ1ZyAxNDUyMiwg
cHJlc3VtYWJseSBkdWUgdG8gV2ViQ29yZSBsZXZlbCBjaGFuZ2VzLiBJdCB3YXMgYWxzbworICAg
ICAgICBmcmFnaWxlLCBiZWNhdXNlIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBhYm91dCB3aGVuIG5v
b3A6IGlzIHNlbnQgKGFsc28sIGEgY3VzdG9tIGtleSBiaW5kaW5nCisgICAgICAgIGNvdWxkIGhh
dmUgYSBub29wOiBhcyBvbmUgb2YgaXRzIGNvbW1hbmRzLCBhbHRob3VnaCB0aGF0J3MgaGFyZGx5
IHByYWN0aWNhbCkuCisgICAgICAgIEFkZGVkIHRoZSBzYW1lICJmcm9tIGlucHV0IG1ldGhvZCIg
bG9naWMgdGhhdCB3ZSBoYXZlIGluIGluc2VydFRleHQ6IC0gSSBkb24ndCBrbm93IG9mIGFueQor
ICAgICAgICBJTXMgdGhhdCBjYWxsIHRoaXMgbWV0aG9kLCBidXQgd2UgY2xlYXJseSBuZWVkIHRv
IGV4ZWN1dGUgaXQgYXMgcGFydCBvZiBJTSBwcm9jZXNzaW5nIHdoZW4KKyAgICAgICAgdGhlcmUg
aXMgbWFya2VkIHRleHQuCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGluc2VydFRleHQ6XSk6IFJl
bW92ZWQgYSBjb25mdXNpbmcgY2hlY2sgZm9yIFt0ZXh0IGxlbmd0aF0uIEFsd2F5cyBzZXQKKyAg
ICAgICAgZXZlbnRJbnRlcnByZXRhdGlvbkhhZFNpZGVFZmZlY3RzIHRvIHRydWUsIGJlY2FzdWUg
dGhlcmUgaXMgbm8gcmVhc29uIHRvIHRyeSBtdWx0aXBsZSB0aW1lcworICAgICAgICBpZiBjdXJy
ZW50IHNlbGVjdGlvbiBpc24ndCBlZGl0YWJsZS4gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBkb0Nv
bW1hbmRCeVNlbGVjdG9yOiwgd2hlcmUgd2UKKyAgICAgICAgbmVlZCB0byBnaXZlIHN1cGVyIGNs
YXNzIGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUgZXZlbnQgaWYgb3VyIHByb2Nlc3NpbmcgZmFpbHMu
CisgICAgICAgIFJlbW92ZWQgYSBub25zZW5zZSAiY29uc3VtZWRCeUlNID0gdHJ1ZSIgYXNzaWdu
bWVudCAtIHdlIG5vIGxvbmdlciBuZWVkIGl0IG5vdyB0aGF0IHRoZQorICAgICAgICByZXR1cm4g
dmFsdWUgb2YgX2ludGVycHJldEtleUV2ZW50IGlzIGNvbXB1dGVkIGRpZmZlcmVudGx5LgorCiAy
MDExLTAzLTI4ICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQkocmV2aXNpb24gODIxNTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsMTEgKzQ2Miw4IEBAIC0g
KHZvaWQpX3dlYl9zZXRPYmplY3RJZk5vdE5pbDooaWQpb2JqZWMKIAogc3RydWN0IFdlYkhUTUxW
aWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAgICAgS2V5Ym9hcmRFdmVudCogZXZl
bnQ7Ci0gICAgYm9vbCBldmVudFdhc0hhbmRsZWQ7CisgICAgYm9vbCBldmVudEludGVycHJldGF0
aW9uSGFkU2lkZUVmZmVjdHM7CiAgICAgYm9vbCBzaG91bGRTYXZlQ29tbWFuZHM7Ci0gICAgYm9v
bCByZWNlaXZlZE5PT1A7Ci0gICAgLy8gVGhlIElucHV0IE1ldGhvZCBtYXkgY29uc3VtZSBhbiBl
dmVudCBhbmQgbm90IHRlbGwgdXMsIGluCi0gICAgLy8gd2hpY2ggY2FzZSB3ZSBzaG91bGQgbm90
IGJ1YmJsZSB0aGUgZXZlbnQgdXAgdGhlIERPTQogICAgIGJvb2wgY29uc3VtZWRCeUlNOwogfTsK
IApAQCAtNTQ0MCwxNCArNTQzNywzNSBAQCAtICh2b2lkKV9ob3ZlckZlZWRiYWNrU3VzcGVuZGVk
Q2hhbmdlZAogICAgIFtzZWxmIF91cGRhdGVNb3VzZW92ZXJXaXRoRmFrZUV2ZW50XTsKIH0KIAor
LSAodm9pZClfZXhlY3V0ZVNhdmVkRWRpdGluZ0NvbW1hbmRzCit7CisgICAgV2ViSFRNTFZpZXdJ
bnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzID0gX3ByaXZhdGUtPmludGVy
cHJldEtleUV2ZW50c1BhcmFtZXRlcnM7CisgICAgaWYgKCFwYXJhbWV0ZXJzIHx8IHBhcmFtZXRl
cnMtPmV2ZW50LT5rZXlwcmVzc0NvbW1hbmRzKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIHRoYXQgd291bGQgb2NjdXIgaWYgZXhl
Y3V0aW5nIGEgY29tbWFuZCBzYXZlZCBpdCBiYWNrLgorICAgIGJvb2wgd2FzU2F2aW5nQ29tbWFu
ZHMgPSBwYXJhbWV0ZXJzLT5zaG91bGRTYXZlQ29tbWFuZHM7CisgICAgcGFyYW1ldGVycy0+c2hv
dWxkU2F2ZUNvbW1hbmRzID0gZmFsc2U7CisKKyAgICBjb25zdCBWZWN0b3I8S2V5cHJlc3NDb21t
YW5kPiYgY29tbWFuZHMgPSBwYXJhbWV0ZXJzLT5ldmVudC0+a2V5cHJlc3NDb21tYW5kcygpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb21tYW5kcy5zaXplKCk7ICsraSkgeworICAg
ICAgICBpZiAoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUgPT0gImluc2VydFRleHQ6IikKKyAgICAg
ICAgICAgIFtzZWxmIGluc2VydFRleHQ6Y29tbWFuZHNbaV0udGV4dF07CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIFtzZWxmIGRvQ29tbWFuZEJ5U2VsZWN0b3I6TlNTZWxlY3RvckZyb21TdHJp
bmcoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpXTsKKyAgICB9CisgICAgcGFyYW1ldGVycy0+ZXZl
bnQtPmtleXByZXNzQ29tbWFuZHMoKS5jbGVhcigpOworICAgIHBhcmFtZXRlcnMtPnNob3VsZFNh
dmVDb21tYW5kcyA9IHdhc1NhdmluZ0NvbW1hbmRzOworfQorCiAtIChCT09MKV9pbnRlcnByZXRL
ZXlFdmVudDooS2V5Ym9hcmRFdmVudCopZXZlbnQgc2F2aW5nQ29tbWFuZHM6KEJPT0wpc2F2aW5n
Q29tbWFuZHMKIHsKICAgICBBU1NFUlQoIXNhdmluZ0NvbW1hbmRzIHx8IGV2ZW50LT5rZXlwcmVz
c0NvbW1hbmRzKCkuaXNFbXB0eSgpKTsgLy8gU2F2ZSBjb21tYW5kcyBvbmNlIGZvciBlYWNoIGV2
ZW50LgogCiAgICAgV2ViSFRNTFZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5ldmVudFdhc0hhbmRsZWQgPSBmYWxzZTsKKyAgICBwYXJh
bWV0ZXJzLmV2ZW50SW50ZXJwcmV0YXRpb25IYWRTaWRlRWZmZWN0cyA9IGZhbHNlOwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkU2F2ZUNvbW1hbmRzID0gc2F2aW5nQ29tbWFuZHM7Ci0gICAgcGFyYW1l
dGVycy5yZWNlaXZlZE5PT1AgPSBmYWxzZTsKICAgICAvLyBJZiB3ZSdyZSBpbnRlcmNlcHRpbmcg
dGhlIGluaXRpYWwgSU0gY2FsbCB3ZSBhc3N1bWUgdGhhdCB0aGUgSU0gaGFzIGNvbnN1bWVkIHRo
ZSBldmVudCwgCiAgICAgLy8gYW5kIG9ubHkgY2hhbmdlIHRoaXMgYXNzdW1wdGlvbiBpZiBvbmUg
b2YgdGhlIE5TVGV4dElucHV0L1Jlc3BvbmRlciBjYWxsYmFja3MgaXMgdXNlZC4KICAgICAvLyBX
ZSBhc3N1bWUgdGhlIElNIHdpbGwgKm5vdCogY29uc3VtZSBob3RrZXkgc2VxdWVuY2VzCkBAIC01
NDY4LDMwICs1NDg2LDQ2IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihLZXlib2FyZEV2
ZW4KICAgICBfcHJpdmF0ZS0+aW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyA9ICZwYXJhbWV0
ZXJzOwogICAgIGNvbnN0IFZlY3RvcjxLZXlwcmVzc0NvbW1hbmQ+JiBjb21tYW5kcyA9IGV2ZW50
LT5rZXlwcmVzc0NvbW1hbmRzKCk7CiAKLSAgICBpZiAoc2F2aW5nQ29tbWFuZHMpCisgICAgaWYg
KHNhdmluZ0NvbW1hbmRzKSB7CisgICAgICAgIC8vIEFwcEtpdCB3aWxsIHJlc3BvbmQgd2l0aCBh
IHNlcmllcyBvZiBOU1RleHRJbnB1dCBwcm90b2NvbCBtZXRob2QgY2FsbHMuIFRoZXJlIGFyZSB0
aHJlZSBncm91cHMgdGhhdCB3ZSBoZXVyaXN0aWNhbGx5IGRpZmZlcmVudGlhdGU6CisgICAgICAg
IC8vIDEuIEtleSBCaW5kaW5ncy4gT25seSBkb0NvbW1hbmRCeVNlbGVjdG9yOiBhbmQgaW5zZXJ0
VGV4dDogY2FsbHMgd2lsbCBiZSBtYWRlLCB3aGljaCB3ZSBzYXZlIGluIHRoZSBldmVudCBmb3Ig
ZXhlY3V0aW9uCisgICAgICAgIC8vIGFmdGVyIERPTSBkaXNwYXRjaC4gVGhpcyBpcyBzYWZlLCBi
ZWNhdXNlIG5laXRoZXIgcmV0dXJucyBhIHJlc3VsdCwgc28gdGhlcmUgaXMgbm8gYnJhbmNoaW5n
IG9uIEFwcEtpdCBzaWRlLgorICAgICAgICAvLyAyLiBQbGFpbiB0ZXh0IGlucHV0LiBIZXJlIGFz
IHdlbGwsIHdlIG5lZWQgdG8gZGlzcGF0Y2ggRE9NIGV2ZW50cyBwcmlvciB0byBpbnNlcnRpbmcg
dGV4dCwgc28gd2Ugc2F2ZSB0aGUgaW5zZXJ0VGV4dDogY29tbWFuZC4KKyAgICAgICAgLy8gMy4g
SW5wdXQgbWV0aG9kIHByb2Nlc3NpbmcuIEFuIElNIGNhbiBtYWtlIGFueSBOU1RleHRJbnB1dCBj
YWxscywgYW5kIGNhbiBiYXNlIGl0cyBkZWNpc2lvbnMgb24gcmVzdWx0cyBpdCBnZXRzLCBzbyB3
ZSBtdXN0CisgICAgICAgIC8vIGV4ZWN1dGUgdGhlIGNhbGxzIGltbWVkaWF0ZWx5LiBET00gZXZl
bnRzIGxpa2Uga2V5ZG93biBhcmUgdHdlYWtlZCB0byBoYXZlIGtleUNvZGUgb2YgMjI5LCBhbmQg
Y2FuY2VsaW5nIHRoZW0gaGFzIG5vIGVmZmVjdC4KKyAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwg
dGhlcmUgaXMgbm8gcmVhbCBkaWZmZXJlbmNlIGJldHdlZW4gcGxhaW4gdGV4dCBpbnB1dCBhbmQg
SU0gcHJvY2Vzc2luZyAtIGZvciBleGFtcGxlLCBBcHBLaXQgcXVlcmllcyBoYXNNYXJrZWRUZXh0
CisgICAgICAgIC8vIHdoZW4gdHlwaW5nIHdpdGggVS5TLiBrZXlib2FyZCwgYW5kIGluc2VydHMg
bWFya2VkIHRleHQgZm9yIGRlYWQga2V5cy4KICAgICAgICAgW3NlbGYgaW50ZXJwcmV0S2V5RXZl
bnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDptYWNFdmVudF1dOwotICAgIGVsc2UgewotICAg
ICAgICBzaXplX3Qgc2l6ZSA9IGNvbW1hbmRzLnNpemUoKTsKLSAgICAgICAgLy8gQXJlIHRoZXJl
IGNvbW1hbmRzIHRoYXQgd291bGQganVzdCBjYXVzZSB0ZXh0IGluc2VydGlvbiBpZiBleGVjdXRl
ZCB2aWEgRWRpdG9yPworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEFyZSB0aGVyZSBjb21tYW5k
cyB0aGF0IGNvdWxkIGp1c3QgY2F1c2UgdGV4dCBpbnNlcnRpb24gaWYgZXhlY3V0ZWQgdmlhIEVk
aXRvcj8KICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24g
YWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IHRoZXkgc2hvdWxkIGJlIHRyZWF0ZWQsIHNvIHdlIGxl
YXZlIGl0IHVwb24gV2ViQ29yZQogICAgICAgICAvLyB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1t
ZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3Mg
ZXZlbnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBU
YWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCiAgICAgICAgIGJvb2wgaGF2ZVRleHRJbnNlcnRpb25D
b21tYW5kcyA9IGZhbHNlOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbW1hbmRzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBpZiAoW3NlbGYgY29yZUNvbW1hbmRCeVNlbGVjdG9yOk5TU2VsZWN0
b3JGcm9tU3RyaW5nKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKV0uaXNUZXh0SW5zZXJ0aW9uKCkp
CiAgICAgICAgICAgICAgICAgaGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyA9IHRydWU7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKCFoYXZlVGV4dEluc2VydGlvbkNvbW1hbmRzIHx8IHBsYXRmb3Jt
RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpIHsKLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lID09ICJpbnNlcnRUZXh0OiIpCi0gICAgICAgICAg
ICAgICAgICAgIFtzZWxmIGluc2VydFRleHQ6Y29tbWFuZHNbaV0udGV4dF07Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBbc2VsZiBkb0NvbW1hbmRCeVNlbGVjdG9y
Ok5TU2VsZWN0b3JGcm9tU3RyaW5nKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKV07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRleHQgaW5zZXJ0
aW9uIGNvbW1hbmRzLCBkZWZhdWx0IGtleWRvd24gaGFuZGxlciBpcyB0aGUgcmlnaHQgdGltZSB0
byBleGVjdXRlIHRoZSBjb21tYW5kcy4KKyAgICAgICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQp
IGhhbmRsZXIgaXMgdGhlIGxhdGVzdCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgorICAgICAgICBp
ZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcikKKyAgICAgICAgICAgIFtzZWxmIF9leGVjdXRl
U2F2ZWRFZGl0aW5nQ29tbWFuZHNdOwogICAgIH0KICAgICBfcHJpdmF0ZS0+aW50ZXJwcmV0S2V5
RXZlbnRzUGFyYW1ldGVycyA9IDA7Ci0gICAgcmV0dXJuICghcGFyYW1ldGVycy5yZWNlaXZlZE5P
T1AgJiYgcGFyYW1ldGVycy5ldmVudFdhc0hhbmRsZWQpIHx8IHBhcmFtZXRlcnMuY29uc3VtZWRC
eUlNOworCisgICAgLy8gQW4gaW5wdXQgbWV0aG9kIG1heSBtYWtlIHNldmVyYWwgYWN0aW9ucyBw
ZXIga2V5cHJlc3MuIEZvciBleGFtcGxlLCBwcmVzc2luZyBSZXR1cm4gd2l0aCBLb3JlYW4gSU0g
Ym90aCBjb25maXJtcyBpdCBhbmQgc2VuZHMgYSBuZXdsaW5lLgorICAgIC8vIElNLWxpa2UgYWN0
aW9ucyBhcmUgaGFuZGxlZCBpbW1lZGlhdGVseSAoc28gcGFyYW1ldGVycy5ldmVudEludGVycHJl
dGF0aW9uSGFkU2lkZUVmZmVjdHMgaXMgdHJ1ZSksIGJ1dCB0aGVyZSBhcmUgc2F2ZWQgY29tbWFu
ZHMgdGhhdAorICAgIC8vIHNob3VsZCBiZSBoYW5kbGVkIGxpa2Ugbm9ybWFsIHRleHQgaW5wdXQg
YWZ0ZXIgRE9NIGV2ZW50IGRpc3BhdGNoLgorICAgIGlmICghZXZlbnQtPmtleXByZXNzQ29tbWFu
ZHMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIC8vIEFuIGlucHV0IG1l
dGhvZCBtYXkgY29uc3VtZSBhbiBldmVudCBhbmQgbm90IHRlbGwgdXMgKGUuZy4gd2hlbiBkaXNw
bGF5aW5nIGEgY2FuZGlkYXRlIHdpbmRvdyksCisgICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBzaG91
bGQgbm90IGJ1YmJsZSB0aGUgZXZlbnQgdXAgdGhlIERPTS4KKyAgICBpZiAocGFyYW1ldGVycy5j
b25zdW1lZEJ5SU0pCisgICAgICAgIHJldHVybiBZRVM7CisKKyAgICAvLyBJZiB3ZSBoYXZlIGFs
cmVhZHkgZXhlY3V0ZWQgYWxsIGNvbW1hbmRzLCBkb24ndCBkbyBpdCBhZ2Fpbi4KKyAgICByZXR1
cm4gcGFyYW1ldGVycy5ldmVudEludGVycHJldGF0aW9uSGFkU2lkZUVmZmVjdHM7CiB9CiAKIC0g
KFdlYkNvcmU6OkNhY2hlZEltYWdlKilwcm9taXNlZERyYWdUSUZGRGF0YVNvdXJjZQpAQCAtNTcw
Nyw2ICs1NzQxLDggQEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopdGV4dFN0b3JhZ2UKIAogLSAo
TlNVSW50ZWdlciljaGFyYWN0ZXJJbmRleEZvclBvaW50OihOU1BvaW50KXRoZVBvaW50CiB7Cisg
ICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEVkaXRpbmdDb21tYW5kc107CisKICAgICBOU1dpbmRvdyAq
d2luZG93ID0gW3NlbGYgd2luZG93XTsKICAgICBXZWJGcmFtZSAqZnJhbWUgPSBbc2VsZiBfZnJh
bWVdOwogCkBAIC01NzI2LDcgKzU3NjIsOSBAQCAtIChOU1VJbnRlZ2VyKWNoYXJhY3RlckluZGV4
Rm9yUG9pbnQ6KE5TCiB9CiAKIC0gKE5TUmVjdClmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZToo
TlNSYW5nZSl0aGVSYW5nZQoteyAgICAKK3sKKyAgICBbc2VsZiBfZXhlY3V0ZVNhdmVkRWRpdGlu
Z0NvbW1hbmRzXTsKKwogICAgIFdlYkZyYW1lICpmcmFtZSA9IFtzZWxmIF9mcmFtZV07CiAgICAg
CiAgICAgLy8gSnVzdCB0byBtYXRjaCBOU1RleHRWaWV3J3MgYmVoYXZpb3IuIFJlZ3Jlc3Npb24g
dGVzdHMgY2Fubm90IGRldGVjdCB0aGlzOwpAQCAtNTc1Nyw2ICs1Nzk1LDggQEAgLSAoTlNSZWN0
KWZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlOihOUwogCiAtIChOU1JhbmdlKXNlbGVjdGVkUmFu
Z2UKIHsKKyAgICBbc2VsZiBfZXhlY3V0ZVNhdmVkRWRpdGluZ0NvbW1hbmRzXTsKKwogICAgIGlm
ICghaXNUZXh0SW5wdXQoY29yZShbc2VsZiBfZnJhbWVdKSkpIHsKICAgICAgICAgTE9HKFRleHRJ
bnB1dCwgInNlbGVjdGVkUmFuZ2UgLT4gKE5TTm90Rm91bmQsIDApIik7CiAgICAgICAgIHJldHVy
biBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKQEAgLTU3NjksNiArNTgwOSw4IEBAIC0gKE5T
UmFuZ2Upc2VsZWN0ZWRSYW5nZQogCiAtIChOU1JhbmdlKW1hcmtlZFJhbmdlCiB7CisgICAgW3Nl
bGYgX2V4ZWN1dGVTYXZlZEVkaXRpbmdDb21tYW5kc107CisKICAgICBXZWJGcmFtZSAqd2ViRnJh
bWUgPSBbc2VsZiBfZnJhbWVdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1l
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKQEAgLTU3ODEsNiArNTgyMyw4IEBAIC0gKE5TUmFuZ2Up
bWFya2VkUmFuZ2UKIAogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN1YnN0cmlu
Z0Zyb21SYW5nZTooTlNSYW5nZSluc1JhbmdlCiB7CisgICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEVk
aXRpbmdDb21tYW5kc107CisKICAgICBXZWJGcmFtZSAqZnJhbWUgPSBbc2VsZiBfZnJhbWVdOwog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKICAgICBpZiAoIWlzVGV4dElucHV0
KGNvcmVGcmFtZSkgfHwgaXNJblBhc3N3b3JkRmllbGQoY29yZUZyYW1lKSkgewpAQCAtNTgyMiw2
ICs1ODY2LDggQEAgLSAoTlNJbnRlZ2VyKWNvbnZlcnNhdGlvbklkZW50aWZpZXIKIAogLSAoQk9P
TCloYXNNYXJrZWRUZXh0CiB7CisgICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEVkaXRpbmdDb21tYW5k
c107CisKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBC
T09MIHJlc3VsdCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3Np
dGlvbigpOwogICAgIExPRyhUZXh0SW5wdXQsICJoYXNNYXJrZWRUZXh0IC0+ICV1IiwgcmVzdWx0
KTsKQEAgLTU4MzAsNiArNTg3Niw4IEBAIC0gKEJPT0wpaGFzTWFya2VkVGV4dAogCiAtICh2b2lk
KXVubWFya1RleHQKIHsKKyAgICBbc2VsZiBfZXhlY3V0ZVNhdmVkRWRpdGluZ0NvbW1hbmRzXTsK
KwogICAgIExPRyhUZXh0SW5wdXQsICJ1bm1hcmtUZXh0Iik7CiAKICAgICAvLyBVc2UgcG9pbnRl
ciB0byBnZXQgcGFyYW1ldGVycyBwYXNzZWQgdG8gdXMgYnkgdGhlIGNhbGxlciBvZiBpbnRlcnBy
ZXRLZXlFdmVudHMuCkBAIC01ODM3LDcgKzU4ODUsNyBAQCAtICh2b2lkKXVubWFya1RleHQKICAg
ICBfcHJpdmF0ZS0+aW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyA9IDA7CiAKICAgICBpZiAo
cGFyYW1ldGVycykgewotICAgICAgICBwYXJhbWV0ZXJzLT5ldmVudFdhc0hhbmRsZWQgPSB0cnVl
OworICAgICAgICBwYXJhbWV0ZXJzLT5ldmVudEludGVycHJldGF0aW9uSGFkU2lkZUVmZmVjdHMg
PSB0cnVlOwogICAgICAgICBwYXJhbWV0ZXJzLT5jb25zdW1lZEJ5SU0gPSBmYWxzZTsKICAgICB9
CiAgICAgCkBAIC01ODY3LDYgKzU5MTUsOCBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5l
cyhOU0F0dHJpYnV0CiAKIC0gKHZvaWQpc2V0TWFya2VkVGV4dDooaWQpc3RyaW5nIHNlbGVjdGVk
UmFuZ2U6KE5TUmFuZ2UpbmV3U2VsUmFuZ2UKIHsKKyAgICBbc2VsZiBfZXhlY3V0ZVNhdmVkRWRp
dGluZ0NvbW1hbmRzXTsKKwogICAgIEJPT0wgaXNBdHRyaWJ1dGVkU3RyaW5nID0gW3N0cmluZyBp
c0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXTsgLy8gT3RoZXJ3aXNlLCBO
U1N0cmluZwogCiAgICAgTE9HKFRleHRJbnB1dCwgInNldE1hcmtlZFRleHQ6XCIlQFwiIHNlbGVj
dGVkUmFuZ2U6KCV1LCAldSkiLCBpc0F0dHJpYnV0ZWRTdHJpbmcgPyBbc3RyaW5nIHN0cmluZ10g
OiBzdHJpbmcsIG5ld1NlbFJhbmdlLmxvY2F0aW9uLCBuZXdTZWxSYW5nZS5sZW5ndGgpOwpAQCAt
NTg3Niw3ICs1OTI2LDcgQEAgLSAodm9pZClzZXRNYXJrZWRUZXh0OihpZClzdHJpbmcgc2VsZWN0
ZQogICAgIF9wcml2YXRlLT5pbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzID0gMDsKIAogICAg
IGlmIChwYXJhbWV0ZXJzKSB7Ci0gICAgICAgIHBhcmFtZXRlcnMtPmV2ZW50V2FzSGFuZGxlZCA9
IHRydWU7CisgICAgICAgIHBhcmFtZXRlcnMtPmV2ZW50SW50ZXJwcmV0YXRpb25IYWRTaWRlRWZm
ZWN0cyA9IHRydWU7CiAgICAgICAgIHBhcmFtZXRlcnMtPmNvbnN1bWVkQnlJTSA9IGZhbHNlOwog
ICAgIH0KICAgICAKQEAgLTU5MTYsMTYgKzU5NjYsMTQgQEAgLSAodm9pZClkb0NvbW1hbmRCeVNl
bGVjdG9yOihTRUwpc2VsZWN0bwogICAgIGlmIChwYXJhbWV0ZXJzKQogICAgICAgICBwYXJhbWV0
ZXJzLT5jb25zdW1lZEJ5SU0gPSBmYWxzZTsKIAotICAgIGlmIChzZWxlY3RvciA9PSBAc2VsZWN0
b3Iobm9vcDopKSB7Ci0gICAgICAgIGlmIChwYXJhbWV0ZXJzKQotICAgICAgICAgICAgcGFyYW1l
dGVycy0+cmVjZWl2ZWROT09QID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IEtleWJvYXJkRXZlbnQqIGV2ZW50ID0gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMtPmV2ZW50IDog
MDsKICAgICBib29sIHNob3VsZFNhdmVDb21tYW5kID0gcGFyYW1ldGVycyAmJiBwYXJhbWV0ZXJz
LT5zaG91bGRTYXZlQ29tbWFuZHM7CiAKLSAgICBpZiAoZXZlbnQgJiYgc2hvdWxkU2F2ZUNvbW1h
bmQpCisgICAgLy8gQXMgaW4gaW5zZXJ0VGV4dDosIHdlIGFzc3VtZSB0aGF0IHRoZSBjYWxsIGNv
bWVzIGZyb20gYW4gaW5wdXQgbWV0aG9kIGlmIHRoZXJlIGlzIG1hcmtlZCB0ZXh0LgorICAgIFJl
ZlB0cjxGcmFtZT4gY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKKyAgICBib29sIGlz
RnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0Nv
bXBvc2l0aW9uKCk7CisKKyAgICBpZiAoZXZlbnQgJiYgc2hvdWxkU2F2ZUNvbW1hbmQgJiYgIWlz
RnJvbUlucHV0TWV0aG9kKQogICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVu
ZChLZXlwcmVzc0NvbW1hbmQoTlNTdHJpbmdGcm9tU2VsZWN0b3Ioc2VsZWN0b3IpKSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IG9ubHkgZGlyZWN0IGNhbGxzIHRvIGRv
Q29tbWFuZEJ5U2VsZWN0b3I6IHNlZSB0aGUgcGFyYW1ldGVycyBieSBzZXR0aW5nIHRvIDAuCkBA
IC01OTU3LDEwICs2MDA1LDggQEAgLSAodm9pZClkb0NvbW1hbmRCeVNlbGVjdG9yOihTRUwpc2Vs
ZWN0bwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHBhcmFtZXRlcnMpCi0gICAgICAgICAgICBw
YXJhbWV0ZXJzLT5ldmVudFdhc0hhbmRsZWQgPSBldmVudFdhc0hhbmRsZWQ7CisgICAgICAgICAg
ICBwYXJhbWV0ZXJzLT5ldmVudEludGVycHJldGF0aW9uSGFkU2lkZUVmZmVjdHMgPSBldmVudFdh
c0hhbmRsZWQ7CiAKLSAgICAgICAgLy8gUmVzdG9yZSB0aGUgcGFyYW1ldGVycyBzbyB0aGF0IG90
aGVyIGNhbGxzIHRvIGRvQ29tbWFuZEJ5U2VsZWN0b3I6IHNlZSB0aGVtLAotICAgICAgICAvLyBh
bmQgb3RoZXIgY29tbWFuZHMgY2FuIHBhcnRpY2lwYXRlIGluIHNldHRpbmcgdGhlICJldmVudFdh
c0hhbmRsZWQiIGZsYWcuCiAgICAgICAgIF9wcml2YXRlLT5pbnRlcnByZXRLZXlFdmVudHNQYXJh
bWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICB9CiB9CkBAIC01OTk1LDQ2ICs2MDQxLDM0IEBAIC0g
KHZvaWQpaW5zZXJ0VGV4dDooaWQpc3RyaW5nCiAgICAgfSBlbHNlCiAgICAgICAgIHRleHQgPSBz
dHJpbmc7CiAKLSAgICBib29sIGV2ZW50SGFuZGxlZCA9IGZhbHNlOwotICAgIGlmIChbdGV4dCBs
ZW5ndGhdKSB7Ci0gICAgICAgIEtleWJvYXJkRXZlbnQqIGV2ZW50ID0gcGFyYW1ldGVycyA/IHBh
cmFtZXRlcnMtPmV2ZW50IDogMDsKLQotICAgICAgICAvLyBpbnNlcnRUZXh0IGNhbiBiZSBjYWxs
ZWQgZnJvbSBhbiBpbnB1dCBtZXRob2Qgb3IgZnJvbSBub3JtYWwga2V5IGV2ZW50IHByb2Nlc3Np
bmcKLSAgICAgICAgLy8gSWYgaXRzIGZyb20gbm9ybWFsIGtleSBldmVudCBwcm9jZXNzaW5nLCB3
ZSBtYXkgbmVlZCB0byBzYXZlIHRoZSBhY3Rpb24gdG8gcGVyZm9ybSBpdCBsYXRlci4KLSAgICAg
ICAgLy8gSWYgaXRzIGZyb20gYW4gaW5wdXQgbWV0aG9kLCB0aGVuIHdlIHNob3VsZCBnbyBhaGVh
ZCBhbmQgaW5zZXJ0IHRoZSB0ZXh0IG5vdy4gIAotICAgICAgICAvLyBXZSBhc3N1bWUgaXQncyBm
cm9tIHRoZSBpbnB1dCBtZXRob2QgaWYgd2UgaGF2ZSBtYXJrZWQgdGV4dC4KLSAgICAgICAgLy8g
RklYTUU6IEluIHRoZW9yeSwgdGhpcyBjb3VsZCBiZSB3cm9uZyBmb3Igc29tZSBpbnB1dCBtZXRo
b2RzLCBzbyB3ZSBzaG91bGQgdHJ5IHRvIGZpbmQKLSAgICAgICAgLy8gYW5vdGhlciB3YXkgdG8g
ZGV0ZXJtaW5lIGlmIHRoZSBjYWxsIGlzIGZyb20gdGhlIGlucHV0IG1ldGhvZAotICAgICAgICBi
b29sIHNob3VsZFNhdmVDb21tYW5kID0gcGFyYW1ldGVycyAmJiBwYXJhbWV0ZXJzLT5zaG91bGRT
YXZlQ29tbWFuZHM7Ci0gICAgICAgIGlmIChldmVudCAmJiBzaG91bGRTYXZlQ29tbWFuZCAmJiAh
aXNGcm9tSW5wdXRNZXRob2QpIHsKLSAgICAgICAgICAgIGV2ZW50LT5rZXlwcmVzc0NvbW1hbmRz
KCkuYXBwZW5kKEtleXByZXNzQ29tbWFuZCgiaW5zZXJ0VGV4dDoiLCB0ZXh0KSk7Ci0gICAgICAg
ICAgICBfcHJpdmF0ZS0+aW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFN0cmlu
ZyBldmVudFRleHQgPSB0ZXh0OwotICAgICAgICBldmVudFRleHQucmVwbGFjZShOU0JhY2tUYWJD
aGFyYWN0ZXIsIE5TVGFiQ2hhcmFjdGVyKTsgLy8gc2FtZSB0aGluZyBpcyBkb25lIGluIEtleUV2
ZW50TWFjLm1tIGluIFdlYkNvcmUKLSAgICAgICAgaWYgKGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0KCkpIHsKLSAgICAgICAgICAgIGlmICghY29yZUZyYW1lLT5lZGl0
b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkKLSAgICAgICAgICAgICAgICBldmVudEhhbmRsZWQgPSBj
b3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgZXZlbnQpOwotICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oZXZlbnRU
ZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoIXBh
cmFtZXRlcnMpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoaXNGcm9tSW5wdXRNZXRo
b2QpIHsKLSAgICAgICAgLy8gQWxsb3cgZG9Db21tYW5kQnlTZWxlY3RvcjogdG8gYmUgY2FsbGVk
IGFmdGVyIGluc2VydFRleHQ6IGJ5IHJlc2V0dGluZyBpbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0
ZXJzCisgICAgS2V5Ym9hcmRFdmVudCogZXZlbnQgPSBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy0+
ZXZlbnQgOiAwOworCisgICAgLy8gaW5zZXJ0VGV4dCBjYW4gYmUgY2FsbGVkIGZvciBzZXZlcmFs
IHJlYXNvbnM6CisgICAgLy8gLSBJZiBpdCdzIGZyb20gbm9ybWFsIGtleSBldmVudCBwcm9jZXNz
aW5nIChpbmNsdWRpbmcga2V5IGJpbmRpbmdzKSwgd2UgbWF5IG5lZWQgdG8gc2F2ZSB0aGUgYWN0
aW9uIHRvIHBlcmZvcm0gaXQgbGF0ZXIuCisgICAgLy8gLSBJZiBpdCdzIGZyb20gYW4gaW5wdXQg
bWV0aG9kLCB0aGVuIHdlIHNob3VsZCBnbyBhaGVhZCBhbmQgaW5zZXJ0IHRoZSB0ZXh0IG5vdy4g
V2UgYXNzdW1lIGl0J3MgZnJvbSB0aGUgaW5wdXQgbWV0aG9kIGlmIHdlIGhhdmUgbWFya2VkIHRl
eHQuCisgICAgLy8gRklYTUU6IEluIHRoZW9yeSwgdGhpcyBjb3VsZCBiZSB3cm9uZyBmb3Igc29t
ZSBpbnB1dCBtZXRob2RzLCBzbyB3ZSBzaG91bGQgdHJ5IHRvIGZpbmQgYW5vdGhlciB3YXkgdG8g
ZGV0ZXJtaW5lIGlmIHRoZSBjYWxsIGlzIGZyb20gdGhlIGlucHV0IG1ldGhvZC4KKyAgICAvLyAt
IElmIGl0J3Mgc2VudCBvdXRzaWRlIG9mIGtleWJvYXJkIGV2ZW50IHByb2Nlc3NpbmcgKGUuZy4g
ZnJvbSBDaGFyYWN0ZXIgVmlld2VyLCBvciB3aGVuIGNvbmZpcm1pbmcgYW4gaW5saW5lIGlucHV0
IGFyZWEgd2l0aCBhIG1vdXNlKSwKKyAgICAvLyB0aGVuIHdlIGFsc28gZXhlY3V0ZSBpdCBpbW1l
ZGlhdGVseSwgYXMgdGhlcmUgd2lsbCBiZSBubyBvdGhlciBjaGFuY2UuCisgICAgYm9vbCBzaG91
bGRTYXZlQ29tbWFuZCA9IHBhcmFtZXRlcnMgJiYgcGFyYW1ldGVycy0+c2hvdWxkU2F2ZUNvbW1h
bmRzOworICAgIGlmIChldmVudCAmJiBzaG91bGRTYXZlQ29tbWFuZCAmJiAhaXNGcm9tSW5wdXRN
ZXRob2QpIHsKKyAgICAgICAgZXZlbnQtPmtleXByZXNzQ29tbWFuZHMoKS5hcHBlbmQoS2V5cHJl
c3NDb21tYW5kKCJpbnNlcnRUZXh0OiIsIHRleHQpKTsKICAgICAgICAgX3ByaXZhdGUtPmludGVy
cHJldEtleUV2ZW50c1BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwotICAgICAgICBwYXJhbWV0ZXJz
LT5jb25zdW1lZEJ5SU0gPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgU3Ry
aW5nIGV2ZW50VGV4dCA9IHRleHQ7CisgICAgZXZlbnRUZXh0LnJlcGxhY2UoTlNCYWNrVGFiQ2hh
cmFjdGVyLCBOU1RhYkNoYXJhY3Rlcik7IC8vIHNhbWUgdGhpbmcgaXMgZG9uZSBpbiBLZXlFdmVu
dE1hYy5tbSBpbiBXZWJDb3JlCisgICAgaWYgKGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRv
cigpLT5jYW5FZGl0KCkpIHsKKyAgICAgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXND
b21wb3NpdGlvbigpKQorICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4
dChldmVudFRleHQsIGV2ZW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGV2ZW50VGV4dCk7CisgICAgfQogICAgIAot
ICAgIHBhcmFtZXRlcnMtPmV2ZW50V2FzSGFuZGxlZCA9IGV2ZW50SGFuZGxlZDsKKyAgICBpZiAo
cGFyYW1ldGVycykKKyAgICAgICAgcGFyYW1ldGVycy0+ZXZlbnRJbnRlcnByZXRhdGlvbkhhZFNp
ZGVFZmZlY3RzID0gdHJ1ZTsKKworICAgIF9wcml2YXRlLT5pbnRlcnByZXRLZXlFdmVudHNQYXJh
bWV0ZXJzID0gcGFyYW1ldGVyczsKIH0KIAogLSAodm9pZClfdXBkYXRlU2VsZWN0aW9uRm9ySW5w
dXRNYW5hZ2VyCg==
</data>
<flag name="review"
          id="79837"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>