<?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>125779</bug_id>
          
          <creation_ts>2013-12-16 06:56:21 -0800</creation_ts>
          <short_desc>[curl] Add storage limit to cache manager</short_desc>
          <delta_ts>2014-01-23 09:48:49 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mátyás Mustoha">mmatyas</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>galpeter</cc>
    
    <cc>peavo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>960049</commentid>
    <comment_count>0</comment_count>
    <who name="Mátyás Mustoha">mmatyas</who>
    <bug_when>2013-12-16 06:56:21 -0800</bug_when>
    <thetext>Sets a local disc storage limit for the cache manager used by the curl network backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960051</commentid>
    <comment_count>1</comment_count>
      <attachid>219314</attachid>
    <who name="Mátyás Mustoha">mmatyas</who>
    <bug_when>2013-12-16 07:00:33 -0800</bug_when>
    <thetext>Created attachment 219314
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961368</commentid>
    <comment_count>2</comment_count>
      <attachid>219646</attachid>
    <who name="Mátyás Mustoha">mmatyas</who>
    <bug_when>2013-12-19 06:32:44 -0800</bug_when>
    <thetext>Created attachment 219646
Proposed patch 2

Fixed entry size function, added a method for changing storage size and did some refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967253</commentid>
    <comment_count>3</comment_count>
    <who name="Mátyás Mustoha">mmatyas</who>
    <bug_when>2014-01-13 05:05:55 -0800</bug_when>
    <thetext>anyone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970341</commentid>
    <comment_count>4</comment_count>
      <attachid>219646</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-21 11:36:39 -0800</bug_when>
    <thetext>Comment on attachment 219646
Proposed patch 2

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

This change seems fine, but I think it could be a little better if we used C++11 auto types. I&apos;m also not sure the &apos;long long&apos; declaration is a good idea here.

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.cpp:345
&gt; +        long long contentFileSize;

It might be better to use a specific size here, such as uint64_t/int64_t.

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:169
&gt; +    ListHashSet&lt;String&gt;::iterator end = m_LRUEntryList.end();

Make these &apos;auto&apos;. In fact, they should probably be const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971111</commentid>
    <comment_count>5</comment_count>
      <attachid>221972</attachid>
    <who name="Mátyás Mustoha">mmatyas</who>
    <bug_when>2014-01-23 05:35:20 -0800</bug_when>
    <thetext>Created attachment 221972
Proposed patch 3

Thanks for the review! I changed the iterator to auto in the patch, could you check if it&apos;s fine like that?
I agree that &apos;long long&apos; isn&apos;t specific enough, but getFileSize() expects a long long by reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971175</commentid>
    <comment_count>6</comment_count>
      <attachid>221972</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-23 09:20:30 -0800</bug_when>
    <thetext>Comment on attachment 221972
Proposed patch 3

r=me. Thanks for revising the original patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971198</commentid>
    <comment_count>7</comment_count>
      <attachid>221972</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-23 09:48:47 -0800</bug_when>
    <thetext>Comment on attachment 221972
Proposed patch 3

Clearing flags on attachment: 221972

Committed r162618: &lt;http://trac.webkit.org/changeset/162618&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971199</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-23 09:48:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219314</attachid>
            <date>2013-12-16 07:00:33 -0800</date>
            <delta_ts>2013-12-19 06:32:44 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>diff.diff</filename>
            <type>text/plain</type>
            <size>10322</size>
            <attacher name="Mátyás Mustoha">mmatyas</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YmJlZWZlLi5hMDlhZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTMtMTItMTYgIE3DoXR5w6FzIE11c3RvaGEgIDxtbWF0eWFzQGluZi51LXN6ZWdlZC5o
