<?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>40415</bug_id>
          
          <creation_ts>2010-06-10 03:28:17 -0700</creation_ts>
          <short_desc>[Qt] Optimization of the QScriptValuePrivate.</short_desc>
          <delta_ts>2010-06-23 18:49:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>40412</dependson>
          <blocked>31863</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jędrzej Nowacki">jedrzej.nowacki</reporter>
          <assigned_to name="Jędrzej Nowacki">jedrzej.nowacki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jedrzej.nowacki</cc>
    
    <cc>kenneth</cc>
    
    <cc>kent.hansen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>236278</commentid>
    <comment_count>0</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-10 03:28:17 -0700</bug_when>
    <thetext>The QScriptValuePrivate can optimized. Now, each state have a separate attribute in which his value is kept. So, for the CString state the value is stored in m_string, for CNumber it is m_numbe... It would be much better to store the value in an union to save a memory and maybe unnecessary initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236292</commentid>
    <comment_count>1</comment_count>
      <attachid>58358</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-10 03:54:55 -0700</bug_when>
    <thetext>Created attachment 58358
Fix v1

NOTE: The patch can be applied after 40412.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236825</commentid>
    <comment_count>2</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-11 07:58:02 -0700</bug_when>
    <thetext>Bug 40412 is closed. Should I reapply the patch to bugzilla?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237448</commentid>
    <comment_count>3</comment_count>
      <attachid>58358</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-12 20:36:49 -0700</bug_when>
    <thetext>Comment on attachment 58358
Fix v1

This patch can&apos;t be landed by the commit-queue since it does not apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237753</commentid>
    <comment_count>4</comment_count>
      <attachid>58630</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-14 02:00:06 -0700</bug_when>
    <thetext>Created attachment 58630
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237762</commentid>
    <comment_count>5</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-14 03:57:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 58358 [details])
&gt; This patch can&apos;t be landed by the commit-queue since it does not apply.

Does it mean that commit-queue would block it? As I worte the patch couldn&apos;t be applied before 40412, I posted it for review.

I have uploaded the same patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241241</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2010-06-22 06:58:12 -0700</bug_when>
    <thetext>Patch applies cleanly now and looks OK.
As we discussed offline, one could use an anonymous union; this reduces the size of the patch. However, the &quot;u.&quot; does make it more apparent that it&apos;s a union that&apos;s being manipulated. (I&apos;m not aware of any WebKit style guidelines for unions, their naming etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241784</commentid>
    <comment_count>7</comment_count>
      <attachid>58630</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-23 03:07:36 -0700</bug_when>
    <thetext>Comment on attachment 58630
Fix

r=me. This miight cause problems with non-gcc compilers in the future, but let&apos;s deal with that when we cross that bridge :). This certainly improves the readability at lot, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242236</commentid>
    <comment_count>8</comment_count>
      <attachid>58630</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-23 18:49:29 -0700</bug_when>
    <thetext>Comment on attachment 58630
Fix

Clearing flags on attachment: 58630

Committed r61726: &lt;http://trac.webkit.org/changeset/61726&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242237</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-23 18:49:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58358</attachid>
            <date>2010-06-10 03:54:55 -0700</date>
            <delta_ts>2010-06-14 02:00:06 -0700</delta_ts>
            <desc>Fix v1</desc>
            <filename>union.diff</filename>
            <type>text/plain</type>
            <size>16250</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiNWFkOTJlLi5jMWZlZGE3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzYg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBPcHRp
bWl6YXRpb24gb2YgdGhlIFFTY3JpcHRWYWx1ZVByaXZhdGUuCisKKyAgICAgICAgUGF0Y2ggY2hh
bmdlIG9ubHkgaW50ZXJuYWxzIG9mIHRoZSBRU2NyaXB0VmFsdWVQcml2YXRlLgorICAgICAgICBN
b3N0IG9mIHRoZSBRU2NyaXB0VmFsdWVQcml2YXRlJ3MgYXR0cmlidXRlcyB3ZXJlIG1vdmVkCisg
ICAgICAgIGludG8gYW4gdW5pb24uCisKKyAgICAgICAgW1F0XSBPcHRpbWl6YXRpb24gb2YgdGhl
IFFTY3JpcHRWQWx1ZVByaXZhdGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDQxNQorCisgICAgICAgICogcXQvYXBpL3FzY3JpcHRlbmdpbmVfcC5j
cHA6CisgICAgICAgIChRU2NyaXB0RW5naW5lUHJpdmF0ZTo6Z2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKiBxdC9hcGkvcXNjcmlwdHZhbHVlX3AuaDoKKyAgICAgICAgKFFTY3JpcHRWYWx1ZVByaXZh
dGU6Oik6CisgICAgICAgIChRU2NyaXB0VmFsdWVQcml2YXRlOjp+UVNjcmlwdFZhbHVlUHJpdmF0
ZSk6CisgICAgICAgIChRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKToK
KyAgICAgICAgKFFTY3JpcHRWYWx1ZVByaXZhdGU6OnRvU3RyaW5nKToKKyAgICAgICAgKFFTY3Jp
cHRWYWx1ZVByaXZhdGU6OnRvTnVtYmVyKToKKyAgICAgICAgKFFTY3JpcHRWYWx1ZVByaXZhdGU6
OnRvQm9vbCk6CisgICAgICAgIChRU2NyaXB0VmFsdWVQcml2YXRlOjp0b09iamVjdCk6CisgICAg
ICAgIChRU2NyaXB0VmFsdWVQcml2YXRlOjplcXVhbHMpOgorICAgICAgICAoUVNjcmlwdFZhbHVl
UHJpdmF0ZTo6c3RyaWN0bHlFcXVhbHMpOgorICAgICAgICAoUVNjcmlwdFZhbHVlUHJpdmF0ZTo6
YXNzaWduRW5naW5lKToKKyAgICAgICAgKFFTY3JpcHRWYWx1ZVByaXZhdGU6Om9wZXJhdG9yIEpT
VmFsdWVSZWYpOgorICAgICAgICAoUVNjcmlwdFZhbHVlUHJpdmF0ZTo6b3BlcmF0b3IgSlNPYmpl
Y3RSZWYpOgorICAgICAgICAoUVNjcmlwdFZhbHVlUHJpdmF0ZTo6cmVmaW5lZEpTVmFsdWUpOgor
CisyMDEwLTA2LTEwICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEV4cGxp
Y2l0IGNvbnZlcnNpb25zIHRvIEpTQyBvcGFxdWUgdHlwZXMgd2VyZSByZW1vdmVkLgogCiAgICAg
ICAgIENvbnZlcnNpb24gYmV0d2VlbiBhIEpTQyBDIHR5cGVzIGFuZCBhIFF0U2NyaXB0IHByaXZh
dGUgdHlwZXMsIHRha2VzCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9xdC9hcGkvcXNjcmlw
dGVuZ2luZV9wLmNwcCBiL0phdmFTY3JpcHRDb3JlL3F0L2FwaS9xc2NyaXB0ZW5naW5lX3AuY3Bw
CmluZGV4IGE2Y2Y0YTQuLmZkNzk3OGIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3F0L2Fw
aS9xc2NyaXB0ZW5naW5lX3AuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3F0L2FwaS9xc2NyaXB0
ZW5naW5lX3AuY3BwCkBAIC04NSw1ICs4NSw1IEBAIFFTY3JpcHRWYWx1ZVByaXZhdGUqIFFTY3Jp
cHRFbmdpbmVQcml2YXRlOjpuZXdPYmplY3QoKSBjb25zdAogUVNjcmlwdFZhbHVlUHJpdmF0ZSog
UVNjcmlwdEVuZ2luZVByaXZhdGU6Omdsb2JhbE9iamVjdCgpIGNvbnN0CiB7CiAgICAgSlNPYmpl
Y3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KG1fY29udGV4dCk7
Ci0gICAgcmV0dXJuIG5ldyBRU2NyaXB0VmFsdWVQcml2YXRlKHRoaXMsIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gbmV3IFFTY3JpcHRWYWx1ZVByaXZhdGUodGhpcywg
Z2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3F0L2FwaS9xc2Ny
aXB0dmFsdWVfcC5oIGIvSmF2YVNjcmlwdENvcmUvcXQvYXBpL3FzY3JpcHR2YWx1ZV9wLmgKaW5k
ZXggMWJiOGE3Ny4uMzNjZWZjZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcXQvYXBpL3Fz
Y3JpcHR2YWx1ZV9wLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcXQvYXBpL3FzY3JpcHR2YWx1ZV9w
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUVNjcmlwdFZhbHVlOwogICAgIENOdW1iZXIgLT4g
UVNWUCBpcyBjcmVhdGVkIGZyb20gaW50LCB1aW50LCBkb3VibGUuLi4gYW5kIG5vIEpTQyBlbmdp
bmUgaGFzIGJlZW4gYmluZCB5ZXQuIEN1cnJlbnQKICAgICAgICAgdmFsdWUgaXMga2VwdCBpbiBt
X251bWJlcgogICAgIENCb29sIC0+IFFTVlAgaXMgY3JlYXRlZCBmcm9tIGJvb2wgYW5kIG5vIEpT
QyBlbmdpbmUgaGFzIGJlZW4gYXNzb2NpYXRlZCB5ZXQuIEN1cnJlbnQgdmFsdWUgaXMga2VwdAot
ICAgICAgICBpbiBtX251bWJlcgorICAgICAgICBpbiBtX2Jvb2wKICAgICBDTnVsbCAtPiBRU1ZQ
IGlzIG51bGwsIGJ1dCBhIEpTQyBlbmdpbmUgaGFzbid0IGJlZW4gYXNzb2NpYXRlZCB5ZXQuCiAg
ICAgQ1VuZGVmaW5lZCAtPiBRU1ZQIGlzIHVuZGVmaW5lZCwgYnV0IGEgSlNDIGVuZ2luZSBoYXNu
J3QgYmVlbiBhc3NvY2lhdGVkIHlldC4KICAgICBKU1ZhbHVlIC0+IFFTVlAgaXMgYXNzb2NpYXRl
ZCB3aXRoIGVuZ2luZSwgYnV0IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uIGFib3V0IHJlYWwgdHlw
ZSwgdGhlIHN0YXRlCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgUVNjcmlw
dFZhbHVlUHJpdmF0ZShjb25zdCBRU2NyaXB0RW5naW5lUHJpdmF0ZSogZW5naW5lLCBRU2NyaXB0
VmFsdWU6OlNwZWNpYWxWYWx1ZSB2YWx1ZSk7CiAKICAgICBpbmxpbmUgUVNjcmlwdFZhbHVlUHJp
dmF0ZShjb25zdCBRU2NyaXB0RW5naW5lUHJpdmF0ZSogZW5naW5lLCBKU1ZhbHVlUmVmIHZhbHVl
KTsKLSAgICBpbmxpbmUgUVNjcmlwdFZhbHVlUHJpdmF0ZShjb25zdCBRU2NyaXB0RW5naW5lUHJp
dmF0ZSogZW5naW5lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU09iamVjdFJlZiBvYmplY3QpOworICAg
IGlubGluZSBRU2NyaXB0VmFsdWVQcml2YXRlKGNvbnN0IFFTY3JpcHRFbmdpbmVQcml2YXRlKiBl
bmdpbmUsIEpTT2JqZWN0UmVmIG9iamVjdCk7CiAKICAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkKCkg
Y29uc3Q7CiAgICAgaW5saW5lIGJvb2wgaXNCb29sKCk7CkBAIC0xMzcsMTIgKzEzNywyMyBAQCBw
cml2YXRlOgogICAgICAgICBKU09iamVjdAogICAgIH0gbV9zdGF0ZTsKICAgICBRU2NyaXB0RW5n
aW5lUHRyIG1fZW5naW5lOwotICAgIFFTdHJpbmcgbV9zdHJpbmc7Ci0gICAgcXNyZWFsIG1fbnVt
YmVyOwotICAgIEpTVmFsdWVSZWYgbV92YWx1ZTsKLSAgICBKU09iamVjdFJlZiBtX29iamVjdDsK
LQotICAgIGlubGluZSB2b2lkIHNldFZhbHVlKEpTVmFsdWVSZWYpOworICAgIHVuaW9uIFZhbHVl
CisgICAgeworICAgICAgICBib29sIG1fYm9vbDsKKyAgICAgICAgcXNyZWFsIG1fbnVtYmVyOwor
ICAgICAgICBKU1ZhbHVlUmVmIG1fdmFsdWU7CisgICAgICAgIEpTT2JqZWN0UmVmIG1fb2JqZWN0
OworICAgICAgICBRU3RyaW5nKiBtX3N0cmluZzsKKworICAgICAgICBWYWx1ZSgpIDogbV9udW1i
ZXIoMCkge30KKyAgICAgICAgVmFsdWUoYm9vbCB2YWx1ZSkgOiBtX2Jvb2wodmFsdWUpIHt9Cisg
ICAgICAgIFZhbHVlKGludCBudW1iZXIpIDogbV9udW1iZXIobnVtYmVyKSB7fQorICAgICAgICBW
YWx1ZSh1aW50IG51bWJlcikgOiBtX251bWJlcihudW1iZXIpIHt9CisgICAgICAgIFZhbHVlKHFz
cmVhbCBudW1iZXIpIDogbV9udW1iZXIobnVtYmVyKSB7fQorICAgICAgICBWYWx1ZShKU1ZhbHVl
UmVmIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHt9CisgICAgICAgIFZhbHVlKEpTT2JqZWN0UmVm
IG9iamVjdCkgOiBtX29iamVjdChvYmplY3QpIHt9CisgICAgICAgIFZhbHVlKFFTdHJpbmcqIHN0
cmluZykgOiBtX3N0cmluZyhzdHJpbmcpIHt9CisgICAgfSB1OwogCiAgICAgaW5saW5lIGJvb2wg
aW5oZXJpdHMoY29uc3QgY2hhciopOwogICAgIGlubGluZSBTdGF0ZSByZWZpbmVkSlNWYWx1ZSgp
OwpAQCAtMTY2LDEzMSArMTc3LDEyNCBAQCBRU2NyaXB0VmFsdWUgUVNjcmlwdFZhbHVlUHJpdmF0
ZTo6Z2V0KFFTY3JpcHRWYWx1ZVByaXZhdGUqIGQpCiAKIFFTY3JpcHRWYWx1ZVByaXZhdGU6On5R
U2NyaXB0VmFsdWVQcml2YXRlKCkKIHsKLSAgICBpZiAobV92YWx1ZSkKLSAgICAgICAgSlNWYWx1
ZVVucHJvdGVjdCgqbV9lbmdpbmUsIG1fdmFsdWUpOworICAgIGlmIChpc0pTQmFzZWQoKSkKKyAg
ICAgICAgSlNWYWx1ZVVucHJvdGVjdCgqbV9lbmdpbmUsIHUubV92YWx1ZSk7CisgICAgZWxzZSBp
ZiAoaXNTdHJpbmdCYXNlZCgpKQorICAgICAgICBkZWxldGUgdS5tX3N0cmluZzsKIH0KIAogUVNj
cmlwdFZhbHVlUHJpdmF0ZTo6UVNjcmlwdFZhbHVlUHJpdmF0ZSgpCiAgICAgOiBtX3N0YXRlKElu
dmFsaWQpCi0gICAgLCBtX3ZhbHVlKDApCiB7CiB9CiAKIFFTY3JpcHRWYWx1ZVByaXZhdGU6OlFT
Y3JpcHRWYWx1ZVByaXZhdGUoY29uc3QgUVN0cmluZyYgc3RyaW5nKQogICAgIDogbV9zdGF0ZShD
U3RyaW5nKQotICAgICwgbV9zdHJpbmcoc3RyaW5nKQotICAgICwgbV92YWx1ZSgwKQorICAgICwg
dShuZXcgUVN0cmluZyhzdHJpbmcpKQogewogfQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2Ny
aXB0VmFsdWVQcml2YXRlKGJvb2wgdmFsdWUpCiAgICAgOiBtX3N0YXRlKENCb29sKQotICAgICwg
bV9udW1iZXIodmFsdWUpCi0gICAgLCBtX3ZhbHVlKDApCisgICAgLCB1KHZhbHVlKQogewogfQog
CiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKGludCBudW1iZXIpCiAg
ICAgOiBtX3N0YXRlKENOdW1iZXIpCi0gICAgLCBtX251bWJlcihudW1iZXIpCi0gICAgLCBtX3Zh
bHVlKDApCisgICAgLCB1KG51bWJlcikKIHsKIH0KIAogUVNjcmlwdFZhbHVlUHJpdmF0ZTo6UVNj
cmlwdFZhbHVlUHJpdmF0ZSh1aW50IG51bWJlcikKICAgICA6IG1fc3RhdGUoQ051bWJlcikKLSAg
ICAsIG1fbnVtYmVyKG51bWJlcikKLSAgICAsIG1fdmFsdWUoMCkKKyAgICAsIHUobnVtYmVyKQog
ewogfQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKHFzcmVhbCBu
dW1iZXIpCiAgICAgOiBtX3N0YXRlKENOdW1iZXIpCi0gICAgLCBtX251bWJlcihudW1iZXIpCi0g
ICAgLCBtX3ZhbHVlKDApCisgICAgLCB1KG51bWJlcikKIHsKIH0KIAogUVNjcmlwdFZhbHVlUHJp
dmF0ZTo6UVNjcmlwdFZhbHVlUHJpdmF0ZShRU2NyaXB0VmFsdWU6OlNwZWNpYWxWYWx1ZSB2YWx1
ZSkKICAgICA6IG1fc3RhdGUodmFsdWUgPT0gUVNjcmlwdFZhbHVlOjpOdWxsVmFsdWUgPyBDTnVs
bCA6IENVbmRlZmluZWQpCi0gICAgLCBtX3ZhbHVlKDApCiB7CiB9CiAKIFFTY3JpcHRWYWx1ZVBy
aXZhdGU6OlFTY3JpcHRWYWx1ZVByaXZhdGUoY29uc3QgUVNjcmlwdEVuZ2luZVByaXZhdGUqIGVu
Z2luZSwgYm9vbCB2YWx1ZSkKICAgICA6IG1fc3RhdGUoSlNQcmltaXRpdmUpCiAgICAgLCBtX2Vu
Z2luZShjb25zdF9jYXN0PFFTY3JpcHRFbmdpbmVQcml2YXRlKj4oZW5naW5lKSkKLSAgICAsIG1f
dmFsdWUoZW5naW5lLT5tYWtlSlNWYWx1ZSh2YWx1ZSkpCisgICAgLCB1KGVuZ2luZS0+bWFrZUpT
VmFsdWUodmFsdWUpKQogewogICAgIFFfQVNTRVJUKGVuZ2luZSk7Ci0gICAgSlNWYWx1ZVByb3Rl
Y3QoKm1fZW5naW5lLCBtX3ZhbHVlKTsKKyAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIHUu
bV92YWx1ZSk7CiB9CiAKIFFTY3JpcHRWYWx1ZVByaXZhdGU6OlFTY3JpcHRWYWx1ZVByaXZhdGUo
Y29uc3QgUVNjcmlwdEVuZ2luZVByaXZhdGUqIGVuZ2luZSwgaW50IHZhbHVlKQogICAgIDogbV9z
dGF0ZShKU1ByaW1pdGl2ZSkKICAgICAsIG1fZW5naW5lKGNvbnN0X2Nhc3Q8UVNjcmlwdEVuZ2lu
ZVByaXZhdGUqPihlbmdpbmUpKQotICAgICwgbV92YWx1ZShtX2VuZ2luZS0+bWFrZUpTVmFsdWUo
dmFsdWUpKQorICAgICwgdShtX2VuZ2luZS0+bWFrZUpTVmFsdWUodmFsdWUpKQogewogICAgIFFf
QVNTRVJUKGVuZ2luZSk7Ci0gICAgSlNWYWx1ZVByb3RlY3QoKm1fZW5naW5lLCBtX3ZhbHVlKTsK
KyAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIHUubV92YWx1ZSk7CiB9CiAKIFFTY3JpcHRW
YWx1ZVByaXZhdGU6OlFTY3JpcHRWYWx1ZVByaXZhdGUoY29uc3QgUVNjcmlwdEVuZ2luZVByaXZh
dGUqIGVuZ2luZSwgdWludCB2YWx1ZSkKICAgICA6IG1fc3RhdGUoSlNQcmltaXRpdmUpCiAgICAg
LCBtX2VuZ2luZShjb25zdF9jYXN0PFFTY3JpcHRFbmdpbmVQcml2YXRlKj4oZW5naW5lKSkKLSAg
ICAsIG1fdmFsdWUobV9lbmdpbmUtPm1ha2VKU1ZhbHVlKHZhbHVlKSkKKyAgICAsIHUobV9lbmdp
bmUtPm1ha2VKU1ZhbHVlKHZhbHVlKSkKIHsKICAgICBRX0FTU0VSVChlbmdpbmUpOwotICAgIEpT
VmFsdWVQcm90ZWN0KCptX2VuZ2luZSwgbV92YWx1ZSk7CisgICAgSlNWYWx1ZVByb3RlY3QoKm1f
ZW5naW5lLCB1Lm1fdmFsdWUpOwogfQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFs
dWVQcml2YXRlKGNvbnN0IFFTY3JpcHRFbmdpbmVQcml2YXRlKiBlbmdpbmUsIHFzcmVhbCB2YWx1
ZSkKICAgICA6IG1fc3RhdGUoSlNQcmltaXRpdmUpCiAgICAgLCBtX2VuZ2luZShjb25zdF9jYXN0
PFFTY3JpcHRFbmdpbmVQcml2YXRlKj4oZW5naW5lKSkKLSAgICAsIG1fdmFsdWUobV9lbmdpbmUt
Pm1ha2VKU1ZhbHVlKHZhbHVlKSkKKyAgICAsIHUobV9lbmdpbmUtPm1ha2VKU1ZhbHVlKHZhbHVl
KSkKIHsKICAgICBRX0FTU0VSVChlbmdpbmUpOwotICAgIEpTVmFsdWVQcm90ZWN0KCptX2VuZ2lu
ZSwgbV92YWx1ZSk7CisgICAgSlNWYWx1ZVByb3RlY3QoKm1fZW5naW5lLCB1Lm1fdmFsdWUpOwog
fQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKGNvbnN0IFFTY3Jp
cHRFbmdpbmVQcml2YXRlKiBlbmdpbmUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQogICAgIDogbV9z
dGF0ZShKU1ByaW1pdGl2ZSkKICAgICAsIG1fZW5naW5lKGNvbnN0X2Nhc3Q8UVNjcmlwdEVuZ2lu
ZVByaXZhdGUqPihlbmdpbmUpKQotICAgICwgbV92YWx1ZShtX2VuZ2luZS0+bWFrZUpTVmFsdWUo
dmFsdWUpKQorICAgICwgdShtX2VuZ2luZS0+bWFrZUpTVmFsdWUodmFsdWUpKQogewogICAgIFFf
QVNTRVJUKGVuZ2luZSk7Ci0gICAgSlNWYWx1ZVByb3RlY3QoKm1fZW5naW5lLCBtX3ZhbHVlKTsK
KyAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIHUubV92YWx1ZSk7CiB9CiAKIFFTY3JpcHRW
YWx1ZVByaXZhdGU6OlFTY3JpcHRWYWx1ZVByaXZhdGUoY29uc3QgUVNjcmlwdEVuZ2luZVByaXZh
dGUqIGVuZ2luZSwgUVNjcmlwdFZhbHVlOjpTcGVjaWFsVmFsdWUgdmFsdWUpCiAgICAgOiBtX3N0
YXRlKEpTUHJpbWl0aXZlKQogICAgICwgbV9lbmdpbmUoY29uc3RfY2FzdDxRU2NyaXB0RW5naW5l
UHJpdmF0ZSo+KGVuZ2luZSkpCi0gICAgLCBtX3ZhbHVlKG1fZW5naW5lLT5tYWtlSlNWYWx1ZSh2
YWx1ZSkpCisgICAgLCB1KG1fZW5naW5lLT5tYWtlSlNWYWx1ZSh2YWx1ZSkpCiB7CiAgICAgUV9B
U1NFUlQoZW5naW5lKTsKLSAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIG1fdmFsdWUpOwor
ICAgIEpTVmFsdWVQcm90ZWN0KCptX2VuZ2luZSwgdS5tX3ZhbHVlKTsKIH0KIAogUVNjcmlwdFZh
bHVlUHJpdmF0ZTo6UVNjcmlwdFZhbHVlUHJpdmF0ZShjb25zdCBRU2NyaXB0RW5naW5lUHJpdmF0
ZSogZW5naW5lLCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIDogbV9zdGF0ZShKU1ZhbHVlKQogICAg
ICwgbV9lbmdpbmUoY29uc3RfY2FzdDxRU2NyaXB0RW5naW5lUHJpdmF0ZSo+KGVuZ2luZSkpCi0g
ICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgICwgdSh2YWx1ZSkKIHsKICAgICBRX0FTU0VSVChlbmdp
bmUpOwogICAgIFFfQVNTRVJUKHZhbHVlKTsKLSAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUs
IG1fdmFsdWUpOworICAgIEpTVmFsdWVQcm90ZWN0KCptX2VuZ2luZSwgdS5tX3ZhbHVlKTsKIH0K
IAotUVNjcmlwdFZhbHVlUHJpdmF0ZTo6UVNjcmlwdFZhbHVlUHJpdmF0ZShjb25zdCBRU2NyaXB0
RW5naW5lUHJpdmF0ZSogZW5naW5lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU09iamVjdFJlZiBvYmpl
Y3QpCitRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKGNvbnN0IFFTY3Jp
cHRFbmdpbmVQcml2YXRlKiBlbmdpbmUsIEpTT2JqZWN0UmVmIG9iamVjdCkKICAgICA6IG1fc3Rh
dGUoSlNPYmplY3QpCiAgICAgLCBtX2VuZ2luZShjb25zdF9jYXN0PFFTY3JpcHRFbmdpbmVQcml2
YXRlKj4oZW5naW5lKSkKLSAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgLCBtX29iamVjdChvYmpl
Y3QpCisgICAgLCB1KG9iamVjdCkKIHsKICAgICBRX0FTU0VSVChlbmdpbmUpOwotICAgIFFfQVNT
RVJUKHZhbHVlKTsKICAgICBRX0FTU0VSVChvYmplY3QpOwotICAgIEpTVmFsdWVQcm90ZWN0KCpt
X2VuZ2luZSwgbV92YWx1ZSk7CisgICAgSlNWYWx1ZVByb3RlY3QoKm1fZW5naW5lLCBvYmplY3Qp
OwogfQogCiBib29sIFFTY3JpcHRWYWx1ZVByaXZhdGU6OmlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlICE9IEludmFsaWQ7IH0KQEAgLTQyMiwxMSArNDI2LDExIEBAIFFTdHJpbmcgUVNj
cmlwdFZhbHVlUHJpdmF0ZTo6dG9TdHJpbmcoKSBjb25zdAogICAgIGNhc2UgSW52YWxpZDoKICAg
ICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKICAgICBjYXNlIENCb29sOgotICAgICAgICByZXR1cm4g
bV9udW1iZXIgPyBRU3RyaW5nOjpmcm9tTGF0aW4xKCJ0cnVlIikgOiBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJmYWxzZSIpOworICAgICAgICByZXR1cm4gdS5tX2Jvb2wgPyBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJ0cnVlIikgOiBRU3RyaW5nOjpmcm9tTGF0aW4xKCJmYWxzZSIpOwogICAgIGNhc2UgQ1N0
cmluZzoKLSAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworICAgICAgICByZXR1cm4gKnUubV9zdHJp
bmc7CiAgICAgY2FzZSBDTnVtYmVyOgotICAgICAgICByZXR1cm4gUVNjcmlwdENvbnZlcnRlcjo6
dG9TdHJpbmcobV9udW1iZXIpOworICAgICAgICByZXR1cm4gUVNjcmlwdENvbnZlcnRlcjo6dG9T
dHJpbmcodS5tX251bWJlcik7CiAgICAgY2FzZSBDTnVsbDoKICAgICAgICAgcmV0dXJuIFFTdHJp
bmc6OmZyb21MYXRpbjEoIm51bGwiKTsKICAgICBjYXNlIENVbmRlZmluZWQ6CkBAIC00NTAsOSAr
NDU0LDkgQEAgcXNyZWFsIFFTY3JpcHRWYWx1ZVByaXZhdGU6OnRvTnVtYmVyKCkgY29uc3QKICAg
ICBjYXNlIEpTT2JqZWN0OgogICAgICAgICByZXR1cm4gSlNWYWx1ZVRvTnVtYmVyKCptX2VuZ2lu
ZSwgKnRoaXMsIC8qIGV4Y2VwdGlvbiAqLyAwKTsKICAgICBjYXNlIENOdW1iZXI6Ci0gICAgICAg
IHJldHVybiBtX251bWJlcjsKKyAgICAgICAgcmV0dXJuIHUubV9udW1iZXI7CiAgICAgY2FzZSBD
Qm9vbDoKLSAgICAgICAgcmV0dXJuIG1fbnVtYmVyID8gMSA6IDA7CisgICAgICAgIHJldHVybiB1
Lm1fYm9vbCA/IDEgOiAwOwogICAgIGNhc2UgQ051bGw6CiAgICAgY2FzZSBJbnZhbGlkOgogICAg
ICAgICByZXR1cm4gMDsKQEAgLTQ2MCwxNSArNDY0LDE1IEBAIHFzcmVhbCBRU2NyaXB0VmFsdWVQ
cml2YXRlOjp0b051bWJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBxUU5hTigpOwogICAgIGNh
c2UgQ1N0cmluZzoKICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgcXNyZWFsIHJlc3VsdCA9IG1f
c3RyaW5nLnRvRG91YmxlKCZvayk7CisgICAgICAgIHFzcmVhbCByZXN1bHQgPSB1Lm1fc3RyaW5n
LT50b0RvdWJsZSgmb2spOwogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgICAgICByZXN1bHQgPSBtX3N0cmluZy50b0ludCgmb2ssIDApOyAvLyBUcnkgb3Ro
ZXIgYmFzZXMuCisgICAgICAgIHJlc3VsdCA9IHUubV9zdHJpbmctPnRvSW50KCZvaywgMCk7IC8v
IFRyeSBvdGhlciBiYXNlcy4KICAgICAgICAgaWYgKG9rKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICAgICAgaWYgKG1fc3RyaW5nID09ICJJbmZpbml0eSIgfHwgbV9zdHJpbmcgPT0g
Ii1JbmZpbml0eSIpCisgICAgICAgIGlmICgqdS5tX3N0cmluZyA9PSAiSW5maW5pdHkiIHx8ICp1
Lm1fc3RyaW5nID09ICItSW5maW5pdHkiKQogICAgICAgICAgICAgcmV0dXJuIHFJbmYoKTsKLSAg
ICAgICAgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpID8gcVFOYU4oKSA6IDA7CisgICAgICAgIHJl
dHVybiB1Lm1fc3RyaW5nLT5sZW5ndGgoKSA/IHFRTmFOKCkgOiAwOwogICAgIH0KIAogICAgIFFf
QVNTRVJUX1goZmFsc2UsICJ0b051bWJlcigpIiwgIk5vdCBhbGwgc3RhdGVzIGFyZSBpbmNsdWRl
ZCBpbiB0aGUgcHJldmlvdXMgc3dpdGNoIHN0YXRlbWVudC4iKTsKQEAgLTQ4NCwxNSArNDg4LDE1
IEBAIGJvb2wgUVNjcmlwdFZhbHVlUHJpdmF0ZTo6dG9Cb29sKCkgY29uc3QKICAgICBjYXNlIEpT
T2JqZWN0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENOdW1iZXI6Ci0gICAgICAg
IHJldHVybiAhKHFJc05hTihtX251bWJlcikgfHwgIW1fbnVtYmVyKTsKKyAgICAgICAgcmV0dXJu
ICEocUlzTmFOKHUubV9udW1iZXIpIHx8ICF1Lm1fbnVtYmVyKTsKICAgICBjYXNlIENCb29sOgot
ICAgICAgICByZXR1cm4gbV9udW1iZXI7CisgICAgICAgIHJldHVybiB1Lm1fYm9vbDsKICAgICBj
YXNlIEludmFsaWQ6CiAgICAgY2FzZSBDTnVsbDoKICAgICBjYXNlIENVbmRlZmluZWQ6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENTdHJpbmc6Ci0gICAgICAgIHJldHVybiBtX3N0
cmluZy5sZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIHUubV9zdHJpbmctPmxlbmd0aCgpOwogICAg
IH0KIAogICAgIFFfQVNTRVJUX1goZmFsc2UsICJ0b0Jvb2woKSIsICJOb3QgYWxsIHN0YXRlcyBh
cmUgaW5jbHVkZWQgaW4gdGhlIHByZXZpb3VzIHN3aXRjaCBzdGF0ZW1lbnQuIik7CkBAIC01NTEs
MjMgKzU1NSwyMyBAQCBRU2NyaXB0VmFsdWVQcml2YXRlKiBRU2NyaXB0VmFsdWVQcml2YXRlOjp0
b09iamVjdChRU2NyaXB0RW5naW5lUHJpdmF0ZSogZW5naW5lKQogICAgIGNhc2UgQ1N0cmluZzoK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gRXhjZXB0aW9uIGNhbid0IG9jY3VyIGhlcmUuCi0g
ICAgICAgICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoKmVuZ2luZSwg
ZW5naW5lLT5tYWtlSlNWYWx1ZShtX3N0cmluZyksIC8qIGV4Y2VwdGlvbiAqLyAwKTsKKyAgICAg
ICAgICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdCgqZW5naW5lLCBlbmdp
bmUtPm1ha2VKU1ZhbHVlKCp1Lm1fc3RyaW5nKSwgLyogZXhjZXB0aW9uICovIDApOwogICAgICAg
ICAgICAgUV9BU1NFUlQob2JqZWN0KTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgUVNjcmlwdFZh
bHVlUHJpdmF0ZShlbmdpbmUsIG9iamVjdCwgb2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgUVNjcmlwdFZhbHVlUHJpdmF0ZShlbmdpbmUsIG9iamVjdCk7CiAgICAgICAgIH0KICAgICBj
YXNlIENOdW1iZXI6CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbiBjYW4ndCBv
Y2N1ciBoZXJlLgotICAgICAgICAgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2Jq
ZWN0KCplbmdpbmUsIGVuZ2luZS0+bWFrZUpTVmFsdWUobV9udW1iZXIpLCAvKiBleGNlcHRpb24g
Ki8gMCk7CisgICAgICAgICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3Qo
KmVuZ2luZSwgZW5naW5lLT5tYWtlSlNWYWx1ZSh1Lm1fbnVtYmVyKSwgLyogZXhjZXB0aW9uICov
IDApOwogICAgICAgICAgICAgUV9BU1NFUlQob2JqZWN0KTsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgUVNjcmlwdFZhbHVlUHJpdmF0ZShlbmdpbmUsIG9iamVjdCwgb2JqZWN0KTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgUVNjcmlwdFZhbHVlUHJpdmF0ZShlbmdpbmUsIG9iamVjdCk7CiAgICAg
ICAgIH0KICAgICBjYXNlIENCb29sOgogICAgICAgICB7CiAgICAgICAgICAgICAvLyBFeGNlcHRp
b24gY2FuJ3Qgb2NjdXJlIGhlcmUuCi0gICAgICAgICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBK
U1ZhbHVlVG9PYmplY3QoKmVuZ2luZSwgZW5naW5lLT5tYWtlSlNWYWx1ZShzdGF0aWNfY2FzdDxi
b29sPihtX251bWJlcikpLCAvKiBleGNlcHRpb24gKi8gMCk7CisgICAgICAgICAgICBKU09iamVj
dFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoKmVuZ2luZSwgZW5naW5lLT5tYWtlSlNWYWx1
ZSh1Lm1fYm9vbCksIC8qIGV4Y2VwdGlvbiAqLyAwKTsKICAgICAgICAgICAgIFFfQVNTRVJUKG9i
amVjdCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFFTY3JpcHRWYWx1ZVByaXZhdGUoZW5naW5l
LCBvYmplY3QsIG9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFFTY3JpcHRWYWx1ZVBy
aXZhdGUoZW5naW5lLCBvYmplY3QpOwogICAgICAgICB9CiAgICAgY2FzZSBKU1ZhbHVlOgogICAg
ICAgICBpZiAocmVmaW5lZEpTVmFsdWUoKSAhPSBKU1ByaW1pdGl2ZSkKQEAgLTYxNSw5ICs2MTks
OSBAQCBib29sIFFTY3JpcHRWYWx1ZVByaXZhdGU6OmVxdWFscyhRU2NyaXB0VmFsdWVQcml2YXRl
KiBvdGhlcikKIAogICAgIGlmICgobV9zdGF0ZSA9PSBvdGhlci0+bV9zdGF0ZSkgJiYgIWlzSlNC
YXNlZCgpKSB7CiAgICAgICAgIGlmIChpc051bWJlckJhc2VkKCkpCi0gICAgICAgICAgICByZXR1
cm4gbV9udW1iZXIgPT0gb3RoZXItPm1fbnVtYmVyOworICAgICAgICAgICAgcmV0dXJuIHUubV9u
dW1iZXIgPT0gb3RoZXItPnUubV9udW1iZXI7CiAgICAgICAgIFFfQVNTRVJUKGlzU3RyaW5nQmFz
ZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX3N0cmluZyA9PSBvdGhlci0+bV9zdHJpbmc7CisgICAg
ICAgIHJldHVybiAqdS5tX3N0cmluZyA9PSAqKG90aGVyLT51Lm1fc3RyaW5nKTsKICAgICB9CiAK
ICAgICBpZiAoIWlzSlNCYXNlZCgpICYmICFvdGhlci0+aXNKU0Jhc2VkKCkpCkBAIC02NTUsNyAr
NjU5LDcgQEAgYm9vbCBRU2NyaXB0VmFsdWVQcml2YXRlOjpzdHJpY3RseUVxdWFscyhRU2NyaXB0
VmFsdWVQcml2YXRlKiBvdGhlcikKICAgICB9CiAgICAgaWYgKGlzU3RyaW5nQmFzZWQoKSkgewog
ICAgICAgICBpZiAob3RoZXItPmlzU3RyaW5nQmFzZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBt
X3N0cmluZyA9PSBvdGhlci0+bV9zdHJpbmc7CisgICAgICAgICAgICByZXR1cm4gKnUubV9zdHJp
bmcgPT0gKihvdGhlci0+dS5tX3N0cmluZyk7CiAgICAgICAgIGlmIChvdGhlci0+aXNKU0Jhc2Vk
KCkpIHsKICAgICAgICAgICAgIGFzc2lnbkVuZ2luZShvdGhlci0+ZW5naW5lKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVJc1N0cmljdEVxdWFsKCptX2VuZ2luZSwgKnRoaXMsICpvdGhl
cik7CkBAIC02NjMsNyArNjY3LDcgQEAgYm9vbCBRU2NyaXB0VmFsdWVQcml2YXRlOjpzdHJpY3Rs
eUVxdWFscyhRU2NyaXB0VmFsdWVQcml2YXRlKiBvdGhlcikKICAgICB9CiAgICAgaWYgKGlzTnVt
YmVyQmFzZWQoKSkgewogICAgICAgICBpZiAob3RoZXItPmlzTnVtYmVyQmFzZWQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBtX251bWJlciA9PSBvdGhlci0+bV9udW1iZXI7CisgICAgICAgICAgICBy
ZXR1cm4gdS5tX251bWJlciA9PSBvdGhlci0+dS5tX251bWJlcjsKICAgICAgICAgaWYgKG90aGVy
LT5pc0pTQmFzZWQoKSkgewogICAgICAgICAgICAgYXNzaWduRW5naW5lKG90aGVyLT5lbmdpbmUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZUlzU3RyaWN0RXF1YWwoKm1fZW5naW5lLCAq
dGhpcywgKm90aGVyKTsKQEAgLTY5MCwxMyArNjk0LDE0IEBAIGJvb2wgUVNjcmlwdFZhbHVlUHJp
dmF0ZTo6YXNzaWduRW5naW5lKFFTY3JpcHRFbmdpbmVQcml2YXRlKiBlbmdpbmUpCiAgICAgSlNW
YWx1ZVJlZiB2YWx1ZTsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICBjYXNlIENCb29sOgot
ICAgICAgICB2YWx1ZSA9IGVuZ2luZS0+bWFrZUpTVmFsdWUoc3RhdGljX2Nhc3Q8Ym9vbD4obV9u
dW1iZXIpKTsKKyAgICAgICAgdmFsdWUgPSBlbmdpbmUtPm1ha2VKU1ZhbHVlKHUubV9ib29sKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU3RyaW5nOgotICAgICAgICB2YWx1ZSA9IGVuZ2lu
ZS0+bWFrZUpTVmFsdWUobV9zdHJpbmcpOworICAgICAgICB2YWx1ZSA9IGVuZ2luZS0+bWFrZUpT
VmFsdWUoKnUubV9zdHJpbmcpOworICAgICAgICBkZWxldGUgdS5tX3N0cmluZzsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDTnVtYmVyOgotICAgICAgICB2YWx1ZSA9IGVuZ2luZS0+bWFrZUpT
VmFsdWUobV9udW1iZXIpOworICAgICAgICB2YWx1ZSA9IGVuZ2luZS0+bWFrZUpTVmFsdWUodS5t
X251bWJlcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ051bGw6CiAgICAgICAgIHZhbHVl
ID0gZW5naW5lLT5tYWtlSlNWYWx1ZShRU2NyaXB0VmFsdWU6Ok51bGxWYWx1ZSk7CkBAIC03MTMs
NyArNzE4LDggQEAgYm9vbCBRU2NyaXB0VmFsdWVQcml2YXRlOjphc3NpZ25FbmdpbmUoUVNjcmlw
dEVuZ2luZVByaXZhdGUqIGVuZ2luZSkKICAgICB9CiAgICAgbV9lbmdpbmUgPSBlbmdpbmU7CiAg
ICAgbV9zdGF0ZSA9IEpTUHJpbWl0aXZlOwotICAgIHNldFZhbHVlKHZhbHVlKTsKKyAgICB1Lm1f
dmFsdWUgPSB2YWx1ZTsKKyAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIHZhbHVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzYzLDIyICs3NjksMTUgQEAgUVNjcmlwdEVuZ2luZVBy
aXZhdGUqIFFTY3JpcHRWYWx1ZVByaXZhdGU6OmVuZ2luZSgpIGNvbnN0CiBRU2NyaXB0VmFsdWVQ
cml2YXRlOjpvcGVyYXRvciBKU1ZhbHVlUmVmKCkgY29uc3QKIHsKICAgICBRX0FTU0VSVChpc0pT
QmFzZWQoKSk7Ci0gICAgcmV0dXJuIG1fdmFsdWU7CisgICAgUV9BU1NFUlQodS5tX3ZhbHVlKTsK
KyAgICByZXR1cm4gdS5tX3ZhbHVlOwogfQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpvcGVyYXRv
ciBKU09iamVjdFJlZigpIGNvbnN0CiB7CiAgICAgUV9BU1NFUlQobV9zdGF0ZSA9PSBKU09iamVj
dCk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0OwotfQotCi12b2lkIFFTY3JpcHRWYWx1ZVByaXZhdGU6
OnNldFZhbHVlKEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0gICAgaWYgKG1fdmFsdWUpCi0gICAgICAg
IEpTVmFsdWVVbnByb3RlY3QoKm1fZW5naW5lLCBtX3ZhbHVlKTsKLSAgICBpZiAodmFsdWUpCi0g
ICAgICAgIEpTVmFsdWVQcm90ZWN0KCptX2VuZ2luZSwgdmFsdWUpOwotICAgIG1fdmFsdWUgPSB2
YWx1ZTsKKyAgICBRX0FTU0VSVCh1Lm1fb2JqZWN0KTsKKyAgICByZXR1cm4gdS5tX29iamVjdDsK
IH0KIAogLyohCkBAIC04MDYsMTAgKzgwNSw5IEBAIFFTY3JpcHRWYWx1ZVByaXZhdGU6OlN0YXRl
IFFTY3JpcHRWYWx1ZVByaXZhdGU6OnJlZmluZWRKU1ZhbHVlKCkKICAgICBpZiAoIUpTVmFsdWVJ
c09iamVjdCgqbV9lbmdpbmUsICp0aGlzKSkgewogICAgICAgICBtX3N0YXRlID0gSlNQcmltaXRp
dmU7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVuIEpTVmFsdWVS
ZWYgYW5kIEpTT2JqZWN0UmVmIGlzIG9ubHkgaW4gdGhlaXIgdHlwZSwgYmluYXJ5d2lzZSBpdCBp
cyB0aGUgc2FtZS4KKyAgICAgICAgLy8gQXMgbV92YWx1ZSBhbmQgbV9vYmplY3QgYXJlIHN0b3Jl
ZCBpbiB0aGUgdSB1bmlvbiwgaXQgaXMgZW5vdWdoIHRvIGNoYW5nZSB0aGUgbV9zdGF0ZSBvbmx5
LgogICAgICAgICBtX3N0YXRlID0gSlNPYmplY3Q7Ci0gICAgICAgIC8vIFdlIGFyZSBzdXJlIHRo
YXQgdmFsdWUgaXMgYW4gSlNPYmplY3QsIHNvIHdlIGNhbiBjb25zdF9jYXN0IHNhZmVseSB3aXRo
b3V0Ci0gICAgICAgIC8vIGNhbGxpbmcgSlNDIEMgQVBJIChKU1ZhbHVlVG9PYmplY3QoKm1fZW5n
aW5lLCAqdGhpcywgLyogZXhjZXB0aW9ucyAqLyAwKSkuCi0gICAgICAgIG1fb2JqZWN0ID0gY29u
c3RfY2FzdDxKU09iamVjdFJlZj4obV92YWx1ZSk7CiAgICAgfQogICAgIHJldHVybiBtX3N0YXRl
OwogfQo=
</data>
<flag name="commit-queue"
          id="43416"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58630</attachid>
            <date>2010-06-14 02:00:06 -0700</date>
            <delta_ts>2010-06-23 18:49:29 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>union.diff</filename>
            <type>text/plain</type>
            <size>16250</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiNWFkOTJlLi5jMWZlZGE3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzYg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBPcHRp
bWl6YXRpb24gb2YgdGhlIFFTY3JpcHRWYWx1ZVByaXZhdGUuCisKKyAgICAgICAgUGF0Y2ggY2hh
bmdlIG9ubHkgaW50ZXJuYWxzIG9mIHRoZSBRU2NyaXB0VmFsdWVQcml2YXRlLgorICAgICAgICBN
b3N0IG9mIHRoZSBRU2NyaXB0VmFsdWVQcml2YXRlJ3MgYXR0cmlidXRlcyB3ZXJlIG1vdmVkCisg
ICAgICAgIGludG8gYW4gdW5pb24uCisKKyAgICAgICAgW1F0XSBPcHRpbWl6YXRpb24gb2YgdGhl
IFFTY3JpcHRWQWx1ZVByaXZhdGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDQxNQorCisgICAgICAgICogcXQvYXBpL3FzY3JpcHRlbmdpbmVfcC5j
cHA6CisgICAgICAgIChRU2NyaXB0RW5naW5lUHJpdmF0ZTo6Z2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKiBxdC9hcGkvcXNjcmlwdHZhbHVlX3AuaDoKKyAgICAgICAgKFFTY3JpcHRWYWx1ZVByaXZh
dGU6Oik6CisgICAgICAgIChRU2NyaXB0VmFsdWVQcml2YXRlOjp+UVNjcmlwdFZhbHVlUHJpdmF0
ZSk6CisgICAgICAgIChRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKToK
KyAgICAgICAgKFFTY3JpcHRWYWx1ZVByaXZhdGU6OnRvU3RyaW5nKToKKyAgICAgICAgKFFTY3Jp
cHRWYWx1ZVByaXZhdGU6OnRvTnVtYmVyKToKKyAgICAgICAgKFFTY3JpcHRWYWx1ZVByaXZhdGU6
OnRvQm9vbCk6CisgICAgICAgIChRU2NyaXB0VmFsdWVQcml2YXRlOjp0b09iamVjdCk6CisgICAg
ICAgIChRU2NyaXB0VmFsdWVQcml2YXRlOjplcXVhbHMpOgorICAgICAgICAoUVNjcmlwdFZhbHVl
UHJpdmF0ZTo6c3RyaWN0bHlFcXVhbHMpOgorICAgICAgICAoUVNjcmlwdFZhbHVlUHJpdmF0ZTo6
YXNzaWduRW5naW5lKToKKyAgICAgICAgKFFTY3JpcHRWYWx1ZVByaXZhdGU6Om9wZXJhdG9yIEpT
VmFsdWVSZWYpOgorICAgICAgICAoUVNjcmlwdFZhbHVlUHJpdmF0ZTo6b3BlcmF0b3IgSlNPYmpl
Y3RSZWYpOgorICAgICAgICAoUVNjcmlwdFZhbHVlUHJpdmF0ZTo6cmVmaW5lZEpTVmFsdWUpOgor
CisyMDEwLTA2LTEwICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEV4cGxp
Y2l0IGNvbnZlcnNpb25zIHRvIEpTQyBvcGFxdWUgdHlwZXMgd2VyZSByZW1vdmVkLgogCiAgICAg
ICAgIENvbnZlcnNpb24gYmV0d2VlbiBhIEpTQyBDIHR5cGVzIGFuZCBhIFF0U2NyaXB0IHByaXZh
dGUgdHlwZXMsIHRha2VzCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9xdC9hcGkvcXNjcmlw
dGVuZ2luZV9wLmNwcCBiL0phdmFTY3JpcHRDb3JlL3F0L2FwaS9xc2NyaXB0ZW5naW5lX3AuY3Bw
CmluZGV4IGE2Y2Y0YTQuLmZkNzk3OGIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3F0L2Fw
aS9xc2NyaXB0ZW5naW5lX3AuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3F0L2FwaS9xc2NyaXB0
ZW5naW5lX3AuY3BwCkBAIC04NSw1ICs4NSw1IEBAIFFTY3JpcHRWYWx1ZVByaXZhdGUqIFFTY3Jp
cHRFbmdpbmVQcml2YXRlOjpuZXdPYmplY3QoKSBjb25zdAogUVNjcmlwdFZhbHVlUHJpdmF0ZSog
UVNjcmlwdEVuZ2luZVByaXZhdGU6Omdsb2JhbE9iamVjdCgpIGNvbnN0CiB7CiAgICAgSlNPYmpl
Y3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KG1fY29udGV4dCk7
Ci0gICAgcmV0dXJuIG5ldyBRU2NyaXB0VmFsdWVQcml2YXRlKHRoaXMsIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gbmV3IFFTY3JpcHRWYWx1ZVByaXZhdGUodGhpcywg
Z2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3F0L2FwaS9xc2Ny
aXB0dmFsdWVfcC5oIGIvSmF2YVNjcmlwdENvcmUvcXQvYXBpL3FzY3JpcHR2YWx1ZV9wLmgKaW5k
ZXggMWJiOGE3Ny4uMzNjZWZjZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcXQvYXBpL3Fz
Y3JpcHR2YWx1ZV9wLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcXQvYXBpL3FzY3JpcHR2YWx1ZV9w
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUVNjcmlwdFZhbHVlOwogICAgIENOdW1iZXIgLT4g
UVNWUCBpcyBjcmVhdGVkIGZyb20gaW50LCB1aW50LCBkb3VibGUuLi4gYW5kIG5vIEpTQyBlbmdp
bmUgaGFzIGJlZW4gYmluZCB5ZXQuIEN1cnJlbnQKICAgICAgICAgdmFsdWUgaXMga2VwdCBpbiBt
X251bWJlcgogICAgIENCb29sIC0+IFFTVlAgaXMgY3JlYXRlZCBmcm9tIGJvb2wgYW5kIG5vIEpT
QyBlbmdpbmUgaGFzIGJlZW4gYXNzb2NpYXRlZCB5ZXQuIEN1cnJlbnQgdmFsdWUgaXMga2VwdAot
ICAgICAgICBpbiBtX251bWJlcgorICAgICAgICBpbiBtX2Jvb2wKICAgICBDTnVsbCAtPiBRU1ZQ
IGlzIG51bGwsIGJ1dCBhIEpTQyBlbmdpbmUgaGFzbid0IGJlZW4gYXNzb2NpYXRlZCB5ZXQuCiAg
ICAgQ1VuZGVmaW5lZCAtPiBRU1ZQIGlzIHVuZGVmaW5lZCwgYnV0IGEgSlNDIGVuZ2luZSBoYXNu
J3QgYmVlbiBhc3NvY2lhdGVkIHlldC4KICAgICBKU1ZhbHVlIC0+IFFTVlAgaXMgYXNzb2NpYXRl
ZCB3aXRoIGVuZ2luZSwgYnV0IHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uIGFib3V0IHJlYWwgdHlw
ZSwgdGhlIHN0YXRlCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgUVNjcmlw
dFZhbHVlUHJpdmF0ZShjb25zdCBRU2NyaXB0RW5naW5lUHJpdmF0ZSogZW5naW5lLCBRU2NyaXB0
VmFsdWU6OlNwZWNpYWxWYWx1ZSB2YWx1ZSk7CiAKICAgICBpbmxpbmUgUVNjcmlwdFZhbHVlUHJp
dmF0ZShjb25zdCBRU2NyaXB0RW5naW5lUHJpdmF0ZSogZW5naW5lLCBKU1ZhbHVlUmVmIHZhbHVl
KTsKLSAgICBpbmxpbmUgUVNjcmlwdFZhbHVlUHJpdmF0ZShjb25zdCBRU2NyaXB0RW5naW5lUHJp
dmF0ZSogZW5naW5lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU09iamVjdFJlZiBvYmplY3QpOworICAg
IGlubGluZSBRU2NyaXB0VmFsdWVQcml2YXRlKGNvbnN0IFFTY3JpcHRFbmdpbmVQcml2YXRlKiBl
bmdpbmUsIEpTT2JqZWN0UmVmIG9iamVjdCk7CiAKICAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkKCkg
Y29uc3Q7CiAgICAgaW5saW5lIGJvb2wgaXNCb29sKCk7CkBAIC0xMzcsMTIgKzEzNywyMyBAQCBw
cml2YXRlOgogICAgICAgICBKU09iamVjdAogICAgIH0gbV9zdGF0ZTsKICAgICBRU2NyaXB0RW5n
aW5lUHRyIG1fZW5naW5lOwotICAgIFFTdHJpbmcgbV9zdHJpbmc7Ci0gICAgcXNyZWFsIG1fbnVt
YmVyOwotICAgIEpTVmFsdWVSZWYgbV92YWx1ZTsKLSAgICBKU09iamVjdFJlZiBtX29iamVjdDsK
LQotICAgIGlubGluZSB2b2lkIHNldFZhbHVlKEpTVmFsdWVSZWYpOworICAgIHVuaW9uIFZhbHVl
CisgICAgeworICAgICAgICBib29sIG1fYm9vbDsKKyAgICAgICAgcXNyZWFsIG1fbnVtYmVyOwor
ICAgICAgICBKU1ZhbHVlUmVmIG1fdmFsdWU7CisgICAgICAgIEpTT2JqZWN0UmVmIG1fb2JqZWN0
OworICAgICAgICBRU3RyaW5nKiBtX3N0cmluZzsKKworICAgICAgICBWYWx1ZSgpIDogbV9udW1i
ZXIoMCkge30KKyAgICAgICAgVmFsdWUoYm9vbCB2YWx1ZSkgOiBtX2Jvb2wodmFsdWUpIHt9Cisg
ICAgICAgIFZhbHVlKGludCBudW1iZXIpIDogbV9udW1iZXIobnVtYmVyKSB7fQorICAgICAgICBW
YWx1ZSh1aW50IG51bWJlcikgOiBtX251bWJlcihudW1iZXIpIHt9CisgICAgICAgIFZhbHVlKHFz
cmVhbCBudW1iZXIpIDogbV9udW1iZXIobnVtYmVyKSB7fQorICAgICAgICBWYWx1ZShKU1ZhbHVl
UmVmIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHt9CisgICAgICAgIFZhbHVlKEpTT2JqZWN0UmVm
IG9iamVjdCkgOiBtX29iamVjdChvYmplY3QpIHt9CisgICAgICAgIFZhbHVlKFFTdHJpbmcqIHN0
cmluZykgOiBtX3N0cmluZyhzdHJpbmcpIHt9CisgICAgfSB1OwogCiAgICAgaW5saW5lIGJvb2wg
aW5oZXJpdHMoY29uc3QgY2hhciopOwogICAgIGlubGluZSBTdGF0ZSByZWZpbmVkSlNWYWx1ZSgp
OwpAQCAtMTY2LDEzMSArMTc3LDEyNCBAQCBRU2NyaXB0VmFsdWUgUVNjcmlwdFZhbHVlUHJpdmF0
ZTo6Z2V0KFFTY3JpcHRWYWx1ZVByaXZhdGUqIGQpCiAKIFFTY3JpcHRWYWx1ZVByaXZhdGU6On5R
U2NyaXB0VmFsdWVQcml2YXRlKCkKIHsKLSAgICBpZiAobV92YWx1ZSkKLSAgICAgICAgSlNWYWx1
ZVVucHJvdGVjdCgqbV9lbmdpbmUsIG1fdmFsdWUpOworICAgIGlmIChpc0pTQmFzZWQoKSkKKyAg
ICAgICAgSlNWYWx1ZVVucHJvdGVjdCgqbV9lbmdpbmUsIHUubV92YWx1ZSk7CisgICAgZWxzZSBp
ZiAoaXNTdHJpbmdCYXNlZCgpKQorICAgICAgICBkZWxldGUgdS5tX3N0cmluZzsKIH0KIAogUVNj
cmlwdFZhbHVlUHJpdmF0ZTo6UVNjcmlwdFZhbHVlUHJpdmF0ZSgpCiAgICAgOiBtX3N0YXRlKElu
dmFsaWQpCi0gICAgLCBtX3ZhbHVlKDApCiB7CiB9CiAKIFFTY3JpcHRWYWx1ZVByaXZhdGU6OlFT
Y3JpcHRWYWx1ZVByaXZhdGUoY29uc3QgUVN0cmluZyYgc3RyaW5nKQogICAgIDogbV9zdGF0ZShD
U3RyaW5nKQotICAgICwgbV9zdHJpbmcoc3RyaW5nKQotICAgICwgbV92YWx1ZSgwKQorICAgICwg
dShuZXcgUVN0cmluZyhzdHJpbmcpKQogewogfQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2Ny
aXB0VmFsdWVQcml2YXRlKGJvb2wgdmFsdWUpCiAgICAgOiBtX3N0YXRlKENCb29sKQotICAgICwg
bV9udW1iZXIodmFsdWUpCi0gICAgLCBtX3ZhbHVlKDApCisgICAgLCB1KHZhbHVlKQogewogfQog
CiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKGludCBudW1iZXIpCiAg
ICAgOiBtX3N0YXRlKENOdW1iZXIpCi0gICAgLCBtX251bWJlcihudW1iZXIpCi0gICAgLCBtX3Zh
bHVlKDApCisgICAgLCB1KG51bWJlcikKIHsKIH0KIAogUVNjcmlwdFZhbHVlUHJpdmF0ZTo6UVNj
cmlwdFZhbHVlUHJpdmF0ZSh1aW50IG51bWJlcikKICAgICA6IG1fc3RhdGUoQ051bWJlcikKLSAg
ICAsIG1fbnVtYmVyKG51bWJlcikKLSAgICAsIG1fdmFsdWUoMCkKKyAgICAsIHUobnVtYmVyKQog
ewogfQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKHFzcmVhbCBu
dW1iZXIpCiAgICAgOiBtX3N0YXRlKENOdW1iZXIpCi0gICAgLCBtX251bWJlcihudW1iZXIpCi0g
ICAgLCBtX3ZhbHVlKDApCisgICAgLCB1KG51bWJlcikKIHsKIH0KIAogUVNjcmlwdFZhbHVlUHJp
dmF0ZTo6UVNjcmlwdFZhbHVlUHJpdmF0ZShRU2NyaXB0VmFsdWU6OlNwZWNpYWxWYWx1ZSB2YWx1
ZSkKICAgICA6IG1fc3RhdGUodmFsdWUgPT0gUVNjcmlwdFZhbHVlOjpOdWxsVmFsdWUgPyBDTnVs
bCA6IENVbmRlZmluZWQpCi0gICAgLCBtX3ZhbHVlKDApCiB7CiB9CiAKIFFTY3JpcHRWYWx1ZVBy
aXZhdGU6OlFTY3JpcHRWYWx1ZVByaXZhdGUoY29uc3QgUVNjcmlwdEVuZ2luZVByaXZhdGUqIGVu
Z2luZSwgYm9vbCB2YWx1ZSkKICAgICA6IG1fc3RhdGUoSlNQcmltaXRpdmUpCiAgICAgLCBtX2Vu
Z2luZShjb25zdF9jYXN0PFFTY3JpcHRFbmdpbmVQcml2YXRlKj4oZW5naW5lKSkKLSAgICAsIG1f
dmFsdWUoZW5naW5lLT5tYWtlSlNWYWx1ZSh2YWx1ZSkpCisgICAgLCB1KGVuZ2luZS0+bWFrZUpT
VmFsdWUodmFsdWUpKQogewogICAgIFFfQVNTRVJUKGVuZ2luZSk7Ci0gICAgSlNWYWx1ZVByb3Rl
Y3QoKm1fZW5naW5lLCBtX3ZhbHVlKTsKKyAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIHUu
bV92YWx1ZSk7CiB9CiAKIFFTY3JpcHRWYWx1ZVByaXZhdGU6OlFTY3JpcHRWYWx1ZVByaXZhdGUo
Y29uc3QgUVNjcmlwdEVuZ2luZVByaXZhdGUqIGVuZ2luZSwgaW50IHZhbHVlKQogICAgIDogbV9z
dGF0ZShKU1ByaW1pdGl2ZSkKICAgICAsIG1fZW5naW5lKGNvbnN0X2Nhc3Q8UVNjcmlwdEVuZ2lu
ZVByaXZhdGUqPihlbmdpbmUpKQotICAgICwgbV92YWx1ZShtX2VuZ2luZS0+bWFrZUpTVmFsdWUo
dmFsdWUpKQorICAgICwgdShtX2VuZ2luZS0+bWFrZUpTVmFsdWUodmFsdWUpKQogewogICAgIFFf
QVNTRVJUKGVuZ2luZSk7Ci0gICAgSlNWYWx1ZVByb3RlY3QoKm1fZW5naW5lLCBtX3ZhbHVlKTsK
KyAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIHUubV92YWx1ZSk7CiB9CiAKIFFTY3JpcHRW
YWx1ZVByaXZhdGU6OlFTY3JpcHRWYWx1ZVByaXZhdGUoY29uc3QgUVNjcmlwdEVuZ2luZVByaXZh
dGUqIGVuZ2luZSwgdWludCB2YWx1ZSkKICAgICA6IG1fc3RhdGUoSlNQcmltaXRpdmUpCiAgICAg
LCBtX2VuZ2luZShjb25zdF9jYXN0PFFTY3JpcHRFbmdpbmVQcml2YXRlKj4oZW5naW5lKSkKLSAg
ICAsIG1fdmFsdWUobV9lbmdpbmUtPm1ha2VKU1ZhbHVlKHZhbHVlKSkKKyAgICAsIHUobV9lbmdp
bmUtPm1ha2VKU1ZhbHVlKHZhbHVlKSkKIHsKICAgICBRX0FTU0VSVChlbmdpbmUpOwotICAgIEpT
VmFsdWVQcm90ZWN0KCptX2VuZ2luZSwgbV92YWx1ZSk7CisgICAgSlNWYWx1ZVByb3RlY3QoKm1f
ZW5naW5lLCB1Lm1fdmFsdWUpOwogfQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFs
dWVQcml2YXRlKGNvbnN0IFFTY3JpcHRFbmdpbmVQcml2YXRlKiBlbmdpbmUsIHFzcmVhbCB2YWx1
ZSkKICAgICA6IG1fc3RhdGUoSlNQcmltaXRpdmUpCiAgICAgLCBtX2VuZ2luZShjb25zdF9jYXN0
PFFTY3JpcHRFbmdpbmVQcml2YXRlKj4oZW5naW5lKSkKLSAgICAsIG1fdmFsdWUobV9lbmdpbmUt
Pm1ha2VKU1ZhbHVlKHZhbHVlKSkKKyAgICAsIHUobV9lbmdpbmUtPm1ha2VKU1ZhbHVlKHZhbHVl
KSkKIHsKICAgICBRX0FTU0VSVChlbmdpbmUpOwotICAgIEpTVmFsdWVQcm90ZWN0KCptX2VuZ2lu
ZSwgbV92YWx1ZSk7CisgICAgSlNWYWx1ZVByb3RlY3QoKm1fZW5naW5lLCB1Lm1fdmFsdWUpOwog
fQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKGNvbnN0IFFTY3Jp
cHRFbmdpbmVQcml2YXRlKiBlbmdpbmUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQogICAgIDogbV9z
dGF0ZShKU1ByaW1pdGl2ZSkKICAgICAsIG1fZW5naW5lKGNvbnN0X2Nhc3Q8UVNjcmlwdEVuZ2lu
ZVByaXZhdGUqPihlbmdpbmUpKQotICAgICwgbV92YWx1ZShtX2VuZ2luZS0+bWFrZUpTVmFsdWUo
dmFsdWUpKQorICAgICwgdShtX2VuZ2luZS0+bWFrZUpTVmFsdWUodmFsdWUpKQogewogICAgIFFf
QVNTRVJUKGVuZ2luZSk7Ci0gICAgSlNWYWx1ZVByb3RlY3QoKm1fZW5naW5lLCBtX3ZhbHVlKTsK
KyAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIHUubV92YWx1ZSk7CiB9CiAKIFFTY3JpcHRW
YWx1ZVByaXZhdGU6OlFTY3JpcHRWYWx1ZVByaXZhdGUoY29uc3QgUVNjcmlwdEVuZ2luZVByaXZh
dGUqIGVuZ2luZSwgUVNjcmlwdFZhbHVlOjpTcGVjaWFsVmFsdWUgdmFsdWUpCiAgICAgOiBtX3N0
YXRlKEpTUHJpbWl0aXZlKQogICAgICwgbV9lbmdpbmUoY29uc3RfY2FzdDxRU2NyaXB0RW5naW5l
UHJpdmF0ZSo+KGVuZ2luZSkpCi0gICAgLCBtX3ZhbHVlKG1fZW5naW5lLT5tYWtlSlNWYWx1ZSh2
YWx1ZSkpCisgICAgLCB1KG1fZW5naW5lLT5tYWtlSlNWYWx1ZSh2YWx1ZSkpCiB7CiAgICAgUV9B
U1NFUlQoZW5naW5lKTsKLSAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIG1fdmFsdWUpOwor
ICAgIEpTVmFsdWVQcm90ZWN0KCptX2VuZ2luZSwgdS5tX3ZhbHVlKTsKIH0KIAogUVNjcmlwdFZh
bHVlUHJpdmF0ZTo6UVNjcmlwdFZhbHVlUHJpdmF0ZShjb25zdCBRU2NyaXB0RW5naW5lUHJpdmF0
ZSogZW5naW5lLCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIDogbV9zdGF0ZShKU1ZhbHVlKQogICAg
ICwgbV9lbmdpbmUoY29uc3RfY2FzdDxRU2NyaXB0RW5naW5lUHJpdmF0ZSo+KGVuZ2luZSkpCi0g
ICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgICwgdSh2YWx1ZSkKIHsKICAgICBRX0FTU0VSVChlbmdp
bmUpOwogICAgIFFfQVNTRVJUKHZhbHVlKTsKLSAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUs
IG1fdmFsdWUpOworICAgIEpTVmFsdWVQcm90ZWN0KCptX2VuZ2luZSwgdS5tX3ZhbHVlKTsKIH0K
IAotUVNjcmlwdFZhbHVlUHJpdmF0ZTo6UVNjcmlwdFZhbHVlUHJpdmF0ZShjb25zdCBRU2NyaXB0
RW5naW5lUHJpdmF0ZSogZW5naW5lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU09iamVjdFJlZiBvYmpl
Y3QpCitRU2NyaXB0VmFsdWVQcml2YXRlOjpRU2NyaXB0VmFsdWVQcml2YXRlKGNvbnN0IFFTY3Jp
cHRFbmdpbmVQcml2YXRlKiBlbmdpbmUsIEpTT2JqZWN0UmVmIG9iamVjdCkKICAgICA6IG1fc3Rh
dGUoSlNPYmplY3QpCiAgICAgLCBtX2VuZ2luZShjb25zdF9jYXN0PFFTY3JpcHRFbmdpbmVQcml2
YXRlKj4oZW5naW5lKSkKLSAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgLCBtX29iamVjdChvYmpl
Y3QpCisgICAgLCB1KG9iamVjdCkKIHsKICAgICBRX0FTU0VSVChlbmdpbmUpOwotICAgIFFfQVNT
RVJUKHZhbHVlKTsKICAgICBRX0FTU0VSVChvYmplY3QpOwotICAgIEpTVmFsdWVQcm90ZWN0KCpt
X2VuZ2luZSwgbV92YWx1ZSk7CisgICAgSlNWYWx1ZVByb3RlY3QoKm1fZW5naW5lLCBvYmplY3Qp
OwogfQogCiBib29sIFFTY3JpcHRWYWx1ZVByaXZhdGU6OmlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlICE9IEludmFsaWQ7IH0KQEAgLTQyMiwxMSArNDI2LDExIEBAIFFTdHJpbmcgUVNj
cmlwdFZhbHVlUHJpdmF0ZTo6dG9TdHJpbmcoKSBjb25zdAogICAgIGNhc2UgSW52YWxpZDoKICAg
ICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKICAgICBjYXNlIENCb29sOgotICAgICAgICByZXR1cm4g
bV9udW1iZXIgPyBRU3RyaW5nOjpmcm9tTGF0aW4xKCJ0cnVlIikgOiBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJmYWxzZSIpOworICAgICAgICByZXR1cm4gdS5tX2Jvb2wgPyBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJ0cnVlIikgOiBRU3RyaW5nOjpmcm9tTGF0aW4xKCJmYWxzZSIpOwogICAgIGNhc2UgQ1N0
cmluZzoKLSAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworICAgICAgICByZXR1cm4gKnUubV9zdHJp
bmc7CiAgICAgY2FzZSBDTnVtYmVyOgotICAgICAgICByZXR1cm4gUVNjcmlwdENvbnZlcnRlcjo6
dG9TdHJpbmcobV9udW1iZXIpOworICAgICAgICByZXR1cm4gUVNjcmlwdENvbnZlcnRlcjo6dG9T
dHJpbmcodS5tX251bWJlcik7CiAgICAgY2FzZSBDTnVsbDoKICAgICAgICAgcmV0dXJuIFFTdHJp
bmc6OmZyb21MYXRpbjEoIm51bGwiKTsKICAgICBjYXNlIENVbmRlZmluZWQ6CkBAIC00NTAsOSAr
NDU0LDkgQEAgcXNyZWFsIFFTY3JpcHRWYWx1ZVByaXZhdGU6OnRvTnVtYmVyKCkgY29uc3QKICAg
ICBjYXNlIEpTT2JqZWN0OgogICAgICAgICByZXR1cm4gSlNWYWx1ZVRvTnVtYmVyKCptX2VuZ2lu
ZSwgKnRoaXMsIC8qIGV4Y2VwdGlvbiAqLyAwKTsKICAgICBjYXNlIENOdW1iZXI6Ci0gICAgICAg
IHJldHVybiBtX251bWJlcjsKKyAgICAgICAgcmV0dXJuIHUubV9udW1iZXI7CiAgICAgY2FzZSBD
Qm9vbDoKLSAgICAgICAgcmV0dXJuIG1fbnVtYmVyID8gMSA6IDA7CisgICAgICAgIHJldHVybiB1
Lm1fYm9vbCA/IDEgOiAwOwogICAgIGNhc2UgQ051bGw6CiAgICAgY2FzZSBJbnZhbGlkOgogICAg
ICAgICByZXR1cm4gMDsKQEAgLTQ2MCwxNSArNDY0LDE1IEBAIHFzcmVhbCBRU2NyaXB0VmFsdWVQ
cml2YXRlOjp0b051bWJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBxUU5hTigpOwogICAgIGNh
c2UgQ1N0cmluZzoKICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgcXNyZWFsIHJlc3VsdCA9IG1f
c3RyaW5nLnRvRG91YmxlKCZvayk7CisgICAgICAgIHFzcmVhbCByZXN1bHQgPSB1Lm1fc3RyaW5n
LT50b0RvdWJsZSgmb2spOwogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgICAgICByZXN1bHQgPSBtX3N0cmluZy50b0ludCgmb2ssIDApOyAvLyBUcnkgb3Ro
ZXIgYmFzZXMuCisgICAgICAgIHJlc3VsdCA9IHUubV9zdHJpbmctPnRvSW50KCZvaywgMCk7IC8v
IFRyeSBvdGhlciBiYXNlcy4KICAgICAgICAgaWYgKG9rKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICAgICAgaWYgKG1fc3RyaW5nID09ICJJbmZpbml0eSIgfHwgbV9zdHJpbmcgPT0g
Ii1JbmZpbml0eSIpCisgICAgICAgIGlmICgqdS5tX3N0cmluZyA9PSAiSW5maW5pdHkiIHx8ICp1
Lm1fc3RyaW5nID09ICItSW5maW5pdHkiKQogICAgICAgICAgICAgcmV0dXJuIHFJbmYoKTsKLSAg
ICAgICAgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpID8gcVFOYU4oKSA6IDA7CisgICAgICAgIHJl
dHVybiB1Lm1fc3RyaW5nLT5sZW5ndGgoKSA/IHFRTmFOKCkgOiAwOwogICAgIH0KIAogICAgIFFf
QVNTRVJUX1goZmFsc2UsICJ0b051bWJlcigpIiwgIk5vdCBhbGwgc3RhdGVzIGFyZSBpbmNsdWRl
ZCBpbiB0aGUgcHJldmlvdXMgc3dpdGNoIHN0YXRlbWVudC4iKTsKQEAgLTQ4NCwxNSArNDg4LDE1
IEBAIGJvb2wgUVNjcmlwdFZhbHVlUHJpdmF0ZTo6dG9Cb29sKCkgY29uc3QKICAgICBjYXNlIEpT
T2JqZWN0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENOdW1iZXI6Ci0gICAgICAg
IHJldHVybiAhKHFJc05hTihtX251bWJlcikgfHwgIW1fbnVtYmVyKTsKKyAgICAgICAgcmV0dXJu
ICEocUlzTmFOKHUubV9udW1iZXIpIHx8ICF1Lm1fbnVtYmVyKTsKICAgICBjYXNlIENCb29sOgot
ICAgICAgICByZXR1cm4gbV9udW1iZXI7CisgICAgICAgIHJldHVybiB1Lm1fYm9vbDsKICAgICBj
YXNlIEludmFsaWQ6CiAgICAgY2FzZSBDTnVsbDoKICAgICBjYXNlIENVbmRlZmluZWQ6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENTdHJpbmc6Ci0gICAgICAgIHJldHVybiBtX3N0
cmluZy5sZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIHUubV9zdHJpbmctPmxlbmd0aCgpOwogICAg
IH0KIAogICAgIFFfQVNTRVJUX1goZmFsc2UsICJ0b0Jvb2woKSIsICJOb3QgYWxsIHN0YXRlcyBh
cmUgaW5jbHVkZWQgaW4gdGhlIHByZXZpb3VzIHN3aXRjaCBzdGF0ZW1lbnQuIik7CkBAIC01NTEs
MjMgKzU1NSwyMyBAQCBRU2NyaXB0VmFsdWVQcml2YXRlKiBRU2NyaXB0VmFsdWVQcml2YXRlOjp0
b09iamVjdChRU2NyaXB0RW5naW5lUHJpdmF0ZSogZW5naW5lKQogICAgIGNhc2UgQ1N0cmluZzoK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gRXhjZXB0aW9uIGNhbid0IG9jY3VyIGhlcmUuCi0g
ICAgICAgICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoKmVuZ2luZSwg
ZW5naW5lLT5tYWtlSlNWYWx1ZShtX3N0cmluZyksIC8qIGV4Y2VwdGlvbiAqLyAwKTsKKyAgICAg
ICAgICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdCgqZW5naW5lLCBlbmdp
bmUtPm1ha2VKU1ZhbHVlKCp1Lm1fc3RyaW5nKSwgLyogZXhjZXB0aW9uICovIDApOwogICAgICAg
ICAgICAgUV9BU1NFUlQob2JqZWN0KTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgUVNjcmlwdFZh
bHVlUHJpdmF0ZShlbmdpbmUsIG9iamVjdCwgb2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgUVNjcmlwdFZhbHVlUHJpdmF0ZShlbmdpbmUsIG9iamVjdCk7CiAgICAgICAgIH0KICAgICBj
YXNlIENOdW1iZXI6CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbiBjYW4ndCBv
Y2N1ciBoZXJlLgotICAgICAgICAgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2Jq
ZWN0KCplbmdpbmUsIGVuZ2luZS0+bWFrZUpTVmFsdWUobV9udW1iZXIpLCAvKiBleGNlcHRpb24g
Ki8gMCk7CisgICAgICAgICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3Qo
KmVuZ2luZSwgZW5naW5lLT5tYWtlSlNWYWx1ZSh1Lm1fbnVtYmVyKSwgLyogZXhjZXB0aW9uICov
IDApOwogICAgICAgICAgICAgUV9BU1NFUlQob2JqZWN0KTsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgUVNjcmlwdFZhbHVlUHJpdmF0ZShlbmdpbmUsIG9iamVjdCwgb2JqZWN0KTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgUVNjcmlwdFZhbHVlUHJpdmF0ZShlbmdpbmUsIG9iamVjdCk7CiAgICAg
ICAgIH0KICAgICBjYXNlIENCb29sOgogICAgICAgICB7CiAgICAgICAgICAgICAvLyBFeGNlcHRp
b24gY2FuJ3Qgb2NjdXJlIGhlcmUuCi0gICAgICAgICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBK
U1ZhbHVlVG9PYmplY3QoKmVuZ2luZSwgZW5naW5lLT5tYWtlSlNWYWx1ZShzdGF0aWNfY2FzdDxi
b29sPihtX251bWJlcikpLCAvKiBleGNlcHRpb24gKi8gMCk7CisgICAgICAgICAgICBKU09iamVj
dFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoKmVuZ2luZSwgZW5naW5lLT5tYWtlSlNWYWx1
ZSh1Lm1fYm9vbCksIC8qIGV4Y2VwdGlvbiAqLyAwKTsKICAgICAgICAgICAgIFFfQVNTRVJUKG9i
amVjdCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFFTY3JpcHRWYWx1ZVByaXZhdGUoZW5naW5l
LCBvYmplY3QsIG9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFFTY3JpcHRWYWx1ZVBy
aXZhdGUoZW5naW5lLCBvYmplY3QpOwogICAgICAgICB9CiAgICAgY2FzZSBKU1ZhbHVlOgogICAg
ICAgICBpZiAocmVmaW5lZEpTVmFsdWUoKSAhPSBKU1ByaW1pdGl2ZSkKQEAgLTYxNSw5ICs2MTks
OSBAQCBib29sIFFTY3JpcHRWYWx1ZVByaXZhdGU6OmVxdWFscyhRU2NyaXB0VmFsdWVQcml2YXRl
KiBvdGhlcikKIAogICAgIGlmICgobV9zdGF0ZSA9PSBvdGhlci0+bV9zdGF0ZSkgJiYgIWlzSlNC
YXNlZCgpKSB7CiAgICAgICAgIGlmIChpc051bWJlckJhc2VkKCkpCi0gICAgICAgICAgICByZXR1
cm4gbV9udW1iZXIgPT0gb3RoZXItPm1fbnVtYmVyOworICAgICAgICAgICAgcmV0dXJuIHUubV9u
dW1iZXIgPT0gb3RoZXItPnUubV9udW1iZXI7CiAgICAgICAgIFFfQVNTRVJUKGlzU3RyaW5nQmFz
ZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX3N0cmluZyA9PSBvdGhlci0+bV9zdHJpbmc7CisgICAg
ICAgIHJldHVybiAqdS5tX3N0cmluZyA9PSAqKG90aGVyLT51Lm1fc3RyaW5nKTsKICAgICB9CiAK
ICAgICBpZiAoIWlzSlNCYXNlZCgpICYmICFvdGhlci0+aXNKU0Jhc2VkKCkpCkBAIC02NTUsNyAr
NjU5LDcgQEAgYm9vbCBRU2NyaXB0VmFsdWVQcml2YXRlOjpzdHJpY3RseUVxdWFscyhRU2NyaXB0
VmFsdWVQcml2YXRlKiBvdGhlcikKICAgICB9CiAgICAgaWYgKGlzU3RyaW5nQmFzZWQoKSkgewog
ICAgICAgICBpZiAob3RoZXItPmlzU3RyaW5nQmFzZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBt
X3N0cmluZyA9PSBvdGhlci0+bV9zdHJpbmc7CisgICAgICAgICAgICByZXR1cm4gKnUubV9zdHJp
bmcgPT0gKihvdGhlci0+dS5tX3N0cmluZyk7CiAgICAgICAgIGlmIChvdGhlci0+aXNKU0Jhc2Vk
KCkpIHsKICAgICAgICAgICAgIGFzc2lnbkVuZ2luZShvdGhlci0+ZW5naW5lKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVJc1N0cmljdEVxdWFsKCptX2VuZ2luZSwgKnRoaXMsICpvdGhl
cik7CkBAIC02NjMsNyArNjY3LDcgQEAgYm9vbCBRU2NyaXB0VmFsdWVQcml2YXRlOjpzdHJpY3Rs
eUVxdWFscyhRU2NyaXB0VmFsdWVQcml2YXRlKiBvdGhlcikKICAgICB9CiAgICAgaWYgKGlzTnVt
YmVyQmFzZWQoKSkgewogICAgICAgICBpZiAob3RoZXItPmlzTnVtYmVyQmFzZWQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBtX251bWJlciA9PSBvdGhlci0+bV9udW1iZXI7CisgICAgICAgICAgICBy
ZXR1cm4gdS5tX251bWJlciA9PSBvdGhlci0+dS5tX251bWJlcjsKICAgICAgICAgaWYgKG90aGVy
LT5pc0pTQmFzZWQoKSkgewogICAgICAgICAgICAgYXNzaWduRW5naW5lKG90aGVyLT5lbmdpbmUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZUlzU3RyaWN0RXF1YWwoKm1fZW5naW5lLCAq
dGhpcywgKm90aGVyKTsKQEAgLTY5MCwxMyArNjk0LDE0IEBAIGJvb2wgUVNjcmlwdFZhbHVlUHJp
dmF0ZTo6YXNzaWduRW5naW5lKFFTY3JpcHRFbmdpbmVQcml2YXRlKiBlbmdpbmUpCiAgICAgSlNW
YWx1ZVJlZiB2YWx1ZTsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICBjYXNlIENCb29sOgot
ICAgICAgICB2YWx1ZSA9IGVuZ2luZS0+bWFrZUpTVmFsdWUoc3RhdGljX2Nhc3Q8Ym9vbD4obV9u
dW1iZXIpKTsKKyAgICAgICAgdmFsdWUgPSBlbmdpbmUtPm1ha2VKU1ZhbHVlKHUubV9ib29sKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU3RyaW5nOgotICAgICAgICB2YWx1ZSA9IGVuZ2lu
ZS0+bWFrZUpTVmFsdWUobV9zdHJpbmcpOworICAgICAgICB2YWx1ZSA9IGVuZ2luZS0+bWFrZUpT
VmFsdWUoKnUubV9zdHJpbmcpOworICAgICAgICBkZWxldGUgdS5tX3N0cmluZzsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDTnVtYmVyOgotICAgICAgICB2YWx1ZSA9IGVuZ2luZS0+bWFrZUpT
VmFsdWUobV9udW1iZXIpOworICAgICAgICB2YWx1ZSA9IGVuZ2luZS0+bWFrZUpTVmFsdWUodS5t
X251bWJlcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ051bGw6CiAgICAgICAgIHZhbHVl
ID0gZW5naW5lLT5tYWtlSlNWYWx1ZShRU2NyaXB0VmFsdWU6Ok51bGxWYWx1ZSk7CkBAIC03MTMs
NyArNzE4LDggQEAgYm9vbCBRU2NyaXB0VmFsdWVQcml2YXRlOjphc3NpZ25FbmdpbmUoUVNjcmlw
dEVuZ2luZVByaXZhdGUqIGVuZ2luZSkKICAgICB9CiAgICAgbV9lbmdpbmUgPSBlbmdpbmU7CiAg
ICAgbV9zdGF0ZSA9IEpTUHJpbWl0aXZlOwotICAgIHNldFZhbHVlKHZhbHVlKTsKKyAgICB1Lm1f
dmFsdWUgPSB2YWx1ZTsKKyAgICBKU1ZhbHVlUHJvdGVjdCgqbV9lbmdpbmUsIHZhbHVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzYzLDIyICs3NjksMTUgQEAgUVNjcmlwdEVuZ2luZVBy
aXZhdGUqIFFTY3JpcHRWYWx1ZVByaXZhdGU6OmVuZ2luZSgpIGNvbnN0CiBRU2NyaXB0VmFsdWVQ
cml2YXRlOjpvcGVyYXRvciBKU1ZhbHVlUmVmKCkgY29uc3QKIHsKICAgICBRX0FTU0VSVChpc0pT
QmFzZWQoKSk7Ci0gICAgcmV0dXJuIG1fdmFsdWU7CisgICAgUV9BU1NFUlQodS5tX3ZhbHVlKTsK
KyAgICByZXR1cm4gdS5tX3ZhbHVlOwogfQogCiBRU2NyaXB0VmFsdWVQcml2YXRlOjpvcGVyYXRv
ciBKU09iamVjdFJlZigpIGNvbnN0CiB7CiAgICAgUV9BU1NFUlQobV9zdGF0ZSA9PSBKU09iamVj
dCk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0OwotfQotCi12b2lkIFFTY3JpcHRWYWx1ZVByaXZhdGU6
OnNldFZhbHVlKEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0gICAgaWYgKG1fdmFsdWUpCi0gICAgICAg
IEpTVmFsdWVVbnByb3RlY3QoKm1fZW5naW5lLCBtX3ZhbHVlKTsKLSAgICBpZiAodmFsdWUpCi0g
ICAgICAgIEpTVmFsdWVQcm90ZWN0KCptX2VuZ2luZSwgdmFsdWUpOwotICAgIG1fdmFsdWUgPSB2
YWx1ZTsKKyAgICBRX0FTU0VSVCh1Lm1fb2JqZWN0KTsKKyAgICByZXR1cm4gdS5tX29iamVjdDsK
IH0KIAogLyohCkBAIC04MDYsMTAgKzgwNSw5IEBAIFFTY3JpcHRWYWx1ZVByaXZhdGU6OlN0YXRl
IFFTY3JpcHRWYWx1ZVByaXZhdGU6OnJlZmluZWRKU1ZhbHVlKCkKICAgICBpZiAoIUpTVmFsdWVJ
c09iamVjdCgqbV9lbmdpbmUsICp0aGlzKSkgewogICAgICAgICBtX3N0YXRlID0gSlNQcmltaXRp
dmU7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVuIEpTVmFsdWVS
ZWYgYW5kIEpTT2JqZWN0UmVmIGlzIG9ubHkgaW4gdGhlaXIgdHlwZSwgYmluYXJ5d2lzZSBpdCBp
cyB0aGUgc2FtZS4KKyAgICAgICAgLy8gQXMgbV92YWx1ZSBhbmQgbV9vYmplY3QgYXJlIHN0b3Jl
ZCBpbiB0aGUgdSB1bmlvbiwgaXQgaXMgZW5vdWdoIHRvIGNoYW5nZSB0aGUgbV9zdGF0ZSBvbmx5
LgogICAgICAgICBtX3N0YXRlID0gSlNPYmplY3Q7Ci0gICAgICAgIC8vIFdlIGFyZSBzdXJlIHRo
YXQgdmFsdWUgaXMgYW4gSlNPYmplY3QsIHNvIHdlIGNhbiBjb25zdF9jYXN0IHNhZmVseSB3aXRo
b3V0Ci0gICAgICAgIC8vIGNhbGxpbmcgSlNDIEMgQVBJIChKU1ZhbHVlVG9PYmplY3QoKm1fZW5n
aW5lLCAqdGhpcywgLyogZXhjZXB0aW9ucyAqLyAwKSkuCi0gICAgICAgIG1fb2JqZWN0ID0gY29u
c3RfY2FzdDxKU09iamVjdFJlZj4obV92YWx1ZSk7CiAgICAgfQogICAgIHJldHVybiBtX3N0YXRl
OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>