<?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>22295</bug_id>
          
          <creation_ts>2008-11-16 10:20:22 -0800</creation_ts>
          <short_desc>track which history items are from page load failures</short_desc>
          <delta_ts>2008-11-24 14:49:01 -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>History</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>98942</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 10:20:22 -0800</bug_when>
    <thetext>It&apos;s useful to distinguish history items for failures such as &quot;domain not found&quot; from history items that represent successful navigation and loading of a website.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98944</commentid>
    <comment_count>1</comment_count>
      <attachid>25197</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 10:30:27 -0800</bug_when>
    <thetext>Created attachment 25197
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98946</commentid>
    <comment_count>2</comment_count>
      <attachid>25197</attachid>
    <who name="">mitz</who>
    <bug_when>2008-11-16 11:12:03 -0800</bug_when>
    <thetext>Comment on attachment 25197
patch

&gt; +#include &quot;CachedPage.h&quot;
&gt; +#include &quot;CString.h&quot;

Should headers #includes be sorted alphabetically or in ASCII order? I thought the latter.

It seems a little dangerous that the presence of the lastVisitWasFailure key in the dictionary representation always means &quot;true&quot;.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98948</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 11:14:27 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; It seems a little dangerous that the presence of the lastVisitWasFailure key in
&gt; the dictionary representation always means &quot;true&quot;.

I could change the rule to be that it has to be exactly &quot;boolean true&quot;. Or that it can be anything except &quot;boolean false&quot;. Or that any numeric thing that&apos;s non-zero is counted as true.

Do you have a preference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98949</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 11:15:40 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; +#include &quot;CachedPage.h&quot;
&gt; &gt; +#include &quot;CString.h&quot;
&gt; 
&gt; Should headers #includes be sorted alphabetically or in ASCII order? I thought
&gt; the latter.

I used the Xcode sort, which I thought was the same as the command line sort. I&apos;ll redo it. The ASCII order you get from the sort tool is our standard I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98954</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 11:39:42 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/38449</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100037</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-24 13:26:46 -0800</bug_when>
    <thetext>This only worked for back/forward history, not global history. Oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100046</commentid>
    <comment_count>7</comment_count>
      <attachid>25446</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-24 13:39:40 -0800</bug_when>
    <thetext>Created attachment 25446
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100052</commentid>
    <comment_count>8</comment_count>
      <attachid>25446</attachid>
    <who name="">mitz</who>
    <bug_when>2008-11-24 13:47:07 -0800</bug_when>
    <thetext>Comment on attachment 25446
patch

Can you assert that the url parameter to updateGlobalHistory is equal to the documentLoader&apos;s urlForHistory()?

&gt; +    [[WebHistory optionalSharedHistory] _visitedURL:cocoaURL withTitle:title wasFailure:wasFailure];

I think you can get rid of cocoaURL and pass url directly.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100059</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-24 13:57:38 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Can you assert that the url parameter to updateGlobalHistory is equal to the
&gt; documentLoader&apos;s urlForHistory()?

I&apos;d much rather remove the url parameter altogether. In a future patch. You think that&apos;s OK?

&gt; &gt; +    [[WebHistory optionalSharedHistory] _visitedURL:cocoaURL withTitle:title wasFailure:wasFailure];
&gt; 
&gt; I think you can get rid of cocoaURL and pass url directly.

I&apos;ll try it and land it that way if it compiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100060</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-11-24 13:59:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Can you assert that the url parameter to updateGlobalHistory is equal to the
&gt; &gt; documentLoader&apos;s urlForHistory()?
&gt; 
&gt; I&apos;d much rather remove the url parameter altogether. In a future patch. You
&gt; think that&apos;s OK?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100070</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-24 14:49:01 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/38728</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25197</attachid>
            <date>2008-11-16 10:30:27 -0800</date>
            <delta_ts>2008-11-24 13:26:24 -0800</delta_ts>
            <desc>patch</desc>
            <filename>LastVisitFailurePatch.txt</filename>
            <type>text/plain</type>
            <size>22710</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODQ0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDgtMTEtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk1CisgICAgICAgICAgdHJh