dT4KKworICAgICAgICBbY3VybF0gQWRkIHN0b3JhZ2UgbGltaXQgdG8gY2FjaGUgbWFuYWdlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1Nzc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0cyBhIGxv
Y2FsIGRpc2Mgc3RvcmFnZSBsaW1pdCBmb3IgdGhlIGNhY2hlIG1hbmFnZXIKKyAgICAgICAgdXNl
ZCBieSB0aGUgY3VybCBuZXR3b3JrIGJhY2tlbmQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hl
RW50cnk6OkN1cmxDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5
Ojppc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6Y29udGVudFNp
emUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OkN1cmxDYWNoZU1hbmFnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmFkZEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVN
YW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hl
TWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFu
YWdlcjo6aW52YWxpZGF0ZUNhY2hlRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hl
TWFuYWdlcjo6bG9hZENhY2hlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFu
YWdlcjo6bWFrZVJvb21Gb3JOZXdFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuaDoKKwogMjAxMy0xMi0xMSAgVGhpYWdvIGRlIEJhcnJvcyBM
YWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBJbXByb3Zp
bmcgY3JlYXRlT2ZmZXIgYW5kIGNyZWF0ZUFuc3dlciBMYXlvdXRUZXN0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAK
aW5kZXggY2E4ZGIxYS4uOWFhNzExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC00Nyw2ICs0Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIEN1cmxDYWNoZUVudHJ5OjpDdXJsQ2FjaGVFbnRyeShjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjYWNoZURpcikKICAgICA6IG1faGVhZGVyRmls
ZW5hbWUoY2FjaGVEaXIpCiAgICAgLCBtX2NvbnRlbnRGaWxlbmFtZShjYWNoZURpcikKKyAgICAs
IG1fY29udGVudFNpemUoLTEpCiAgICAgLCBtX2V4cGlyZURhdGUoLTEpCiAgICAgLCBtX2hlYWRl
ckluTWVtb3J5KGZhbHNlKQogewpAQCAtNzksNiArODAsOSBAQCBib29sIEN1cmxDYWNoZUVudHJ5
Ojppc0NhY2hlZCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoY29u
dGVudFNpemUoKSA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zMzksNCArMzQzLDI0IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnBhcnNlUmVz
cG9uc2VIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJldHVybiB0cnVl
OwogfQogCitsb25nIGxvbmcgQ3VybENhY2hlRW50cnk6OmNvbnRlbnRTaXplKCkKK3sKKyAgICBp
ZiAobV9jb250ZW50U2l6ZSA9PSAtMSkgeworICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5w
dXRGaWxlID0gb3BlbkZpbGUobV9jb250ZW50RmlsZW5hbWUsIE9wZW5Gb3JSZWFkKTsKKyAgICAg
ICAgaWYgKCFpc0hhbmRsZVZhbGlkKGlucHV0RmlsZSkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3
b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBtX2NvbnRl
bnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fY29udGVu
dFNpemU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1fY29udGVudEZp
bGVuYW1lLCBtX2NvbnRlbnRTaXplKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNo
ZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIG1fY29udGVudEZpbGVu
YW1lLmxhdGluMSgpLmRhdGEoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRTaXplID0gLTE7Cisg
ICAgICAgIH0KKworICAgICAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gbV9jb250ZW50U2l6ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCA5ZDVmM2FiLi5mMGU5
ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgfkN1cmxDYWNo
ZUVudHJ5KCk7CiAKICAgICBib29sIGlzQ2FjaGVkKCk7CisgICAgbG9uZyBsb25nIGNvbnRlbnRT
aXplKCk7CiAgICAgY29uc3QgYm9vbCYgaXNJbk1lbW9yeSgpIHsgcmV0dXJuIG1faGVhZGVySW5N
ZW1vcnk7IH0KICAgICBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycygpOwogCkBAIC02NCw2
ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faGVhZGVyRmlsZW5hbWU7CiAgICAgU3Ry
aW5nIG1fY29udGVudEZpbGVuYW1lOwogCisgICAgbG9uZyBsb25nIG1fY29udGVudFNpemU7IC8v
IGdldEZpbGVTaXplKCkgcmV0dXJucyBsb25nIGxvbmcKICAgICBkb3VibGUgbV9leHBpcmVEYXRl
OwogICAgIGJvb2wgbV9oZWFkZXJJbk1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDhh
OGMwZTMuLjYzOGI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAor
I2RlZmluZSBTVE9SQUdFX0xJTUlUIDUyNDI4ODAwIC8vIDUwICogMTAyNCAqIDEwMjQgYnl0ZXMK
ICNkZWZpbmUgSU9fQlVGRkVSU0laRSA0MDk2CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4
LDYgKzQ5LDcgQEAgQ3VybENhY2hlTWFuYWdlciYgQ3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFu
Y2UoKQogCiBDdXJsQ2FjaGVNYW5hZ2VyOjpDdXJsQ2FjaGVNYW5hZ2VyKCkKICAgICA6IG1fZGlz
YWJsZWQodHJ1ZSkKKyAgICAsIG1fY3VycmVudFN0b3JhZ2VTaXplKDApCiB7CiAgICAgLy8gY2Fs
bCBzZXRDYWNoZURpcmVjdG9yeSgpIHRvIGVuYWJsZQogfQpAQCAtMTI5LDE1ICsxMzEsMzQgQEAg
dm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgICAgICAtLWVuZDsgLy8gbGFz
dCBsaW5lIGlzIGVtcHR5CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAgICBTdHJpbmcg
dXJsID0gaXQtPnN0cmlwV2hpdGVTcGFjZSgpOwotCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxD
dXJsQ2FjaGVFbnRyeT4gY2FjaGVFbnRyeShuZXcgQ3VybENhY2hlRW50cnkodXJsLCBtX2NhY2hl
RGlyKSk7Ci0gICAgICAgIGlmIChjYWNoZUVudHJ5LT5pc0NhY2hlZCgpKQorCisgICAgICAgIGlm
IChjYWNoZUVudHJ5LT5pc0NhY2hlZCgpICYmIGNhY2hlRW50cnktPmNvbnRlbnRTaXplKCkgPCBT
VE9SQUdFX0xJTUlUKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBjYWNo
ZUVudHJ5LT5jb250ZW50U2l6ZSgpOworICAgICAgICAgICAgbWFrZVJvb21Gb3JOZXdFbnRyeSgp
OworICAgICAgICAgICAgbV9MUlVMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAgICAg
ICAgICAgICBtX2luZGV4LnNldCh1cmwsIHN0ZDo6bW92ZShjYWNoZUVudHJ5KSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgY2FjaGVFbnRyeS0+aW52YWxpZGF0ZSgpOwogCiAgICAgICAg
ICsraXQ7CiAgICAgfQogfQogCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmFkZEVudHJ5KFN0cmlu
ZyB1cmwsIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4gY2FjaGVFbnRyeSkKK3sKKyAg
ICBBU1NFUlQoIWNhY2hlRW50cnkpOworCisgICAgLy8gVGhlIGVudHJ5IGlzIGFscmVhZHkgY2Fj
aGVkCisgICAgaWYgKGNhY2hlRW50cnktPmlzQ2FjaGVkKCkgJiYgY2FjaGVFbnRyeS0+Y29udGVu
dFNpemUoKSA8IFNUT1JBR0VfTElNSVQpIHsKKyAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUg
Kz0gY2FjaGVFbnRyeS0+Y29udGVudFNpemUoKTsKKyAgICAgICAgbWFrZVJvb21Gb3JOZXdFbnRy
eSgpOworICAgIH0KKworICAgIG1fTFJVTGlzdC5wcmVwZW5kT3JNb3ZlVG9GaXJzdCh1cmwpOwor
ICAgIG1faW5kZXguc2V0KHVybCwgc3RkOjptb3ZlKGNhY2hlRW50cnkpKTsKK30KKwogdm9pZCBD
dXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogewogICAgIGlmIChtX2Rpc2FibGVkKQpAQCAt
MTQ2LDE2ICsxNjcsMTcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAg
IFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBw
ZW5kKCJpbmRleC5kYXQiKTsKIAorICAgIGRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7CiAgICAg
UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IG9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIE9w
ZW5Gb3JXcml0ZSk7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKICAgICAg
ICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRl
XG4iLCBpbmRleEZpbGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5
Pj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRleC5iZWdpbigpOwotICAgIEhhc2hNYXA8U3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9pbmRleC5lbmQoKTsKKyAgICBMaXN0SGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdCA9
IG1fTFJVTGlzdC5iZWdpbigpOworICAgIExpc3RIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGVu
ZCA9IG1fTFJVTGlzdC5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7Ci0gICAgICAgIGNv
bnN0IENTdHJpbmcmIHVybExhdGluMSA9IGl0LT5rZXkubGF0aW4xKCk7CisgICAgICAgIGNvbnN0
IENTdHJpbmcmIHVybExhdGluMSA9IGl0LT5sYXRpbjEoKTsKICAgICAgICAgd3JpdGVUb0ZpbGUo
aW5kZXhGaWxlLCB1cmxMYXRpbjEuZGF0YSgpLCB1cmxMYXRpbjEubGVuZ3RoKCkpOwogICAgICAg
ICB3cml0ZVRvRmlsZShpbmRleEZpbGUsICJcbiIsIDEpOwogICAgICAgICArK2l0OwpAQCAtMTcx
LDIwICsxOTMsMjMgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUqIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYKIAogICAgIFN0cmluZyB1cmwg
PSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpOwogCi0gICAgaWYgKHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KQorICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpID09IDMwNCkgewogICAgICAgICBsb2FkQ2FjaGVkRGF0YSh1cmwsIGpvYiwgcmVzcG9uc2Up
OworICAgICAgICBtX0xSVUxpc3QucHJlcGVuZE9yTW92ZVRvRmlyc3QodXJsKTsKKyAgICB9CiAg
ICAgZWxzZSBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAyMDApIHsKKyAgICAgICAg
Ly8gSW52YWxpZGF0ZSBleGlzdGluZyBlbnRyeSBvbiAyMDAKICAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4+OjppdGVyYXRvciBpdCA9IG1faW5k
ZXguZmluZCh1cmwpOwogICAgICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkKICAgICAgICAg
ICAgIGludmFsaWRhdGVDYWNoZUVudHJ5KHVybCk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEN1cmxDYWNoZUVudHJ5PiBlbnRyeShuZXcgQ3VybENhY2hlRW50cnkodXJsLCBtX2NhY2hlRGly
KSk7Ci0gICAgICAgIGJvb2wgY2FjaGVhYmxlID0gZW50cnktPnBhcnNlUmVzcG9uc2VIZWFkZXJz
KHJlc3BvbnNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5PiBjYWNo
ZUVudHJ5KG5ldyBDdXJsQ2FjaGVFbnRyeSh1cmwsIG1fY2FjaGVEaXIpKTsKKyAgICAgICAgYm9v
bCBjYWNoZWFibGUgPSBjYWNoZUVudHJ5LT5wYXJzZVJlc3BvbnNlSGVhZGVycyhyZXNwb25zZSk7
CiAgICAgICAgIGlmIChjYWNoZWFibGUpIHsKLSAgICAgICAgICAgIG1faW5kZXguc2V0KHVybCwg
c3RkOjptb3ZlKGVudHJ5KSk7CisgICAgICAgICAgICBhZGRFbnRyeSh1cmwsIHN0ZDo6bW92ZShj
YWNoZUVudHJ5KSk7CiAgICAgICAgICAgICBzYXZlUmVzcG9uc2VIZWFkZXJzKHVybCwgcmVzcG9u
c2UpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGVudHJ5LT5pbnZhbGlkYXRlKCk7Cisg
ICAgICAgICAgICBjYWNoZUVudHJ5LT5pbnZhbGlkYXRlKCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IGludmFsaWRhdGVDYWNoZUVudHJ5KHVybCk7CiB9CkBAIC0yMjYsOSArMjUxLDE2IEBAIHZvaWQg
Q3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfCiAgICAgICAgIHJldHVybjsKIAogICAgIEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4
LmZpbmQodXJsKTsKLSAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkKKyAgICBpZiAoaXQgIT0g
bV9pbmRleC5lbmQoKSkgewogICAgICAgICBpZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEo
ZGF0YSwgc2l6ZSkpCiAgICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOworCisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gc2l6ZTsK
KyAgICAgICAgICAgIG1fTFJVTGlzdC5wcmVwZW5kT3JNb3ZlVG9GaXJzdCh1cmwpOworICAgICAg
ICAgICAgbWFrZVJvb21Gb3JOZXdFbnRyeSgpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lk
IEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgU3RyaW5nJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMjQ5LDcgKzI4MSwxMSBAQCB2b2lkIEN1
cmxDYWNoZU1hbmFnZXI6OmludmFsaWRhdGVDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsKQog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4+Ojpp
dGVyYXRvciBpdCA9IG1faW5kZXguZmluZCh1cmwpOwogICAgIGlmIChpdCAhPSBtX2luZGV4LmVu
ZCgpKSB7CisgICAgICAgIGlmIChpdC0+dmFsdWUtPmNvbnRlbnRTaXplKCkgPiAwKQorICAgICAg
ICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgLT0gaXQtPnZhbHVlLT5jb250ZW50U2l6ZSgpOwor
CiAgICAgICAgIGl0LT52YWx1ZS0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX0xSVUxpc3QucmVt
b3ZlKHVybCk7CiAgICAgICAgIG1faW5kZXgucmVtb3ZlKHVybCk7CiAgICAgfQogfQpAQCAtMjY3
LDkgKzMwMywyMSBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRDYWNoZWREYXRhKGNvbnN0
IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBSZQogICAgIEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4
LmZpbmQodXJsKTsKICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkgewogICAgICAgICBpdC0+
dmFsdWUtPnNldFJlc3BvbnNlRnJvbUNhY2hlZEhlYWRlcnMocmVzcG9uc2UpOworICAgICAgICBt
X0xSVUxpc3QucHJlcGVuZE9yTW92ZVRvRmlyc3QodXJsKTsKICAgICAgICAgaWYgKCFpdC0+dmFs
dWUtPmxvYWRDYWNoZWREYXRhKGpvYikpCiAgICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRy
eSh1cmwpOwogICAgIH0KIH0KIAordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZvck5l
d0VudHJ5KCkKK3sKKyAgICBpZiAobV9kaXNhYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
d2hpbGUgKG1fY3VycmVudFN0b3JhZ2VTaXplID4gU1RPUkFHRV9MSU1JVCkgeworICAgICAgICBB
U1NFUlQobV9pbmRleC5maW5kKG1fTFJVTGlzdC5sYXN0KCkpICE9IG1faW5kZXguZW5kKCkpOwor
ICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeShtX0xSVUxpc3QubGFzdCgpKTsKKyAgICB9Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5oCmluZGV4IDY0YTkxNjkuLjA3OGY0OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDkgKzY1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzYXZlSW5kZXgoKTsKICAgICB2b2lkIGxvYWRJbmRleCgpOwogCisgICAgdm9pZCBhZGRFbnRy
eShTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4pOworICAgIHZvaWQgbWFr
ZVJvb21Gb3JOZXdFbnRyeSgpOwogICAgIHZvaWQgc2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBT
dHJpbmcmLCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVFbnRy
eShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGxvYWRDYWNoZWREYXRhKGNvbnN0IFN0cmluZyYs
IFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgTGlzdEhhc2hTZXQ8
U3RyaW5nPiBtX0xSVUxpc3Q7CisgICAgc2l6ZV90IG1fY3VycmVudFN0b3JhZ2VTaXplOwogfTsK
IAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219646</attachid>
            <date>2013-12-19 06:32:44 -0800</date>
            <delta_ts>2014-01-23 05:35:20 -0800</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>diff.diff</filename>
            <type>text/plain</type>
            <size>17204</size>
            <attacher name="Mátyás Mustoha">mmatyas</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NDcxNWE2Li5lNzA1ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTMtMTItMTkgIE3DoXR5w6FzIE11c3RvaGEgIDxtbWF0eWFzQGluZi51LXN6ZWdlZC5o
