<?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>72323</bug_id>
          
          <creation_ts>2011-11-14 16:02:49 -0800</creation_ts>
          <short_desc>Towards 8 bit Strings - Update utf8() and ascii() methods for 8 bit strings</short_desc>
          <delta_ts>2011-11-15 22:07:18 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71337</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ggaren</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>502424</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-11-14 16:02:49 -0800</bug_when>
    <thetext>The UString and String classes have ascii() and utf8() methods that can handle 8 bit strings more efficiently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502462</commentid>
    <comment_count>1</comment_count>
      <attachid>115059</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-11-14 16:46:38 -0800</bug_when>
    <thetext>Created attachment 115059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503072</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-11-15 11:12:29 -0800</bug_when>
    <thetext>I think &quot;#include &lt;wtf/unicode/Unicode.h&gt;&quot; vs &quot;#include Unicode.h&quot; might fix the Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503114</commentid>
    <comment_count>3</comment_count>
      <attachid>115059</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-11-15 11:50:31 -0800</bug_when>
    <thetext>Comment on attachment 115059
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/UString.cpp:425
&gt; +    if (is8Bit()) {
&gt; +        const LChar* characters = this-&gt;characters8();
&gt; +
&gt; +        ConversionResult result = convertUTF16ToUTF8(&amp;characters, characters + length, &amp;buffer, buffer + bufferVector.size());
&gt; +        ASSERT_UNUSED(result, result != targetExhausted); // (length * 3) should be sufficient for any conversion

I think it&apos;s confusing to pretend that our underlying buffer is UTF16, when our convention is to say that it&apos;s Latin1. So, to produce UTF8 data from an LChar buffer, let&apos;s use a function called convertLatin1ToUTF8.

&gt; Source/JavaScriptCore/wtf/text/WTFString.cpp:732
&gt; +        ConversionResult result = convertUTF16ToUTF8(&amp;characters, characters + length, &amp;buffer, buffer + bufferVector.size());
&gt; +        ASSERT_UNUSED(result, result != targetExhausted); // (length * 3) should be sufficient for any conversion

Same comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503272</commentid>
    <comment_count>4</comment_count>
      <attachid>115243</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-11-15 14:22:30 -0800</bug_when>
    <thetext>Created attachment 115243
Updated patch with speculative Windows fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503278</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 14:25:20 -0800</bug_when>
    <thetext>Attachment 115243 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/unicode/UTF8.cpp:157:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503454</commentid>
    <comment_count>6</comment_count>
      <attachid>115283</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-11-15 17:02:48 -0800</bug_when>
    <thetext>Created attachment 115283
Patch - Windows Build Fix - This time for sure!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503501</commentid>
    <comment_count>7</comment_count>
      <attachid>115294</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-11-15 18:53:57 -0800</bug_when>
    <thetext>Created attachment 115294
Patch updated with missing export</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503589</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-11-15 22:07:18 -0800</bug_when>
    <thetext>Committed r100405: &lt;http://trac.webkit.org/changeset/100405&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115059</attachid>
            <date>2011-11-14 16:46:38 -0800</date>
            <delta_ts>2011-11-15 14:22:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>72323.patch</filename>
            <type>text/plain</type>
            <size>12893</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAwMjE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDExLTExLTE0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFRvd2FyZHMgOCBiaXQgU3RyaW5ncyAtIFVwZGF0ZSB1dGY4KCkgYW5kIGFzY2lpKCkgbWV0
aG9kcyBmb3IgOCBiaXQgc3RyaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIzMjMKKworICAgICAgICBBZGRlZCA4IGJpdCBvcHRpbWl6ZWQgcGF0
aHMgZm9yIFN0cmluZyBhbmQgVVN0cmluZyBhc2NpaSgpIGFuZCB1dGY4KCkgbWV0aG9kcy4KKwor
ICAgICAgICBBZGRlZCBTdHJpbmc6OmNoYXJhY3RlcnM4KCksIGNoYXJhY3RlcnMxNigpIGFuZCBp
czhCaXQoKSBoZWxwZXIgbWV0aG9kcy4KKworICAgICAgICBBZGRlZCBhbiBzdHJpcHBlZCBkb3du
IFVuaWNvZGU6OmNvbnZlcnRVVEYxNlRvVVRGOCgpIG1ldGhvZCB0aGF0IHdvcmtzIG9uCisgICAg
ICAgIExDaGFyICg4IGJpdCkgc3RyaW5ncyBhbmQgdGhlcmVmb3JlIG9ubHkgbmVlZHMgdG8gaGFu
ZGxlIG9uZSBhbmQgdHdvIGJ5dGUKKyAgICAgICAgZXhwYW5zaW9ucy4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5jcHA6
CisgICAgICAgIChKU0M6OlVTdHJpbmc6OnV0ZjgpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6YXNjaWkpOgorICAgICAgICAoV1RGOjpT
dHJpbmc6OnV0ZjgpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAo
V1RGOjpTdHJpbmc6OmNoYXJhY3RlcnM4KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjaGFyYWN0
ZXJzMTYpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmlzOEJpdCk6CisgICAgICAgICogd3RmL3Vu
aWNvZGUvVVRGOC5jcHA6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmNvbnZlcnRVVEYxNlRvVVRG
OCk6CisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5oOgorCiAyMDExLTExLTE0ICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEZ1cnRoZXIgY2hhbmdlcyBh
bmQgY2xlYW51cCB0byBKU1N0cmluZy5oIGFuZCBjcHAuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAkocmV2aXNpb24gMTAwMjExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw4
ICszOTksOCBAQCBDU3RyaW5nIFVTdHJpbmc6OnV0ZjgoYm9vbCBzdHJpY3QpIGNvbnN0CiB7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAKLSAgICBpZiAoaXM4Qml0KCkp
Ci0gICAgICAgIHJldHVybiBDU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNo
YXJhY3RlcnM4KCkpLCBsZW5ndGgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4g
Q1N0cmluZygiIiwgMCk7CiAKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRv
IGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzCiAgICAgLy8gKGFuIGluZGl2aWR1YWwgVVRGLTE2IFVD
aGFyIGNhbiBvbmx5IGV4cGFuZCB0byAzIFVURi04IGJ5dGVzKS4KQEAgLTQxNSwzMCArNDE1LDM4
IEBAIENTdHJpbmcgVVN0cmluZzo6dXRmOChib29sIHN0cmljdCkgY29uc3QKICAgICBpZiAobGVu
Z3RoID4gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDMpCiAgICAgICAgIHJldHVy
biBDU3RyaW5nKCk7CiAKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJh
Y3RlcnMxNigpOwogICAgIFZlY3RvcjxjaGFyLCAxMDI0PiBidWZmZXJWZWN0b3IobGVuZ3RoICog
Myk7Ci0KICAgICBjaGFyKiBidWZmZXIgPSBidWZmZXJWZWN0b3IuZGF0YSgpOwotICAgIENvbnZl
cnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVydFVURjE2VG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFy
YWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpLCBz
dHJpY3QpOwotICAgIEFTU0VSVChyZXN1bHQgIT0gdGFyZ2V0RXhoYXVzdGVkKTsgLy8gKGxlbmd0
aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29udmVyc2lvbgogCi0gICAgLy8g
T25seSBwcm9kdWNlZCBmcm9tIHN0cmljdCBjb252ZXJzaW9uLgotICAgIGlmIChyZXN1bHQgPT0g
c291cmNlSWxsZWdhbCkKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICBpZiAoaXM4Qml0
KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJz
OCgpOworCisgICAgICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVydFVURjE2VG9V
VEY4KCZjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBi
dWZmZXJWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2ll
bnQgZm9yIGFueSBjb252ZXJzaW9uCisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzMTYoKTsKIAotICAgIC8vIENoZWNrIGZvciBh
biB1bmNvbnZlcnRlZCBoaWdoIHN1cnJvZ2F0ZS4KLSAgICBpZiAocmVzdWx0ID09IHNvdXJjZUV4
aGF1c3RlZCkgewotICAgICAgICBpZiAoc3RyaWN0KQorICAgICAgICBDb252ZXJzaW9uUmVzdWx0
IHJlc3VsdCA9IGNvbnZlcnRVVEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxl
bmd0aCwgJmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSwgc3RyaWN0KTsKKyAg
ICAgICAgQVNTRVJUKHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykg
c2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9uCisKKyAgICAgICAgLy8gT25s
eSBwcm9kdWNlZCBmcm9tIHN0cmljdCBjb252ZXJzaW9uLgorICAgICAgICBpZiAocmVzdWx0ID09
IHNvdXJjZUlsbGVnYWwpCiAgICAgICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgICAgICAv
LyBUaGlzIHNob3VsZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUuIFRyZWF0IGl0IHRo
ZSBzYW1lCi0gICAgICAgIC8vIHdhcyBhcyBhbiB1bnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZSB3b3Vs
ZCBoYXZlIGJlZW4gaGFuZGxlZCBpbgotICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIGEgc3RyaW5n
IHdpdGggbm9uLXN0cmljdCBjb252ZXJzaW9uIC0gd2hpY2ggaXMKLSAgICAgICAgLy8gdG8gc2F5
LCBzaW1wbHkgZW5jb2RlIGl0IHRvIFVURi04LgotICAgICAgICBBU1NFUlQoKGNoYXJhY3RlcnMg
KyAxKSA9PSAodGhpcy0+Y2hhcmFjdGVycygpICsgbGVuZ3RoKSk7Ci0gICAgICAgIEFTU0VSVCgo
KmNoYXJhY3RlcnMgPj0gMHhEODAwKSAmJiAoKmNoYXJhY3RlcnMgPD0gMHhEQkZGKSk7Ci0gICAg
ICAgIC8vIFRoZXJlIHNob3VsZCBiZSByb29tIGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3Qg
YmVlbiBjb252ZXJ0ZWQuCi0gICAgICAgIEFTU0VSVCgoYnVmZmVyICsgMykgPD0gKGJ1ZmZlciAr
IGJ1ZmZlclZlY3Rvci5zaXplKCkpKTsKLSAgICAgICAgcHV0VVRGOFRyaXBsZShidWZmZXIsICpj
aGFyYWN0ZXJzKTsKKworICAgICAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGlnaCBz
dXJyb2dhdGUuCisgICAgICAgIGlmIChyZXN1bHQgPT0gc291cmNlRXhoYXVzdGVkKSB7CisgICAg
ICAgICAgICBpZiAoc3RyaWN0KQorICAgICAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7Cisg
ICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUu
IFRyZWF0IGl0IHRoZSBzYW1lCisgICAgICAgICAgICAvLyB3YXMgYXMgYW4gdW5wYWlyZWQgaGln
aCBzdXJyb2dhdGUgd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4KKyAgICAgICAgICAgIC8vIHRo
ZSBtaWRkbGUgb2YgYSBzdHJpbmcgd2l0aCBub24tc3RyaWN0IGNvbnZlcnNpb24gLSB3aGljaCBp
cworICAgICAgICAgICAgLy8gdG8gc2F5LCBzaW1wbHkgZW5jb2RlIGl0IHRvIFVURi04LgorICAg
ICAgICAgICAgQVNTRVJUKChjaGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMoKSAr
IGxlbmd0aCkpOworICAgICAgICAgICAgQVNTRVJUKCgqY2hhcmFjdGVycyA+PSAweEQ4MDApICYm
ICgqY2hhcmFjdGVycyA8PSAweERCRkYpKTsKKyAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBi
ZSByb29tIGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0ZWQuCisgICAg
ICAgICAgICBBU1NFUlQoKGJ1ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6
ZSgpKSk7CisgICAgICAgICAgICBwdXRVVEY4VHJpcGxlKGJ1ZmZlciwgKmNoYXJhY3RlcnMpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEo
KSwgYnVmZmVyIC0gYnVmZmVyVmVjdG9yLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAkocmV2aXNpb24gMTAwMjExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY0MSw3ICs2NDEsMjcgQEAgQ1N0cmluZyBTdHJpbmc6OmFzY2lpKCkgY29uc3QKICAgICAv
LyBwcmVzZXJ2ZWQsIGNoYXJhY3RlcnMgb3V0c2lkZSBvZiB0aGlzIHJhbmdlIGFyZSBjb252ZXJ0
ZWQgdG8gJz8nLgogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzKCk7CisKKyAgICBpZiAo
IWxlbmd0aCkgeworICAgICAgICBjaGFyKiBjaGFyYWN0ZXJCdWZmZXI7CisgICAgICAgIHJldHVy
biBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxlbmd0aCwgY2hhcmFjdGVyQnVmZmVyKTsKKyAg
ICB9CisKKyAgICBpZiAodGhpcy0+aXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzOCgpOworCisgICAgICAgIGNoYXIqIGNoYXJhY3Rl
ckJ1ZmZlcjsKKyAgICAgICAgQ1N0cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxp
emVkKGxlbmd0aCwgY2hhcmFjdGVyQnVmZmVyKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIExDaGFyIGNoID0gY2hhcmFjdGVy
c1tpXTsKKyAgICAgICAgICAgIGNoYXJhY3RlckJ1ZmZlcltpXSA9IGNoICYmIChjaCA8IDB4MjAg
fHwgY2ggPiAweDdmKSA/ICc/JyA6IGNoOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsgICAgICAgIAorICAgIH0KKworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhp
cy0+Y2hhcmFjdGVyczE2KCk7CiAKICAgICBjaGFyKiBjaGFyYWN0ZXJCdWZmZXI7CiAgICAgQ1N0
cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxlbmd0aCwgY2hhcmFjdGVy
QnVmZmVyKTsKQEAgLTY4NSw3ICs3MDUsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0VVRGOFRy
aXBsZShjaGFyKiYgCiBDU3RyaW5nIFN0cmluZzo6dXRmOChib29sIHN0cmljdCkgY29uc3QKIHsK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnMoKTsKKworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7CiAKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBi
aWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzCiAgICAgLy8gKGFuIGluZGl2aWR1
YWwgVVRGLTE2IFVDaGFyIGNhbiBvbmx5IGV4cGFuZCB0byAzIFVURi04IGJ5dGVzKS4KQEAgLTcw
MiwyNiArNzI0LDM2IEBAIENTdHJpbmcgU3RyaW5nOjp1dGY4KGJvb2wgc3RyaWN0KSBjb25zdAog
ICAgIFZlY3RvcjxjaGFyLCAxMDI0PiBidWZmZXJWZWN0b3IobGVuZ3RoICogMyk7CiAKICAgICBj
aGFyKiBidWZmZXIgPSBidWZmZXJWZWN0b3IuZGF0YSgpOwotICAgIENvbnZlcnNpb25SZXN1bHQg
cmVzdWx0ID0gY29udmVydFVURjE2VG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzICsgbGVu
Z3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpLCBzdHJpY3QpOwotICAg
IEFTU0VSVChyZXN1bHQgIT0gdGFyZ2V0RXhoYXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMpIHNob3Vs
ZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29udmVyc2lvbgogCi0gICAgLy8gT25seSBwcm9kdWNl
ZCBmcm9tIHN0cmljdCBjb252ZXJzaW9uLgotICAgIGlmIChyZXN1bHQgPT0gc291cmNlSWxsZWdh
bCkKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICBpZiAoaXM4Qml0KCkpIHsKKyAgICAg
ICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzOCgpOworCisgICAg
ICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVydFVURjE2VG9VVEY4KCZjaGFyYWN0
ZXJzLCBjaGFyYWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iu
c2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSB0YXJnZXRF
eGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFueSBj
b252ZXJzaW9uCisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMg
PSB0aGlzLT5jaGFyYWN0ZXJzMTYoKTsKIAotICAgIC8vIENoZWNrIGZvciBhbiB1bmNvbnZlcnRl
ZCBoaWdoIHN1cnJvZ2F0ZS4KLSAgICBpZiAocmVzdWx0ID09IHNvdXJjZUV4aGF1c3RlZCkgewot
ICAgICAgICBpZiAoc3RyaWN0KQorICAgICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNv
bnZlcnRVVEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwgJmJ1ZmZl
ciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSwgc3RyaWN0KTsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9uCisKKyAgICAgICAgLy8gT25seSBwcm9kdWNlZCBm
cm9tIHN0cmljdCBjb252ZXJzaW9uLgorICAgICAgICBpZiAocmVzdWx0ID09IHNvdXJjZUlsbGVn
YWwpCiAgICAgICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgICAgICAvLyBUaGlzIHNob3Vs
ZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUuIFRyZWF0IGl0IHRoZSBzYW1lCi0gICAg
ICAgIC8vIHdhcyBhcyBhbiB1bnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZSB3b3VsZCBoYXZlIGJlZW4g
aGFuZGxlZCBpbgotICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nIHdpdGggbm9uLXN0
cmljdCBjb252ZXJzaW9uIC0gd2hpY2ggaXMKLSAgICAgICAgLy8gdG8gc2F5LCBzaW1wbHkgZW5j
b2RlIGl0IHRvIFVURi04LgotICAgICAgICBBU1NFUlQoKGNoYXJhY3RlcnMgKyAxKSA9PSAodGhp
cy0+Y2hhcmFjdGVycygpICsgbGVuZ3RoKSk7Ci0gICAgICAgIEFTU0VSVCgoKmNoYXJhY3RlcnMg
Pj0gMHhEODAwKSAmJiAoKmNoYXJhY3RlcnMgPD0gMHhEQkZGKSk7Ci0gICAgICAgIC8vIFRoZXJl
IHNob3VsZCBiZSByb29tIGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0
ZWQuCi0gICAgICAgIEFTU0VSVCgoYnVmZmVyICsgMykgPD0gKGJ1ZmZlciArIGJ1ZmZlclZlY3Rv
ci5zaXplKCkpKTsKLSAgICAgICAgcHV0VVRGOFRyaXBsZShidWZmZXIsICpjaGFyYWN0ZXJzKTsK
KworICAgICAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGlnaCBzdXJyb2dhdGUuCisg
ICAgICAgIGlmIChyZXN1bHQgPT0gc291cmNlRXhoYXVzdGVkKSB7CisgICAgICAgICAgICBpZiAo
c3RyaWN0KQorICAgICAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgICAgICAgICAv
LyBUaGlzIHNob3VsZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUuIFRyZWF0IGl0IHRo
ZSBzYW1lCisgICAgICAgICAgICAvLyB3YXMgYXMgYW4gdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUg
d291bGQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4KKyAgICAgICAgICAgIC8vIHRoZSBtaWRkbGUgb2Yg
YSBzdHJpbmcgd2l0aCBub24tc3RyaWN0IGNvbnZlcnNpb24gLSB3aGljaCBpcworICAgICAgICAg
ICAgLy8gdG8gc2F5LCBzaW1wbHkgZW5jb2RlIGl0IHRvIFVURi04LgorICAgICAgICAgICAgQVNT
RVJUKChjaGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMoKSArIGxlbmd0aCkpOwor
ICAgICAgICAgICAgQVNTRVJUKCgqY2hhcmFjdGVycyA+PSAweEQ4MDApICYmICgqY2hhcmFjdGVy
cyA8PSAweERCRkYpKTsKKyAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSByb29tIGxlZnQs
IHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0ZWQuCisgICAgICAgICAgICBBU1NF
UlQoKGJ1ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKSk7CisgICAg
ICAgICAgICBwdXRVVEY4VHJpcGxlKGJ1ZmZlciwgKmNoYXJhY3RlcnMpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEoKSwgYnVmZmVyIC0g
YnVmZmVyVmVjdG9yLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiAxMDAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsMjcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2ltcGwt
PmNoYXJhY3RlcnMoKTsKICAgICB9CisgICAgCisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9pbXBsKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzOEJpdCgpKTsKKyAgICAgICAgcmV0dXJuIG1f
aW1wbC0+Y2hhcmFjdGVyczgoKTsKKyAgICB9CisKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVy
czE2KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9pbXBsKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIEFTU0VSVCghbV9pbXBsLT5pczhCaXQoKSk7CisgICAgICAgIHJldHVy
biBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KKyAgICBpbmxpbmUgY29uc3QgQ2hhclR5cGUqIGdldENoYXJhY3RlcnMoKSBj
b25zdDsKKworICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pczhCaXQo
KTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAJKHJldmlzaW9uIDEwMDIxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAwLDYgKzIwMCw0OCBAQCBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRv
VVRGOCgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRV
VEYxNlRvVVRGOCgKKyAgICBjb25zdCBMQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBMQ2hhciog
c291cmNlRW5kLCAKKyAgICBjaGFyKiogdGFyZ2V0U3RhcnQsIGNoYXIqIHRhcmdldEVuZCkKK3sK
KyAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnNpb25PSzsKKyAgICBjb25zdCBM
Q2hhciogc291cmNlID0gKnNvdXJjZVN0YXJ0OworICAgIGNoYXIqIHRhcmdldCA9ICp0YXJnZXRT
dGFydDsKKyAgICB3aGlsZSAoc291cmNlIDwgc291cmNlRW5kKSB7CisgICAgICAgIFVDaGFyMzIg
Y2g7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ5dGVzVG9Xcml0ZSA9IDA7CisgICAgICAgIGNv
bnN0IFVDaGFyMzIgYnl0ZU1hc2sgPSAweEJGOworICAgICAgICBjb25zdCBVQ2hhcjMyIGJ5dGVN
YXJrID0gMHg4MDsgCisgICAgICAgIGNvbnN0IExDaGFyKiBvbGRTb3VyY2UgPSBzb3VyY2U7IC8v
IEluIGNhc2Ugd2UgaGF2ZSB0byBiYWNrIHVwIGJlY2F1c2Ugb2YgdGFyZ2V0IG92ZXJmbG93Lgor
ICAgICAgICBjaCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pigqc291cmNlKyspOworCisg
ICAgICAgIC8vIEZpZ3VyZSBvdXQgaG93IG1hbnkgYnl0ZXMgdGhlIHJlc3VsdCB3aWxsIHJlcXVp
cmUKKyAgICAgICAgaWYgKGNoIDwgKFVDaGFyMzIpMHg4MCkKKyAgICAgICAgICAgIGJ5dGVzVG9X
cml0ZSA9IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ5dGVzVG9Xcml0ZSA9IDI7CisK
KyAgICAgICAgdGFyZ2V0ICs9IGJ5dGVzVG9Xcml0ZTsKKyAgICAgICAgaWYgKHRhcmdldCA+IHRh
cmdldEVuZCkgeworICAgICAgICAgICAgc291cmNlID0gb2xkU291cmNlOyAvLyBCYWNrIHVwIHNv
dXJjZSBwb2ludGVyIQorICAgICAgICAgICAgdGFyZ2V0IC09IGJ5dGVzVG9Xcml0ZTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHRhcmdldEV4aGF1c3RlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIHN3aXRjaCAoYnl0ZXNUb1dyaXRlKSB7IC8vIG5vdGU6IGV2ZXJ5dGhp
bmcgZmFsbHMgdGhyb3VnaC4KKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgKi0tdGFyZ2V0
ID0gKGNoYXIpKChjaCB8IGJ5dGVNYXJrKSAmIGJ5dGVNYXNrKTsKKyAgICAgICAgICAgIGNoID4+
PSA2OworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAqLS10YXJnZXQgPSAgKGNoYXIpKGNo
IHwgZmlyc3RCeXRlTWFya1tieXRlc1RvV3JpdGVdKTsKKyAgICAgICAgfQorICAgICAgICB0YXJn
ZXQgKz0gYnl0ZXNUb1dyaXRlOworICAgIH0KKyAgICAqc291cmNlU3RhcnQgPSBzb3VyY2U7Cisg
ICAgKnRhcmdldFN0YXJ0ID0gdGFyZ2V0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC8vIFRo
aXMgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbGVuZ3RoIHByZS1kZXRlcm1pbmVkIGJ5IHRoZSBm
aXJzdCBieXRlLgogLy8gSWYgcHJlc2VudGVkIHdpdGggYSBsZW5ndGggPiA0LCB0aGlzIHJldHVy
bnMgZmFsc2UuICBUaGUgVW5pY29kZQogLy8gZGVmaW5pdGlvbiBvZiBVVEYtOCBnb2VzIHVwIHRv
IDQtYnl0ZSBzZXF1ZW5jZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNv
ZGUvVVRGOC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29k
ZS9VVEY4LmgJKHJldmlzaW9uIDEwMDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dW5pY29kZS9VVEY4LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDEwIEBAIG5hbWVzcGFj
ZSBVbmljb2RlIHsKICAgICAgICAgICAgICAgICAgICAgVUNoYXIqKiB0YXJnZXRTdGFydCwgVUNo
YXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKIAogICAgIENvbnZlcnNpb25SZXN1
bHQgY29udmVydFVURjE2VG9VVEY4KAorICAgICAgICAgICAgICAgICAgICBjb25zdCBMQ2hhcioq
IHNvdXJjZVN0YXJ0LCBjb25zdCBMQ2hhciogc291cmNlRW5kLCAKKyAgICAgICAgICAgICAgICAg
ICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQpOworCisgICAgQ29udmVyc2lv
blJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyKiogc291cmNlU3RhcnQsIGNvbnN0IFVDaGFyKiBzb3VyY2VFbmQsIAogICAgICAgICAgICAg
ICAgICAgICBjaGFyKiogdGFyZ2V0U3RhcnQsIGNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3Qg
PSB0cnVlKTsKIAo=
</data>
<flag name="review"
          id="113866"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115243</attachid>
            <date>2011-11-15 14:22:30 -0800</date>
            <delta_ts>2011-11-15 17:02:48 -0800</delta_ts>
            <desc>Updated patch with speculative Windows fix</desc>
            <filename>72323-2.patch</filename>
            <type>text/plain</type>
            <size>13834</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAwMzE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDExLTExLTE1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFRvd2FyZHMgOCBiaXQgU3RyaW5ncyAtIFVwZGF0ZSB1dGY4KCkgYW5kIGFzY2lpKCkgbWV0
aG9kcyBmb3IgOCBiaXQgc3RyaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIzMjMKKworICAgICAgICBBZGRlZCA4IGJpdCBvcHRpbWl6ZWQgcGF0
aHMgZm9yIFN0cmluZyBhbmQgVVN0cmluZyBhc2NpaSgpIGFuZCB1dGY4KCkgbWV0aG9kcy4KKwor
ICAgICAgICBBZGRlZCBTdHJpbmc6OmNoYXJhY3RlcnM4KCksIGNoYXJhY3RlcnMxNigpIGFuZCBp
czhCaXQoKSBoZWxwZXIgbWV0aG9kcy4KKworICAgICAgICBBZGRlZCBhbiBuZXcgVW5pY29kZTo6
Y29udmVydExhdGluMVRvVVRGOCgpIG1ldGhvZCB0aGF0IHdvcmtzIG9uCisgICAgICAgIExDaGFy
ICg4IGJpdCkgc3RyaW5ncyB0aGF0IGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIGNvbnZl
cnRVVEYxNlRvVVRGOCgpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6
dXRmOCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nOjphc2NpaSk6CisgICAgICAgIChXVEY6OlN0cmluZzo6dXRmOCk6CisgICAgICAgICog
d3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y2hhcmFjdGVyczgp
OgorICAgICAgICAoV1RGOjpTdHJpbmc6OmNoYXJhY3RlcnMxNik6CisgICAgICAgIChXVEY6OlN0
cmluZzo6aXM4Qml0KToKKyAgICAgICAgKFdURjo6TENoYXIpOgorICAgICAgICAoV1RGOjpVQ2hh
cik6CisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5jcHA6CisgICAgICAgIChXVEY6OlVuaWNv
ZGU6OmNvbnZlcnRMYXRpbjFUb1VURjgpOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDoK
KwogMjAxMS0xMS0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRyBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBjb25zdGFudHMgaW4gdGhlIGNvbnN0YW50
IHBvb2wgYW5kIHdlYWsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuY3BwCShyZXZpc2lvbiAxMDAzMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk5LDggKzM5OSw4IEBAIENTdHJpbmcg
VVN0cmluZzo6dXRmOChib29sIHN0cmljdCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0aGlzLT5sZW5ndGgoKTsKIAotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIENT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2hhcmFjdGVyczgoKSksIGxlbmd0
aCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCIiLCAwKTsKIAog
ICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJh
Y3RlcnMKICAgICAvLyAoYW4gaW5kaXZpZHVhbCBVVEYtMTYgVUNoYXIgY2FuIG9ubHkgZXhwYW5k
IHRvIDMgVVRGLTggYnl0ZXMpLgpAQCAtNDE1LDMwICs0MTUsMzggQEAgQ1N0cmluZyBVU3RyaW5n
Ojp1dGY4KGJvb2wgc3RyaWN0KSBjb25zdAogICAgIGlmIChsZW5ndGggPiBudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpIC8gMykKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKIAotICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVyczE2KCk7CiAgICAgVmVj
dG9yPGNoYXIsIDEwMjQ+IGJ1ZmZlclZlY3RvcihsZW5ndGggKiAzKTsKLQogICAgIGNoYXIqIGJ1
ZmZlciA9IGJ1ZmZlclZlY3Rvci5kYXRhKCk7Ci0gICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQg
PSBjb252ZXJ0VVRGMTZUb1VURjgoJmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgsICZi
dWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZlY3Rvci5zaXplKCksIHN0cmljdCk7Ci0gICAgQVNTRVJU
KHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9uCiAKLSAgICAvLyBPbmx5IHByb2R1Y2VkIGZyb20g
c3RyaWN0IGNvbnZlcnNpb24uCi0gICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VJbGxlZ2FsKQotICAg
ICAgICByZXR1cm4gQ1N0cmluZygpOworICAgIGlmIChpczhCaXQoKSkgeworICAgICAgICBjb25z
dCBMQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnM4KCk7CisKKyAgICAgICAgQ29u
dmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0TGF0aW4xVG9VVEY4KCZjaGFyYWN0ZXJzLCBj
aGFyYWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgp
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0
ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFueSBjb252ZXJz
aW9uCisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aGlz
LT5jaGFyYWN0ZXJzMTYoKTsKIAotICAgIC8vIENoZWNrIGZvciBhbiB1bmNvbnZlcnRlZCBoaWdo
IHN1cnJvZ2F0ZS4KLSAgICBpZiAocmVzdWx0ID09IHNvdXJjZUV4aGF1c3RlZCkgewotICAgICAg
ICBpZiAoc3RyaWN0KQorICAgICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnRV
VEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwgJmJ1ZmZlciwgYnVm
ZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSwgc3RyaWN0KTsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2ll
bnQgZm9yIGFueSBjb252ZXJzaW9uCisKKyAgICAgICAgLy8gT25seSBwcm9kdWNlZCBmcm9tIHN0
cmljdCBjb252ZXJzaW9uLgorICAgICAgICBpZiAocmVzdWx0ID09IHNvdXJjZUlsbGVnYWwpCiAg
ICAgICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBv
bmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUuIFRyZWF0IGl0IHRoZSBzYW1lCi0gICAgICAgIC8v
IHdhcyBhcyBhbiB1bnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZSB3b3VsZCBoYXZlIGJlZW4gaGFuZGxl
ZCBpbgotICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nIHdpdGggbm9uLXN0cmljdCBj
b252ZXJzaW9uIC0gd2hpY2ggaXMKLSAgICAgICAgLy8gdG8gc2F5LCBzaW1wbHkgZW5jb2RlIGl0
IHRvIFVURi04LgotICAgICAgICBBU1NFUlQoKGNoYXJhY3RlcnMgKyAxKSA9PSAodGhpcy0+Y2hh
cmFjdGVycygpICsgbGVuZ3RoKSk7Ci0gICAgICAgIEFTU0VSVCgoKmNoYXJhY3RlcnMgPj0gMHhE
ODAwKSAmJiAoKmNoYXJhY3RlcnMgPD0gMHhEQkZGKSk7Ci0gICAgICAgIC8vIFRoZXJlIHNob3Vs
ZCBiZSByb29tIGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0ZWQuCi0g
ICAgICAgIEFTU0VSVCgoYnVmZmVyICsgMykgPD0gKGJ1ZmZlciArIGJ1ZmZlclZlY3Rvci5zaXpl
KCkpKTsKLSAgICAgICAgcHV0VVRGOFRyaXBsZShidWZmZXIsICpjaGFyYWN0ZXJzKTsKKworICAg
ICAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGlnaCBzdXJyb2dhdGUuCisgICAgICAg
IGlmIChyZXN1bHQgPT0gc291cmNlRXhoYXVzdGVkKSB7CisgICAgICAgICAgICBpZiAoc3RyaWN0
KQorICAgICAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgICAgICAgICAvLyBUaGlz
IHNob3VsZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUuIFRyZWF0IGl0IHRoZSBzYW1l
CisgICAgICAgICAgICAvLyB3YXMgYXMgYW4gdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUgd291bGQg
aGF2ZSBiZWVuIGhhbmRsZWQgaW4KKyAgICAgICAgICAgIC8vIHRoZSBtaWRkbGUgb2YgYSBzdHJp
bmcgd2l0aCBub24tc3RyaWN0IGNvbnZlcnNpb24gLSB3aGljaCBpcworICAgICAgICAgICAgLy8g
dG8gc2F5LCBzaW1wbHkgZW5jb2RlIGl0IHRvIFVURi04LgorICAgICAgICAgICAgQVNTRVJUKChj
aGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMoKSArIGxlbmd0aCkpOworICAgICAg
ICAgICAgQVNTRVJUKCgqY2hhcmFjdGVycyA+PSAweEQ4MDApICYmICgqY2hhcmFjdGVycyA8PSAw
eERCRkYpKTsKKyAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSByb29tIGxlZnQsIHNpbmNl
IG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0ZWQuCisgICAgICAgICAgICBBU1NFUlQoKGJ1
ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKSk7CisgICAgICAgICAg
ICBwdXRVVEY4VHJpcGxlKGJ1ZmZlciwgKmNoYXJhY3RlcnMpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEoKSwgYnVmZmVyIC0gYnVmZmVy
VmVjdG9yLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcAkocmV2aXNpb24gMTAwMzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw3ICs2NDEsMjcg
QEAgQ1N0cmluZyBTdHJpbmc6OmFzY2lpKCkgY29uc3QKICAgICAvLyBwcmVzZXJ2ZWQsIGNoYXJh
Y3RlcnMgb3V0c2lkZSBvZiB0aGlzIHJhbmdlIGFyZSBjb252ZXJ0ZWQgdG8gJz8nLgogCiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzKCk7CisKKyAgICBpZiAoIWxlbmd0aCkgeworICAgICAg
ICBjaGFyKiBjaGFyYWN0ZXJCdWZmZXI7CisgICAgICAgIHJldHVybiBDU3RyaW5nOjpuZXdVbmlu
aXRpYWxpemVkKGxlbmd0aCwgY2hhcmFjdGVyQnVmZmVyKTsKKyAgICB9CisKKyAgICBpZiAodGhp
cy0+aXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5j
aGFyYWN0ZXJzOCgpOworCisgICAgICAgIGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKKyAgICAgICAg
Q1N0cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxlbmd0aCwgY2hhcmFj
dGVyQnVmZmVyKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIExDaGFyIGNoID0gY2hhcmFjdGVyc1tpXTsKKyAgICAgICAgICAg
IGNoYXJhY3RlckJ1ZmZlcltpXSA9IGNoICYmIChjaCA8IDB4MjAgfHwgY2ggPiAweDdmKSA/ICc/
JyA6IGNoOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgIAorICAg
IH0KKworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVyczE2KCk7
CiAKICAgICBjaGFyKiBjaGFyYWN0ZXJCdWZmZXI7CiAgICAgQ1N0cmluZyByZXN1bHQgPSBDU3Ry
aW5nOjpuZXdVbmluaXRpYWxpemVkKGxlbmd0aCwgY2hhcmFjdGVyQnVmZmVyKTsKQEAgLTY4NSw3
ICs3MDUsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0VVRGOFRyaXBsZShjaGFyKiYgCiBDU3Ry
aW5nIFN0cmluZzo6dXRmOChib29sIHN0cmljdCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMt
PmNoYXJhY3RlcnMoKTsKKworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gQ1N0cmlu
ZygiIiwgMCk7CiAKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQg
YWxsIHRoZSBjaGFyYWN0ZXJzCiAgICAgLy8gKGFuIGluZGl2aWR1YWwgVVRGLTE2IFVDaGFyIGNh
biBvbmx5IGV4cGFuZCB0byAzIFVURi04IGJ5dGVzKS4KQEAgLTcwMiwyNiArNzI0LDM2IEBAIENT
dHJpbmcgU3RyaW5nOjp1dGY4KGJvb2wgc3RyaWN0KSBjb25zdAogICAgIFZlY3RvcjxjaGFyLCAx
MDI0PiBidWZmZXJWZWN0b3IobGVuZ3RoICogMyk7CiAKICAgICBjaGFyKiBidWZmZXIgPSBidWZm
ZXJWZWN0b3IuZGF0YSgpOwotICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVydFVU
RjE2VG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZm
ZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpLCBzdHJpY3QpOwotICAgIEFTU0VSVChyZXN1bHQgIT0g
dGFyZ2V0RXhoYXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZv
ciBhbnkgY29udmVyc2lvbgogCi0gICAgLy8gT25seSBwcm9kdWNlZCBmcm9tIHN0cmljdCBjb252
ZXJzaW9uLgotICAgIGlmIChyZXN1bHQgPT0gc291cmNlSWxsZWdhbCkKLSAgICAgICAgcmV0dXJu
IENTdHJpbmcoKTsKKyAgICBpZiAoaXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzOCgpOworCisgICAgICAgIENvbnZlcnNpb25SZXN1
bHQgcmVzdWx0ID0gY29udmVydExhdGluMVRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyAr
IGxlbmd0aCwgJmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgIT0gdGFyZ2V0RXhoYXVzdGVkKTsgLy8gKGxl
bmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29udmVyc2lvbgorICAgIH0g
ZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVy
czE2KCk7CiAKLSAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGlnaCBzdXJyb2dhdGUu
Ci0gICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VFeGhhdXN0ZWQpIHsKLSAgICAgICAgaWYgKHN0cmlj
dCkKKyAgICAgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0VVRGMTZUb1VURjgo
JmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgsICZidWZmZXIsIGJ1ZmZlciArIGJ1ZmZl
clZlY3Rvci5zaXplKCksIHN0cmljdCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gdGFyZ2V0
RXhoYXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkg
Y29udmVyc2lvbgorCisgICAgICAgIC8vIE9ubHkgcHJvZHVjZWQgZnJvbSBzdHJpY3QgY29udmVy
c2lvbi4KKyAgICAgICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VJbGxlZ2FsKQogICAgICAgICAgICAg
cmV0dXJuIENTdHJpbmcoKTsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUgb25lIHVucGFpcmVk
IGhpZ2ggc3Vycm9nYXRlLiBUcmVhdCBpdCB0aGUgc2FtZQotICAgICAgICAvLyB3YXMgYXMgYW4g
dW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUgd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4KLSAgICAg
ICAgLy8gdGhlIG1pZGRsZSBvZiBhIHN0cmluZyB3aXRoIG5vbi1zdHJpY3QgY29udmVyc2lvbiAt
IHdoaWNoIGlzCi0gICAgICAgIC8vIHRvIHNheSwgc2ltcGx5IGVuY29kZSBpdCB0byBVVEYtOC4K
LSAgICAgICAgQVNTRVJUKChjaGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMoKSAr
IGxlbmd0aCkpOwotICAgICAgICBBU1NFUlQoKCpjaGFyYWN0ZXJzID49IDB4RDgwMCkgJiYgKCpj
aGFyYWN0ZXJzIDw9IDB4REJGRikpOwotICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgcm9vbSBs
ZWZ0LCBzaW5jZSBvbmUgVUNoYXIgaGFzbid0IGJlZW4gY29udmVydGVkLgotICAgICAgICBBU1NF
UlQoKGJ1ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKSk7Ci0gICAg
ICAgIHB1dFVURjhUcmlwbGUoYnVmZmVyLCAqY2hhcmFjdGVycyk7CisKKyAgICAgICAgLy8gQ2hl
Y2sgZm9yIGFuIHVuY29udmVydGVkIGhpZ2ggc3Vycm9nYXRlLgorICAgICAgICBpZiAocmVzdWx0
ID09IHNvdXJjZUV4aGF1c3RlZCkgeworICAgICAgICAgICAgaWYgKHN0cmljdCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gQ1N0cmluZygpOworICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUg
b25lIHVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlLiBUcmVhdCBpdCB0aGUgc2FtZQorICAgICAgICAg
ICAgLy8gd2FzIGFzIGFuIHVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlIHdvdWxkIGhhdmUgYmVlbiBo
YW5kbGVkIGluCisgICAgICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nIHdpdGggbm9u
LXN0cmljdCBjb252ZXJzaW9uIC0gd2hpY2ggaXMKKyAgICAgICAgICAgIC8vIHRvIHNheSwgc2lt
cGx5IGVuY29kZSBpdCB0byBVVEYtOC4KKyAgICAgICAgICAgIEFTU0VSVCgoY2hhcmFjdGVycyAr
IDEpID09ICh0aGlzLT5jaGFyYWN0ZXJzKCkgKyBsZW5ndGgpKTsKKyAgICAgICAgICAgIEFTU0VS
VCgoKmNoYXJhY3RlcnMgPj0gMHhEODAwKSAmJiAoKmNoYXJhY3RlcnMgPD0gMHhEQkZGKSk7Cisg
ICAgICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgcm9vbSBsZWZ0LCBzaW5jZSBvbmUgVUNoYXIg
aGFzbid0IGJlZW4gY29udmVydGVkLgorICAgICAgICAgICAgQVNTRVJUKChidWZmZXIgKyAzKSA8
PSAoYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSkpOworICAgICAgICAgICAgcHV0VVRGOFRy
aXBsZShidWZmZXIsICpjaGFyYWN0ZXJzKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVy
biBDU3RyaW5nKGJ1ZmZlclZlY3Rvci5kYXRhKCksIGJ1ZmZlciAtIGJ1ZmZlclZlY3Rvci5kYXRh
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAko
cmV2aXNpb24gMTAwMzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0
cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDI3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKCk7CiAg
ICAgfQorICAgIAorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NF
UlQobV9pbXBsLT5pczhCaXQoKSk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnM4
KCk7CisgICAgfQorCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBB
U1NFUlQoIW1faW1wbC0+aXM4Qml0KCkpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0
ZXJzMTYoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CisgICAg
aW5saW5lIGNvbnN0IENoYXJUeXBlKiBnZXRDaGFyYWN0ZXJzKCkgY29uc3Q7CisKKyAgICBib29s
IGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aXM4Qml0KCk7IH0KIAogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CkBAIC0zOTYsNiArNDE3LDIxIEBAIFN0cmluZzo6
U3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW4KIHsKIH0KIAordGVtcGxhdGU8PgoraW5s
aW5lIGNvbnN0IExDaGFyKiBTdHJpbmc6OmdldENoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoaXM4Qml0KCkpOworICAgIHJldHVybiBjaGFyYWN0ZXJzOCgpOworfQorCit0
ZW1wbGF0ZTw+CitpbmxpbmUgY29uc3QgVUNoYXIqIFN0cmluZzo6Z2V0Q2hhcmFjdGVyczxVQ2hh
cj4oKSBjb25zdAoreworICAgIEFTU0VSVCghaXM4Qml0KCkpOworICAgIHJldHVybiBjaGFyYWN0
ZXJzMTYoKTsKK30KKworCiAjaWZkZWYgX19PQkpDX18KIC8vIFRoaXMgaXMgZm9yIHNpdHVhdGlv
bnMgaW4gV2ViS2l0IHdoZXJlIHRoZSBsb25nIHN0YW5kaW5nIGJlaGF2aW9yIGhhcyBiZWVuCiAv
LyAibmlsIGlmIGVtcHR5Iiwgc28gd2UgdHJ5IHRvIG1haW50YWluIGxvbmdzdGFuZGluZyBiZWhh
dmlvciBmb3IgdGhlIHNha2Ugb2YKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5p
Y29kZS9VVEY4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Vu
aWNvZGUvVVRGOC5jcHAJKHJldmlzaW9uIDEwMDMxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdW5pY29kZS9VVEY4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw0OCBA
QCBpbnQgZGVjb2RlVVRGOFNlcXVlbmNlKGNvbnN0IGNoYXIqIHNlcXVlCiAvLyBmb3IgKmxlZ2Fs
KiBVVEYtOCB3aWxsIGJlIDQgb3IgZmV3ZXIgYnl0ZXMgdG90YWwuCiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgY2hhciBmaXJzdEJ5dGVNYXJrWzddID0geyAweDAwLCAweDAwLCAweEMwLCAweEUwLCAw
eEYwLCAweEY4LCAweEZDIH07CiAKK0NvbnZlcnNpb25SZXN1bHQgY29udmVydExhdGluMVRvVVRG
OCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMQ2hhcioqIHNv
dXJjZVN0YXJ0LCBjb25zdCBMQ2hhciogc291cmNlRW5kLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyKiogdGFyZ2V0U3RhcnQsIGNoYXIqIHRhcmdldEVuZCkKK3sK
KyAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnNpb25PSzsKKyAgICBjb25zdCBM
Q2hhciogc291cmNlID0gKnNvdXJjZVN0YXJ0OworICAgIGNoYXIqIHRhcmdldCA9ICp0YXJnZXRT
dGFydDsKKyAgICB3aGlsZSAoc291cmNlIDwgc291cmNlRW5kKSB7CisgICAgICAgIFVDaGFyMzIg
Y2g7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ5dGVzVG9Xcml0ZSA9IDA7CisgICAgICAgIGNv
bnN0IFVDaGFyMzIgYnl0ZU1hc2sgPSAweEJGOworICAgICAgICBjb25zdCBVQ2hhcjMyIGJ5dGVN
YXJrID0gMHg4MDsgCisgICAgICAgIGNvbnN0IExDaGFyKiBvbGRTb3VyY2UgPSBzb3VyY2U7IC8v
IEluIGNhc2Ugd2UgaGF2ZSB0byBiYWNrIHVwIGJlY2F1c2Ugb2YgdGFyZ2V0IG92ZXJmbG93Lgor
ICAgICAgICBjaCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pigqc291cmNlKyspOworCisg
ICAgICAgIC8vIEZpZ3VyZSBvdXQgaG93IG1hbnkgYnl0ZXMgdGhlIHJlc3VsdCB3aWxsIHJlcXVp
cmUKKyAgICAgICAgaWYgKGNoIDwgKFVDaGFyMzIpMHg4MCkKKyAgICAgICAgICAgIGJ5dGVzVG9X
cml0ZSA9IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ5dGVzVG9Xcml0ZSA9IDI7CisK
KyAgICAgICAgdGFyZ2V0ICs9IGJ5dGVzVG9Xcml0ZTsKKyAgICAgICAgaWYgKHRhcmdldCA+IHRh
cmdldEVuZCkgeworICAgICAgICAgICAgc291cmNlID0gb2xkU291cmNlOyAvLyBCYWNrIHVwIHNv
dXJjZSBwb2ludGVyIQorICAgICAgICAgICAgdGFyZ2V0IC09IGJ5dGVzVG9Xcml0ZTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHRhcmdldEV4aGF1c3RlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIHN3aXRjaCAoYnl0ZXNUb1dyaXRlKSB7IC8vIG5vdGU6IGV2ZXJ5dGhp
bmcgZmFsbHMgdGhyb3VnaC4KKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAq
LS10YXJnZXQgPSAoY2hhcikoKGNoIHwgYnl0ZU1hcmspICYgYnl0ZU1hc2spOworICAgICAgICAg
ICAgICAgIGNoID4+PSA2OworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICot
LXRhcmdldCA9ICAoY2hhcikoY2ggfCBmaXJzdEJ5dGVNYXJrW2J5dGVzVG9Xcml0ZV0pOworICAg
ICAgICB9CisgICAgICAgIHRhcmdldCArPSBieXRlc1RvV3JpdGU7CisgICAgfQorICAgICpzb3Vy
Y2VTdGFydCA9IHNvdXJjZTsKKyAgICAqdGFyZ2V0U3RhcnQgPSB0YXJnZXQ7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCiAgICAg
Y29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwgCiAgICAg
Y2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCShyZXZpc2lvbiAxMDAzMTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdURl9VVEY4X2gKICNkZWZpbmUgV1RGX1VU
RjhfaAogCi0jaW5jbHVkZSAiVW5pY29kZS5oIgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNv
ZGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBuYW1lc3BhY2UgVW5pY29kZSB7CkBAIC02Niw2ICs2
NiwxMCBAQCBuYW1lc3BhY2UgVW5pY29kZSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqKiBzb3VyY2VTdGFydCwgY29uc3QgY2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAg
ICAgICAgVUNoYXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3Qg
PSB0cnVlKTsKIAorICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydExhdGluMVRvVVRGOCgKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTENoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgTENoYXIq
IHNvdXJjZUVuZCwgCisgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hh
ciogdGFyZ2V0RW5kKTsKKwogICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4
KAogICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBV
Q2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0YXJ0
LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115283</attachid>
            <date>2011-11-15 17:02:48 -0800</date>
            <delta_ts>2011-11-15 18:53:57 -0800</delta_ts>
            <desc>Patch - Windows Build Fix - This time for sure!</desc>
            <filename>72323-4.patch</filename>
            <type>text/plain</type>
            <size>14335</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAwMzE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDExLTExLTE1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFRvd2FyZHMgOCBiaXQgU3RyaW5ncyAtIFVwZGF0ZSB1dGY4KCkgYW5kIGFzY2lpKCkgbWV0
aG9kcyBmb3IgOCBiaXQgc3RyaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIzMjMKKworICAgICAgICBBZGRlZCA4IGJpdCBvcHRpbWl6ZWQgcGF0
aHMgZm9yIFN0cmluZyBhbmQgVVN0cmluZyBhc2NpaSgpIGFuZCB1dGY4KCkgbWV0aG9kcy4KKwor
ICAgICAgICBBZGRlZCBTdHJpbmc6OmNoYXJhY3RlcnM4KCksIGNoYXJhY3RlcnMxNigpIGFuZCBp
czhCaXQoKSBoZWxwZXIgbWV0aG9kcy4KKworICAgICAgICBBZGRlZCBhbiBuZXcgVW5pY29kZTo6
Y29udmVydExhdGluMVRvVVRGOCgpIG1ldGhvZCB0aGF0IHdvcmtzIG9uCisgICAgICAgIExDaGFy
ICg4IGJpdCkgc3RyaW5ncyB0aGF0IGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIGNvbnZl
cnRVVEYxNlRvVVRGOCgpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6
dXRmOCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nOjphc2NpaSk6CisgICAgICAgIChXVEY6OlN0cmluZzo6dXRmOCk6CisgICAgICAgICog
d3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y2hhcmFjdGVyczgp
OgorICAgICAgICAoV1RGOjpTdHJpbmc6OmNoYXJhY3RlcnMxNik6CisgICAgICAgIChXVEY6OlN0
cmluZzo6aXM4Qml0KToKKyAgICAgICAgKFdURjo6TENoYXIpOgorICAgICAgICAoV1RGOjpVQ2hh
cik6CisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5jcHA6CisgICAgICAgIChXVEY6OlVuaWNv
ZGU6OmNvbnZlcnRMYXRpbjFUb1VURjgpOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDoK
KwogMjAxMS0xMS0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRyBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBjb25zdGFudHMgaW4gdGhlIGNvbnN0YW50
IHBvb2wgYW5kIHdlYWsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuY3BwCShyZXZpc2lvbiAxMDAzMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk5LDggKzM5OSw4IEBAIENTdHJpbmcg
VVN0cmluZzo6dXRmOChib29sIHN0cmljdCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0aGlzLT5sZW5ndGgoKTsKIAotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIENT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2hhcmFjdGVyczgoKSksIGxlbmd0
aCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCIiLCAwKTsKIAog
ICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJh
Y3RlcnMKICAgICAvLyAoYW4gaW5kaXZpZHVhbCBVVEYtMTYgVUNoYXIgY2FuIG9ubHkgZXhwYW5k
IHRvIDMgVVRGLTggYnl0ZXMpLgpAQCAtNDE1LDMwICs0MTUsMzggQEAgQ1N0cmluZyBVU3RyaW5n
Ojp1dGY4KGJvb2wgc3RyaWN0KSBjb25zdAogICAgIGlmIChsZW5ndGggPiBudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpIC8gMykKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKIAotICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVyczE2KCk7CiAgICAgVmVj
dG9yPGNoYXIsIDEwMjQ+IGJ1ZmZlclZlY3RvcihsZW5ndGggKiAzKTsKLQogICAgIGNoYXIqIGJ1
ZmZlciA9IGJ1ZmZlclZlY3Rvci5kYXRhKCk7Ci0gICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQg
PSBjb252ZXJ0VVRGMTZUb1VURjgoJmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgsICZi
dWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZlY3Rvci5zaXplKCksIHN0cmljdCk7Ci0gICAgQVNTRVJU
KHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9uCiAKLSAgICAvLyBPbmx5IHByb2R1Y2VkIGZyb20g
c3RyaWN0IGNvbnZlcnNpb24uCi0gICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VJbGxlZ2FsKQotICAg
ICAgICByZXR1cm4gQ1N0cmluZygpOworICAgIGlmIChpczhCaXQoKSkgeworICAgICAgICBjb25z
dCBMQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnM4KCk7CisKKyAgICAgICAgQ29u
dmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0TGF0aW4xVG9VVEY4KCZjaGFyYWN0ZXJzLCBj
aGFyYWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgp
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0
ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFueSBjb252ZXJz
aW9uCisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aGlz
LT5jaGFyYWN0ZXJzMTYoKTsKIAotICAgIC8vIENoZWNrIGZvciBhbiB1bmNvbnZlcnRlZCBoaWdo
IHN1cnJvZ2F0ZS4KLSAgICBpZiAocmVzdWx0ID09IHNvdXJjZUV4aGF1c3RlZCkgewotICAgICAg
ICBpZiAoc3RyaWN0KQorICAgICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnRV
VEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwgJmJ1ZmZlciwgYnVm
ZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSwgc3RyaWN0KTsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2ll
bnQgZm9yIGFueSBjb252ZXJzaW9uCisKKyAgICAgICAgLy8gT25seSBwcm9kdWNlZCBmcm9tIHN0
cmljdCBjb252ZXJzaW9uLgorICAgICAgICBpZiAocmVzdWx0ID09IHNvdXJjZUlsbGVnYWwpCiAg
ICAgICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBv
bmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUuIFRyZWF0IGl0IHRoZSBzYW1lCi0gICAgICAgIC8v
IHdhcyBhcyBhbiB1bnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZSB3b3VsZCBoYXZlIGJlZW4gaGFuZGxl
ZCBpbgotICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nIHdpdGggbm9uLXN0cmljdCBj
b252ZXJzaW9uIC0gd2hpY2ggaXMKLSAgICAgICAgLy8gdG8gc2F5LCBzaW1wbHkgZW5jb2RlIGl0
IHRvIFVURi04LgotICAgICAgICBBU1NFUlQoKGNoYXJhY3RlcnMgKyAxKSA9PSAodGhpcy0+Y2hh
cmFjdGVycygpICsgbGVuZ3RoKSk7Ci0gICAgICAgIEFTU0VSVCgoKmNoYXJhY3RlcnMgPj0gMHhE
ODAwKSAmJiAoKmNoYXJhY3RlcnMgPD0gMHhEQkZGKSk7Ci0gICAgICAgIC8vIFRoZXJlIHNob3Vs
ZCBiZSByb29tIGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0ZWQuCi0g
ICAgICAgIEFTU0VSVCgoYnVmZmVyICsgMykgPD0gKGJ1ZmZlciArIGJ1ZmZlclZlY3Rvci5zaXpl
KCkpKTsKLSAgICAgICAgcHV0VVRGOFRyaXBsZShidWZmZXIsICpjaGFyYWN0ZXJzKTsKKworICAg
ICAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGlnaCBzdXJyb2dhdGUuCisgICAgICAg
IGlmIChyZXN1bHQgPT0gc291cmNlRXhoYXVzdGVkKSB7CisgICAgICAgICAgICBpZiAoc3RyaWN0
KQorICAgICAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgICAgICAgICAvLyBUaGlz
IHNob3VsZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUuIFRyZWF0IGl0IHRoZSBzYW1l
CisgICAgICAgICAgICAvLyB3YXMgYXMgYW4gdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUgd291bGQg
aGF2ZSBiZWVuIGhhbmRsZWQgaW4KKyAgICAgICAgICAgIC8vIHRoZSBtaWRkbGUgb2YgYSBzdHJp
bmcgd2l0aCBub24tc3RyaWN0IGNvbnZlcnNpb24gLSB3aGljaCBpcworICAgICAgICAgICAgLy8g
dG8gc2F5LCBzaW1wbHkgZW5jb2RlIGl0IHRvIFVURi04LgorICAgICAgICAgICAgQVNTRVJUKChj
aGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMoKSArIGxlbmd0aCkpOworICAgICAg
ICAgICAgQVNTRVJUKCgqY2hhcmFjdGVycyA+PSAweEQ4MDApICYmICgqY2hhcmFjdGVycyA8PSAw
eERCRkYpKTsKKyAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSByb29tIGxlZnQsIHNpbmNl
IG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0ZWQuCisgICAgICAgICAgICBBU1NFUlQoKGJ1
ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKSk7CisgICAgICAgICAg
ICBwdXRVVEY4VHJpcGxlKGJ1ZmZlciwgKmNoYXJhY3RlcnMpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEoKSwgYnVmZmVyIC0gYnVmZmVy
VmVjdG9yLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcAkocmV2aXNpb24gMTAwMzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw3ICs2NDEsMjcg
QEAgQ1N0cmluZyBTdHJpbmc6OmFzY2lpKCkgY29uc3QKICAgICAvLyBwcmVzZXJ2ZWQsIGNoYXJh
Y3RlcnMgb3V0c2lkZSBvZiB0aGlzIHJhbmdlIGFyZSBjb252ZXJ0ZWQgdG8gJz8nLgogCiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzKCk7CisKKyAgICBpZiAoIWxlbmd0aCkgeworICAgICAg
ICBjaGFyKiBjaGFyYWN0ZXJCdWZmZXI7CisgICAgICAgIHJldHVybiBDU3RyaW5nOjpuZXdVbmlu
aXRpYWxpemVkKGxlbmd0aCwgY2hhcmFjdGVyQnVmZmVyKTsKKyAgICB9CisKKyAgICBpZiAodGhp
cy0+aXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5j
aGFyYWN0ZXJzOCgpOworCisgICAgICAgIGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKKyAgICAgICAg
Q1N0cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxlbmd0aCwgY2hhcmFj
dGVyQnVmZmVyKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIExDaGFyIGNoID0gY2hhcmFjdGVyc1tpXTsKKyAgICAgICAgICAg
IGNoYXJhY3RlckJ1ZmZlcltpXSA9IGNoICYmIChjaCA8IDB4MjAgfHwgY2ggPiAweDdmKSA/ICc/
JyA6IGNoOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgIAorICAg
IH0KKworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVyczE2KCk7
CiAKICAgICBjaGFyKiBjaGFyYWN0ZXJCdWZmZXI7CiAgICAgQ1N0cmluZyByZXN1bHQgPSBDU3Ry
aW5nOjpuZXdVbmluaXRpYWxpemVkKGxlbmd0aCwgY2hhcmFjdGVyQnVmZmVyKTsKQEAgLTY4NSw3
ICs3MDUsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0VVRGOFRyaXBsZShjaGFyKiYgCiBDU3Ry
aW5nIFN0cmluZzo6dXRmOChib29sIHN0cmljdCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMt
PmNoYXJhY3RlcnMoKTsKKworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gQ1N0cmlu
ZygiIiwgMCk7CiAKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQg
YWxsIHRoZSBjaGFyYWN0ZXJzCiAgICAgLy8gKGFuIGluZGl2aWR1YWwgVVRGLTE2IFVDaGFyIGNh
biBvbmx5IGV4cGFuZCB0byAzIFVURi04IGJ5dGVzKS4KQEAgLTcwMiwyNiArNzI0LDM2IEBAIENT
dHJpbmcgU3RyaW5nOjp1dGY4KGJvb2wgc3RyaWN0KSBjb25zdAogICAgIFZlY3RvcjxjaGFyLCAx
MDI0PiBidWZmZXJWZWN0b3IobGVuZ3RoICogMyk7CiAKICAgICBjaGFyKiBidWZmZXIgPSBidWZm
ZXJWZWN0b3IuZGF0YSgpOwotICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVydFVU
RjE2VG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZm
ZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpLCBzdHJpY3QpOwotICAgIEFTU0VSVChyZXN1bHQgIT0g
dGFyZ2V0RXhoYXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZv
ciBhbnkgY29udmVyc2lvbgogCi0gICAgLy8gT25seSBwcm9kdWNlZCBmcm9tIHN0cmljdCBjb252
ZXJzaW9uLgotICAgIGlmIChyZXN1bHQgPT0gc291cmNlSWxsZWdhbCkKLSAgICAgICAgcmV0dXJu
IENTdHJpbmcoKTsKKyAgICBpZiAoaXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzOCgpOworCisgICAgICAgIENvbnZlcnNpb25SZXN1
bHQgcmVzdWx0ID0gY29udmVydExhdGluMVRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyAr
IGxlbmd0aCwgJmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgIT0gdGFyZ2V0RXhoYXVzdGVkKTsgLy8gKGxl
bmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29udmVyc2lvbgorICAgIH0g
ZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVy
czE2KCk7CiAKLSAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGlnaCBzdXJyb2dhdGUu
Ci0gICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VFeGhhdXN0ZWQpIHsKLSAgICAgICAgaWYgKHN0cmlj
dCkKKyAgICAgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0VVRGMTZUb1VURjgo
JmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgsICZidWZmZXIsIGJ1ZmZlciArIGJ1ZmZl
clZlY3Rvci5zaXplKCksIHN0cmljdCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gdGFyZ2V0
RXhoYXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkg
Y29udmVyc2lvbgorCisgICAgICAgIC8vIE9ubHkgcHJvZHVjZWQgZnJvbSBzdHJpY3QgY29udmVy
c2lvbi4KKyAgICAgICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VJbGxlZ2FsKQogICAgICAgICAgICAg
cmV0dXJuIENTdHJpbmcoKTsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUgb25lIHVucGFpcmVk
IGhpZ2ggc3Vycm9nYXRlLiBUcmVhdCBpdCB0aGUgc2FtZQotICAgICAgICAvLyB3YXMgYXMgYW4g
dW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUgd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4KLSAgICAg
ICAgLy8gdGhlIG1pZGRsZSBvZiBhIHN0cmluZyB3aXRoIG5vbi1zdHJpY3QgY29udmVyc2lvbiAt
IHdoaWNoIGlzCi0gICAgICAgIC8vIHRvIHNheSwgc2ltcGx5IGVuY29kZSBpdCB0byBVVEYtOC4K
LSAgICAgICAgQVNTRVJUKChjaGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMoKSAr
IGxlbmd0aCkpOwotICAgICAgICBBU1NFUlQoKCpjaGFyYWN0ZXJzID49IDB4RDgwMCkgJiYgKCpj
aGFyYWN0ZXJzIDw9IDB4REJGRikpOwotICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgcm9vbSBs
ZWZ0LCBzaW5jZSBvbmUgVUNoYXIgaGFzbid0IGJlZW4gY29udmVydGVkLgotICAgICAgICBBU1NF
UlQoKGJ1ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKSk7Ci0gICAg
ICAgIHB1dFVURjhUcmlwbGUoYnVmZmVyLCAqY2hhcmFjdGVycyk7CisKKyAgICAgICAgLy8gQ2hl
Y2sgZm9yIGFuIHVuY29udmVydGVkIGhpZ2ggc3Vycm9nYXRlLgorICAgICAgICBpZiAocmVzdWx0
ID09IHNvdXJjZUV4aGF1c3RlZCkgeworICAgICAgICAgICAgaWYgKHN0cmljdCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gQ1N0cmluZygpOworICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUg
b25lIHVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlLiBUcmVhdCBpdCB0aGUgc2FtZQorICAgICAgICAg
ICAgLy8gd2FzIGFzIGFuIHVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlIHdvdWxkIGhhdmUgYmVlbiBo
YW5kbGVkIGluCisgICAgICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nIHdpdGggbm9u
LXN0cmljdCBjb252ZXJzaW9uIC0gd2hpY2ggaXMKKyAgICAgICAgICAgIC8vIHRvIHNheSwgc2lt
cGx5IGVuY29kZSBpdCB0byBVVEYtOC4KKyAgICAgICAgICAgIEFTU0VSVCgoY2hhcmFjdGVycyAr
IDEpID09ICh0aGlzLT5jaGFyYWN0ZXJzKCkgKyBsZW5ndGgpKTsKKyAgICAgICAgICAgIEFTU0VS
VCgoKmNoYXJhY3RlcnMgPj0gMHhEODAwKSAmJiAoKmNoYXJhY3RlcnMgPD0gMHhEQkZGKSk7Cisg
ICAgICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgcm9vbSBsZWZ0LCBzaW5jZSBvbmUgVUNoYXIg
aGFzbid0IGJlZW4gY29udmVydGVkLgorICAgICAgICAgICAgQVNTRVJUKChidWZmZXIgKyAzKSA8
PSAoYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSkpOworICAgICAgICAgICAgcHV0VVRGOFRy
aXBsZShidWZmZXIsICpjaGFyYWN0ZXJzKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVy
biBDU3RyaW5nKGJ1ZmZlclZlY3Rvci5kYXRhKCksIGJ1ZmZlciAtIGJ1ZmZlclZlY3Rvci5kYXRh
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAko
cmV2aXNpb24gMTAwMzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0
cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDI3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKCk7CiAg
ICAgfQorICAgIAorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NF
UlQobV9pbXBsLT5pczhCaXQoKSk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnM4
KCk7CisgICAgfQorCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBB
U1NFUlQoIW1faW1wbC0+aXM4Qml0KCkpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0
ZXJzMTYoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CisgICAg
aW5saW5lIGNvbnN0IENoYXJUeXBlKiBnZXRDaGFyYWN0ZXJzKCkgY29uc3Q7CisKKyAgICBib29s
IGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aXM4Qml0KCk7IH0KIAogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CkBAIC0zOTYsNiArNDE3LDIxIEBAIFN0cmluZzo6
U3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW4KIHsKIH0KIAordGVtcGxhdGU8PgoraW5s
aW5lIGNvbnN0IExDaGFyKiBTdHJpbmc6OmdldENoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoaXM4Qml0KCkpOworICAgIHJldHVybiBjaGFyYWN0ZXJzOCgpOworfQorCit0
ZW1wbGF0ZTw+CitpbmxpbmUgY29uc3QgVUNoYXIqIFN0cmluZzo6Z2V0Q2hhcmFjdGVyczxVQ2hh
cj4oKSBjb25zdAoreworICAgIEFTU0VSVCghaXM4Qml0KCkpOworICAgIHJldHVybiBjaGFyYWN0
ZXJzMTYoKTsKK30KKworCiAjaWZkZWYgX19PQkpDX18KIC8vIFRoaXMgaXMgZm9yIHNpdHVhdGlv
bnMgaW4gV2ViS2l0IHdoZXJlIHRoZSBsb25nIHN0YW5kaW5nIGJlaGF2aW9yIGhhcyBiZWVuCiAv
LyAibmlsIGlmIGVtcHR5Iiwgc28gd2UgdHJ5IHRvIG1haW50YWluIGxvbmdzdGFuZGluZyBiZWhh
dmlvciBmb3IgdGhlIHNha2Ugb2YKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5p
Y29kZS9VVEY4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Vu
aWNvZGUvVVRGOC5jcHAJKHJldmlzaW9uIDEwMDMxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdW5pY29kZS9VVEY4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw0OCBA
QCBpbnQgZGVjb2RlVVRGOFNlcXVlbmNlKGNvbnN0IGNoYXIqIHNlcXVlCiAvLyBmb3IgKmxlZ2Fs
KiBVVEYtOCB3aWxsIGJlIDQgb3IgZmV3ZXIgYnl0ZXMgdG90YWwuCiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgY2hhciBmaXJzdEJ5dGVNYXJrWzddID0geyAweDAwLCAweDAwLCAweEMwLCAweEUwLCAw
eEYwLCAweEY4LCAweEZDIH07CiAKK0NvbnZlcnNpb25SZXN1bHQgY29udmVydExhdGluMVRvVVRG
OCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMQ2hhcioqIHNv
dXJjZVN0YXJ0LCBjb25zdCBMQ2hhciogc291cmNlRW5kLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyKiogdGFyZ2V0U3RhcnQsIGNoYXIqIHRhcmdldEVuZCkKK3sK
KyAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnNpb25PSzsKKyAgICBjb25zdCBM
Q2hhciogc291cmNlID0gKnNvdXJjZVN0YXJ0OworICAgIGNoYXIqIHRhcmdldCA9ICp0YXJnZXRT
dGFydDsKKyAgICB3aGlsZSAoc291cmNlIDwgc291cmNlRW5kKSB7CisgICAgICAgIFVDaGFyMzIg
Y2g7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ5dGVzVG9Xcml0ZSA9IDA7CisgICAgICAgIGNv
bnN0IFVDaGFyMzIgYnl0ZU1hc2sgPSAweEJGOworICAgICAgICBjb25zdCBVQ2hhcjMyIGJ5dGVN
YXJrID0gMHg4MDsgCisgICAgICAgIGNvbnN0IExDaGFyKiBvbGRTb3VyY2UgPSBzb3VyY2U7IC8v
IEluIGNhc2Ugd2UgaGF2ZSB0byBiYWNrIHVwIGJlY2F1c2Ugb2YgdGFyZ2V0IG92ZXJmbG93Lgor
ICAgICAgICBjaCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pigqc291cmNlKyspOworCisg
ICAgICAgIC8vIEZpZ3VyZSBvdXQgaG93IG1hbnkgYnl0ZXMgdGhlIHJlc3VsdCB3aWxsIHJlcXVp
cmUKKyAgICAgICAgaWYgKGNoIDwgKFVDaGFyMzIpMHg4MCkKKyAgICAgICAgICAgIGJ5dGVzVG9X
cml0ZSA9IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ5dGVzVG9Xcml0ZSA9IDI7CisK
KyAgICAgICAgdGFyZ2V0ICs9IGJ5dGVzVG9Xcml0ZTsKKyAgICAgICAgaWYgKHRhcmdldCA+IHRh
cmdldEVuZCkgeworICAgICAgICAgICAgc291cmNlID0gb2xkU291cmNlOyAvLyBCYWNrIHVwIHNv
dXJjZSBwb2ludGVyIQorICAgICAgICAgICAgdGFyZ2V0IC09IGJ5dGVzVG9Xcml0ZTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHRhcmdldEV4aGF1c3RlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIHN3aXRjaCAoYnl0ZXNUb1dyaXRlKSB7IC8vIG5vdGU6IGV2ZXJ5dGhp
bmcgZmFsbHMgdGhyb3VnaC4KKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgKi0tdGFyZ2V0
ID0gKGNoYXIpKChjaCB8IGJ5dGVNYXJrKSAmIGJ5dGVNYXNrKTsKKyAgICAgICAgICAgIGNoID4+
PSA2OworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAqLS10YXJnZXQgPSAgKGNoYXIpKGNo
IHwgZmlyc3RCeXRlTWFya1tieXRlc1RvV3JpdGVdKTsKKyAgICAgICAgfQorICAgICAgICB0YXJn
ZXQgKz0gYnl0ZXNUb1dyaXRlOworICAgIH0KKyAgICAqc291cmNlU3RhcnQgPSBzb3VyY2U7Cisg
ICAgKnRhcmdldFN0YXJ0ID0gdGFyZ2V0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIENvbnZl
cnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAogICAgIGNvbnN0IFVDaGFyKiogc291cmNl
U3RhcnQsIGNvbnN0IFVDaGFyKiBzb3VyY2VFbmQsIAogICAgIGNoYXIqKiB0YXJnZXRTdGFydCwg
Y2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdW5pY29kZS9VVEY4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi91bmljb2RlL1VURjguaAkocmV2aXNpb24gMTAwMzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMTAg
QEAgbmFtZXNwYWNlIFVuaWNvZGUgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiog
c291cmNlU3RhcnQsIGNvbnN0IGNoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAg
IFVDaGFyKiogdGFyZ2V0U3RhcnQsIFVDaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1
ZSk7CiAKKyAgICBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRMYXRpbjFUb1VURjgoCisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IExDaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IExDaGFyKiBzb3Vy
Y2VFbmQsIAorICAgICAgICAgICAgICAgICAgICBjaGFyKiogdGFyZ2V0U3RhcnQsIGNoYXIqIHRh
cmdldEVuZCk7CisKICAgICBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIq
IHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hh
ciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi91bmljb2RlL1VuaWNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3VuaWNvZGUvVW5pY29kZS5oCShyZXZpc2lvbiAxMDAzMTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVW5pY29kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw5IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCisvLyBEZWZp
bmUgcGxhdGZvcm0gbmV1dHJhbCA4IGJpdCBjaGFyYWN0ZXIgdHlwZSAoTCBpcyBmb3IgTGF0aW4t
MSkuCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgTENoYXI7CisKICNpZiBVU0UoUVQ0X1VOSUNPREUp
CiAjaW5jbHVkZSAicXQ0L1VuaWNvZGVRdDQuaCIKICNlbGlmIFVTRShJQ1VfVU5JQ09ERSkKQEAg
LTM5LDcgKzQyLDQgQEAKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFVDaGFyKSA9PSAyLCBVQ2hh
cklzVHdvQnl0ZXMpOwogCi0vLyBEZWZpbmUgcGxhdGZvcm0gbmV1dHJhbCA4IGJpdCBjaGFyYWN0
ZXIgdHlwZSAoTCBpcyBmb3IgTGF0aW4tMSkuCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgTENoYXI7
Ci0KICNlbmRpZiAvLyBXVEZfVU5JQ09ERV9ICg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115294</attachid>
            <date>2011-11-15 18:53:57 -0800</date>
            <delta_ts>2011-11-15 18:53:57 -0800</delta_ts>
            <desc>Patch updated with missing export</desc>
            <filename>72323-5.patch</filename>
            <type>text/plain</type>
            <size>15441</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAwMzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDExLTExLTE1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFRvd2FyZHMgOCBiaXQgU3RyaW5ncyAtIFVwZGF0ZSB1dGY4KCkgYW5kIGFzY2lpKCkgbWV0
aG9kcyBmb3IgOCBiaXQgc3RyaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIzMjMKKworICAgICAgICBBZGRlZCA4IGJpdCBvcHRpbWl6ZWQgcGF0
aHMgZm9yIFN0cmluZyBhbmQgVVN0cmluZyBhc2NpaSgpIGFuZCB1dGY4KCkgbWV0aG9kcy4KKwor
ICAgICAgICBBZGRlZCBTdHJpbmc6OmNoYXJhY3RlcnM4KCksIGNoYXJhY3RlcnMxNigpIGFuZCBp
czhCaXQoKSBoZWxwZXIgbWV0aG9kcy4KKworICAgICAgICBBZGRlZCBhbiBuZXcgVW5pY29kZTo6
Y29udmVydExhdGluMVRvVVRGOCgpIG1ldGhvZCB0aGF0IHdvcmtzIG9uCisgICAgICAgIExDaGFy
ICg4IGJpdCkgc3RyaW5ncyB0aGF0IGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIGNvbnZl
cnRVVEYxNlRvVVRGOCgpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZjoKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAoSlND
OjpVU3RyaW5nOjp1dGY4KToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmc6OmFzY2lpKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjp1dGY4KToK
KyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpj
aGFyYWN0ZXJzOCk6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y2hhcmFjdGVyczE2KToKKyAgICAg
ICAgKFdURjo6U3RyaW5nOjppczhCaXQpOgorICAgICAgICAoV1RGOjpMQ2hhcik6CisgICAgICAg
IChXVEY6OlVDaGFyKToKKyAgICAgICAgKiB3dGYvdW5pY29kZS9VVEY4LmNwcDoKKyAgICAgICAg
KFdURjo6VW5pY29kZTo6Y29udmVydExhdGluMVRvVVRGOCk6CisgICAgICAgICogd3RmL3VuaWNv
ZGUvVVRGOC5oOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VuaWNvZGUuaDoKKwogMjAxMS0xMS0x
NSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZWQg
YSB1c2Ugb2YgQXJnTGlzdCB0aGF0IGJha2VkIGluIHRoZSBhc3N1bXB0aW9uIHRoYXQgYXJndW1l
bnRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZgkocmV2aXNpb24gMTAwMzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdv
cmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgRVhQT1JUUwogICAgID9jb25zdHJ1Y3RFbXB0
eUFycmF5QEpTQ0BAWUFQQVZKU0FycmF5QDFAUEFWRXhlY1N0YXRlQDFAQFoKICAgICA/Y29uc3Ry
dWN0RW1wdHlPYmplY3RASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQFoKICAg
ICA/Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2tASlNDQEBZQVBBVkpT
T2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBBQlZBcmdMaXN0QDFA
QUJWSWRlbnRpZmllckAxQEFCVlVTdHJpbmdAMUBBQlZUZXh0UG9zaXRpb25AV1RGQEBAWgorICAg
ID9jb252ZXJ0TGF0aW4xVG9VVEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0
QDEyQFBBUEJFUEJFUEFQQURQQURAWgogICAgID9jb252ZXJ0VVRGMTZUb1VURjhAVW5pY29kZUBX
VEZAQFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQl9XUEJfV1BBUEFEUEFEX05AWgogICAg
ID9jb252ZXJ0VVRGOFRvVVRGMTZAVW5pY29kZUBXVEZAQFlBP0FXNENvbnZlcnNpb25SZXN1bHRA
MTJAUEFQQkRQQkRQQVBBX1dQQV9XX05AWgogICAgID9jcmVhdGVAQnl0ZUFycmF5QFdURkBAU0E/
QVY/JFBhc3NSZWZQdHJAVkJ5dGVBcnJheUBXVEZAQEAyQElAWgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAJKHJldmlzaW9uIDEwMDMxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTksOCArMzk5LDggQEAgQ1N0cmluZyBVU3RyaW5nOjp1dGY4KGJvb2wgc3RyaWN0KSBjb25zdAog
ewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogCi0gICAgaWYgKGlzOEJp
dCgpKQotICAgICAgICByZXR1cm4gQ1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihjaGFyYWN0ZXJzOCgpKSwgbGVuZ3RoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0
dXJuIENTdHJpbmcoIiIsIDApOwogCiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3Vn
aCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycwogICAgIC8vIChhbiBpbmRpdmlkdWFsIFVURi0x
NiBVQ2hhciBjYW4gb25seSBleHBhbmQgdG8gMyBVVEYtOCBieXRlcykuCkBAIC00MTUsMzAgKzQx
NSwzOCBAQCBDU3RyaW5nIFVTdHJpbmc6OnV0ZjgoYm9vbCBzdHJpY3QpIGNvbnN0CiAgICAgaWYg
KGxlbmd0aCA+IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLyAzKQogICAgICAgICBy
ZXR1cm4gQ1N0cmluZygpOwogCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5j
aGFyYWN0ZXJzMTYoKTsKICAgICBWZWN0b3I8Y2hhciwgMTAyND4gYnVmZmVyVmVjdG9yKGxlbmd0
aCAqIDMpOwotCiAgICAgY2hhciogYnVmZmVyID0gYnVmZmVyVmVjdG9yLmRhdGEoKTsKLSAgICBD
b252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnRVVEYxNlRvVVRGOCgmY2hhcmFjdGVycywg
Y2hhcmFjdGVycyArIGxlbmd0aCwgJmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUo
KSwgc3RyaWN0KTsKLSAgICBBU1NFUlQocmVzdWx0ICE9IHRhcmdldEV4aGF1c3RlZCk7IC8vIChs
ZW5ndGggKiAzKSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYW55IGNvbnZlcnNpb24KIAotICAg
IC8vIE9ubHkgcHJvZHVjZWQgZnJvbSBzdHJpY3QgY29udmVyc2lvbi4KLSAgICBpZiAocmVzdWx0
ID09IHNvdXJjZUlsbGVnYWwpCi0gICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgaWYgKGlz
OEJpdCgpKSB7CisgICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFj
dGVyczgoKTsKKworICAgICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnRMYXRp
bjFUb1VURjgoJmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgsICZidWZmZXIsIGJ1ZmZl
ciArIGJ1ZmZlclZlY3Rvci5zaXplKCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0ICE9IHRhcmdldEV4aGF1c3RlZCk7IC8vIChsZW5ndGggKiAzKSBzaG91bGQgYmUgc3Vm
ZmljaWVudCBmb3IgYW55IGNvbnZlcnNpb24KKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBV
Q2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnMxNigpOwogCi0gICAgLy8gQ2hlY2sg
Zm9yIGFuIHVuY29udmVydGVkIGhpZ2ggc3Vycm9nYXRlLgotICAgIGlmIChyZXN1bHQgPT0gc291
cmNlRXhoYXVzdGVkKSB7Ci0gICAgICAgIGlmIChzdHJpY3QpCisgICAgICAgIENvbnZlcnNpb25S
ZXN1bHQgcmVzdWx0ID0gY29udmVydFVURjE2VG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJz
ICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpLCBzdHJpY3Qp
OworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IHRhcmdldEV4aGF1c3RlZCk7IC8vIChsZW5ndGgg
KiAzKSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYW55IGNvbnZlcnNpb24KKworICAgICAgICAv
LyBPbmx5IHByb2R1Y2VkIGZyb20gc3RyaWN0IGNvbnZlcnNpb24uCisgICAgICAgIGlmIChyZXN1
bHQgPT0gc291cmNlSWxsZWdhbCkKICAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0gICAg
ICAgIC8vIFRoaXMgc2hvdWxkIGJlIG9uZSB1bnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZS4gVHJlYXQg
aXQgdGhlIHNhbWUKLSAgICAgICAgLy8gd2FzIGFzIGFuIHVucGFpcmVkIGhpZ2ggc3Vycm9nYXRl
IHdvdWxkIGhhdmUgYmVlbiBoYW5kbGVkIGluCi0gICAgICAgIC8vIHRoZSBtaWRkbGUgb2YgYSBz
dHJpbmcgd2l0aCBub24tc3RyaWN0IGNvbnZlcnNpb24gLSB3aGljaCBpcwotICAgICAgICAvLyB0
byBzYXksIHNpbXBseSBlbmNvZGUgaXQgdG8gVVRGLTguCi0gICAgICAgIEFTU0VSVCgoY2hhcmFj
dGVycyArIDEpID09ICh0aGlzLT5jaGFyYWN0ZXJzKCkgKyBsZW5ndGgpKTsKLSAgICAgICAgQVNT
RVJUKCgqY2hhcmFjdGVycyA+PSAweEQ4MDApICYmICgqY2hhcmFjdGVycyA8PSAweERCRkYpKTsK
LSAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIHJvb20gbGVmdCwgc2luY2Ugb25lIFVDaGFyIGhh
c24ndCBiZWVuIGNvbnZlcnRlZC4KLSAgICAgICAgQVNTRVJUKChidWZmZXIgKyAzKSA8PSAoYnVm
ZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSkpOwotICAgICAgICBwdXRVVEY4VHJpcGxlKGJ1ZmZl
ciwgKmNoYXJhY3RlcnMpOworCisgICAgICAgIC8vIENoZWNrIGZvciBhbiB1bmNvbnZlcnRlZCBo
aWdoIHN1cnJvZ2F0ZS4KKyAgICAgICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VFeGhhdXN0ZWQpIHsK
KyAgICAgICAgICAgIGlmIChzdHJpY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTdHJpbmco
KTsKKyAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIG9uZSB1bnBhaXJlZCBoaWdoIHN1cnJv
Z2F0ZS4gVHJlYXQgaXQgdGhlIHNhbWUKKyAgICAgICAgICAgIC8vIHdhcyBhcyBhbiB1bnBhaXJl
ZCBoaWdoIHN1cnJvZ2F0ZSB3b3VsZCBoYXZlIGJlZW4gaGFuZGxlZCBpbgorICAgICAgICAgICAg
Ly8gdGhlIG1pZGRsZSBvZiBhIHN0cmluZyB3aXRoIG5vbi1zdHJpY3QgY29udmVyc2lvbiAtIHdo
aWNoIGlzCisgICAgICAgICAgICAvLyB0byBzYXksIHNpbXBseSBlbmNvZGUgaXQgdG8gVVRGLTgu
CisgICAgICAgICAgICBBU1NFUlQoKGNoYXJhY3RlcnMgKyAxKSA9PSAodGhpcy0+Y2hhcmFjdGVy
cygpICsgbGVuZ3RoKSk7CisgICAgICAgICAgICBBU1NFUlQoKCpjaGFyYWN0ZXJzID49IDB4RDgw
MCkgJiYgKCpjaGFyYWN0ZXJzIDw9IDB4REJGRikpOworICAgICAgICAgICAgLy8gVGhlcmUgc2hv
dWxkIGJlIHJvb20gbGVmdCwgc2luY2Ugb25lIFVDaGFyIGhhc24ndCBiZWVuIGNvbnZlcnRlZC4K
KyAgICAgICAgICAgIEFTU0VSVCgoYnVmZmVyICsgMykgPD0gKGJ1ZmZlciArIGJ1ZmZlclZlY3Rv
ci5zaXplKCkpKTsKKyAgICAgICAgICAgIHB1dFVURjhUcmlwbGUoYnVmZmVyLCAqY2hhcmFjdGVy
cyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gQ1N0cmluZyhidWZmZXJWZWN0b3Iu
ZGF0YSgpLCBidWZmZXIgLSBidWZmZXJWZWN0b3IuZGF0YSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCShyZXZpc2lvbiAxMDAzMTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjQxLDcgKzY0MSwyNyBAQCBDU3RyaW5nIFN0cmluZzo6YXNjaWkoKSBjb25zdAog
ICAgIC8vIHByZXNlcnZlZCwgY2hhcmFjdGVycyBvdXRzaWRlIG9mIHRoaXMgcmFuZ2UgYXJlIGNv
bnZlcnRlZCB0byAnPycuCiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsK
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnMoKTsKKworICAg
IGlmICghbGVuZ3RoKSB7CisgICAgICAgIGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKKyAgICAgICAg
cmV0dXJuIENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQobGVuZ3RoLCBjaGFyYWN0ZXJCdWZmZXIp
OworICAgIH0KKworICAgIGlmICh0aGlzLT5pczhCaXQoKSkgeworICAgICAgICBjb25zdCBMQ2hh
ciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnM4KCk7CisKKyAgICAgICAgY2hhciogY2hh
cmFjdGVyQnVmZmVyOworICAgICAgICBDU3RyaW5nIHJlc3VsdCA9IENTdHJpbmc6Om5ld1VuaW5p
dGlhbGl6ZWQobGVuZ3RoLCBjaGFyYWN0ZXJCdWZmZXIpOworCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgTENoYXIgY2ggPSBjaGFy
YWN0ZXJzW2ldOworICAgICAgICAgICAgY2hhcmFjdGVyQnVmZmVyW2ldID0gY2ggJiYgKGNoIDwg
MHgyMCB8fCBjaCA+IDB4N2YpID8gJz8nIDogY2g7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gcmVzdWx0OyAgICAgICAgCisgICAgfQorCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMg
PSB0aGlzLT5jaGFyYWN0ZXJzMTYoKTsKIAogICAgIGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKICAg
ICBDU3RyaW5nIHJlc3VsdCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQobGVuZ3RoLCBjaGFy
YWN0ZXJCdWZmZXIpOwpAQCAtNjg1LDcgKzcwNSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRV
VEY4VHJpcGxlKGNoYXIqJiAKIENTdHJpbmcgU3RyaW5nOjp1dGY4KGJvb2wgc3RyaWN0KSBjb25z
dAogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgIGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVycygpOworCisgICAgaWYgKCFsZW5ndGgp
CisgICAgICAgIHJldHVybiBDU3RyaW5nKCIiLCAwKTsKIAogICAgIC8vIEFsbG9jYXRlIGEgYnVm
ZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMKICAgICAvLyAoYW4gaW5k
aXZpZHVhbCBVVEYtMTYgVUNoYXIgY2FuIG9ubHkgZXhwYW5kIHRvIDMgVVRGLTggYnl0ZXMpLgpA
QCAtNzAyLDI2ICs3MjQsMzYgQEAgQ1N0cmluZyBTdHJpbmc6OnV0ZjgoYm9vbCBzdHJpY3QpIGNv
bnN0CiAgICAgVmVjdG9yPGNoYXIsIDEwMjQ+IGJ1ZmZlclZlY3RvcihsZW5ndGggKiAzKTsKIAog
ICAgIGNoYXIqIGJ1ZmZlciA9IGJ1ZmZlclZlY3Rvci5kYXRhKCk7Ci0gICAgQ29udmVyc2lvblJl
c3VsdCByZXN1bHQgPSBjb252ZXJ0VVRGMTZUb1VURjgoJmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMg
KyBsZW5ndGgsICZidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZlY3Rvci5zaXplKCksIHN0cmljdCk7
Ci0gICAgQVNTRVJUKHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykg
c2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9uCiAKLSAgICAvLyBPbmx5IHBy
b2R1Y2VkIGZyb20gc3RyaWN0IGNvbnZlcnNpb24uCi0gICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VJ
bGxlZ2FsKQotICAgICAgICByZXR1cm4gQ1N0cmluZygpOworICAgIGlmIChpczhCaXQoKSkgewor
ICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnM4KCk7CisK
KyAgICAgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0TGF0aW4xVG9VVEY4KCZj
aGFyYWN0ZXJzLCBjaGFyYWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJW
ZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSB0
YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9y
IGFueSBjb252ZXJzaW9uCisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzMTYoKTsKIAotICAgIC8vIENoZWNrIGZvciBhbiB1bmNv
bnZlcnRlZCBoaWdoIHN1cnJvZ2F0ZS4KLSAgICBpZiAocmVzdWx0ID09IHNvdXJjZUV4aGF1c3Rl
ZCkgewotICAgICAgICBpZiAoc3RyaWN0KQorICAgICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3Vs
dCA9IGNvbnZlcnRVVEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwg
JmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSwgc3RyaWN0KTsKKyAgICAgICAg
QVNTRVJUKHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxk
IGJlIHN1ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9uCisKKyAgICAgICAgLy8gT25seSBwcm9k
dWNlZCBmcm9tIHN0cmljdCBjb252ZXJzaW9uLgorICAgICAgICBpZiAocmVzdWx0ID09IHNvdXJj
ZUlsbGVnYWwpCiAgICAgICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgICAgICAvLyBUaGlz
IHNob3VsZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUuIFRyZWF0IGl0IHRoZSBzYW1l
Ci0gICAgICAgIC8vIHdhcyBhcyBhbiB1bnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZSB3b3VsZCBoYXZl
IGJlZW4gaGFuZGxlZCBpbgotICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nIHdpdGgg
bm9uLXN0cmljdCBjb252ZXJzaW9uIC0gd2hpY2ggaXMKLSAgICAgICAgLy8gdG8gc2F5LCBzaW1w
bHkgZW5jb2RlIGl0IHRvIFVURi04LgotICAgICAgICBBU1NFUlQoKGNoYXJhY3RlcnMgKyAxKSA9
PSAodGhpcy0+Y2hhcmFjdGVycygpICsgbGVuZ3RoKSk7Ci0gICAgICAgIEFTU0VSVCgoKmNoYXJh
Y3RlcnMgPj0gMHhEODAwKSAmJiAoKmNoYXJhY3RlcnMgPD0gMHhEQkZGKSk7Ci0gICAgICAgIC8v
IFRoZXJlIHNob3VsZCBiZSByb29tIGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBj
b252ZXJ0ZWQuCi0gICAgICAgIEFTU0VSVCgoYnVmZmVyICsgMykgPD0gKGJ1ZmZlciArIGJ1ZmZl
clZlY3Rvci5zaXplKCkpKTsKLSAgICAgICAgcHV0VVRGOFRyaXBsZShidWZmZXIsICpjaGFyYWN0
ZXJzKTsKKworICAgICAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGlnaCBzdXJyb2dh
dGUuCisgICAgICAgIGlmIChyZXN1bHQgPT0gc291cmNlRXhoYXVzdGVkKSB7CisgICAgICAgICAg
ICBpZiAoc3RyaWN0KQorICAgICAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgICAg
ICAgICAvLyBUaGlzIHNob3VsZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUuIFRyZWF0
IGl0IHRoZSBzYW1lCisgICAgICAgICAgICAvLyB3YXMgYXMgYW4gdW5wYWlyZWQgaGlnaCBzdXJy
b2dhdGUgd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4KKyAgICAgICAgICAgIC8vIHRoZSBtaWRk
bGUgb2YgYSBzdHJpbmcgd2l0aCBub24tc3RyaWN0IGNvbnZlcnNpb24gLSB3aGljaCBpcworICAg
ICAgICAgICAgLy8gdG8gc2F5LCBzaW1wbHkgZW5jb2RlIGl0IHRvIFVURi04LgorICAgICAgICAg
ICAgQVNTRVJUKChjaGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMoKSArIGxlbmd0
aCkpOworICAgICAgICAgICAgQVNTRVJUKCgqY2hhcmFjdGVycyA+PSAweEQ4MDApICYmICgqY2hh
cmFjdGVycyA8PSAweERCRkYpKTsKKyAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSByb29t
IGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0ZWQuCisgICAgICAgICAg
ICBBU1NFUlQoKGJ1ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKSk7
CisgICAgICAgICAgICBwdXRVVEY4VHJpcGxlKGJ1ZmZlciwgKmNoYXJhY3RlcnMpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEoKSwgYnVm
ZmVyIC0gYnVmZmVyVmVjdG9yLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiAxMDAzMTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsx
NDAsMjcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBt
X2ltcGwtPmNoYXJhY3RlcnMoKTsKICAgICB9CisgICAgCisgICAgY29uc3QgTENoYXIqIGNoYXJh
Y3RlcnM4KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9pbXBsKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIEFTU0VSVChtX2ltcGwtPmlzOEJpdCgpKTsKKyAgICAgICAgcmV0
dXJuIG1faW1wbC0+Y2hhcmFjdGVyczgoKTsKKyAgICB9CisKKyAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVyczE2KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9pbXBsKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIEFTU0VSVCghbV9pbXBsLT5pczhCaXQoKSk7CisgICAgICAg
IHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4KKyAgICBpbmxpbmUgY29uc3QgQ2hhclR5cGUqIGdldENoYXJhY3Rl
cnMoKSBjb25zdDsKKworICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5p
czhCaXQoKTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25z
dDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKQEAgLTM5
Niw2ICs0MTcsMjEgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbgog
ewogfQogCit0ZW1wbGF0ZTw+CitpbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Z2V0Q2hhcmFj
dGVyczxMQ2hhcj4oKSBjb25zdAoreworICAgIEFTU0VSVChpczhCaXQoKSk7CisgICAgcmV0dXJu
IGNoYXJhY3RlcnM4KCk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBjb25zdCBVQ2hhciogU3Ry
aW5nOjpnZXRDaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpczhCaXQo
KSk7CisgICAgcmV0dXJuIGNoYXJhY3RlcnMxNigpOworfQorCisKICNpZmRlZiBfX09CSkNfXwog
Ly8gVGhpcyBpcyBmb3Igc2l0dWF0aW9ucyBpbiBXZWJLaXQgd2hlcmUgdGhlIGxvbmcgc3RhbmRp
bmcgYmVoYXZpb3IgaGFzIGJlZW4KIC8vICJuaWwgaWYgZW1wdHkiLCBzbyB3ZSB0cnkgdG8gbWFp
bnRhaW4gbG9uZ3N0YW5kaW5nIGJlaGF2aW9yIGZvciB0aGUgc2FrZSBvZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmNwcAkocmV2aXNpb24gMTAwMzEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsNiArMTI1LDQ4IEBAIGludCBkZWNvZGVVVEY4U2VxdWVuY2UoY29uc3QgY2hh
ciogc2VxdWUKIC8vIGZvciAqbGVnYWwqIFVURi04IHdpbGwgYmUgNCBvciBmZXdlciBieXRlcyB0
b3RhbC4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZU1hcmtbN10gPSB7IDB4
MDAsIDB4MDAsIDB4QzAsIDB4RTAsIDB4RjAsIDB4RjgsIDB4RkMgfTsKIAorQ29udmVyc2lvblJl
c3VsdCBjb252ZXJ0TGF0aW4xVG9VVEY4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IExDaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IExDaGFyKiBzb3VyY2VFbmQs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFy
dCwgY2hhciogdGFyZ2V0RW5kKQoreworICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gY29u
dmVyc2lvbk9LOworICAgIGNvbnN0IExDaGFyKiBzb3VyY2UgPSAqc291cmNlU3RhcnQ7CisgICAg
Y2hhciogdGFyZ2V0ID0gKnRhcmdldFN0YXJ0OworICAgIHdoaWxlIChzb3VyY2UgPCBzb3VyY2VF
bmQpIHsKKyAgICAgICAgVUNoYXIzMiBjaDsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgYnl0ZXNU
b1dyaXRlID0gMDsKKyAgICAgICAgY29uc3QgVUNoYXIzMiBieXRlTWFzayA9IDB4QkY7CisgICAg
ICAgIGNvbnN0IFVDaGFyMzIgYnl0ZU1hcmsgPSAweDgwOyAKKyAgICAgICAgY29uc3QgTENoYXIq
IG9sZFNvdXJjZSA9IHNvdXJjZTsgLy8gSW4gY2FzZSB3ZSBoYXZlIHRvIGJhY2sgdXAgYmVjYXVz
ZSBvZiB0YXJnZXQgb3ZlcmZsb3cuCisgICAgICAgIGNoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
c2hvcnQ+KCpzb3VyY2UrKyk7CisKKyAgICAgICAgLy8gRmlndXJlIG91dCBob3cgbWFueSBieXRl
cyB0aGUgcmVzdWx0IHdpbGwgcmVxdWlyZQorICAgICAgICBpZiAoY2ggPCAoVUNoYXIzMikweDgw
KQorICAgICAgICAgICAgYnl0ZXNUb1dyaXRlID0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYnl0ZXNUb1dyaXRlID0gMjsKKworICAgICAgICB0YXJnZXQgKz0gYnl0ZXNUb1dyaXRlOwor
ICAgICAgICBpZiAodGFyZ2V0ID4gdGFyZ2V0RW5kKSB7CisgICAgICAgICAgICBzb3VyY2UgPSBv
bGRTb3VyY2U7IC8vIEJhY2sgdXAgc291cmNlIHBvaW50ZXIhCisgICAgICAgICAgICB0YXJnZXQg
LT0gYnl0ZXNUb1dyaXRlOworICAgICAgICAgICAgcmVzdWx0ID0gdGFyZ2V0RXhoYXVzdGVkOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChieXRlc1RvV3Jp
dGUpIHsgLy8gbm90ZTogZXZlcnl0aGluZyBmYWxscyB0aHJvdWdoLgorICAgICAgICBjYXNlIDI6
CisgICAgICAgICAgICAqLS10YXJnZXQgPSAoY2hhcikoKGNoIHwgYnl0ZU1hcmspICYgYnl0ZU1h
c2spOworICAgICAgICAgICAgY2ggPj49IDY7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg
ICotLXRhcmdldCA9ICAoY2hhcikoY2ggfCBmaXJzdEJ5dGVNYXJrW2J5dGVzVG9Xcml0ZV0pOwor
ICAgICAgICB9CisgICAgICAgIHRhcmdldCArPSBieXRlc1RvV3JpdGU7CisgICAgfQorICAgICpz
b3VyY2VTdGFydCA9IHNvdXJjZTsKKyAgICAqdGFyZ2V0U3RhcnQgPSB0YXJnZXQ7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCiAg
ICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwgCiAg
ICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCShyZXZpc2lvbiAxMDAz
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Niw2ICs2NiwxMCBAQCBuYW1lc3BhY2UgVW5pY29kZSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgY2hhciogc291cmNlRW5k
LCAKICAgICAgICAgICAgICAgICAgICAgVUNoYXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdl
dEVuZCwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKIAorICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVy
dExhdGluMVRvVVRGOCgKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgTENoYXIqKiBzb3VyY2VT
dGFydCwgY29uc3QgTENoYXIqIHNvdXJjZUVuZCwgCisgICAgICAgICAgICAgICAgICAgIGNoYXIq
KiB0YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5kKTsKKwogICAgIENvbnZlcnNpb25SZXN1bHQg
Y29udmVydFVURjE2VG9VVEY4KAogICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhcioqIHNv
dXJjZVN0YXJ0LCBjb25zdCBVQ2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAgICAgICAg
Y2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVW5pY29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Vbmljb2RlLmgJKHJl
dmlzaW9uIDEwMDMxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Vbmlj
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDkgQEAKIAogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAKKy8vIERlZmluZSBwbGF0Zm9ybSBuZXV0cmFsIDggYml0IGNoYXJhY3Rl
ciB0eXBlIChMIGlzIGZvciBMYXRpbi0xKS4KK3R5cGVkZWYgdW5zaWduZWQgY2hhciBMQ2hhcjsK
KwogI2lmIFVTRShRVDRfVU5JQ09ERSkKICNpbmNsdWRlICJxdDQvVW5pY29kZVF0NC5oIgogI2Vs
aWYgVVNFKElDVV9VTklDT0RFKQpAQCAtMzksNyArNDIsNCBAQAogCiBDT01QSUxFX0FTU0VSVChz
aXplb2YoVUNoYXIpID09IDIsIFVDaGFySXNUd29CeXRlcyk7CiAKLS8vIERlZmluZSBwbGF0Zm9y
bSBuZXV0cmFsIDggYml0IGNoYXJhY3RlciB0eXBlIChMIGlzIGZvciBMYXRpbi0xKS4KLXR5cGVk
ZWYgdW5zaWduZWQgY2hhciBMQ2hhcjsKLQogI2VuZGlmIC8vIFdURl9VTklDT0RFX0gK
</data>

          </attachment>
      

    </bug>

</bugzilla>