Y2sgd2hpY2ggaGlzdG9yeSBpdGVtcyBhcmUgZmFpbHVyZXMsIG5vdCBzdWNjZXNzZXMKKworICAg
ICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwOiBTb3J0IGluY2x1ZGVzLCBhZGQgbmV3bHkg
bmVlZGVkIG9uZXMsIGFuZCByZW1vdmUKKyAgICAgICAgbm8tbG9uZ2VyLW5lZWRlZCBvbmVzLgor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKTogSW5pdGlhbGl6ZSBt
X2xhc3RWaXNpdFdhc0ZhaWx1cmUgdG8gZmFsc2UuCisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
SXRlbTo6c2hvd1RyZWVXaXRoSW5kZW50KTogUmV3cm90ZSB0byBhdm9pZCBhcHBlbmRpbmcgdG8g
YQorICAgICAgICBTdHJpbmcsIHNpbmNlIHRoYXQncyBub3QgZWZmaWNpZW50LgorCisgICAgICAg
ICogaGlzdG9yeS9IaXN0b3J5SXRlbS5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLiBBZGRl
ZCBsYXN0VmlzaXRXYXNGYWlsdXJlLAorICAgICAgICBzZXRMYXN0VmlzaXRXYXNGYWlsdXJlLCBh
bmQgbV9sYXN0VmlzaXRXYXNGYWlsdXJlLgorCisgICAgICAgICogaGlzdG9yeS9tYWMvSGlzdG9y
eUl0ZW1NYWMubW06IEFkZCBuZXdseS1uZWVkZWQgaW5jbHVkZQorICAgICAgICAoV2ViQ29yZTo6
SGlzdG9yeUl0ZW06OnNldFRyYW5zaWVudFByb3BlcnR5KTogUmV3cm90ZSB0byBhdm9pZCBrZWVw
aW5nIGEKKyAgICAgICAgbV90cmFuc2llbnRQcm9wZXJ0aWVzIG1hcCBhcm91bmQgd2hlbiBpdCBp
cyBlbXB0eS4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y3JlYXRlSGlzdG9yeUl0ZW0pOiBDYWxsIHNldExhc3RWaXNp
dFdhc0ZhaWx1cmUgd2hlbgorICAgICAgICB0aGUgcGFnZSB3YXMgdW5yZWFjaGFibGUgb3IgYW4g
SFRUUCBwYWdlIHdpdGggYSBzdGF0dXMgY29kZSB0aGF0IGluZGljYXRlcworICAgICAgICBmYWls
dXJlLgorCiAyMDA4LTExLTE2ICBZb25nIExpICA8eW9uZy5saUB0b3JjaG1vYmlsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvSGlzdG9y
eUl0ZW0uY3BwCShyZXZpc2lvbiAzODQ0NikKKysrIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEyICsyNiwxMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAKKyNpbmNsdWRlICJDYWNo
ZWRQYWdlLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKLSNpbmNs
dWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlIDxzdGRpby5oPgpAQCAtNDYsNiArNDQsNyBAQCB2b2lkICgqbm90aWZ5SGlzdG9yeUl0
ZW1DaGFuZ2VkKSgpID0gZGVmCiAKIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbSgpCiAgICAgOiBt
X2xhc3RWaXNpdGVkVGltZSgwKQorICAgICwgbV9sYXN0VmlzaXRXYXNGYWlsdXJlKGZhbHNlKQog
ICAgICwgbV9pc0luUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV9pc1RhcmdldEl0ZW0oZmFsc2Up
CiAgICAgLCBtX3Zpc2l0Q291bnQoMCkKQEAgLTU3LDYgKzU2LDcgQEAgSGlzdG9yeUl0ZW06Okhp
c3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdQogICAgICwgbV9vcmlnaW5hbFVSTFN0cmluZyh1cmxT
dHJpbmcpCiAgICAgLCBtX3RpdGxlKHRpdGxlKQogICAgICwgbV9sYXN0VmlzaXRlZFRpbWUodGlt
ZSkKKyAgICAsIG1fbGFzdFZpc2l0V2FzRmFpbHVyZShmYWxzZSkKICAgICAsIG1faXNJblBhZ2VD
YWNoZShmYWxzZSkKICAgICAsIG1faXNUYXJnZXRJdGVtKGZhbHNlKQogICAgICwgbV92aXNpdENv
dW50KDApCkBAIC03MCw2ICs3MCw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBT
dHJpbmcmIHUKICAgICAsIG1fdGl0bGUodGl0bGUpCiAgICAgLCBtX2Rpc3BsYXlUaXRsZShhbHRl
cm5hdGVUaXRsZSkKICAgICAsIG1fbGFzdFZpc2l0ZWRUaW1lKHRpbWUpCisgICAgLCBtX2xhc3RW
aXNpdFdhc0ZhaWx1cmUoZmFsc2UpCiAgICAgLCBtX2lzSW5QYWdlQ2FjaGUoZmFsc2UpCiAgICAg
LCBtX2lzVGFyZ2V0SXRlbShmYWxzZSkKICAgICAsIG1fdmlzaXRDb3VudCgwKQpAQCAtODQsNiAr
ODUsNyBAQCBIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgS1VSTCYgdXJsCiAgICAgLCBt
X3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RpdGxlKHRpdGxlKQogICAgICwgbV9sYXN0VmlzaXRl
ZFRpbWUoMCkKKyAgICAsIG1fbGFzdFZpc2l0V2FzRmFpbHVyZShmYWxzZSkKICAgICAsIG1faXNJ
blBhZ2VDYWNoZShmYWxzZSkKICAgICAsIG1faXNUYXJnZXRJdGVtKGZhbHNlKQogICAgICwgbV92
aXNpdENvdW50KDApCkBAIC0xMDcsNiArMTA5LDcgQEAgaW5saW5lIEhpc3RvcnlJdGVtOjpIaXN0
b3J5SXRlbShjb25zdCBIaQogICAgICwgbV9kaXNwbGF5VGl0bGUoaXRlbS5tX2Rpc3BsYXlUaXRs
ZSkKICAgICAsIG1fbGFzdFZpc2l0ZWRUaW1lKGl0ZW0ubV9sYXN0VmlzaXRlZFRpbWUpCiAgICAg
LCBtX3Njcm9sbFBvaW50KGl0ZW0ubV9zY3JvbGxQb2ludCkKKyAgICAsIG1fbGFzdFZpc2l0V2Fz
RmFpbHVyZShpdGVtLm1fbGFzdFZpc2l0V2FzRmFpbHVyZSkKICAgICAsIG1faXNJblBhZ2VDYWNo
ZShpdGVtLm1faXNJblBhZ2VDYWNoZSkKICAgICAsIG1faXNUYXJnZXRJdGVtKGl0ZW0ubV9pc1Rh
cmdldEl0ZW0pCiAgICAgLCBtX3Zpc2l0Q291bnQoaXRlbS5tX3Zpc2l0Q291bnQpCkBAIC0zOTgs
NiArNDAxLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6bWVyZ2VBdXRvQ29tcGxldGVIaW50cwogfQog
CiAjaWZuZGVmIE5ERUJVRworCiBpbnQgSGlzdG9yeUl0ZW06OnNob3dUcmVlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gc2hvd1RyZWVXaXRoSW5kZW50KDApOwpAQCAtNDA1LDI2ICs0MDksMjcgQEAg
aW50IEhpc3RvcnlJdGVtOjpzaG93VHJlZSgpIGNvbnN0CiAKIGludCBIaXN0b3J5SXRlbTo6c2hv
d1RyZWVXaXRoSW5kZW50KHVuc2lnbmVkIGluZGVudExldmVsKSBjb25zdAogewotICAgIFN0cmlu
ZyBwcmVmaXgoIiIpOwotICAgIGludCB0b3RhbFN1Ykl0ZW1zID0gMDsKLSAgICB1bnNpZ25lZCBp
OwotICAgIGZvciAoaSA9IDA7IGkgPCBpbmRlbnRMZXZlbDsgKytpKQotICAgICAgICBwcmVmaXgu
YXBwZW5kKCIgICIpOworICAgIFZlY3RvcjxjaGFyPiBwcmVmaXg7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGluZGVudExldmVsOyArK2kpCisgICAgICAgIHByZWZpeC5hcHBlbmQoIiAg
IiwgMik7CiAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzKy0lcyAoJXApXG4iLCBwcmVmaXguYXNj
aWkoKS5kYXRhKCksIG1fdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpLCB0aGlzKTsKKyAgICBmcHJp
bnRmKHN0ZGVyciwgIiVzKy0lcyAoJXApXG4iLCBwcmVmaXguZGF0YSgpLCBtX3VybFN0cmluZy51
dGY4KCkuZGF0YSgpLCB0aGlzKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IG1fc3ViSXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICBpbnQgdG90YWxTdWJJdGVtcyA9IDA7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3ViSXRlbXMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIHRvdGFsU3ViSXRlbXMgKz0gbV9zdWJJdGVtc1tpXS0+c2hvd1RyZWVXaXRoSW5kZW50
KGluZGVudExldmVsICsgMSk7Ci0gICAgfQogICAgIHJldHVybiB0b3RhbFN1Ykl0ZW1zICsgMTsK
IH0KKwogI2VuZGlmCiAgICAgICAgICAgICAgICAgCi19OyAvL25hbWVzcGFjZSBXZWJDb3JlCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVHCisKIGludCBzaG93VHJlZShj
b25zdCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSkKIHsKICAgICByZXR1cm4gaXRlbS0+c2hv
d1RyZWUoKTsKIH0KKwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkocmV2aXNpb24g
Mzg0NDYpCisrKyBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiwzNCArMjYsMjggQEAKICNpZm5kZWYgSGlzdG9yeUl0ZW1faAogI2RlZmlu
ZSBIaXN0b3J5SXRlbV9oCiAKLSNpbmNsdWRlICJDYWNoZWRQYWdlLmgiCi0jaW5jbHVkZSAiRm9y
bURhdGEuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlICJTdHJpbmdIYXNoLmgi
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2lmIFBMQVRG
T1JNKFFUKQotI2luY2x1ZGUgPFFWYXJpYW50PgotI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMp
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCog
aWQ7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFWYXJpYW50PgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIERv
Y3VtZW50OworY2xhc3MgRm9ybURhdGE7CitjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgS1VSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAotY2xhc3MgSGlzdG9yeUl0
ZW07CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0
b3I7CiAKIGV4dGVybiB2b2lkICgqbm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKSgpOwpAQCAtMTA2
LDYgKzEwMCw3IEBAIHB1YmxpYzogCiAgICAgU3RyaW5nIHJzc0ZlZWRSZWZlcnJlcigpIGNvbnN0
OwogICAgIAogICAgIGludCB2aXNpdENvdW50KCkgY29uc3Q7CisgICAgYm9vbCBsYXN0VmlzaXRX
YXNGYWlsdXJlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaXRXYXNGYWlsdXJlOyB9CiAKICAg
ICB2b2lkIG1lcmdlQXV0b0NvbXBsZXRlSGludHMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSk7CiAg
ICAgCkBAIC0xMjgsNiArMTIzLDcgQEAgcHVibGljOiAKIAogICAgIHZvaWQgc2V0UlNTRmVlZFJl
ZmVycmVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0VmlzaXRDb3VudChpbnQpOworICAg
IHZvaWQgc2V0TGFzdFZpc2l0V2FzRmFpbHVyZShib29sIHdhc0ZhaWx1cmUpIHsgbV9sYXN0Vmlz
aXRXYXNGYWlsdXJlID0gd2FzRmFpbHVyZTsgfQogCiAgICAgdm9pZCBhZGRDaGlsZEl0ZW0oUGFz
c1JlZlB0cjxIaXN0b3J5SXRlbT4pOwogICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRoTmFt
ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKQEAgLTE3MCw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAg
IEhpc3RvcnlJdGVtKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0
IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIEhpc3RvcnlJdGVt
KGNvbnN0IEhpc3RvcnlJdGVtJik7Ci0gICAgCisKICAgICBTdHJpbmcgbV91cmxTdHJpbmc7CiAg
ICAgU3RyaW5nIG1fb3JpZ2luYWxVUkxTdHJpbmc7CiAgICAgU3RyaW5nIG1fdGFyZ2V0OwpAQCAt
MTg1LDYgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgSGlzdG9yeUl0ZW1WZWN0b3IgbV9z
dWJJdGVtczsKICAgICAKKyAgICBib29sIG1fbGFzdFZpc2l0V2FzRmFpbHVyZTsKICAgICBib29s
IG1faXNJblBhZ2VDYWNoZTsKICAgICBib29sIG1faXNUYXJnZXRJdGVtOwogICAgIGludCBtX3Zp
c2l0Q291bnQ7CkBAIC0yMDYsNiArMjAzLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ+
IG1fdmlld1N0YXRlOwogICAgIE93blB0cjxIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPGlkPiA+
ID4gbV90cmFuc2llbnRQcm9wZXJ0aWVzOwogI2VuZGlmCisKICNpZiBQTEFURk9STShRVCkKICAg
ICBRVmFyaWFudCBtX3VzZXJEYXRhOwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvbWFj
L0hpc3RvcnlJdGVtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9tYWMvSGlz
dG9yeUl0ZW1NYWMubW0JKHJldmlzaW9uIDM4NDQ2KQorKysgV2ViQ29yZS9oaXN0b3J5L21hYy9I
aXN0b3J5SXRlbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMCArMjYsOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAKLS8vIE5vdGlmaWNhdGlv
biBzdHJpbmdzLgotTlNTdHJpbmcgKldlYkhpc3RvcnlJdGVtQ2hhbmdlZE5vdGlmaWNhdGlvbiA9
IEAiV2ViSGlzdG9yeUl0ZW1DaGFuZ2VkTm90aWZpY2F0aW9uIjsKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogaWQgSGlzdG9yeUl0ZW06OnZpZXdTdGF0ZSgpIGNvbnN0CiB7CkBAIC01MiwxNCArNTEs
MTcgQEAgaWQgSGlzdG9yeUl0ZW06OmdldFRyYW5zaWVudFByb3BlcnR5KGNvbgogCiB2b2lkIEhp
c3RvcnlJdGVtOjpzZXRUcmFuc2llbnRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIGtleSwgaWQgdmFs
dWUpCiB7Ci0gICAgaWYgKCFtX3RyYW5zaWVudFByb3BlcnRpZXMpCi0gICAgICAgIG1fdHJhbnNp
ZW50UHJvcGVydGllcy5zZXQobmV3IEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8aWQ+ID4pOwot
ICAgIGlmICh2YWx1ZSA9PSBuaWwpCi0gICAgICAgIG1fdHJhbnNpZW50UHJvcGVydGllcy0+cmVt
b3ZlKGtleSk7Ci0gICAgZWxzZQorICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgaWYgKG1fdHJh
bnNpZW50UHJvcGVydGllcykgeworICAgICAgICAgICAgbV90cmFuc2llbnRQcm9wZXJ0aWVzLT5y
ZW1vdmUoa2V5KTsKKyAgICAgICAgICAgIGlmIChtX3RyYW5zaWVudFByb3BlcnRpZXMtPmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICBtX3RyYW5zaWVudFByb3BlcnRpZXMuY2xlYXIoKTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghbV90cmFuc2llbnRQcm9wZXJ0aWVz
KQorICAgICAgICAgICAgbV90cmFuc2llbnRQcm9wZXJ0aWVzLnNldChuZXcgSGFzaE1hcDxTdHJp
bmcsIFJldGFpblB0cjxpZD4gPik7CiAgICAgICAgIG1fdHJhbnNpZW50UHJvcGVydGllcy0+c2V0
KGtleSwgdmFsdWUpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDM4NDQ2KQorKysgV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDg0LDcgKzQwODQsNyBAQCBQ
YXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBGcmFtZUxvYWRlcjo6Y3JlCiAgICAgICAgIGlmICh1c2VP
cmlnaW5hbCkKICAgICAgICAgICAgIHVybCA9IG9yaWdpbmFsVVJMOwogICAgICAgICBlbHNlIGlm
IChkb2NMb2FkZXIpCi0gICAgICAgICAgICB1cmwgPSBkb2NMb2FkZXItPnJlcXVlc3RVUkwoKTsg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICB1cmwgPSBkb2NMb2FkZXItPnJlcXVlc3RVUkwo
KTsKICAgICB9CiAKICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBDcmVhdGluZyBp
dGVtIGZvciAlcyIsIHVybC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CkBAIC00MTA1LDcgKzQx
MDUsMTAgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gRnJhbWVMb2FkZXI6OmNyZQogCiAgICAg
UmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSh1cmwsIG1fZnJh
bWUtPnRyZWUoKS0+bmFtZSgpLCBwYXJlbnQsIHRpdGxlKTsKICAgICBpdGVtLT5zZXRPcmlnaW5h
bFVSTFN0cmluZyhvcmlnaW5hbFVSTC5zdHJpbmcoKSk7Ci0gICAgCisKKyAgICBpZiAoIXVucmVh
Y2hhYmxlVVJMLmlzRW1wdHkoKSB8fCAhZG9jTG9hZGVyIHx8IGRvY0xvYWRlci0+cmVzcG9uc2Uo
KS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkKKyAgICAgICAgaXRlbS0+c2V0TGFzdFZpc2l0V2Fz
RmFpbHVyZSh0cnVlKTsKKwogICAgIC8vIFNhdmUgZm9ybSBzdGF0ZSBpZiB0aGlzIGlzIGEgUE9T
VAogICAgIGlmIChkb2NMb2FkZXIpIHsKICAgICAgICAgaWYgKHVzZU9yaWdpbmFsKQpJbmRleDog
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDM4NDQ2KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMyBAQAorMjAwOC0xMS0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTUKKyAgICAgICAgICB0
cmFjayB3aGljaCBoaXN0b3J5IGl0ZW1zIGFyZSBmYWlsdXJlcywgbm90IHN1Y2Nlc3NlcworCisg
ICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbTogQWRkZWQgbGFzdFZpc2l0V2FzRmFp
bHVyZUtleS4KKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVw
cmVzZW50YXRpb246XSk6IFNldCB0aGUgbGFzdFZpc2l0V2FzRmFpbHVyZQorICAgICAgICBmbGFn
IGluIHRoZSBoaXN0b3J5IGl0ZW0gaWYgdGhlIGRpY3Rpb25hcnkgaGFkIGFuIGVudHJ5IGZvciBs
YXN0VmlzaXRXYXNGYWlsdXJlS2V5LgorICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSBkaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb25dKTogU2V0IHRoZSBsYXN0VmlzaXRXYXNGYWlsdXJlS2V5IGtleQor
ICAgICAgICBpbiB0aGUgZGljdGlvbmFyeSBpZiB0aGUgaGlzdG9yeSBpdGVtIGhhZCB0aGUgbGFz
dFZpc2l0V2FzRmFpbHVyZSBmbGFnLgorICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSBsYXN0Vmlz
aXRXYXNGYWlsdXJlXSk6IEFkZGVkLgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRl
bUludGVybmFsLmg6IE1vdmVkIGluY2x1ZGUgb2YgV2ViQmFja0ZvcndhcmRMaXN0IGhlcmUgZnJv
bQorICAgICAgICBXZWJIaXN0b3J5SXRlbVByaXZhdGUuaDsgcmVtb3ZlZCBvdGhlciB1bm5lZWRl
ZCBpbmNsdWRlcy4KKworICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmg6
IEFkZGVkIGxhc3RWaXNpdFdhc0ZhaWx1cmUgbWV0aG9kLgorICAgICAgICBSZW1vdmVkIHVubmVl
ZGVkIGluY2x1ZGVzLgorCiAyMDA4LTExLTE0ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
SGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQkocmV2aXNpb24gMzg0NDYpCisrKyBXZWJLaXQvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcg
QEAgc3RhdGljIE5TU3RyaW5nICpXZWJWaXNpdENvdW50S2V5ID0gQCJ2aQogc3RhdGljIE5TU3Ry
aW5nICpXZWJUaXRsZUtleSA9IEAidGl0bGUiOwogc3RhdGljIE5TU3RyaW5nICpXZWJDaGlsZHJl
bktleSA9IEAiY2hpbGRyZW4iOwogc3RhdGljIE5TU3RyaW5nICpXZWJEaXNwbGF5VGl0bGVLZXkg
PSBAImRpc3BsYXlUaXRsZSI7CitzdGF0aWMgTlNTdHJpbmcgKmxhc3RWaXNpdFdhc0ZhaWx1cmVL
ZXkgPSBAImxhc3RWaXNpdFdhc0ZhaWx1cmUiOwogCiAvLyBOb3RpZmljYXRpb24gc3RyaW5ncy4K
IE5TU3RyaW5nICpXZWJIaXN0b3J5SXRlbUNoYW5nZWROb3RpZmljYXRpb24gPSBAIldlYkhpc3Rv
cnlJdGVtQ2hhbmdlZE5vdGlmaWNhdGlvbiI7CkBAIC0zNTIsNiArMzUzLDggQEAgc3RhdGljIFdl
YldpbmRvd1dhdGNoZXIgKl93aW5kb3dXYXRjaGVyIAogICAgIH0gCiAKICAgICBjb3JlKF9wcml2
YXRlKS0+c2V0VmlzaXRDb3VudChbZGljdCBfd2Via2l0X2ludEZvcktleTpXZWJWaXNpdENvdW50
S2V5XSk7CisgICAgaWYgKFtkaWN0IG9iamVjdEZvcktleTpsYXN0VmlzaXRXYXNGYWlsdXJlS2V5
XSkKKyAgICAgICAgY29yZShfcHJpdmF0ZSktPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7
CiAKICAgICBOU0FycmF5ICpjaGlsZERpY3RzID0gW2RpY3Qgb2JqZWN0Rm9yS2V5OldlYkNoaWxk
cmVuS2V5XTsKICAgICBpZiAoY2hpbGREaWN0cykgewpAQCAtNDA2LDkgKzQwOSwxMCBAQCBzdGF0
aWMgV2ViV2luZG93V2F0Y2hlciAqX3dpbmRvd1dhdGNoZXIgCiAgICAgICAgIFtkaWN0IHNldE9i
amVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiUuMWxmIiwgY29yZUl0ZW0tPmxhc3RW
aXNpdGVkVGltZSgpXQogICAgICAgICAgICAgICAgICBmb3JLZXk6V2ViTGFzdFZpc2l0ZWRUaW1l
SW50ZXJ2YWxLZXldOwogICAgIH0KLSAgICBpZiAoY29yZUl0ZW0tPnZpc2l0Q291bnQoKSkgewor
ICAgIGlmIChjb3JlSXRlbS0+dmlzaXRDb3VudCgpKQogICAgICAgICBbZGljdCBzZXRPYmplY3Q6
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Y29yZUl0ZW0tPnZpc2l0Q291bnQoKV0gZm9yS2V5Oldl
YlZpc2l0Q291bnRLZXldOwotICAgIH0KKyAgICBpZiAoY29yZUl0ZW0tPmxhc3RWaXNpdFdhc0Zh
aWx1cmUoKSkKKyAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9v
bDpZRVNdIGZvcktleTpsYXN0VmlzaXRXYXNGYWlsdXJlS2V5XTsKICAgICBpZiAoY29yZUl0ZW0t
PmNoaWxkcmVuKCkuc2l6ZSgpKSB7CiAgICAgICAgIGNvbnN0IEhpc3RvcnlJdGVtVmVjdG9yJiBj
aGlsZHJlbiA9IGNvcmVJdGVtLT5jaGlsZHJlbigpOwogICAgICAgICBOU011dGFibGVBcnJheSAq
Y2hpbGREaWN0cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjaGlsZHJlbi5z
aXplKCldOwpAQCAtNTE3LDYgKzUyMSwxMSBAQCBzdGF0aWMgV2ViV2luZG93V2F0Y2hlciAqX3dp
bmRvd1dhdGNoZXIgCiAgICAgY29yZShfcHJpdmF0ZSktPnNldFRyYW5zaWVudFByb3BlcnR5KGtl
eSwgcHJvcGVydHkpOwogfQogCistIChCT09MKWxhc3RWaXNpdFdhc0ZhaWx1cmUKK3sKKyAgICBy
ZXR1cm4gY29yZShfcHJpdmF0ZSktPmxhc3RWaXNpdFdhc0ZhaWx1cmUoKTsKK30KKwogQGVuZAog
CiAKSW5kZXg6IFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbUludGVybmFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtSW50ZXJuYWwuaAko
cmV2aXNpb24gMzg0NDYpCisrKyBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW1JbnRl
cm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKKyNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2ltcG9ydCAiV2ViSGlzdG9yeUl0
ZW1Qcml2YXRlLmgiCi0KLSNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW1wb3J0IDx3dGYv
Rm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSGlzdG9yeUl0ZW07
CkluZGV4OiBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtUHJpdmF0ZS5oCShyZXZp
c2lvbiAzODQ0NikKKysrIFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbVByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxOCArMjYsMTcgQEAK
ICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KLQotI2ltcG9ydCA8
V2ViS2l0L1dlYkJhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkhpc3RvcnlJ
dGVtLmg+CiAKIEBpbnRlcmZhY2UgV2ViSGlzdG9yeUl0ZW0gKFdlYlByaXZhdGUpCisKICsgKHZv
aWQpX3JlbGVhc2VBbGxQZW5kaW5nUGFnZUNhY2hlczsKIAogLSAoaWQpaW5pdFdpdGhVUkw6KE5T
VVJMICopVVJMIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlOwogCiAtIChOU1VSTCAqKVVSTDsKIC0g
KGludCl2aXNpdENvdW50OworLSAoQk9PTClsYXN0VmlzaXRXYXNGYWlsdXJlOwogCiAtIChOU1N0
cmluZyAqKVJTU0ZlZWRSZWZlcnJlcjsKIC0gKHZvaWQpc2V0UlNTRmVlZFJlZmVycmVyOihOU1N0
cmluZyAqKXJlZmVycmVyOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4NDQ2KQorKysgV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAwOC0xMS0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyOTUKKyAgICAgICAgICB0cmFjayB3aGljaCBoaXN0b3J5IGl0ZW1zIGFyZSBmYWls
dXJlcywgbm90IHN1Y2Nlc3NlcworCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViSGlzdG9yeUl0
ZW1Qcml2YXRlLmlkbDogQWRkZWQgbGFzdFZpc2l0V2FzRmFpbHVyZSBmdW5jdGlvbi4KKworICAg
ICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjppbml0
RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6IFNldCB0aGUgbGFzdFZpc2l0V2FzRmFpbHVy
ZQorICAgICAgICBmbGFnIGluIHRoZSBoaXN0b3J5IGl0ZW0gaWYgdGhlIGRpY3Rpb25hcnkgaGFk
IGFuIGVudHJ5IGZvciBsYXN0VmlzaXRXYXNGYWlsdXJlS2V5LgorICAgICAgICAoV2ViSGlzdG9y
eUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6IFNldCB0aGUgbGFzdFZpc2l0V2FzRmFp
bHVyZUtleSBrZXkKKyAgICAgICAgaW4gdGhlIGRpY3Rpb25hcnkgaWYgdGhlIGhpc3RvcnkgaXRl
bSBoYWQgdGhlIGxhc3RWaXNpdFdhc0ZhaWx1cmUgZmxhZy4KKyAgICAgICAgKFdlYkhpc3RvcnlJ
dGVtOjpsYXN0VmlzaXRXYXNGYWlsdXJlKTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJIaXN0b3J5
SXRlbS5oOiBBZGRlZCBsYXN0VmlzaXRXYXNGYWlsdXJlIGZ1bmN0aW9uLgorCiAyMDA4LTExLTE1
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCShyZXZpc2lvbiAzODQ0NikK
KysrIFdlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtOTQsNTEgKzk0LDQyIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiB1cmxLZXkgPSBDRlNUUigi
Iik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgbGFzdFZpc2l0ZWREYXRlS2V5ID0gQ0ZTVFIoImxhc3RW
aXNpdGVkRGF0ZSIpOwogc3RhdGljIENGU3RyaW5nUmVmIHRpdGxlS2V5ID0gQ0ZTVFIoInRpdGxl
Iik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgdmlzaXRDb3VudEtleSA9IENGU1RSKCJ2aXNpdENvdW50
Iik7CitzdGF0aWMgQ0ZTdHJpbmdSZWYgbGFzdFZpc2l0V2FzRmFpbHVyZUtleSA9IENGU1RSKCJs
YXN0VmlzaXRXYXNGYWlsdXJlIik7CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlz
dG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqIGRpY3Rpb25h
cnkpCiB7CiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYgPSAoQ0ZEaWN0aW9uYXJ5
UmVmKSBkaWN0aW9uYXJ5OwotICAgIEhSRVNVTFQgaHIgPSBTX09LOwotICAgIGludCB2aXNpdGVk
Q291bnQgPSAwOwotICAgIENGQWJzb2x1dGVUaW1lIGxhc3RWaXNpdGVkVGltZSA9IDAuMDsKIAog
ICAgIENGU3RyaW5nUmVmIHVybFN0cmluZ1JlZiA9IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZGljdGlvbmFyeVJlZiwgdXJsS2V5KTsKLSAgICBpZiAodXJsU3RyaW5nUmVmICYm
IENGR2V0VHlwZUlEKHVybFN0cmluZ1JlZikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewotICAg
ICAgICBociA9IEVfRkFJTDsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAodXJs
U3RyaW5nUmVmICYmIENGR2V0VHlwZUlEKHVybFN0cmluZ1JlZikgIT0gQ0ZTdHJpbmdHZXRUeXBl
SUQoKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIENGU3RyaW5nUmVmIGxhc3RWaXNp
dGVkUmVmID0gKENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5UmVm
LCBsYXN0VmlzaXRlZERhdGVLZXkpOwotICAgIGlmICghbGFzdFZpc2l0ZWRSZWYgfHwgQ0ZHZXRU
eXBlSUQobGFzdFZpc2l0ZWRSZWYpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAg
aHIgPSBFX0ZBSUw7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0gICAgbGFzdFZpc2l0ZWRU
aW1lID0gQ0ZTdHJpbmdHZXREb3VibGVWYWx1ZShsYXN0VmlzaXRlZFJlZik7CisgICAgaWYgKCFs
YXN0VmlzaXRlZFJlZiB8fCBDRkdldFR5cGVJRChsYXN0VmlzaXRlZFJlZikgIT0gQ0ZTdHJpbmdH
ZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICBDRkFic29sdXRlVGltZSBs
YXN0VmlzaXRlZFRpbWUgPSBDRlN0cmluZ0dldERvdWJsZVZhbHVlKGxhc3RWaXNpdGVkUmVmKTsK
IAogICAgIENGU3RyaW5nUmVmIHRpdGxlUmVmID0gKENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShkaWN0aW9uYXJ5UmVmLCB0aXRsZUtleSk7Ci0gICAgaWYgKHRpdGxlUmVmICYmIENG
R2V0VHlwZUlEKHRpdGxlUmVmKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgIGhy
ID0gRV9GQUlMOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmICh0aXRsZVJlZiAm
JiBDRkdldFR5cGVJRCh0aXRsZVJlZikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAogICAgIENGTnVtYmVyUmVmIHZpc2l0Q291bnRSZWYgPSAoQ0ZOdW1i
ZXJSZWYpIENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnlSZWYsIHZpc2l0Q291bnRLZXkp
OwotICAgIGlmICghdmlzaXRDb3VudFJlZiB8fCBDRkdldFR5cGVJRCh2aXNpdENvdW50UmVmKSAh
PSBDRk51bWJlckdldFR5cGVJRCgpKSB7Ci0gICAgICAgIGhyID0gRV9GQUlMOwotICAgICAgICBn
b3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmICghdmlzaXRDb3VudFJlZiB8fCBDRkdldFR5cGVJRCh2
aXNpdENvdW50UmVmKSAhPSBDRk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm4gRV9G
QUlMOworICAgIGludCB2aXNpdGVkQ291bnQgPSAwOworICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1
ZSh2aXNpdENvdW50UmVmLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmlzaXRlZENvdW50KSkKKyAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5yZW1vdmUobV9o
aXN0b3J5SXRlbS5nZXQoKSk7CiAgICAgbV9oaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVh
dGUodXJsU3RyaW5nUmVmLCB0aXRsZVJlZiwgbGFzdFZpc2l0ZWRUaW1lKTsKICAgICBoaXN0b3J5
SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwogCi0gICAgaWYg
KCFDRk51bWJlckdldFZhbHVlKHZpc2l0Q291bnRSZWYsIGtDRk51bWJlckludFR5cGUsICZ2aXNp
dGVkQ291bnQpKSB7Ci0gICAgICAgIGhyID0gRV9GQUlMOwotICAgICAgICBnb3RvIGV4aXQ7Ci0g
ICAgfQotCiAgICAgbV9oaXN0b3J5SXRlbS0+c2V0VmlzaXRDb3VudCh2aXNpdGVkQ291bnQpOwot
ZXhpdDoKLSAgICByZXR1cm4gaHI7CisKKyAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGlj
dGlvbmFyeVJlZiwgbGFzdFZpc2l0V2FzRmFpbHVyZUtleSkpCisgICAgICAgIG1faGlzdG9yeUl0
ZW0tPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CisKKyAgICByZXR1cm4gU19PSzsKIH0K
IAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6ZGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0aW9uYXJ5KQpAQCAtMTUxLDggKzE0Miw5IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW0KICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAogICAgIGludCBrZXlDb3VudCA9IDA7Ci0gICAgQ0ZUeXBlUmVmIGtleXNbNF07Ci0gICAg
Q0ZUeXBlUmVmIHZhbHVlc1s0XTsKKyAgICBDRlR5cGVSZWYga2V5c1s1XTsKKyAgICBDRlR5cGVS
ZWYgdmFsdWVzWzVdOworCiAgICAgaWYgKCFtX2hpc3RvcnlJdGVtLT51cmxTdHJpbmcoKS5pc0Vt
cHR5KCkpIHsKICAgICAgICAga2V5c1trZXlDb3VudF0gPSB1cmxLZXk7CiAgICAgICAgIHZhbHVl
c1trZXlDb3VudCsrXSA9IG1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmNyZWF0ZUNGU3RyaW5n
KCk7CkBAIC0xNjAsMTYgKzE1MiwyMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhp
c3RvcnlJdGVtCiAKICAgICBrZXlzW2tleUNvdW50XSA9IGxhc3RWaXNpdGVkRGF0ZUtleTsKICAg
ICB2YWx1ZXNba2V5Q291bnQrK10gPSBsYXN0VmlzaXRlZFN0cmluZ1JlZjsKLSAgICAKKwogICAg
IGlmICghbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAga2V5c1tr
ZXlDb3VudF0gPSB0aXRsZUtleTsKICAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0
b3J5SXRlbS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOwogICAgIH0KLSAgICAKLSAgICBrZXlz
W2tleUNvdW50XSAgID0gdmlzaXRDb3VudEtleTsKKworICAgIGtleXNba2V5Q291bnRdID0gdmlz
aXRDb3VudEtleTsKICAgICBpbnQgdmlzaXRDb3VudCA9IG1faGlzdG9yeUl0ZW0tPnZpc2l0Q291
bnQoKTsKICAgICB2YWx1ZXNba2V5Q291bnQrK10gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1i
ZXJJbnRUeXBlLCAmdmlzaXRDb3VudCk7Ci0gICAgCisKKyAgICBpZiAobV9oaXN0b3J5SXRlbS0+
bGFzdFZpc2l0V2FzRmFpbHVyZSgpKSB7CisgICAgICAgIGtleXNba2V5Q291bnRdID0gbGFzdFZp
c2l0V2FzRmFpbHVyZUtleTsKKyAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gQ0ZSZXRhaW4o
a0NGQm9vbGVhblRydWUpOworICAgIH0KKwogICAgICpkaWN0aW9uYXJ5UmVmID0gQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKDAsIGtleXMsIHZhbHVlcywga2V5Q291bnQsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwogICAgIAogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwga2V5Q291bnQ7ICsraSkKQEAgLTMyMCw2ICszMTcsMTcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbQogCiB9CiAKK0hSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06Omxhc3RWaXNpdFdhc0ZhaWx1cmUoQk9P
TCogd2FzRmFpbHVyZSkKK3sKKyAgICBpZiAoIXdhc0ZhaWx1cmUpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgfQorCisgICAg
Kndhc0ZhaWx1cmUgPSBtX2hpc3RvcnlJdGVtLT5sYXN0VmlzaXRXYXNGYWlsdXJlKCk7CisgICAg
cmV0dXJuIFNfT0s7Cit9CisKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQs
IHZvaWQqKiBwcHZPYmplY3QpCkBAIC00MzgsNiArNDQ2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJIaXN0b3J5SXRlbQogfQogCiAvLyBXZWJIaXN0b3J5SXRlbSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIEhp
c3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6aGlzdG9yeUl0ZW0oKSBjb25zdAogewogICAgIHJl
dHVybiBtX2hpc3RvcnlJdGVtLmdldCgpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRl
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uaAkocmV2aXNpb24g
Mzg0NDYpCisrKyBXZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC05Nyw5ICs5NywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHRhcmdldChCU1RSKiB0YXJnZXQpOwogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBpc1RhcmdldEl0ZW0oQk9PTCogcmVzdWx0KTsKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGRyZW4odW5zaWduZWQqIGNoaWxkQ291
bnQsIFNBRkVBUlJBWSoqIGNoaWxkcmVuKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbGFzdFZpc2l0V2FzRmFpbHVyZShCT09MKiB3YXNGYWlsdXJlKTsKIAogICAgIC8v
IFdlYkhpc3RvcnlJdGVtCiAgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtKCkg
Y29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBVTE9ORyBtX3JlZkNvdW50OwogCkluZGV4OiBXZWJL
aXQvd2luL0ludGVyZmFjZXMvSVdlYkhpc3RvcnlJdGVtUHJpdmF0ZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJIaXN0b3J5SXRlbVByaXZhdGUuaWRsCShyZXZp
c2lvbiAzODQ0NikKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9yeUl0ZW1Qcml2
YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDQgKzU1LDUgQEAg
aW50ZXJmYWNlIElXZWJIaXN0b3J5SXRlbVByaXZhdGUgOiBJVW5rbgogICAgIEhSRVNVTFQgdGFy
Z2V0KFtvdXQsIHJldHZhbF0gQlNUUiogdGFyZ2V0KTsKICAgICBIUkVTVUxUIGlzVGFyZ2V0SXRl
bShbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7CiAgICAgW2xvY2FsXSBIUkVTVUxUIGNoaWxk
cmVuKFtvdXRdIHVuc2lnbmVkKiBjaGlsZENvdW50LCBbb3V0LCByZXR2YWxdIFNBRkVBUlJBWSoq
IGNoaWxkcmVuKTsKKyAgICBIUkVTVUxUIGxhc3RWaXNpdFdhc0ZhaWx1cmUoW291dCwgcmV0dmFs
XSBCT09MKiB3YXNGYWlsdXJlKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25446</attachid>
            <date>2008-11-24 13:39:40 -0800</date>
            <delta_ts>2008-11-24 13:47:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>FailurePatch.txt</filename>
            <type>text/plain</type>
            <size>12426</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODcyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDgtMTEtMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZmlu
aXNoIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NQorICAgICAg
ICAgIHRyYWNrIHdoaWNoIGhpc3RvcnkgaXRlbXMgYXJlIGZyb20gcGFnZSBsb2FkIGZhaWx1cmVz
CisKKyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOiBFeHBvcnRlZCBuZXcgZnVuY3Rpb24uCisK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmUpOiBBZGRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDogRGl0dG8uCisKIDIwMDgtMTEtMjQgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHJldmlzaW9uIDM4NzIwKQorKysgV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC03NjAsNiArNzYwLDcgQEAgX19a
Tks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxN3BhcnNlZEFyYwogX19aTks3V2ViQ29yZTE0RG9j
dW1lbnRMb2FkZXIxOWlzTG9hZGluZ0luQVBJU2Vuc2VFdgogX19aTks3V2ViQ29yZTE0RG9jdW1l
bnRMb2FkZXIxOW9yaWdpbmFsUmVxdWVzdENvcHlFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIyMWlzTG9hZGluZ01haW5SZXNvdXJjZUV2CitfX1pOSzdXZWJDb3JlMTREb2N1bWVudExv
YWRlcjI4dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1
bWVudExvYWRlcjN1cmxFdgogX19aTks3V2ViQ29yZTE0UmVuZGVyTGlzdEl0ZW0xMG1hcmtlclRl
eHRFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUxMGNvbm5lY3Rpb25FdgpAQCAtODA1
LDEwICs4MDYsMTAgQEAgX19aTks3V2ViQ29yZTVGcmFtZTEyZXZlbnRIYW5kbGVyRXYKIF9fWk5L
N1dlYkNvcmU1RnJhbWUxMm93bmVyRWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMTJzZWxl
Y3RlZFRleHRFdgogX19aTks3V2ViQ29yZTVGcmFtZTEzb3duZXJSZW5kZXJlckV2Ci1fX1pOSzdX
ZWJDb3JlNUZyYW1lMTVzZWxlY3Rpb25Cb3VuZHNFYgogX19aTks3V2ViQ29yZTVGcmFtZTE0c2Vs
ZWN0aW9uSW1hZ2VFYgogX19aTks3V2ViQ29yZTVGcmFtZTE1Y29udGVudFJlbmRlcmVyRXYKIF9f
Wk5LN1dlYkNvcmU1RnJhbWUxNXJldmVhbFNlbGVjdGlvbkVSS05TXzExUmVuZGVyTGF5ZXIxNVNj
cm9sbEFsaWdubWVudEUKK19fWk5LN1dlYkNvcmU1RnJhbWUxNXNlbGVjdGlvbkJvdW5kc0ViCiBf
X1pOSzdXZWJDb3JlNUZyYW1lMTZpblZpZXdTb3VyY2VNb2RlRXYKIF9fWk5LN1dlYkNvcmU1RnJh
bWUxN2ZpcnN0UmVjdEZvclJhbmdlRVBOU181UmFuZ2VFCiBfX1pOSzdXZWJDb3JlNUZyYW1lMThk
b2N1bWVudFR5cGVTdHJpbmdFdgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2
aXNpb24gMzg3MjApCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY4Niw2ICs2ODYsMTEgQEAgS1VSTCBEb2N1bWVudExvYWRlcjo6dXJsRm9y
SGlzdG9yeSgpIGNvbgogICAgIHJldHVybiBtX29yaWdpbmFsUmVxdWVzdENvcHkudXJsKCk7CiB9
CiAKK2Jvb2wgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSB8fCBtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjps
b2FkRnJvbUNhY2hlZFBhZ2UoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPiBjYWNoZWRQYWdlKQogewog
ICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hlOiBEb2N1bWVudExvYWRlciAlcCBs
b2FkaW5nIGZyb20gY2FjaGVkIHBhZ2UgJXAiLCB0aGlzLCBjYWNoZWRQYWdlLmdldCgpKTsKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMzg3MjApCisrKyBXZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNl
cygpOwogICAgICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
VGl0bGU7IH0KKwogICAgICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKKyAgICAgICAg
Ym9vbCB1cmxGb3JIaXN0b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CiAgICAgICAgIAogICAg
ICAgICB2b2lkIGxvYWRGcm9tQ2FjaGVkUGFnZShQYXNzUmVmUHRyPENhY2hlZFBhZ2U+KTsKICAg
ICAgICAgdm9pZCBzZXRMb2FkaW5nRnJvbUNhY2hlZFBhZ2UoYm9vbCBsb2FkaW5nKSB7IG1fbG9h
ZGluZ0Zyb21DYWNoZWRQYWdlID0gbG9hZGluZzsgfQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4NzIwKQor
KysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAwOC0xMS0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBmaW5pc2ggaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk1CisgICAgICAgICAgdHJhY2sgd2hpY2gg
aGlzdG9yeSBpdGVtcyBhcmUgZnJvbSBwYWdlIGxvYWQgZmFpbHVyZXMKKworICAgICAgICBMYXN0
IHRpbWUgYXJvdW5kIEkgZGlkIHRoaXMgb25seSBmb3IgdGhlIGJhY2svZm9yd2FyZCBsaXN0IGFu
ZCBtaXNzZWQgdGhlCisgICAgICAgIGdsb2JhbCBoaXN0b3J5IGxpc3QuCisKKyAgICAgICAgKiBI
aXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnkgX3Zpc2l0ZWRVUkw6
d2l0aFRpdGxlOndhc0ZhaWx1cmU6XSk6IEFkZGVkIHdhc0ZhaWx1cmUgYXJndW1lbnQuCisgICAg
ICAgIFNldCB0aGUgZmxhZyBvbiB0aGUgbmV3bHkgY3JlYXRlZCBoaXN0b3J5IGl0ZW0uIEFsc28g
ZWxpbWluYXRlZCB0aGUgdXNlIG9mCisgICAgICAgIGF1dG9yZWxlYXNlIG9uIHRoZSBhZGRlZC1p
dGVtcyBhcnJheS4KKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJbnRlcm5hbC5oOiBEaXR0
by4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOiBBZGRl
ZCBjb2RlIHRvIGNoZWNrIGZvciBmYWlsdXJlCisgICAgICAgIGFuZCBwYXNzIHRoZSBhcmd1bWVu
dCBpbiB0byBXZWJIaXN0b3J5LiBHaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gZ2V0cyBvdGhlcgor
ICAgICAgICBkYXRhIGZyb20gdGhlIERvY3VtZW50TG9hZGVyLCBJIHRoaW5rIHdlIHNob3VsZCBn
ZXQgcmlkIG9mIHRoZSBLVVJMIGFyZ3VtZW50LAorICAgICAgICBidXQgdGhhdCdzIGEgc2VwYXJh
dGUgaXNzdWUgc28gSSBkb24ndCBkbyBpdCBpbiB0aGlzIHBhdGNoLgorCiAyMDA4LTExLTI0ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhbiBCZXJuc3RlaW4KSW5kZXg6IFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCShyZXZpc2lv
biAzODcyMCkKKysrIFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwxNCArMzEsOCBAQAogI2ltcG9ydCAiV2ViSGlzdG9yeUl0ZW1JbnRlcm5hbC5o
IgogI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIK
LSNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKLSNpbXBvcnQgPEZvdW5kYXRpb24vTlNFcnJv
ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlJ
dGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VHcm91cC5oPgotI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+Ci0jaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC03ODksMTIgKzc4MywxNSBAQCBXZWJIaXN0b3J5RGF0ZUtleSB0aW1lSW50ZXJ2YWxGb3JC
ZWdpbm5pCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJIaXN0b3J5IChXZWJJbnRlcm5hbCkKIAotLSAo
dm9pZClfdmlzaXRlZFVSTDooTlNVUkwgKilVUkwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxl
OworLSAodm9pZClfdmlzaXRlZFVSTDooTlNVUkwgKilVUkwgd2l0aFRpdGxlOihOU1N0cmluZyAq
KXRpdGxlIHdhc0ZhaWx1cmU6KEJPT0wpd2FzRmFpbHVyZQogewogICAgIFdlYkhpc3RvcnlJdGVt
ICplbnRyeSA9IFtfaGlzdG9yeVByaXZhdGUgdmlzaXRlZFVSTDpVUkwgd2l0aFRpdGxlOnRpdGxl
XTsKLSAgICAKLSAgICBbc2VsZiBfc2VuZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRlbXNBZGRl
ZE5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICBlbnRyaWVzOltOU0FycmF5IGFycmF5
V2l0aE9iamVjdDplbnRyeV1dOworICAgIGlmICh3YXNGYWlsdXJlKQorICAgICAgICBjb3JlKGVu
dHJ5KS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKKworICAgIE5TQXJyYXkgKmVudHJp
ZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czplbnRyeSwgbmlsXTsKKyAgICBb
c2VsZiBfc2VuZE5vdGlmaWNhdGlvbjpXZWJIaXN0b3J5SXRlbXNBZGRlZE5vdGlmaWNhdGlvbiBl
bnRyaWVzOmVudHJpZXNdOworICAgIFtlbnRyaWVzIHJlbGVhc2VdOwogfQogCiAtICh2b2lkKV9h
ZGRWaXNpdGVkTGlua3NUb1BhZ2VHcm91cDooV2ViQ29yZTo6UGFnZUdyb3VwJilncm91cApJbmRl
eDogV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SW50ZXJuYWwuaAkocmV2aXNpb24gMzg3MjAp
CisrKyBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUludGVybmFsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogfQogCiBAaW50ZXJmYWNl
IFdlYkhpc3RvcnkgKFdlYkludGVybmFsKQotLSAodm9pZClfdmlzaXRlZFVSTDooTlNVUkwgKilV
Ukwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlOworLSAodm9pZClfdmlzaXRlZFVSTDooTlNV
UkwgKilVUkwgd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhc0ZhaWx1cmU6KEJPT0wpd2Fz
RmFpbHVyZTsKIC0gKHZvaWQpX2FkZFZpc2l0ZWRMaW5rc1RvUGFnZUdyb3VwOihXZWJDb3JlOjpQ
YWdlR3JvdXAmKWdyb3VwOwogQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAzODcyMCkKKysrIFdlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTcxOCwxMCArNzE4LDEyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGkKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3Rvcnko
Y29uc3QgS1VSTCYgdXJsKQogewogICAgIE5TVVJMICpjb2NvYVVSTCA9IHVybDsKLSAgICBjb25z
dCBTdHJpbmcmIHBhZ2VUaXRsZSA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpLT50aXRsZSgpOwotICAgIFtbV2ViSGlzdG9yeSBvcHRpb25hbFNoYXJl
ZEhpc3RvcnldIF92aXNpdGVkVVJMOmNvY29hVVJMIHdpdGhUaXRsZTpwYWdlVGl0bGVdOworICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSkt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpOworICAgIGNvbnN0IFN0cmluZyYgdGl0bGUgPSBk
b2N1bWVudExvYWRlci0+dGl0bGUoKTsKKyAgICBib29sIHdhc0ZhaWx1cmUgPSBkb2N1bWVudExv
YWRlci0+dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpOworICAgIFtbV2ViSGlzdG9yeSBv
cHRpb25hbFNoYXJlZEhpc3RvcnldIF92aXNpdGVkVVJMOmNvY29hVVJMIHdpdGhUaXRsZTp0aXRs
ZSB3YXNGYWlsdXJlOndhc0ZhaWx1cmVdOwogfQotIAorCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiB7CiAg
ICAgV2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CkluZGV4OiBX
ZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwko
cmV2aXNpb24gMzg3MjApCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI3IEBACisyMDA4LTExLTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZp
bmlzaCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTUKKyAgICAg
ICAgICB0cmFjayB3aGljaCBoaXN0b3J5IGl0ZW1zIGFyZSBmcm9tIHBhZ2UgbG9hZCBmYWlsdXJl
cworCisgICAgICAgIExhc3QgdGltZSBhcm91bmQgSSBkaWQgdGhpcyBvbmx5IGZvciB0aGUgYmFj
ay9mb3J3YXJkIGxpc3QgYW5kIG1pc3NlZCB0aGUKKyAgICAgICAgZ2xvYmFsIGhpc3RvcnkgbGlz
dC4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkhpc3RvcnlJdGVtUHJpdmF0ZS5pZGw6IEFk
ZGVkIHNldExhc3RWaXNpdFdhc0ZhaWx1cmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6
dXBkYXRlR2xvYmFsSGlzdG9yeSk6IEFkZGVkIGNvZGUgdG8gY2hlY2sgZm9yIGZhaWx1cmUKKyAg
ICAgICAgYW5kIHBhc3MgdGhlIGFyZ3VtZW50IGluIHRvIFdlYkhpc3RvcnkuCisKKyAgICAgICAg
KiBXZWJIaXN0b3J5LmNwcDogKFdlYkhpc3Rvcnk6OmFkZEl0ZW0pOiBBZGRlZCB3YXNGYWlsdXJl
IGFyZ3VtZW50LgorICAgICAgICBTZXQgdGhlIGZsYWcgb24gdGhlIG5ld2x5IGNyZWF0ZWQgaGlz
dG9yeSBpdGVtLgorICAgICAgICAqIFdlYkhpc3RvcnkuaDogRGl0dG8uCisKKyAgICAgICAgKiBX
ZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6c2V0TGFzdFZpc2l0
V2FzRmFpbHVyZSk6IEFkZGVkLgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmg6IERpdHRvLgor
CiAyMDA4LTExLTIxICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IFdlYktpdC93
aW4vV2ViSGlzdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNw
cAkocmV2aXNpb24gMzg3MjApCisrKyBXZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MzcsNyArNjM3LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjphZGRJdGVtKElX
ZWJIaXN0b3J5SQogICAgIHJldHVybiBocjsKIH0KIAotdm9pZCBXZWJIaXN0b3J5OjphZGRJdGVt
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViSGlzdG9yeTo6
YWRkSXRlbShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgd2FzRmFp
bHVyZSkKIHsKICAgICBDT01QdHI8V2ViSGlzdG9yeUl0ZW0+IGl0ZW0oQWRvcHRDT00sIFdlYkhp
c3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSgpKTsKICAgICBpZiAoIWl0ZW0pCkBAIC02NTcsNiAr
NjU3LDkgQEAgdm9pZCBXZWJIaXN0b3J5OjphZGRJdGVtKGNvbnN0IEtVUkwmIHVybAogICAgIGlm
IChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAod2FzRmFpbHVyZSkKKyAg
ICAgICAgaXRlbS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKKwogICAgIGFkZEl0ZW0o
aXRlbS5nZXQoKSk7CiB9CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViSGlzdG9yeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViSGlzdG9yeS5oCShyZXZpc2lvbiAzODcyMCkKKysrIFdlYktp
dC93aW4vV2ViSGlzdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gV2ViSGlzdG9yeQogICAgIHN0YXRpYyBXZWJIaXN0b3J5KiBzaGFyZWRI
aXN0b3J5KCk7Ci0gICAgdm9pZCBhZGRJdGVtKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2b2lkIGFkZEl0ZW0oY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdGl0bGUsIGJvb2wgd2FzRmFpbHVyZSk7CiAgICAgdm9p
ZCBhZGRWaXNpdGVkTGlua3NUb1BhZ2VHcm91cChXZWJDb3JlOjpQYWdlR3JvdXAmKTsKIAogcHJp
dmF0ZToKSW5kZXg6IFdlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCShyZXZpc2lvbiAzODcyMCkKKysrIFdlYktp
dC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDEy
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW0KICAgICByZXR1cm4g
U19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6c2V0
TGFzdFZpc2l0V2FzRmFpbHVyZShCT09MIHdhc0ZhaWx1cmUpCit7CisgICAgbV9oaXN0b3J5SXRl
bS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh3YXNGYWlsdXJlKTsKKyAgICByZXR1cm4gU19PSzsK
K30KKwogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkhpc3RvcnlJdGVtOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9i
amVjdCkKSW5kZXg6IFdlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmgJKHJldmlzaW9uIDM4NzIwKQorKysgV2ViS2l0L3dp
bi9XZWJIaXN0b3J5SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNUYXJnZXRJdGVtKEJP
T0wqIHJlc3VsdCk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoaWxk
cmVuKHVuc2lnbmVkKiBjaGlsZENvdW50LCBTQUZFQVJSQVkqKiBjaGlsZHJlbik7CiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RWaXNpdFdhc0ZhaWx1cmUoQk9PTCog
d2FzRmFpbHVyZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExh
c3RWaXNpdFdhc0ZhaWx1cmUoQk9PTCB3YXNGYWlsdXJlKTsKIAogICAgIC8vIFdlYkhpc3RvcnlJ
dGVtCiAgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtKCkgY29uc3Q7CkluZGV4
OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkhpc3RvcnlJdGVtUHJpdmF0ZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJIaXN0b3J5SXRlbVByaXZhdGUuaWRs
CShyZXZpc2lvbiAzODcyMCkKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9yeUl0
ZW1Qcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTYsNCArNTYsNSBAQCBpbnRlcmZhY2Ug
SVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSA6IElVbmtuCiAgICAgSFJFU1VMVCBpc1RhcmdldEl0ZW0o
W291dCwgcmV0dmFsXSBCT09MKiByZXN1bHQpOwogICAgIFtsb2NhbF0gSFJFU1VMVCBjaGlsZHJl
bihbb3V0XSB1bnNpZ25lZCogY2hpbGRDb3VudCwgW291dCwgcmV0dmFsXSBTQUZFQVJSQVkqKiBj
aGlsZHJlbik7CiAgICAgSFJFU1VMVCBsYXN0VmlzaXRXYXNGYWlsdXJlKFtvdXQsIHJldHZhbF0g
Qk9PTCogd2FzRmFpbHVyZSk7CisgICAgSFJFU1VMVCBzZXRMYXN0VmlzaXRXYXNGYWlsdXJlKFtp
bl0gQk9PTCB3YXNGYWlsdXJlKTsKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAzODcyMCkKKysrIFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjIsNyArNDIyLDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBk
YXRlR2xvYmFsSAogICAgIFdlYkhpc3RvcnkqIGhpc3RvcnkgPSBXZWJIaXN0b3J5OjpzaGFyZWRI
aXN0b3J5KCk7CiAgICAgaWYgKCFoaXN0b3J5KQogICAgICAgICByZXR1cm47Ci0gICAgaGlzdG9y
eS0+YWRkSXRlbSh1cmwsIGNvcmUobV93ZWJGcmFtZSktPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpLT50aXRsZSgpKTsgICAgICAgICAgICAgICAgIAorICAgIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIgPSBjb3JlKG1fd2ViRnJhbWUpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKKyAgICBo
aXN0b3J5LT5hZGRJdGVtKHVybCwgbG9hZGVyLT50aXRsZSgpLCBsb2FkZXItPnVybEZvckhpc3Rv
cnlSZWZsZWN0c0ZhaWx1cmUoKSk7ICAgICAgICAgICAgICAgICAKIH0KIAogYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QK
</data>
<flag name="review"
          id="11806"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>