dT4KKworICAgICAgICBbY3VybF0gQWRkIHN0b3JhZ2UgbGltaXQgdG8gY2FjaGUgbWFuYWdlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1Nzc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0cyBhIGxv
Y2FsIGRpc2Mgc3RvcmFnZSBzaXplIGxpbWl0IGZvciB0aGUgY2FjaGUgbWFuYWdlcgorICAgICAg
ICB1c2VkIGJ5IHRoZSBjdXJsIG5ldHdvcmsgYmFja2VuZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hl
RW50cnk6OmlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpzYXZl
Q2FjaGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6cmVhZENhY2hl
ZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmRpZEZhaWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OnBhcnNlUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjplbnRyeVNpemUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENh
Y2hlRW50cnk6OnJlcXVlc3RIZWFkZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5h
Z2VyOjpDdXJsQ2FjaGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFn
ZXI6OnNldFN0b3JhZ2VTaXplTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFu
YWdlcjo6bG9hZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OnNh
dmVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZv
ck5ld0VudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjppbnZhbGlkYXRl
Q2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpyZWFkQ2Fj
aGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmNhY2hlRGlyZWN0b3J5
KToKKwogMjAxMy0xMi0xOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgog
CiAgICAgICAgIEFYOiBXZWJLaXQgbm90IHNlbmRpbmcgQVhNZW51Q2xvc2VkIG5vdGlmaWNhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5jcHAKaW5kZXggY2E4ZGIxYS4uMjI1NTY5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBA
IC00Nyw4ICs0Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEN1cmxDYWNoZUVudHJ5OjpDdXJs
Q2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjYWNoZURpcikKICAg
ICA6IG1faGVhZGVyRmlsZW5hbWUoY2FjaGVEaXIpCiAgICAgLCBtX2NvbnRlbnRGaWxlbmFtZShj
YWNoZURpcikKKyAgICAsIG1fZW50cnlTaXplKDApCiAgICAgLCBtX2V4cGlyZURhdGUoLTEpCi0g
ICAgLCBtX2hlYWRlckluTWVtb3J5KGZhbHNlKQorICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2Up
CiB7CiAgICAgZ2VuZXJhdGVCYXNlRmlsZW5hbWUodXJsLmxhdGluMSgpKTsKIApAQCAtNjMsMjgg
KzY0LDI2IEBAIEN1cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQogewogfQogCi0vLyBj
YWNoZSBtYW5hZ2VyIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxzZQorLy8gQ2Fj
aGUgbWFuYWdlciBzaG91bGQgaW52YWxpZGF0ZSB0aGUgZW50cnkgb24gZmFsc2UKIGJvb2wgQ3Vy
bENhY2hlRW50cnk6OmlzQ2FjaGVkKCkKIHsKICAgICBpZiAoIWZpbGVFeGlzdHMobV9jb250ZW50
RmlsZW5hbWUpIHx8ICFmaWxlRXhpc3RzKG1faGVhZGVyRmlsZW5hbWUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoIW1faGVhZGVySW5NZW1vcnkpIHsKKyAgICBpZiAoIW1faGVh
ZGVyUGFyc2VkKSB7CiAgICAgICAgIGlmICghbG9hZFJlc3BvbnNlSGVhZGVycygpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtX2V4cGlyZURhdGUgPCBjdXJy
ZW50VGltZU1TKCkpIHsKLSAgICAgICAgbV9oZWFkZXJJbk1lbW9yeSA9IGZhbHNlOworICAgICAg
ICBtX2hlYWRlclBhcnNlZCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgaWYgKCFlbnRyeVNpemUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi1IVFRQSGVhZGVyTWFwJiBDdXJsQ2FjaGVFbnRyeTo6cmVxdWVzdEhlYWRl
cnMoKQotewotICAgIHJldHVybiBtX3JlcXVlc3RIZWFkZXJzOworICAgIHJldHVybiB0cnVlOwog
fQogCiBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlQ2FjaGVkRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKQEAgLTk1LDE0ICs5NCwxNCBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojpz
YXZlQ2FjaGVkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIGFwcGVuZAorICAgIC8vIEFwcGVuZAogICAgIHNl
ZWtGaWxlKGNvbnRlbnRGaWxlLCAwLCBTZWVrRnJvbUVuZCk7CiAgICAgd3JpdGVUb0ZpbGUoY29u
dGVudEZpbGUsIGRhdGEsIHNpemUpOwogICAgIGNsb3NlRmlsZShjb250ZW50RmlsZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRDYWNoZWREYXRhKFJl
c291cmNlSGFuZGxlKiBqb2IpCitib29sIEN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YShS
ZXNvdXJjZUhhbmRsZSogam9iKQogewogICAgIEFTU0VSVChqb2ItPmNsaWVudCgpKTsKIApAQCAt
MTYxLDcgKzE2MCw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMo
KQogICAgIHJldHVybiBwYXJzZVJlc3BvbnNlSGVhZGVycyhtX2NhY2hlZFJlc3BvbnNlKTsKIH0K
IAotLy8gc2V0IHJlc3BvbnNlIGhlYWRlcnMgZnJvbSBtZW1vcnkKKy8vIFNldCByZXNwb25zZSBo
ZWFkZXJzIGZyb20gbWVtb3J5CiB2b2lkIEN1cmxDYWNoZUVudHJ5OjpzZXRSZXNwb25zZUZyb21D
YWNoZWRIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJlc3BvbnNl
LnNldEhUVFBTdGF0dXNDb2RlKDMwNCk7CkBAIC0xOTMsMTIgKzE5MiwxMiBAQCB2b2lkIEN1cmxD
YWNoZUVudHJ5OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogCiB2b2lkIEN1cmxDYWNoZUVudHJ5OjpkaWRGYWlsKCkKIHsKLSAgICAvLyB0
aGUgY2FjaGUgbWFuYWdlciB3aWxsIGNhbGwgaW52YWxpZGF0ZSgpCisgICAgLy8gVGhlIGNhY2hl
IG1hbmFnZXIgd2lsbCBjYWxsIGludmFsaWRhdGUoKQogfQogCiB2b2lkIEN1cmxDYWNoZUVudHJ5
OjpkaWRGaW5pc2hMb2FkaW5nKCkKIHsKLSAgICAvLyBub3RoaW5nIHRvIGRvIGhlcmUgeWV0Cisg
ICAgLy8gTm90aGluZyB0byBkbyBoZXJlIHlldAogfQogCiB2b2lkIEN1cmxDYWNoZUVudHJ5Ojpn
ZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwpCkBAIC0yMTYsNyArMjE1LDcg
QEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUoY29uc3QgQ1N0cmlu
ZyYgdXJsKQogCiBib29sIEN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0
cmluZyYgZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewotICAgIC8vIG9wZW4gdGhl
IGZpbGUKKyAgICAvLyBPcGVuIHRoZSBmaWxlCiAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGlucHV0
RmlsZSA9IG9wZW5GaWxlKGZpbGVwYXRoLCBPcGVuRm9yUmVhZCk7CiAgICAgaWYgKCFpc0hhbmRs
ZVZhbGlkKGlucHV0RmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjog
Q291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGZpbGVwYXRoLmxhdGluMSgpLmRhdGEoKSk7
CkBAIC0yMzAsNyArMjI5LDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZl
cihjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBWZWN0b3I8Y2hhcj4mIGJ1ZmYKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIGxvYWQgdGhlIGZpbGUgY29udGVudCBpbnRvIGJ1
ZmZlcgorICAgIC8vIExvYWQgdGhlIGZpbGUgY29udGVudCBpbnRvIGJ1ZmZlcgogICAgIGJ1ZmZl
ci5yZXNpemUoZmlsZXNpemUpOwogICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7CiAgICAgaW50
IGJ1ZmZlclJlYWRTaXplID0gNDA5NjsKQEAgLTMwOSwxNCArMzA4LDE0IEBAIGJvb2wgQ3VybENh
Y2hlRW50cnk6OnBhcnNlUmVzcG9uc2VIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogCiAKICAgICBpZiAobWF4QWdlSXNWYWxpZCkgewotICAgICAgICAvLyB3aGVuIGJvdGggdGhl
IGNhY2hlIGVudHJ5IGFuZCB0aGUgcmVzcG9uc2UgY29udGFpbiBtYXgtYWdlLCB0aGUgbGVzc2Vy
IG9uZSB0YWtlcyBwcmlvcml0eQorICAgICAgICAvLyBXaGVuIGJvdGggdGhlIGNhY2hlIGVudHJ5
IGFuZCB0aGUgcmVzcG9uc2UgY29udGFpbiBtYXgtYWdlLCB0aGUgbGVzc2VyIG9uZSB0YWtlcyBw
cmlvcml0eQogICAgICAgICBkb3VibGUgZXhwaXJlcyA9IGZpbGVUaW1lICsgbWF4QWdlICogMTAw
MDsKICAgICAgICAgaWYgKG1fZXhwaXJlRGF0ZSA9PSAtMSB8fCBtX2V4cGlyZURhdGUgPiBleHBp
cmVzKQogICAgICAgICAgICAgbV9leHBpcmVEYXRlID0gZXhwaXJlczsKICAgICB9IGVsc2UgaWYg
KHJlc3BvbnNlRGF0ZSA+IDAgJiYgZXhwaXJhdGlvbkRhdGUgPj0gcmVzcG9uc2VEYXRlKQogICAg
ICAgICBtX2V4cGlyZURhdGUgPSBmaWxlVGltZSArIChleHBpcmF0aW9uRGF0ZSAtIHJlc3BvbnNl
RGF0ZSk7CiAKLSAgICAvLyBpZiB0aGVyZSB3ZXJlIG5vIGxpZmV0aW1lIGluZm9ybWF0aW9uCisg
ICAgLy8gSWYgdGhlcmUgaXMgbm8gbGlmZXRpbWUgaW5mb3JtYXRpb24KICAgICBpZiAobV9leHBp
cmVEYXRlID09IC0xKSB7CiAgICAgICAgIGlmIChsYXN0TW9kaWZpY2F0aW9uRGF0ZSA+IDApCiAg
ICAgICAgICAgICBtX2V4cGlyZURhdGUgPSBmaWxlVGltZSArIChmaWxlVGltZSAtIGxhc3RNb2Rp
ZmljYXRpb25EYXRlKSAqIDAuMTsKQEAgLTMzNSw4ICszMzQsMjkgQEAgYm9vbCBDdXJsQ2FjaGVF
bnRyeTo6cGFyc2VSZXNwb25zZUhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAg
ICAgaWYgKGV0YWcuaXNOdWxsKCkgJiYgbGFzdE1vZGlmaWVkLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBtX2hlYWRlckluTWVtb3J5ID0gdHJ1ZTsKKyAgICBtX2hlYWRl
clBhcnNlZCA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3NpemVfdCBDdXJsQ2FjaGVF
bnRyeTo6ZW50cnlTaXplKCkKK3sKKyAgICBpZiAoIW1fZW50cnlTaXplKSB7CisgICAgICAgIGxv
bmcgbG9uZyBoZWFkZXJGaWxlU2l6ZTsKKyAgICAgICAgbG9uZyBsb25nIGNvbnRlbnRGaWxlU2l6
ZTsKKworICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZp
bGVTaXplKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQg
bm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2VudHJ5U2l6ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoIWdldEZpbGVTaXplKG1fY29udGVudEZpbGVuYW1lLCBjb250ZW50RmlsZVNpemUpKSB7
CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgZ2V0IGZp
bGUgc2l6ZSBvZiAlc1xuIiwgbV9jb250ZW50RmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX2VudHJ5U2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fZW50
cnlTaXplID0gaGVhZGVyRmlsZVNpemUgKyBjb250ZW50RmlsZVNpemU7CisgICAgfQorCisgICAg
cmV0dXJuIG1fZW50cnlTaXplOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IDlkNWYzYWIuLmRiNzk0
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5oCkBAIC00NCwxMSArNDQsMTEgQEAgcHVibGljOgogICAgIH5DdXJsQ2Fj
aGVFbnRyeSgpOwogCiAgICAgYm9vbCBpc0NhY2hlZCgpOwotICAgIGNvbnN0IGJvb2wmIGlzSW5N
ZW1vcnkoKSB7IHJldHVybiBtX2hlYWRlckluTWVtb3J5OyB9Ci0gICAgSFRUUEhlYWRlck1hcCYg
cmVxdWVzdEhlYWRlcnMoKTsKKyAgICBzaXplX3QgZW50cnlTaXplKCk7CisgICAgSFRUUEhlYWRl
ck1hcCYgcmVxdWVzdEhlYWRlcnMoKSB7IHJldHVybiBtX3JlcXVlc3RIZWFkZXJzOyB9CiAKICAg
ICBib29sIHNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCk7Ci0gICAgYm9v
bCBsb2FkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSopOworICAgIGJvb2wgcmVhZENhY2hlZERh
dGEoUmVzb3VyY2VIYW5kbGUqKTsKIAogICAgIGJvb2wgc2F2ZVJlc3BvbnNlSGVhZGVycyhSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTY0LDggKzY0LDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
bV9oZWFkZXJGaWxlbmFtZTsKICAgICBTdHJpbmcgbV9jb250ZW50RmlsZW5hbWU7CiAKKyAgICBz
aXplX3QgbV9lbnRyeVNpemU7CiAgICAgZG91YmxlIG1fZXhwaXJlRGF0ZTsKLSAgICBib29sIG1f
aGVhZGVySW5NZW1vcnk7CisgICAgYm9vbCBtX2hlYWRlclBhcnNlZDsKIAogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9jYWNoZWRSZXNwb25zZTsKICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhl
YWRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggOGE4YzBlMy4uYTI2ZmIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmNwcApAQCAtNDgsOCArNDgsMTAgQEAgQ3VybENhY2hlTWFuYWdlciYgQ3VybENhY2hl
TWFuYWdlcjo6Z2V0SW5zdGFuY2UoKQogCiBDdXJsQ2FjaGVNYW5hZ2VyOjpDdXJsQ2FjaGVNYW5h
Z2VyKCkKICAgICA6IG1fZGlzYWJsZWQodHJ1ZSkKKyAgICAsIG1fY3VycmVudFN0b3JhZ2VTaXpl
KDApCisgICAgLCBtX3N0b3JhZ2VTaXplTGltaXQoNTI0Mjg4MDApIC8vIDUwICogMTAyNCAqIDEw
MjQgYnl0ZXMKIHsKLSAgICAvLyBjYWxsIHNldENhY2hlRGlyZWN0b3J5KCkgdG8gZW5hYmxlCisg
ICAgLy8gQ2FsbCBzZXRDYWNoZURpcmVjdG9yeSgpIHRvIGVuYWJsZSB0aGUgQ2FjaGUgTWFuYWdl
cgogfQogCiBDdXJsQ2FjaGVNYW5hZ2VyOjp+Q3VybENhY2hlTWFuYWdlcigpCkBAIC04Miw2ICs4
NCwxMSBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5KQogICAgIGxvYWRJbmRleCgpOwogfQogCit2b2lkIEN1cmxDYWNoZU1h
bmFnZXI6OnNldFN0b3JhZ2VTaXplTGltaXQoc2l6ZV90IHNpemVMaW1pdCkKK3sKKyAgICBtX3N0
b3JhZ2VTaXplTGltaXQgPSBzaXplTGltaXQ7Cit9CisKIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6
bG9hZEluZGV4KCkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKQEAgLTEwMiw3ICsxMDksNyBAQCB2
b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICAvLyBsb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50byBidWZmZXIKKyAgICAvLyBMb2Fk
IHRoZSBmaWxlIGNvbnRlbnQgaW50byBidWZmZXIKICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOwog
ICAgIGJ1ZmZlci5yZXNpemUoZmlsZXNpemUpOwogICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7
CkBAIC0xMTYsMjMgKzEyMywyOCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgp
CiAgICAgfQogICAgIGNsb3NlRmlsZShpbmRleEZpbGUpOwogCi0gICAgLy8gY3JlYXRlIHN0cmlu
Z3MgZnJvbSBidWZmZXIKKyAgICAvLyBDcmVhdGUgc3RyaW5ncyBmcm9tIGJ1ZmZlcgogICAgIFN0
cmluZyBoZWFkZXJDb250ZW50ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogICAgIFZlY3RvcjxT
dHJpbmc+IGluZGV4VVJMczsKICAgICBoZWFkZXJDb250ZW50LnNwbGl0KCJcbiIsIGluZGV4VVJM
cyk7CiAgICAgYnVmZmVyLmNsZWFyKCk7CiAKLSAgICAvLyBhZGQgZW50cmllcyB0byBpbmRleAor
ICAgIC8vIEFkZCBlbnRyaWVzIHRvIGluZGV4CiAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gaW5kZXhVUkxzLmJlZ2luKCk7CiAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGluZGV4VVJMcy5lbmQoKTsKICAgICBpZiAoaW5kZXhVUkxzLnNpemUo
KSA+IDEpCi0gICAgICAgIC0tZW5kOyAvLyBsYXN0IGxpbmUgaXMgZW1wdHkKKyAgICAgICAgLS1l
bmQ7IC8vIExhc3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAg
ICAgU3RyaW5nIHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2UoKTsKLQogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+IGNhY2hlRW50cnkobmV3IEN1cmxDYWNoZUVudHJ5KHVy
bCwgbV9jYWNoZURpcikpOwotICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSkKKwor
ICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRyeVNp
emUoKSA8IG1fc3RvcmFnZVNpemVMaW1pdCkgeworICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFn
ZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CisgICAgICAgICAgICBtYWtlUm9vbUZv
ck5ld0VudHJ5KCk7CisgICAgICAgICAgICBtX0xSVUVudHJ5TGlzdC5wcmVwZW5kT3JNb3ZlVG9G
aXJzdCh1cmwpOwogICAgICAgICAgICAgbV9pbmRleC5zZXQodXJsLCBzdGQ6Om1vdmUoY2FjaGVF
bnRyeSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhY2hlRW50cnktPmludmFsaWRh
dGUoKTsKIAogICAgICAgICArK2l0OwogICAgIH0KQEAgLTE0NiwxNiArMTU4LDE3IEBAIHZvaWQg
Q3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aCht
X2NhY2hlRGlyKTsKICAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7CiAKKyAg
ICBkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwogICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBpbmRl
eEZpbGUgPSBvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBPcGVuRm9yV3JpdGUpOwogICAgIGlmICgh
aXNIYW5kbGVWYWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUg
RXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgaW5kZXhGaWxlUGF0aC5sYXRp
bjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1faW5kZXguYmVnaW4oKTsKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1
cmxDYWNoZUVudHJ5Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1faW5kZXguZW5kKCk7CisgICAg
TGlzdEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBtX0xSVUVudHJ5TGlzdC5iZWdpbigp
OworICAgIExpc3RIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGVuZCA9IG1fTFJVRW50cnlMaXN0
LmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKLSAgICAgICAgY29uc3QgQ1N0cmluZyYg
dXJsTGF0aW4xID0gaXQtPmtleS5sYXRpbjEoKTsKKyAgICAgICAgY29uc3QgQ1N0cmluZyYgdXJs
TGF0aW4xID0gaXQtPmxhdGluMSgpOwogICAgICAgICB3cml0ZVRvRmlsZShpbmRleEZpbGUsIHVy
bExhdGluMS5kYXRhKCksIHVybExhdGluMS5sZW5ndGgoKSk7CiAgICAgICAgIHdyaXRlVG9GaWxl
KGluZGV4RmlsZSwgIlxuIiwgMSk7CiAgICAgICAgICsraXQ7CkBAIC0xNjQsNiArMTc3LDE3IEBA
IHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBjbG9zZUZpbGUoaW5kZXhG
aWxlKTsKIH0KIAordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZvck5ld0VudHJ5KCkK
K3sKKyAgICBpZiAobV9kaXNhYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKG1f
Y3VycmVudFN0b3JhZ2VTaXplID4gbV9zdG9yYWdlU2l6ZUxpbWl0KSB7CisgICAgICAgIEFTU0VS
VChtX2luZGV4LmZpbmQobV9MUlVFbnRyeUxpc3QubGFzdCgpKSAhPSBtX2luZGV4LmVuZCgpKTsK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkobV9MUlVFbnRyeUxpc3QubGFzdCgpKTsKKyAg
ICB9Cit9CisKIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiBqb2IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICht
X2Rpc2FibGVkKQpAQCAtMTcxLDIwICsxOTUsMjAgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYK
IAogICAgIFN0cmluZyB1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpOwog
Ci0gICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KQotICAgICAgICBsb2Fk
Q2FjaGVkRGF0YSh1cmwsIGpvYiwgcmVzcG9uc2UpOworICAgIGlmIChyZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpID09IDMwNCkgeworICAgICAgICByZWFkQ2FjaGVkRGF0YSh1cmwsIGpvYiwgcmVz
cG9uc2UpOworICAgICAgICBtX0xSVUVudHJ5TGlzdC5wcmVwZW5kT3JNb3ZlVG9GaXJzdCh1cmwp
OworICAgIH0KICAgICBlbHNlIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDIwMCkg
ewotICAgICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5
Pj46Oml0ZXJhdG9yIGl0ID0gbV9pbmRleC5maW5kKHVybCk7Ci0gICAgICAgIGlmIChpdCAhPSBt
X2luZGV4LmVuZCgpKQotICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKKyAg
ICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsgLy8gSW52YWxpZGF0ZSBleGlzdGluZyBl
bnRyeSBvbiAyMDAKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+IGVu
dHJ5KG5ldyBDdXJsQ2FjaGVFbnRyeSh1cmwsIG1fY2FjaGVEaXIpKTsKLSAgICAgICAgYm9vbCBj
YWNoZWFibGUgPSBlbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+IGNhY2hlRW50cnkobmV3IEN1cmxDYWNo
ZUVudHJ5KHVybCwgbV9jYWNoZURpcikpOworICAgICAgICBib29sIGNhY2hlYWJsZSA9IGNhY2hl
RW50cnktPnBhcnNlUmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsKICAgICAgICAgaWYgKGNhY2hl
YWJsZSkgewotICAgICAgICAgICAgbV9pbmRleC5zZXQodXJsLCBzdGQ6Om1vdmUoZW50cnkpKTsK
KyAgICAgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7Cisg
ICAgICAgICAgICBtX2luZGV4LnNldCh1cmwsIHN0ZDo6bW92ZShjYWNoZUVudHJ5KSk7CiAgICAg
ICAgICAgICBzYXZlUmVzcG9uc2VIZWFkZXJzKHVybCwgcmVzcG9uc2UpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGVudHJ5LT5pbnZhbGlkYXRlKCk7CisgICAgICAgIH0KICAgICB9IGVs
c2UKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIH0KQEAgLTIyNiw5ICsyNTAs
MTYgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV8KICAgICAgICAgcmV0dXJuOwogCiAgICAgSGFz
aE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4+OjppdGVyYXRvciBp
dCA9IG1faW5kZXguZmluZCh1cmwpOwotICAgIGlmIChpdCAhPSBtX2luZGV4LmVuZCgpKQorICAg
IGlmIChpdCAhPSBtX2luZGV4LmVuZCgpKSB7CiAgICAgICAgIGlmICghaXQtPnZhbHVlLT5zYXZl
Q2FjaGVkRGF0YShkYXRhLCBzaXplKSkKICAgICAgICAgICAgIGludmFsaWRhdGVDYWNoZUVudHJ5
KHVybCk7CisKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6
ZSArPSBzaXplOworICAgICAgICAgICAgbV9MUlVFbnRyeUxpc3QucHJlcGVuZE9yTW92ZVRvRmly
c3QodXJsKTsKKyAgICAgICAgICAgIG1ha2VSb29tRm9yTmV3RW50cnkoKTsKKyAgICAgICAgfQor
ICAgIH0KIH0KIAogdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNv
bnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTI0OSw3ICsy
ODAsMTMgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjppbnZhbGlkYXRlQ2FjaGVFbnRyeShjb25z
dCBTdHJpbmcmIHVybCkKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3Vy
bENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4LmZpbmQodXJsKTsKICAgICBpZiAo
aXQgIT0gbV9pbmRleC5lbmQoKSkgeworICAgICAgICBpZiAobV9jdXJyZW50U3RvcmFnZVNpemUg
PCBpdC0+dmFsdWUtPmVudHJ5U2l6ZSgpKQorICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNp
emUgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSAt
PSBpdC0+dmFsdWUtPmVudHJ5U2l6ZSgpOworCiAgICAgICAgIGl0LT52YWx1ZS0+aW52YWxpZGF0
ZSgpOworICAgICAgICBtX0xSVUVudHJ5TGlzdC5yZW1vdmUodXJsKTsKICAgICAgICAgbV9pbmRl
eC5yZW1vdmUodXJsKTsKICAgICB9CiB9CkBAIC0yNTksNyArMjk2LDcgQEAgdm9pZCBDdXJsQ2Fj
aGVNYW5hZ2VyOjpkaWRGYWlsKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGludmFsaWRhdGVDYWNo
ZUVudHJ5KHVybCk7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZENhY2hlZERhdGEo
Y29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpyZWFkQ2FjaGVkRGF0YShjb25zdCBT
dHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI2Nyw3ICsz
MDQsOCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRDYWNoZWREYXRhKGNvbnN0IFN0cmlu
ZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBSZQogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6
OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4LmZpbmQo
dXJsKTsKICAgICBpZiAoaXQgIT0gbV9pbmRleC5lbmQoKSkgewogICAgICAgICBpdC0+dmFsdWUt
PnNldFJlc3BvbnNlRnJvbUNhY2hlZEhlYWRlcnMocmVzcG9uc2UpOwotICAgICAgICBpZiAoIWl0
LT52YWx1ZS0+bG9hZENhY2hlZERhdGEoam9iKSkKKyAgICAgICAgbV9MUlVFbnRyeUxpc3QucHJl
cGVuZE9yTW92ZVRvRmlyc3QodXJsKTsKKyAgICAgICAgaWYgKCFpdC0+dmFsdWUtPnJlYWRDYWNo
ZWREYXRhKGpvYikpCiAgICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5oCmluZGV4IDY0YTkxNjkuLmUwNmQ1NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDE2ICs0MSwxNyBAQCBjbGFzcyBDdXJsQ2FjaGVN
YW5hZ2VyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ3VybENhY2hlTWFuYWdlciYgZ2V0SW5zdGFu
Y2UoKTsKIAotICAgIGNvbnN0IFN0cmluZyYgZ2V0Q2FjaGVEaXJlY3RvcnkoKSB7IHJldHVybiBt
X2NhY2hlRGlyOyB9CiAgICAgdm9pZCBzZXRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsK
KyAgICBjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5KCkgeyByZXR1cm4gbV9jYWNoZURpcjsg
fQorICAgIHZvaWQgc2V0U3RvcmFnZVNpemVMaW1pdChzaXplX3QpOwogCiAgICAgYm9vbCBpc0Nh
Y2hlZChjb25zdCBTdHJpbmcmKTsKLSAgICBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycyhj
b25zdCBTdHJpbmcmKTsgLy8gbG9hZCBoZWFkZXJzCisgICAgSFRUUEhlYWRlck1hcCYgcmVxdWVz
dEhlYWRlcnMoY29uc3QgU3RyaW5nJik7IC8vIExvYWQgaGVhZGVycwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsg
Ly8gc2F2ZSBkYXRhCi0gICAgdm9pZCBkaWRGYWlsKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciosIHNpemVfdCk7IC8vIFNh
dmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGRpZEZhaWwoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgQ3VybENhY2hlTWFu
YWdlcigpOwpAQCAtNTcsMTYgKzU5LDIxIEBAIHByaXZhdGU6CiAgICAgQ3VybENhY2hlTWFuYWdl
cihDdXJsQ2FjaGVNYW5hZ2VyIGNvbnN0Jik7CiAgICAgdm9pZCBvcGVyYXRvcj0oQ3VybENhY2hl
TWFuYWdlciBjb25zdCYpOwogCisgICAgYm9vbCBtX2Rpc2FibGVkOwogICAgIFN0cmluZyBtX2Nh
Y2hlRGlyOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hlRW50
cnk+PiBtX2luZGV4OwotICAgIGJvb2wgbV9kaXNhYmxlZDsKKworICAgIExpc3RIYXNoU2V0PFN0
cmluZz4gbV9MUlVFbnRyeUxpc3Q7CisgICAgc2l6ZV90IG1fY3VycmVudFN0b3JhZ2VTaXplOwor
ICAgIHNpemVfdCBtX3N0b3JhZ2VTaXplTGltaXQ7CiAKICAgICB2b2lkIHNhdmVJbmRleCgpOwog
ICAgIHZvaWQgbG9hZEluZGV4KCk7CisgICAgdm9pZCBtYWtlUm9vbUZvck5ld0VudHJ5KCk7CiAK
ICAgICB2b2lkIHNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgU3RyaW5nJiwgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlRW50cnkoY29uc3QgU3RyaW5nJik7Ci0g
ICAgdm9pZCBsb2FkQ2FjaGVkRGF0YShjb25zdCBTdHJpbmcmLCBSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIHJlYWRDYWNoZWREYXRhKGNvbnN0IFN0cmluZyYs
IFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYpOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="243295"
          type_id="1"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221972</attachid>
            <date>2014-01-23 05:35:20 -0800</date>
            <delta_ts>2014-01-23 09:48:47 -0800</delta_ts>
            <desc>Proposed patch 3</desc>
            <filename>cache3.diff</filename>
            <type>text/plain</type>
            <size>17152</size>
            <attacher name="Mátyás Mustoha">mmatyas</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3N2E5Y2U1Li44MmI2ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTQtMDEtMjMgIE3DoXR5w6FzIE11c3RvaGEgIDxtbWF0eWFzQGluZi51LXN6ZWdlZC5o
dT4KKworICAgICAgICBbY3VybF0gQWRkIHN0b3JhZ2UgbGltaXQgdG8gY2FjaGUgbWFuYWdlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1Nzc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0cyBhIGxv
Y2FsIGRpc2Mgc3RvcmFnZSBzaXplIGxpbWl0IGZvciB0aGUgY2FjaGUgbWFuYWdlcgorICAgICAg
ICB1c2VkIGJ5IHRoZSBjdXJsIG5ldHdvcmsgYmFja2VuZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hl
RW50cnk6OmlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpzYXZl
Q2FjaGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6cmVhZENhY2hl
ZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmRpZEZhaWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OnBhcnNlUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjplbnRyeVNpemUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENh
Y2hlRW50cnk6OnJlcXVlc3RIZWFkZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5h
Z2VyOjpDdXJsQ2FjaGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFn
ZXI6OnNldFN0b3JhZ2VTaXplTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFu
YWdlcjo6bG9hZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OnNh
dmVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZv
ck5ld0VudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjppbnZhbGlkYXRl
Q2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpyZWFkQ2Fj
aGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmNhY2hlRGlyZWN0b3J5
KToKKwogMjAxNC0wMS0xMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2ggd2hlbiBtdXRhdGluZyBTVkcgdGV4dCB3aXRoIHRyYW5zZm9ybQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRy
eS5jcHAKaW5kZXggY2E4ZGIxYS4uMjI1NTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC00Nyw4ICs0
Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEN1cmxDYWNoZUVudHJ5OjpDdXJsQ2FjaGVFbnRy
eShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjYWNoZURpcikKICAgICA6IG1faGVh
ZGVyRmlsZW5hbWUoY2FjaGVEaXIpCiAgICAgLCBtX2NvbnRlbnRGaWxlbmFtZShjYWNoZURpcikK
KyAgICAsIG1fZW50cnlTaXplKDApCiAgICAgLCBtX2V4cGlyZURhdGUoLTEpCi0gICAgLCBtX2hl
YWRlckluTWVtb3J5KGZhbHNlKQorICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2UpCiB7CiAgICAg
Z2VuZXJhdGVCYXNlRmlsZW5hbWUodXJsLmxhdGluMSgpKTsKIApAQCAtNjMsMjggKzY0LDI2IEBA
IEN1cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQogewogfQogCi0vLyBjYWNoZSBtYW5h
Z2VyIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxzZQorLy8gQ2FjaGUgbWFuYWdl
ciBzaG91bGQgaW52YWxpZGF0ZSB0aGUgZW50cnkgb24gZmFsc2UKIGJvb2wgQ3VybENhY2hlRW50
cnk6OmlzQ2FjaGVkKCkKIHsKICAgICBpZiAoIWZpbGVFeGlzdHMobV9jb250ZW50RmlsZW5hbWUp
IHx8ICFmaWxlRXhpc3RzKG1faGVhZGVyRmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoIW1faGVhZGVySW5NZW1vcnkpIHsKKyAgICBpZiAoIW1faGVhZGVyUGFyc2Vk
KSB7CiAgICAgICAgIGlmICghbG9hZFJlc3BvbnNlSGVhZGVycygpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtX2V4cGlyZURhdGUgPCBjdXJyZW50VGltZU1T
KCkpIHsKLSAgICAgICAgbV9oZWFkZXJJbk1lbW9yeSA9IGZhbHNlOworICAgICAgICBtX2hlYWRl
clBhcnNlZCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0
dXJuIHRydWU7Ci19CisgICAgaWYgKCFlbnRyeVNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi1IVFRQSGVhZGVyTWFwJiBDdXJsQ2FjaGVFbnRyeTo6cmVxdWVzdEhlYWRlcnMoKQotewot
ICAgIHJldHVybiBtX3JlcXVlc3RIZWFkZXJzOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlQ2FjaGVkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKQEAgLTk1LDE0ICs5NCwxNCBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlQ2FjaGVk
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIC8vIGFwcGVuZAorICAgIC8vIEFwcGVuZAogICAgIHNlZWtGaWxlKGNv
bnRlbnRGaWxlLCAwLCBTZWVrRnJvbUVuZCk7CiAgICAgd3JpdGVUb0ZpbGUoY29udGVudEZpbGUs
IGRhdGEsIHNpemUpOwogICAgIGNsb3NlRmlsZShjb250ZW50RmlsZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRDYWNoZWREYXRhKFJlc291cmNlSGFu
ZGxlKiBqb2IpCitib29sIEN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhh
bmRsZSogam9iKQogewogICAgIEFTU0VSVChqb2ItPmNsaWVudCgpKTsKIApAQCAtMTYxLDcgKzE2
MCw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMoKQogICAgIHJl
dHVybiBwYXJzZVJlc3BvbnNlSGVhZGVycyhtX2NhY2hlZFJlc3BvbnNlKTsKIH0KIAotLy8gc2V0
IHJlc3BvbnNlIGhlYWRlcnMgZnJvbSBtZW1vcnkKKy8vIFNldCByZXNwb25zZSBoZWFkZXJzIGZy
b20gbWVtb3J5CiB2b2lkIEN1cmxDYWNoZUVudHJ5OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFk
ZXJzKFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJlc3BvbnNlLnNldEhUVFBT
dGF0dXNDb2RlKDMwNCk7CkBAIC0xOTMsMTIgKzE5MiwxMiBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5
OjpzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogCiB2b2lkIEN1cmxDYWNoZUVudHJ5OjpkaWRGYWlsKCkKIHsKLSAgICAvLyB0aGUgY2FjaGUg
bWFuYWdlciB3aWxsIGNhbGwgaW52YWxpZGF0ZSgpCisgICAgLy8gVGhlIGNhY2hlIG1hbmFnZXIg
d2lsbCBjYWxsIGludmFsaWRhdGUoKQogfQogCiB2b2lkIEN1cmxDYWNoZUVudHJ5OjpkaWRGaW5p
c2hMb2FkaW5nKCkKIHsKLSAgICAvLyBub3RoaW5nIHRvIGRvIGhlcmUgeWV0CisgICAgLy8gTm90
aGluZyB0byBkbyBoZXJlIHlldAogfQogCiB2b2lkIEN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJh
c2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwpCkBAIC0yMTYsNyArMjE1LDcgQEAgdm9pZCBD
dXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQog
CiBib29sIEN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZXBhdGgsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewotICAgIC8vIG9wZW4gdGhlIGZpbGUKKyAg
ICAvLyBPcGVuIHRoZSBmaWxlCiAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGlucHV0RmlsZSA9IG9w
ZW5GaWxlKGZpbGVwYXRoLCBPcGVuRm9yUmVhZCk7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGlu
cHV0RmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90
IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGZpbGVwYXRoLmxhdGluMSgpLmRhdGEoKSk7CkBAIC0yMzAs
NyArMjI5LDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZlcihjb25zdCBT
dHJpbmcmIGZpbGVwYXRoLCBWZWN0b3I8Y2hhcj4mIGJ1ZmYKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIC8vIGxvYWQgdGhlIGZpbGUgY29udGVudCBpbnRvIGJ1ZmZlcgorICAg
IC8vIExvYWQgdGhlIGZpbGUgY29udGVudCBpbnRvIGJ1ZmZlcgogICAgIGJ1ZmZlci5yZXNpemUo
ZmlsZXNpemUpOwogICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7CiAgICAgaW50IGJ1ZmZlclJl
YWRTaXplID0gNDA5NjsKQEAgLTMwOSwxNCArMzA4LDE0IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6
OnBhcnNlUmVzcG9uc2VIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiAKICAg
ICBpZiAobWF4QWdlSXNWYWxpZCkgewotICAgICAgICAvLyB3aGVuIGJvdGggdGhlIGNhY2hlIGVu
dHJ5IGFuZCB0aGUgcmVzcG9uc2UgY29udGFpbiBtYXgtYWdlLCB0aGUgbGVzc2VyIG9uZSB0YWtl
cyBwcmlvcml0eQorICAgICAgICAvLyBXaGVuIGJvdGggdGhlIGNhY2hlIGVudHJ5IGFuZCB0aGUg
cmVzcG9uc2UgY29udGFpbiBtYXgtYWdlLCB0aGUgbGVzc2VyIG9uZSB0YWtlcyBwcmlvcml0eQog
ICAgICAgICBkb3VibGUgZXhwaXJlcyA9IGZpbGVUaW1lICsgbWF4QWdlICogMTAwMDsKICAgICAg
ICAgaWYgKG1fZXhwaXJlRGF0ZSA9PSAtMSB8fCBtX2V4cGlyZURhdGUgPiBleHBpcmVzKQogICAg
ICAgICAgICAgbV9leHBpcmVEYXRlID0gZXhwaXJlczsKICAgICB9IGVsc2UgaWYgKHJlc3BvbnNl
RGF0ZSA+IDAgJiYgZXhwaXJhdGlvbkRhdGUgPj0gcmVzcG9uc2VEYXRlKQogICAgICAgICBtX2V4
cGlyZURhdGUgPSBmaWxlVGltZSArIChleHBpcmF0aW9uRGF0ZSAtIHJlc3BvbnNlRGF0ZSk7CiAK
LSAgICAvLyBpZiB0aGVyZSB3ZXJlIG5vIGxpZmV0aW1lIGluZm9ybWF0aW9uCisgICAgLy8gSWYg
dGhlcmUgaXMgbm8gbGlmZXRpbWUgaW5mb3JtYXRpb24KICAgICBpZiAobV9leHBpcmVEYXRlID09
IC0xKSB7CiAgICAgICAgIGlmIChsYXN0TW9kaWZpY2F0aW9uRGF0ZSA+IDApCiAgICAgICAgICAg
ICBtX2V4cGlyZURhdGUgPSBmaWxlVGltZSArIChmaWxlVGltZSAtIGxhc3RNb2RpZmljYXRpb25E
YXRlKSAqIDAuMTsKQEAgLTMzNSw4ICszMzQsMjkgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6cGFy
c2VSZXNwb25zZUhlYWRlcnMoUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgaWYgKGV0
YWcuaXNOdWxsKCkgJiYgbGFzdE1vZGlmaWVkLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBtX2hlYWRlckluTWVtb3J5ID0gdHJ1ZTsKKyAgICBtX2hlYWRlclBhcnNlZCA9
IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3NpemVfdCBDdXJsQ2FjaGVFbnRyeTo6ZW50
cnlTaXplKCkKK3sKKyAgICBpZiAoIW1fZW50cnlTaXplKSB7CisgICAgICAgIGxvbmcgbG9uZyBo
ZWFkZXJGaWxlU2l6ZTsKKyAgICAgICAgbG9uZyBsb25nIGNvbnRlbnRGaWxlU2l6ZTsKKworICAg
ICAgICBpZiAoIWdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZpbGVTaXplKSkg
eworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBm
aWxlIHNpemUgb2YgJXNcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX2VudHJ5U2l6ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWdl
dEZpbGVTaXplKG1fY29udGVudEZpbGVuYW1lLCBjb250ZW50RmlsZVNpemUpKSB7CisgICAgICAg
ICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgZ2V0IGZpbGUgc2l6ZSBv
ZiAlc1xuIiwgbV9jb250ZW50RmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IHJldHVybiBtX2VudHJ5U2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fZW50cnlTaXplID0g
aGVhZGVyRmlsZVNpemUgKyBjb250ZW50RmlsZVNpemU7CisgICAgfQorCisgICAgcmV0dXJuIG1f
ZW50cnlTaXplOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IDlkNWYzYWIuLmRiNzk0MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRy
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5oCkBAIC00NCwxMSArNDQsMTEgQEAgcHVibGljOgogICAgIH5DdXJsQ2FjaGVFbnRyeSgp
OwogCiAgICAgYm9vbCBpc0NhY2hlZCgpOwotICAgIGNvbnN0IGJvb2wmIGlzSW5NZW1vcnkoKSB7
IHJldHVybiBtX2hlYWRlckluTWVtb3J5OyB9Ci0gICAgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhl
YWRlcnMoKTsKKyAgICBzaXplX3QgZW50cnlTaXplKCk7CisgICAgSFRUUEhlYWRlck1hcCYgcmVx
dWVzdEhlYWRlcnMoKSB7IHJldHVybiBtX3JlcXVlc3RIZWFkZXJzOyB9CiAKICAgICBib29sIHNh
dmVDYWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCk7Ci0gICAgYm9vbCBsb2FkQ2Fj
aGVkRGF0YShSZXNvdXJjZUhhbmRsZSopOworICAgIGJvb2wgcmVhZENhY2hlZERhdGEoUmVzb3Vy
Y2VIYW5kbGUqKTsKIAogICAgIGJvb2wgc2F2ZVJlc3BvbnNlSGVhZGVycyhSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgdm9pZCBzZXRSZXNwb25zZUZyb21DYWNoZWRIZWFkZXJzKFJlc291cmNlUmVz
cG9uc2UmKTsKQEAgLTY0LDggKzY0LDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9oZWFkZXJG
aWxlbmFtZTsKICAgICBTdHJpbmcgbV9jb250ZW50RmlsZW5hbWU7CiAKKyAgICBzaXplX3QgbV9l
bnRyeVNpemU7CiAgICAgZG91YmxlIG1fZXhwaXJlRGF0ZTsKLSAgICBib29sIG1faGVhZGVySW5N
ZW1vcnk7CisgICAgYm9vbCBtX2hlYWRlclBhcnNlZDsKIAogICAgIFJlc291cmNlUmVzcG9uc2Ug
bV9jYWNoZWRSZXNwb25zZTsKICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAKaW5kZXggOGE4YzBlMy4uNGE3ZmE5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNw
cApAQCAtNDgsOCArNDgsMTAgQEAgQ3VybENhY2hlTWFuYWdlciYgQ3VybENhY2hlTWFuYWdlcjo6
Z2V0SW5zdGFuY2UoKQogCiBDdXJsQ2FjaGVNYW5hZ2VyOjpDdXJsQ2FjaGVNYW5hZ2VyKCkKICAg
ICA6IG1fZGlzYWJsZWQodHJ1ZSkKKyAgICAsIG1fY3VycmVudFN0b3JhZ2VTaXplKDApCisgICAg
LCBtX3N0b3JhZ2VTaXplTGltaXQoNTI0Mjg4MDApIC8vIDUwICogMTAyNCAqIDEwMjQgYnl0ZXMK
IHsKLSAgICAvLyBjYWxsIHNldENhY2hlRGlyZWN0b3J5KCkgdG8gZW5hYmxlCisgICAgLy8gQ2Fs
bCBzZXRDYWNoZURpcmVjdG9yeSgpIHRvIGVuYWJsZSB0aGUgQ2FjaGUgTWFuYWdlcgogfQogCiBD
dXJsQ2FjaGVNYW5hZ2VyOjp+Q3VybENhY2hlTWFuYWdlcigpCkBAIC04Miw2ICs4NCwxMSBAQCB2
b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5KQogICAgIGxvYWRJbmRleCgpOwogfQogCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNl
dFN0b3JhZ2VTaXplTGltaXQoc2l6ZV90IHNpemVMaW1pdCkKK3sKKyAgICBtX3N0b3JhZ2VTaXpl
TGltaXQgPSBzaXplTGltaXQ7Cit9CisKIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4
KCkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKQEAgLTEwMiw3ICsxMDksNyBAQCB2b2lkIEN1cmxD
YWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAv
LyBsb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50byBidWZmZXIKKyAgICAvLyBMb2FkIHRoZSBmaWxl
IGNvbnRlbnQgaW50byBidWZmZXIKICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOwogICAgIGJ1ZmZl
ci5yZXNpemUoZmlsZXNpemUpOwogICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7CkBAIC0xMTYs
MjMgKzEyMywyOCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAgICAgfQog
ICAgIGNsb3NlRmlsZShpbmRleEZpbGUpOwogCi0gICAgLy8gY3JlYXRlIHN0cmluZ3MgZnJvbSBi
dWZmZXIKKyAgICAvLyBDcmVhdGUgc3RyaW5ncyBmcm9tIGJ1ZmZlcgogICAgIFN0cmluZyBoZWFk
ZXJDb250ZW50ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGlu
ZGV4VVJMczsKICAgICBoZWFkZXJDb250ZW50LnNwbGl0KCJcbiIsIGluZGV4VVJMcyk7CiAgICAg
YnVmZmVyLmNsZWFyKCk7CiAKLSAgICAvLyBhZGQgZW50cmllcyB0byBpbmRleAorICAgIC8vIEFk
ZCBlbnRyaWVzIHRvIGluZGV4CiAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gaW5kZXhVUkxzLmJlZ2luKCk7CiAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGluZGV4VVJMcy5lbmQoKTsKICAgICBpZiAoaW5kZXhVUkxzLnNpemUoKSA+IDEpCi0g
ICAgICAgIC0tZW5kOyAvLyBsYXN0IGxpbmUgaXMgZW1wdHkKKyAgICAgICAgLS1lbmQ7IC8vIExh
c3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5n
IHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2UoKTsKLQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3VybENhY2hlRW50cnk+IGNhY2hlRW50cnkobmV3IEN1cmxDYWNoZUVudHJ5KHVybCwgbV9jYWNo
ZURpcikpOwotICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSkKKworICAgICAgICBp
ZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1f
c3RvcmFnZVNpemVMaW1pdCkgeworICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0g
Y2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CisgICAgICAgICAgICBtYWtlUm9vbUZvck5ld0VudHJ5
KCk7CisgICAgICAgICAgICBtX0xSVUVudHJ5TGlzdC5wcmVwZW5kT3JNb3ZlVG9GaXJzdCh1cmwp
OwogICAgICAgICAgICAgbV9pbmRleC5zZXQodXJsLCBzdGQ6Om1vdmUoY2FjaGVFbnRyeSkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhY2hlRW50cnktPmludmFsaWRhdGUoKTsKIAog
ICAgICAgICArK2l0OwogICAgIH0KQEAgLTE0NiwxNiArMTU4LDE3IEBAIHZvaWQgQ3VybENhY2hl
TWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2NhY2hlRGly
KTsKICAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7CiAKKyAgICBkZWxldGVG
aWxlKGluZGV4RmlsZVBhdGgpOwogICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBv
cGVuRmlsZShpbmRleEZpbGVQYXRoLCBPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaXNIYW5kbGVW
YWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENv
dWxkIG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6
dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXgu
YmVnaW4oKTsKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVu
dHJ5Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1faW5kZXguZW5kKCk7CisgICAgYXV0byBpdCA9
IG1fTFJVRW50cnlMaXN0LmJlZ2luKCk7CisgICAgY29uc3QgYXV0byYgZW5kID0gbV9MUlVFbnRy
eUxpc3QuZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewotICAgICAgICBjb25zdCBDU3Ry
aW5nJiB1cmxMYXRpbjEgPSBpdC0+a2V5LmxhdGluMSgpOworICAgICAgICBjb25zdCBDU3RyaW5n
JiB1cmxMYXRpbjEgPSBpdC0+bGF0aW4xKCk7CiAgICAgICAgIHdyaXRlVG9GaWxlKGluZGV4Rmls
ZSwgdXJsTGF0aW4xLmRhdGEoKSwgdXJsTGF0aW4xLmxlbmd0aCgpKTsKICAgICAgICAgd3JpdGVU
b0ZpbGUoaW5kZXhGaWxlLCAiXG4iLCAxKTsKICAgICAgICAgKytpdDsKQEAgLTE2NCw2ICsxNzcs
MTcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIGNsb3NlRmlsZShp
bmRleEZpbGUpOwogfQogCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6Om1ha2VSb29tRm9yTmV3RW50
cnkoKQoreworICAgIGlmIChtX2Rpc2FibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGls
ZSAobV9jdXJyZW50U3RvcmFnZVNpemUgPiBtX3N0b3JhZ2VTaXplTGltaXQpIHsKKyAgICAgICAg
QVNTRVJUKG1faW5kZXguZmluZChtX0xSVUVudHJ5TGlzdC5sYXN0KCkpICE9IG1faW5kZXguZW5k
KCkpOworICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeShtX0xSVUVudHJ5TGlzdC5sYXN0KCkp
OworICAgIH0KK30KKwogdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUqIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
aWYgKG1fZGlzYWJsZWQpCkBAIC0xNzEsMjAgKzE5NSwyMCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFn
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogam9iLCBSZXNvdXJjZVJlc3Bv
bnNlJgogCiAgICAgU3RyaW5nIHVybCA9IGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCk7CiAKLSAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQpCi0gICAgICAg
IGxvYWRDYWNoZWREYXRhKHVybCwgam9iLCByZXNwb25zZSk7CisgICAgaWYgKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkgPT0gMzA0KSB7CisgICAgICAgIHJlYWRDYWNoZWREYXRhKHVybCwgam9i
LCByZXNwb25zZSk7CisgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0
KHVybCk7CisgICAgfQogICAgIGVsc2UgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0g
MjAwKSB7Ci0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybENhY2hl
RW50cnk+Pjo6aXRlcmF0b3IgaXQgPSBtX2luZGV4LmZpbmQodXJsKTsKLSAgICAgICAgaWYgKGl0
ICE9IG1faW5kZXguZW5kKCkpCi0gICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwp
OworICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOyAvLyBJbnZhbGlkYXRlIGV4aXN0
aW5nIGVudHJ5IG9uIDIwMAogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRy
eT4gZW50cnkobmV3IEN1cmxDYWNoZUVudHJ5KHVybCwgbV9jYWNoZURpcikpOwotICAgICAgICBi
b29sIGNhY2hlYWJsZSA9IGVudHJ5LT5wYXJzZVJlc3BvbnNlSGVhZGVycyhyZXNwb25zZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4gY2FjaGVFbnRyeShuZXcgQ3Vy
bENhY2hlRW50cnkodXJsLCBtX2NhY2hlRGlyKSk7CisgICAgICAgIGJvb2wgY2FjaGVhYmxlID0g
Y2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOwogICAgICAgICBpZiAo
Y2FjaGVhYmxlKSB7Ci0gICAgICAgICAgICBtX2luZGV4LnNldCh1cmwsIHN0ZDo6bW92ZShlbnRy
eSkpOworICAgICAgICAgICAgbV9MUlVFbnRyeUxpc3QucHJlcGVuZE9yTW92ZVRvRmlyc3QodXJs
KTsKKyAgICAgICAgICAgIG1faW5kZXguc2V0KHVybCwgc3RkOjptb3ZlKGNhY2hlRW50cnkpKTsK
ICAgICAgICAgICAgIHNhdmVSZXNwb25zZUhlYWRlcnModXJsLCByZXNwb25zZSk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgZW50cnktPmludmFsaWRhdGUoKTsKKyAgICAgICAgfQogICAg
IH0gZWxzZQogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOwogfQpAQCAtMjI2LDkg
KzI1MCwxNiBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplXwogICAgICAgICByZXR1cm47CiAKICAg
ICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEN1cmxDYWNoZUVudHJ5Pj46Oml0ZXJh
dG9yIGl0ID0gbV9pbmRleC5maW5kKHVybCk7Ci0gICAgaWYgKGl0ICE9IG1faW5kZXguZW5kKCkp
CisgICAgaWYgKGl0ICE9IG1faW5kZXguZW5kKCkpIHsKICAgICAgICAgaWYgKCFpdC0+dmFsdWUt
PnNhdmVDYWNoZWREYXRhKGRhdGEsIHNpemUpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hl
RW50cnkodXJsKTsKKworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fY3VycmVudFN0b3Jh
Z2VTaXplICs9IHNpemU7CisgICAgICAgICAgICBtX0xSVUVudHJ5TGlzdC5wcmVwZW5kT3JNb3Zl
VG9GaXJzdCh1cmwpOworICAgICAgICAgICAgbWFrZVJvb21Gb3JOZXdFbnRyeSgpOworICAgICAg
ICB9CisgICAgfQogfQogCiB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVSZXNwb25zZUhlYWRl
cnMoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMjQ5
LDcgKzI4MCwxMyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmludmFsaWRhdGVDYWNoZUVudHJ5
KGNvbnN0IFN0cmluZyYgdXJsKQogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0
cjxDdXJsQ2FjaGVFbnRyeT4+OjppdGVyYXRvciBpdCA9IG1faW5kZXguZmluZCh1cmwpOwogICAg
IGlmIChpdCAhPSBtX2luZGV4LmVuZCgpKSB7CisgICAgICAgIGlmIChtX2N1cnJlbnRTdG9yYWdl
U2l6ZSA8IGl0LT52YWx1ZS0+ZW50cnlTaXplKCkpCisgICAgICAgICAgICBtX2N1cnJlbnRTdG9y
YWdlU2l6ZSA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VT
aXplIC09IGl0LT52YWx1ZS0+ZW50cnlTaXplKCk7CisKICAgICAgICAgaXQtPnZhbHVlLT5pbnZh
bGlkYXRlKCk7CisgICAgICAgIG1fTFJVRW50cnlMaXN0LnJlbW92ZSh1cmwpOwogICAgICAgICBt
X2luZGV4LnJlbW92ZSh1cmwpOwogICAgIH0KIH0KQEAgLTI1OSw3ICsyOTYsNyBAQCB2b2lkIEN1
cmxDYWNoZU1hbmFnZXI6OmRpZEZhaWwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaW52YWxpZGF0
ZUNhY2hlRW50cnkodXJsKTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkQ2FjaGVk
RGF0YShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnJlYWRDYWNoZWREYXRhKGNv
bnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY3
LDcgKzMwNCw4IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZENhY2hlZERhdGEoY29uc3Qg
U3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIFJlCiAgICAgSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2FjaGVFbnRyeT4+OjppdGVyYXRvciBpdCA9IG1faW5kZXgu
ZmluZCh1cmwpOwogICAgIGlmIChpdCAhPSBtX2luZGV4LmVuZCgpKSB7CiAgICAgICAgIGl0LT52
YWx1ZS0+c2V0UmVzcG9uc2VGcm9tQ2FjaGVkSGVhZGVycyhyZXNwb25zZSk7Ci0gICAgICAgIGlm
ICghaXQtPnZhbHVlLT5sb2FkQ2FjaGVkRGF0YShqb2IpKQorICAgICAgICBtX0xSVUVudHJ5TGlz
dC5wcmVwZW5kT3JNb3ZlVG9GaXJzdCh1cmwpOworICAgICAgICBpZiAoIWl0LT52YWx1ZS0+cmVh
ZENhY2hlZERhdGEoam9iKSkKICAgICAgICAgICAgIGludmFsaWRhdGVDYWNoZUVudHJ5KHVybCk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKaW5kZXggNjRhOTE2OS4uZTA2ZDU1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMTYgKzQxLDE3IEBAIGNsYXNzIEN1cmxD
YWNoZU1hbmFnZXIgewogcHVibGljOgogICAgIHN0YXRpYyBDdXJsQ2FjaGVNYW5hZ2VyJiBnZXRJ
bnN0YW5jZSgpOwogCi0gICAgY29uc3QgU3RyaW5nJiBnZXRDYWNoZURpcmVjdG9yeSgpIHsgcmV0
dXJuIG1fY2FjaGVEaXI7IH0KICAgICB2b2lkIHNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpOworICAgIGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnkoKSB7IHJldHVybiBtX2NhY2hl
RGlyOyB9CisgICAgdm9pZCBzZXRTdG9yYWdlU2l6ZUxpbWl0KHNpemVfdCk7CiAKICAgICBib29s
IGlzQ2FjaGVkKGNvbnN0IFN0cmluZyYpOwotICAgIEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFk
ZXJzKGNvbnN0IFN0cmluZyYpOyAvLyBsb2FkIGhlYWRlcnMKKyAgICBIVFRQSGVhZGVyTWFwJiBy
ZXF1ZXN0SGVhZGVycyhjb25zdCBTdHJpbmcmKTsgLy8gTG9hZCBoZWFkZXJzCiAKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpOyAvLyBzYXZlIGRhdGEKLSAgICB2b2lkIGRpZEZhaWwoY29uc3QgU3RyaW5nJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsg
Ly8gU2F2ZSBkYXRhCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBDdXJsQ2Fj
aGVNYW5hZ2VyKCk7CkBAIC01NywxNiArNTksMjEgQEAgcHJpdmF0ZToKICAgICBDdXJsQ2FjaGVN
YW5hZ2VyKEN1cmxDYWNoZU1hbmFnZXIgY29uc3QmKTsKICAgICB2b2lkIG9wZXJhdG9yPShDdXJs
Q2FjaGVNYW5hZ2VyIGNvbnN0Jik7CiAKKyAgICBib29sIG1fZGlzYWJsZWQ7CiAgICAgU3RyaW5n
IG1fY2FjaGVEaXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxDdXJsQ2Fj
aGVFbnRyeT4+IG1faW5kZXg7Ci0gICAgYm9vbCBtX2Rpc2FibGVkOworCisgICAgTGlzdEhhc2hT
ZXQ8U3RyaW5nPiBtX0xSVUVudHJ5TGlzdDsKKyAgICBzaXplX3QgbV9jdXJyZW50U3RvcmFnZVNp
emU7CisgICAgc2l6ZV90IG1fc3RvcmFnZVNpemVMaW1pdDsKIAogICAgIHZvaWQgc2F2ZUluZGV4
KCk7CiAgICAgdm9pZCBsb2FkSW5kZXgoKTsKKyAgICB2b2lkIG1ha2VSb29tRm9yTmV3RW50cnko
KTsKIAogICAgIHZvaWQgc2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBTdHJpbmcmLCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIGxvYWRDYWNoZWREYXRhKGNvbnN0IFN0cmluZyYsIFJlc291cmNlSGFuZGxl
KiwgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgcmVhZENhY2hlZERhdGEoY29uc3QgU3Ry
aW5nJiwgUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJik7CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>