<?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>36040</bug_id>
          
          <creation_ts>2010-03-11 16:33:39 -0800</creation_ts>
          <short_desc>More open-source image decoder cleanup</short_desc>
          <delta_ts>2010-03-15 13:09:00 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Kasting">pkasting</reporter>
          <assigned_to name="Peter Kasting">pkasting</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>198832</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-03-11 16:33:39 -0800</bug_when>
    <thetext>Patch coming to clean up a bunch of small bits, to be described in more detail on the patch itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198838</commentid>
    <comment_count>1</comment_count>
      <attachid>50560</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-03-11 16:43:04 -0800</bug_when>
    <thetext>Created attachment 50560
patch v1

Details on the ChangeLog.  Half of this is making things simpler, the other half is making things consistent between the different decoders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198842</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-11 16:47:02 -0800</bug_when>
    <thetext>Attachment 50560 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp:144:  num_bytes is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198846</commentid>
    <comment_count>3</comment_count>
      <attachid>50561</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-03-11 16:50:30 -0800</bug_when>
    <thetext>Created attachment 50561
patch v2

It&apos;s always a judgment call which style issues in the JPEGImageDecoder file to fix; fixed this one because it&apos;s our member function rather than one of the C API functions libjpeg calls directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199339</commentid>
    <comment_count>4</comment_count>
      <attachid>50561</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-13 02:00:07 -0800</bug_when>
    <thetext>Comment on attachment 50561
patch v2

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199780</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-03-15 13:09:00 -0700</bug_when>
    <thetext>Fixed in r56007.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50560</attachid>
            <date>2010-03-11 16:43:04 -0800</date>
            <delta_ts>2010-03-11 16:50:30 -0800</delta_ts>
            <desc>patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16939</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTg2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMTAtMDMtMTEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsZWFuIHVwIG1vcmUgYml0cyBvZiB0aGUgb3Blbi1zb3VyY2UgaW1hZ2UgZGVjb2RlcnMuICBJ
biBhZGRpdGlvbiB0bworICAgICAgICBzaW1wbGlmeWluZyB0aGluZ3Mgc29tZXdoYXQsIHRoaXMg
bWFrZXMgYWxsIHRoZSBkZWNvZGVycyB0aGUgc2FtZSBpbgorICAgICAgICB0ZXJtcyBvZiBob3cg
dGhleSBjb25zdHJ1Y3QgImltYWdlIHJlYWRlciIgc3ViY2xhc3NlcyBhbmQgaW5pdCBzY2FsZQor
ICAgICAgICBkYXRhLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjA0MAorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBubyB0ZXN0
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOiBS
ZW9yZGVyIGEgZmV3IGRlY2xhcmF0aW9ucyB0byB0cnkgYW5kIGdyb3VwL29yZGVyIG1lbWJlcnMg
c2xpZ2h0bHkgYmV0dGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpJbWFnZURl
Y29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwOiBNb3ZlIHJlYWRlciBjb25zdHJ1Y3Rpb24gaW50byBkZWNvZGUoKS4gIFByZXAg
c2NhbGUgZGF0YSBpbiBzZXRTaXplKCkuICBSZW1vdmUgdXNlbGVzcyBjb21tZW50LgorICAgICAg
ICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURl
Y29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURl
Y29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oOiBQcmVwIHNjYWxlIGRhdGEgaW4gc2V0U2l6ZSgpLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6IFByZXAgc2Nh
bGUgZGF0YSBpbiBzZXRTaXplKCkuCisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6cmVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6
IFNob3J0ZW4gY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0U2l6
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcDogRml4IHN0eWxlLiAgTW92ZSByZWFkZXIgY29uc3RydWN0aW9uIGludG8gZGVjb2Rl
KCkuCisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VSZWFkZXI6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6c2tpcEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6IE1vdmUgcmVhZGVyIGNvbnN0cnVjdGlvbiBp
bnRvIGRlY29kZSgpLgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZmlsZW5h
bWVFeHRlbnNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwOiBNb3ZlIHJlYWRlciBjb25zdHJ1Y3Rpb24gaW50byBkZWNvZGUoKS4g
IFRyYWNrIGNvbXBsZXRpb24gb24gZGVjb2Rlciwgbm90IHJlYWRlci4gIFByZXAgc2NhbGUgZGF0
YSBpbiBzZXRTaXplKCkuICBSZW1vdmUgdXNlbGVzcyBjb21tZW50LgorICAgICAgICAoV2ViQ29y
ZTo6UE5HSW1hZ2VSZWFkZXI6OlBOR0ltYWdlUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBO
R0ltYWdlUmVhZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZVJlYWRlcjo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnBuZ0NvbXBsZXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmg6IE1vdmUgcmVhZGVyIGNvbnN0cnVjdGlv
biBpbnRvIGRlY29kZSgpLiAgVHJhY2sgY29tcGxldGlvbiBvbiBkZWNvZGVyLCBub3QgcmVhZGVy
LiAgUHJlcCBzY2FsZSBkYXRhIGluIHNldFNpemUoKS4KKyAgICAgICAgKFdlYkNvcmU6OlBOR0lt
YWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjppc0NvbXBsZXRlKToKKwogMjAxMC0wMy0xMSAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CShyZXZpc2lvbiA1NTg1MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw4ICsyMDUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIEltYWdlRGVjb2RlcigpCiAgICAgICAgICAgICA6IG1fc2NhbGVk
KGZhbHNlKQogICAgICAgICAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgICAgICAg
ICAsIG1faXNBbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fbWF4TnVtUGl4
ZWxzKC0xKQorICAgICAgICAgICAgLCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQogICAgICAg
ICAgICAgLCBtX2ZhaWxlZChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMjUsMTAg
KzMyNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBzY2FsZWRZKGludCBv
cmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7CiAKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgorICAgICAgICBWZWN0b3I8UkdCQTMyQnVm
ZmVyPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CisgICAgICAgIGJvb2wgbV9zY2FsZWQ7CiAgICAgICAg
IFZlY3RvcjxpbnQ+IG1fc2NhbGVkQ29sdW1uczsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2Fs
ZWRSb3dzOwotICAgICAgICBib29sIG1fc2NhbGVkOwotICAgICAgICBWZWN0b3I8UkdCQTMyQnVm
ZmVyPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBTb21l
IGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgYXMgIndpZHRoICogaGVp
Z2h0ICogNCIKQEAgLTM0NCw4ICszNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgSW50U2l6ZSBtX3NpemU7CiAgICAgICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlOwotICAgICAg
ICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7CiAgICAgICAgIGludCBtX21heE51bVBpeGVsczsK
KyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOwogICAgICAgICBib29sIG1fZmFpbGVk
OwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gNTU4NTMpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw5ICs0OSw2IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRh
KFNoYXJlZEJ1ZmYKIAogICAgIC8vIFdlIG5lZWQgdG8gcmVzY2FuIHRoZSBmcmFtZSBjb3VudCwg
YXMgdGhlIG5ldyBkYXRhIG1heSBoYXZlIGNoYW5nZWQgaXQuCiAgICAgbV9hbHJlYWR5U2Nhbm5l
ZFRoaXNEYXRhRm9yRnJhbWVDb3VudCA9IGZhbHNlOwotCi0gICAgaWYgKCFtX3JlYWRlciAmJiAh
ZmFpbGVkKCkpCi0gICAgICAgIG1fcmVhZGVyLnNldChuZXcgR0lGSW1hZ2VSZWFkZXIodGhpcykp
OwogfQogCiBib29sIEdJRkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTYyLDYg
KzU5LDE1IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJl
dHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCitib29sIEdJRkltYWdl
RGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAg
IGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogc2l6ZV90IEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCgpCiB7CiAg
ICAgaWYgKCFtX2FscmVhZHlTY2FubmVkVGhpc0RhdGFGb3JGcmFtZUNvdW50KSB7CkBAIC0xMDks
NyArMTE1LDcgQEAgUkdCQTMyQnVmZmVyKiBHSUZJbWFnZURlY29kZXI6OmZyYW1lQnVmZgogCiAg
ICAgUkdCQTMyQnVmZmVyJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF07CiAgICAg
aWYgKGZyYW1lLnN0YXR1cygpICE9IFJHQkEzMkJ1ZmZlcjo6RnJhbWVDb21wbGV0ZSkKLSAgICAg
ICAgZGVjb2RlKGluZGV4ICsgMSwgR0lGRnVsbFF1ZXJ5KTsgLy8gRGVjb2RlIHRoaXMgZnJhbWUu
CisgICAgICAgIGRlY29kZShpbmRleCArIDEsIEdJRkZ1bGxRdWVyeSk7CiAgICAgcmV0dXJuICZm
cmFtZTsKIH0KIApAQCAtMTYzLDE1ICsxNjksNiBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6Y2xl
YXJGcmFtZUJ1ZmZlckNhCiAgICAgfQogfQogCi1ib29sIEdJRkltYWdlRGVjb2Rlcjo6c2l6ZU5v
d0F2YWlsYWJsZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQotewotICAgIGlmICgh
c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcHJl
cGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQg
R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGluZ0hhbHRlZCh1bnNpZ25lZCBieXRlc0xlZnQpCiB7CiAg
ICAgbV9yZWFkT2Zmc2V0ID0gbV9kYXRhLT5zaXplKCkgLSBieXRlc0xlZnQ7CkBAIC0yOTEsOSAr
Mjg4LDEyIEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpnaWZDb21wbGV0ZSgpCiAKIHZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5
KQogewotICAgIGlmIChmYWlsZWQoKSB8fCAhbV9yZWFkZXIpCisgICAgaWYgKGZhaWxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoIW1fcmVhZGVyKQorICAgICAgICBtX3JlYWRlci5z
ZXQobmV3IEdJRkltYWdlUmVhZGVyKHRoaXMpKTsKKwogICAgIGlmICghbV9yZWFkZXItPnJlYWQo
KGNvbnN0IHVuc2lnbmVkIGNoYXIqKW1fZGF0YS0+ZGF0YSgpICsgbV9yZWFkT2Zmc2V0LCBtX2Rh
dGEtPnNpemUoKSAtIG1fcmVhZE9mZnNldCwgcXVlcnksIGhhbHRBdEZyYW1lKSkKICAgICAgICAg
c2V0RmFpbGVkKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCShyZXZpc2lvbiA1NTg1MykKKysrIFdlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSwxMyArNDUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJnaWYiOyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBo
ZWlnaHQpOwogICAgICAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCk7CiAgICAgICAgIHZp
cnR1YWwgaW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFJHQkEz
MkJ1ZmZlciogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpOwog
CiAgICAgICAgIC8vIENhbGxiYWNrcyBmcm9tIHRoZSBHSUYgcmVhZGVyLgotICAgICAgICBib29s
IHNpemVOb3dBdmFpbGFibGUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAgICAg
ICAgIHZvaWQgZGVjb2RpbmdIYWx0ZWQodW5zaWduZWQgYnl0ZXNMZWZ0KTsKICAgICAgICAgYm9v
bCBoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBjaGFyKiByb3dC
dWZmZXIsIHVuc2lnbmVkIGNoYXIqIHJvd0VuZCwgdW5zaWduZWQgcm93TnVtYmVyLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwgYm9vbCB3cml0ZVRyYW5zcGFyZW50UGl4ZWxzKTsKICAgICAgICAgdm9p
ZCBmcmFtZUNvbXBsZXRlKHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGZyYW1lRHVyYXRp
b24sIFJHQkEzMkJ1ZmZlcjo6RnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCk7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuY3BwCShyZXZpc2lvbiA1NTg1MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5
LDcgKzUxOSw3IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OnJlYWQoY29uc3QgdW5zaWduZWQKICAg
ICAgIHNjcmVlbl9oZWlnaHQgPSBHRVRJTlQxNihxICsgMik7CiAKICAgICAgIC8vIENBTExCQUNL
OiBJbmZvcm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUuCi0gICAgICBpZiAoY2xpZW50
cHRyICYmICFjbGllbnRwdHItPnNpemVOb3dBdmFpbGFibGUoc2NyZWVuX3dpZHRoLCBzY3JlZW5f
aGVpZ2h0KSkKKyAgICAgIGlmIChjbGllbnRwdHIgJiYgIWNsaWVudHB0ci0+c2V0U2l6ZShzY3Jl
ZW5fd2lkdGgsIHNjcmVlbl9oZWlnaHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAK
ICAgICAgIHNjcmVlbl9iZ2NvbG9yID0gcVs1XTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBib29sIEdJ
RkltYWdlUmVhZGVyOjpyZWFkKGNvbnN0IHVuc2lnbmVkCiAgICAgICAgIHlfb2Zmc2V0ID0gMDsK
IAogICAgICAgICAvLyBDQUxMQkFDSzogSW5mb3JtIHRoZSBkZWNvZGVycGx1Z2luIG9mIG91ciBz
aXplLgotICAgICAgICBpZiAoY2xpZW50cHRyICYmICFjbGllbnRwdHItPnNpemVOb3dBdmFpbGFi
bGUoc2NyZWVuX3dpZHRoLCBzY3JlZW5faGVpZ2h0KSkKKyAgICAgICAgaWYgKGNsaWVudHB0ciAm
JiAhY2xpZW50cHRyLT5zZXRTaXplKHNjcmVlbl93aWR0aCwgc2NyZWVuX2hlaWdodCkpCiAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAJKHJldmlz
aW9uIDU1ODUzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsMTQgKzg4LDkgQEAgSW50U2l6ZSBJ
Q09JbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZQogCiBib29sIElDT0ltYWdlRGVjb2Rlcjo6
c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogewotICAgIGlmIChtX2Zy
YW1lU2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBJbWFnZURlY29kZXI6OnNldFNpemUo
d2lkdGgsIGhlaWdodCk7Ci0KICAgICAvLyBUaGUgc2l6ZSBjYWxjdWxhdGVkIGluc2lkZSB0aGUg
Qk1QSW1hZ2VSZWFkZXIgaGFkIGJldHRlciBtYXRjaCB0aGUgb25lIGluCiAgICAgLy8gdGhlIGlj
b24gZGlyZWN0b3J5LgotICAgIGlmIChJbnRTaXplKHdpZHRoLCBoZWlnaHQpICE9IG1fZnJhbWVT
aXplKQotICAgICAgICBzZXRGYWlsZWQoKTsKLSAgICByZXR1cm4gIWZhaWxlZCgpOworICAgIHJl
dHVybiBtX2ZyYW1lU2l6ZS5pc0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNldFNpemUod2lkdGgs
IGhlaWdodCkgOiAoKEludFNpemUod2lkdGgsIGhlaWdodCkgPT0gbV9mcmFtZVNpemUpIHx8IHNl
dEZhaWxlZCgpKTsKIH0KIAogc2l6ZV90IElDT0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCgpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiA1NTg1MykKKysrIFdlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTMxLDcgKzEzMSw4IEBAIHB1YmxpYzoKICAgICAgICAgY2xvc2UoKTsKICAgICB9CiAK
LSAgICB2b2lkIGNsb3NlKCkgeworICAgIHZvaWQgY2xvc2UoKQorICAgIHsKICAgICAgICAgZGVj
b2Rlcl9zb3VyY2VfbWdyKiBzcmMgPSAoZGVjb2Rlcl9zb3VyY2VfbWdyKiltX2luZm8uc3JjOwog
ICAgICAgICBpZiAoc3JjKQogICAgICAgICAgICAgZmFzdEZyZWUoc3JjKTsKQEAgLTE0MCw3ICsx
NDEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGpwZWdfZGVzdHJveV9kZWNvbXByZXNzKCZtX2luZm8p
OwogICAgIH0KIAotICAgIHZvaWQgc2tpcEJ5dGVzKGxvbmcgbnVtX2J5dGVzKSB7CisgICAgdm9p
ZCBza2lwQnl0ZXMobG9uZyBudW1fYnl0ZXMpCisgICAgewogICAgICAgICBkZWNvZGVyX3NvdXJj
ZV9tZ3IqIHNyYyA9IChkZWNvZGVyX3NvdXJjZV9tZ3IqKW1faW5mby5zcmM7CiAgICAgICAgIGxv
bmcgYnl0ZXNUb1NraXAgPSBzdGQ6Om1pbihudW1fYnl0ZXMsIChsb25nKXNyYy0+cHViLmJ5dGVz
X2luX2J1ZmZlcik7CiAgICAgICAgIHNyYy0+cHViLmJ5dGVzX2luX2J1ZmZlciAtPSAoc2l6ZV90
KWJ5dGVzVG9Ta2lwOwpAQCAtMzc4LDE3ICszODAsNiBAQCBKUEVHSW1hZ2VEZWNvZGVyOjp+SlBF
R0ltYWdlRGVjb2RlcigpCiB7CiB9CiAKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotICAgIGlmIChmYWls
ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7Ci0KLSAgICBpZiAoIW1fcmVhZGVyICYmICFmYWlsZWQoKSkKLSAg
ICAgICAgbV9yZWFkZXIuc2V0KG5ldyBKUEVHSW1hZ2VSZWFkZXIodGhpcykpOwotfQotCiBib29s
IEpQRUdJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCiB7CiAgICAgaWYgKCFJbWFnZURl
Y29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpKQpAQCAtNDkwLDkgKzQ4MSwxMiBAQCB2b2lkIEpQRUdJ
bWFnZURlY29kZXI6OmpwZWdDb21wbGV0ZSgpCiAKIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVj
b2RlKGJvb2wgb25seVNpemUpCiB7Ci0gICAgaWYgKGZhaWxlZCgpIHx8ICFtX3JlYWRlcikKKyAg
ICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghbV9yZWFkZXIpCisg
ICAgICAgIG1fcmVhZGVyLnNldChuZXcgSlBFR0ltYWdlUmVhZGVyKHRoaXMpKTsKKwogICAgIGlm
ICghbV9yZWFkZXItPmRlY29kZShtX2RhdGEtPmJ1ZmZlcigpLCBvbmx5U2l6ZSkpCiAgICAgICAg
IHNldEZhaWxlZCgpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDU1ODUzKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gImpwZyI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKICAgICAgICAgdmlydHVhbCBib29sIHNl
dFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAgICAgICAgIHZpcnR1YWwg
UkdCQTMyQnVmZmVyKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcAkocmV2aXNpb24gNTU4NTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5
NSw2IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RlY29kaW5nU2l6ZU9ubHkoZmFsc2UpCiAgICAg
ICAgICwgbV9pbnRlcmxhY2VCdWZmZXIoMCkKICAgICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQot
ICAgICAgICAsIG1faGFzRmluaXNoZWREZWNvZGluZyhmYWxzZSkKICAgICAgICAgLCBtX2N1cnJl
bnRCdWZmZXJTaXplKDApCiAgICAgewogICAgICAgICBtX3BuZyA9IHBuZ19jcmVhdGVfcmVhZF9z
dHJ1Y3QoUE5HX0xJQlBOR19WRVJfU1RSSU5HLCAwLCBkZWNvZGluZ0ZhaWxlZCwgZGVjb2RpbmdX
YXJuaW5nKTsKQEAgLTExNiwxMyArMTE1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgZGVsZXRlW10g
bV9pbnRlcmxhY2VCdWZmZXI7CiAgICAgICAgIG1faW50ZXJsYWNlQnVmZmVyID0gMDsKICAgICAg
ICAgbV9yZWFkT2Zmc2V0ID0gMDsKLSAgICAgICAgbV9oYXNGaW5pc2hlZERlY29kaW5nID0gZmFs
c2U7CiAgICAgfQogCiAgICAgdW5zaWduZWQgY3VycmVudEJ1ZmZlclNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRCdWZmZXJTaXplOyB9CiAKLSAgICB2b2lkIHNldENvbXBsZXRlKCkgeyBt
X2hhc0ZpbmlzaGVkRGVjb2RpbmcgPSB0cnVlOyB9Ci0KICAgICB2b2lkIGRlY29kZShjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgc2l6ZU9ubHkpCiAgICAgewogICAgICAgICBtX2RlY29k
aW5nU2l6ZU9ubHkgPSBzaXplT25seTsKQEAgLTE0MywxMCArMTM5LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIC8vIFdlIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgc3VwZXJjbGFzcyBpc1NpemVB
dmFpbGFibGUoKSBiZWNhdXNlIHdlCiAgICAgICAgICAgICAvLyBtZXJlbHkgd2FudCB0byBjaGVj
ayBpZiB3ZSd2ZSBtYW5hZ2VkIHRvIHNldCB0aGUgc2l6ZSwgbm90CiAgICAgICAgICAgICAvLyAo
cmVjdXJzaXZlbHkpIHRyaWdnZXIgYWRkaXRpb25hbCBkZWNvZGluZyBpZiB3ZSBoYXZlbid0Lgot
ICAgICAgICAgICAgaWYgKChzaXplT25seSAmJiBkZWNvZGVyLT5JbWFnZURlY29kZXI6OmlzU2l6
ZUF2YWlsYWJsZSgpKSB8fCBtX2hhc0ZpbmlzaGVkRGVjb2RpbmcpCisgICAgICAgICAgICBpZiAo
c2l6ZU9ubHkgPyBkZWNvZGVyLT5JbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpIDogZGVj
b2Rlci0+aXNDb21wbGV0ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBpZiAoIW1faGFzRmluaXNoZWREZWNvZGluZyAmJiBkZWNvZGVyLT5pc0FsbERhdGFS
ZWNlaXZlZCgpKQorICAgICAgICBpZiAoIWRlY29kZXItPmlzQ29tcGxldGUoKSAmJiBkZWNvZGVy
LT5pc0FsbERhdGFSZWNlaXZlZCgpKQogICAgICAgICAgICAgZGVjb2Rlci0+cG5nQ29tcGxldGUo
KTsKICAgICB9CiAKQEAgLTE2OCw3ICsxNjQsNiBAQCBwcml2YXRlOgogICAgIHBuZ19pbmZvcCBt
X2luZm87CiAgICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVmZmVyOwogICAgIGJvb2wgbV9oYXNB
bHBoYTsKLSAgICBib29sIG1faGFzRmluaXNoZWREZWNvZGluZzsKICAgICB1bnNpZ25lZCBtX2N1
cnJlbnRCdWZmZXJTaXplOwogfTsKIApAQCAtMTgwLDE2ICsxNzUsNiBAQCBQTkdJbWFnZURlY29k
ZXI6On5QTkdJbWFnZURlY29kZXIoKQogewogfQogCi12b2lkIFBOR0ltYWdlRGVjb2Rlcjo6c2V0
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotICAgIGlm
IChmYWlsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW1hZ2VEZWNvZGVyOjpzZXREYXRh
KGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci0KLSAgICBpZiAoIW1fcmVhZGVyICYmICFmYWlsZWQo
KSkKLSAgICAgICAgbV9yZWFkZXIuc2V0KG5ldyBQTkdJbWFnZVJlYWRlcih0aGlzKSk7Ci19CiBi
b29sIFBOR0ltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKIHsKICAgICBpZiAoIUltYWdl
RGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkpCkBAIC0xOTgsNiArMTgzLDE1IEBAIGJvb2wgUE5H
SW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6
OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCitib29sIFBOR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSh1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIGlmICghSW1hZ2VEZWNvZGVy
OjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBw
cmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogUkdC
QTMyQnVmZmVyKiBQTkdJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5k
ZXgpCiB7CiAgICAgaWYgKGluZGV4KQpAQCAtMjA4LDcgKzIwMiw3IEBAIFJHQkEzMkJ1ZmZlciog
UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmYKIAogICAgIFJHQkEzMkJ1ZmZlciYgZnJhbWUgPSBt
X2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGZyYW1lLnN0YXR1cygpICE9IFJHQkEzMkJ1
ZmZlcjo6RnJhbWVDb21wbGV0ZSkKLSAgICAgICAgZGVjb2RlKGZhbHNlKTsgLy8gRGVjb2RlIHRo
aXMgZnJhbWUuCisgICAgICAgIGRlY29kZShmYWxzZSk7CiAgICAgcmV0dXJuICZmcmFtZTsKIH0K
IApAQCAtMjI2LDEzICsyMjAsOSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxh
YmxlKCkKICAgICB9CiAgICAgCiAgICAgLy8gV2UgY2FuIGZpbGwgaW4gdGhlIHNpemUgbm93IHRo
YXQgdGhlIGhlYWRlciBpcyBhdmFpbGFibGUuCi0gICAgaWYgKCFJbWFnZURlY29kZXI6OmlzU2l6
ZUF2YWlsYWJsZSgpKSB7Ci0gICAgICAgIGlmICghc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkgewot
ICAgICAgICAgICAgLy8gU2l6ZSB1bnJlYXNvbmFibGUsIGJhaWwgb3V0LgotICAgICAgICAgICAg
bG9uZ2ptcChwbmctPmptcGJ1ZiwgMSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgaWYgKCFzZXRTaXpl
KHdpZHRoLCBoZWlnaHQpKSB7CisgICAgICAgIGxvbmdqbXAocG5nLT5qbXBidWYsIDEpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaW50IGJpdERlcHRoLCBjb2xvclR5cGUsIGludGVy
bGFjZVR5cGUsIGNvbXByZXNzaW9uVHlwZSwgZmlsdGVyVHlwZSwgY2hhbm5lbHM7CkBAIC0zNjks
MjAgKzM1OSwyMSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnCiAK
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpwbmdDb21wbGV0ZSgpCiB7Ci0gICAgbV9yZWFkZXItPnNl
dENvbXBsZXRlKCk7Ci0KICAgICBpZiAoIW1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAg
ICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpLnNldFN0YXR1cyhSR0JBMzJCdWZmZXI6
OkZyYW1lQ29tcGxldGUpOwogfQogCiB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wg
b25seVNpemUpCiB7Ci0gICAgaWYgKGZhaWxlZCgpIHx8ICFtX3JlYWRlcikKKyAgICBpZiAoZmFp
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghbV9yZWFkZXIpCisgICAgICAgIG1f
cmVhZGVyLnNldChuZXcgUE5HSW1hZ2VSZWFkZXIodGhpcykpOworCiAgICAgbV9yZWFkZXItPmRl
Y29kZSgqbV9kYXRhLCBvbmx5U2l6ZSk7CiAgICAgCi0gICAgaWYgKGZhaWxlZCgpIHx8ICghbV9m
cmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSAmJiBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF0uc3RhdHVz
KCkgPT0gUkdCQTMyQnVmZmVyOjpGcmFtZUNvbXBsZXRlKSkKKyAgICBpZiAoZmFpbGVkKCkgfHwg
aXNDb21wbGV0ZSgpKQogICAgICAgICBtX3JlYWRlci5jbGVhcigpOwogfQogCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuaAkocmV2aXNpb24gNTU4NTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZp
cnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gInBuZyI7IH0K
LSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsK
KyAgICAgICAgdmlydHVhbCBib29sIHNldFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhl
aWdodCk7CiAgICAgICAgIHZpcnR1YWwgUkdCQTMyQnVmZmVyKiBmcmFtZUJ1ZmZlckF0SW5kZXgo
c2l6ZV90IGluZGV4KTsKIAogICAgICAgICAvLyBDYWxsYmFja3MgZnJvbSBsaWJwbmcKQEAgLTUw
LDYgKzUwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByb3dBdmFpbGFi
bGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwgaW50IGludGVy
bGFjZVBhc3MpOwogICAgICAgICB2b2lkIHBuZ0NvbXBsZXRlKCk7CiAKKyAgICAgICAgYm9vbCBp
c0NvbXBsZXRlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICFtX2ZyYW1l
QnVmZmVyQ2FjaGUuaXNFbXB0eSgpICYmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zdGF0
dXMoKSA9PSBSR0JBMzJCdWZmZXI6OkZyYW1lQ29tcGxldGUpOworICAgICAgICB9CisKICAgICBw
cml2YXRlOgogICAgICAgICAvLyBEZWNvZGVzIHRoZSBpbWFnZS4gIElmIHxvbmx5U2l6ZXwgaXMg
dHJ1ZSwgc3RvcHMgZGVjb2RpbmcgYWZ0ZXIKICAgICAgICAgLy8gY2FsY3VsYXRpbmcgdGhlIGlt
YWdlIHNpemUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50561</attachid>
            <date>2010-03-11 16:50:30 -0800</date>
            <delta_ts>2010-03-13 02:00:06 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17302</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTg2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMTAtMDMtMTEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsZWFuIHVwIG1vcmUgYml0cyBvZiB0aGUgb3Blbi1zb3VyY2UgaW1hZ2UgZGVjb2RlcnMuICBJ
biBhZGRpdGlvbiB0bworICAgICAgICBzaW1wbGlmeWluZyB0aGluZ3Mgc29tZXdoYXQsIHRoaXMg
bWFrZXMgYWxsIHRoZSBkZWNvZGVycyB0aGUgc2FtZSBpbgorICAgICAgICB0ZXJtcyBvZiBob3cg
dGhleSBjb25zdHJ1Y3QgImltYWdlIHJlYWRlciIgc3ViY2xhc3NlcyBhbmQgaW5pdCBzY2FsZQor
ICAgICAgICBkYXRhLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjA0MAorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBubyB0ZXN0
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOiBS
ZW9yZGVyIGEgZmV3IGRlY2xhcmF0aW9ucyB0byB0cnkgYW5kIGdyb3VwL29yZGVyIG1lbWJlcnMg
c2xpZ2h0bHkgYmV0dGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpJbWFnZURl
Y29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwOiBNb3ZlIHJlYWRlciBjb25zdHJ1Y3Rpb24gaW50byBkZWNvZGUoKS4gIFByZXAg
c2NhbGUgZGF0YSBpbiBzZXRTaXplKCkuICBSZW1vdmUgdXNlbGVzcyBjb21tZW50LgorICAgICAg
ICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURl
Y29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURl
Y29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oOiBQcmVwIHNjYWxlIGRhdGEgaW4gc2V0U2l6ZSgpLgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6IFByZXAgc2Nh
bGUgZGF0YSBpbiBzZXRTaXplKCkuCisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6cmVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6
IFNob3J0ZW4gY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0U2l6
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcDogRml4IHN0eWxlLiAgTW92ZSByZWFkZXIgY29uc3RydWN0aW9uIGludG8gZGVjb2Rl
KCkuCisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VSZWFkZXI6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6c2tpcEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6IE1vdmUgcmVhZGVyIGNvbnN0cnVjdGlvbiBp
bnRvIGRlY29kZSgpLgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZmlsZW5h
bWVFeHRlbnNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwOiBNb3ZlIHJlYWRlciBjb25zdHJ1Y3Rpb24gaW50byBkZWNvZGUoKS4g
IFRyYWNrIGNvbXBsZXRpb24gb24gZGVjb2Rlciwgbm90IHJlYWRlci4gIFByZXAgc2NhbGUgZGF0
YSBpbiBzZXRTaXplKCkuICBSZW1vdmUgdXNlbGVzcyBjb21tZW50LgorICAgICAgICAoV2ViQ29y
ZTo6UE5HSW1hZ2VSZWFkZXI6OlBOR0ltYWdlUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBO
R0ltYWdlUmVhZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZVJlYWRlcjo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnBuZ0NvbXBsZXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmg6IE1vdmUgcmVhZGVyIGNvbnN0cnVjdGlv
biBpbnRvIGRlY29kZSgpLiAgVHJhY2sgY29tcGxldGlvbiBvbiBkZWNvZGVyLCBub3QgcmVhZGVy
LiAgUHJlcCBzY2FsZSBkYXRhIGluIHNldFNpemUoKS4KKyAgICAgICAgKFdlYkNvcmU6OlBOR0lt
YWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjppc0NvbXBsZXRlKToKKwogMjAxMC0wMy0xMSAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CShyZXZpc2lvbiA1NTg1MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw4ICsyMDUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIEltYWdlRGVjb2RlcigpCiAgICAgICAgICAgICA6IG1fc2NhbGVk
KGZhbHNlKQogICAgICAgICAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgICAgICAg
ICAsIG1faXNBbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fbWF4TnVtUGl4
ZWxzKC0xKQorICAgICAgICAgICAgLCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQogICAgICAg
ICAgICAgLCBtX2ZhaWxlZChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zMjUsMTAg
KzMyNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBzY2FsZWRZKGludCBv
cmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7CiAKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgorICAgICAgICBWZWN0b3I8UkdCQTMyQnVm
ZmVyPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CisgICAgICAgIGJvb2wgbV9zY2FsZWQ7CiAgICAgICAg
IFZlY3RvcjxpbnQ+IG1fc2NhbGVkQ29sdW1uczsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2Fs
ZWRSb3dzOwotICAgICAgICBib29sIG1fc2NhbGVkOwotICAgICAgICBWZWN0b3I8UkdCQTMyQnVm
ZmVyPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBTb21l
IGNvZGUgcGF0aHMgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgYXMgIndpZHRoICogaGVp
Z2h0ICogNCIKQEAgLTM0NCw4ICszNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgSW50U2l6ZSBtX3NpemU7CiAgICAgICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlOwotICAgICAg
ICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7CiAgICAgICAgIGludCBtX21heE51bVBpeGVsczsK
KyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOwogICAgICAgICBib29sIG1fZmFpbGVk
OwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gNTU4NTMpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw5ICs0OSw2IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRh
KFNoYXJlZEJ1ZmYKIAogICAgIC8vIFdlIG5lZWQgdG8gcmVzY2FuIHRoZSBmcmFtZSBjb3VudCwg
YXMgdGhlIG5ldyBkYXRhIG1heSBoYXZlIGNoYW5nZWQgaXQuCiAgICAgbV9hbHJlYWR5U2Nhbm5l
ZFRoaXNEYXRhRm9yRnJhbWVDb3VudCA9IGZhbHNlOwotCi0gICAgaWYgKCFtX3JlYWRlciAmJiAh
ZmFpbGVkKCkpCi0gICAgICAgIG1fcmVhZGVyLnNldChuZXcgR0lGSW1hZ2VSZWFkZXIodGhpcykp
OwogfQogCiBib29sIEdJRkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTYyLDYg
KzU5LDE1IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJl
dHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCitib29sIEdJRkltYWdl
RGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAg
IGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogc2l6ZV90IEdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCgpCiB7CiAg
ICAgaWYgKCFtX2FscmVhZHlTY2FubmVkVGhpc0RhdGFGb3JGcmFtZUNvdW50KSB7CkBAIC0xMDks
NyArMTE1LDcgQEAgUkdCQTMyQnVmZmVyKiBHSUZJbWFnZURlY29kZXI6OmZyYW1lQnVmZgogCiAg
ICAgUkdCQTMyQnVmZmVyJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF07CiAgICAg
aWYgKGZyYW1lLnN0YXR1cygpICE9IFJHQkEzMkJ1ZmZlcjo6RnJhbWVDb21wbGV0ZSkKLSAgICAg
ICAgZGVjb2RlKGluZGV4ICsgMSwgR0lGRnVsbFF1ZXJ5KTsgLy8gRGVjb2RlIHRoaXMgZnJhbWUu
CisgICAgICAgIGRlY29kZShpbmRleCArIDEsIEdJRkZ1bGxRdWVyeSk7CiAgICAgcmV0dXJuICZm
cmFtZTsKIH0KIApAQCAtMTYzLDE1ICsxNjksNiBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6Y2xl
YXJGcmFtZUJ1ZmZlckNhCiAgICAgfQogfQogCi1ib29sIEdJRkltYWdlRGVjb2Rlcjo6c2l6ZU5v
d0F2YWlsYWJsZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQotewotICAgIGlmICgh
c2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcHJl
cGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQg
R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGluZ0hhbHRlZCh1bnNpZ25lZCBieXRlc0xlZnQpCiB7CiAg
ICAgbV9yZWFkT2Zmc2V0ID0gbV9kYXRhLT5zaXplKCkgLSBieXRlc0xlZnQ7CkBAIC0yOTEsOSAr
Mjg4LDEyIEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpnaWZDb21wbGV0ZSgpCiAKIHZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5
KQogewotICAgIGlmIChmYWlsZWQoKSB8fCAhbV9yZWFkZXIpCisgICAgaWYgKGZhaWxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoIW1fcmVhZGVyKQorICAgICAgICBtX3JlYWRlci5z
ZXQobmV3IEdJRkltYWdlUmVhZGVyKHRoaXMpKTsKKwogICAgIGlmICghbV9yZWFkZXItPnJlYWQo
KGNvbnN0IHVuc2lnbmVkIGNoYXIqKW1fZGF0YS0+ZGF0YSgpICsgbV9yZWFkT2Zmc2V0LCBtX2Rh
dGEtPnNpemUoKSAtIG1fcmVhZE9mZnNldCwgcXVlcnksIGhhbHRBdEZyYW1lKSkKICAgICAgICAg
c2V0RmFpbGVkKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCShyZXZpc2lvbiA1NTg1MykKKysrIFdlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSwxMyArNDUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuICJnaWYiOyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBo
ZWlnaHQpOwogICAgICAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCk7CiAgICAgICAgIHZp
cnR1YWwgaW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFJHQkEz
MkJ1ZmZlciogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpOwog
CiAgICAgICAgIC8vIENhbGxiYWNrcyBmcm9tIHRoZSBHSUYgcmVhZGVyLgotICAgICAgICBib29s
IHNpemVOb3dBdmFpbGFibGUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAgICAg
ICAgIHZvaWQgZGVjb2RpbmdIYWx0ZWQodW5zaWduZWQgYnl0ZXNMZWZ0KTsKICAgICAgICAgYm9v
bCBoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBjaGFyKiByb3dC
dWZmZXIsIHVuc2lnbmVkIGNoYXIqIHJvd0VuZCwgdW5zaWduZWQgcm93TnVtYmVyLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwgYm9vbCB3cml0ZVRyYW5zcGFyZW50UGl4ZWxzKTsKICAgICAgICAgdm9p
ZCBmcmFtZUNvbXBsZXRlKHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGZyYW1lRHVyYXRp
b24sIFJHQkEzMkJ1ZmZlcjo6RnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCk7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuY3BwCShyZXZpc2lvbiA1NTg1MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5
LDcgKzUxOSw3IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OnJlYWQoY29uc3QgdW5zaWduZWQKICAg
ICAgIHNjcmVlbl9oZWlnaHQgPSBHRVRJTlQxNihxICsgMik7CiAKICAgICAgIC8vIENBTExCQUNL
OiBJbmZvcm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUuCi0gICAgICBpZiAoY2xpZW50
cHRyICYmICFjbGllbnRwdHItPnNpemVOb3dBdmFpbGFibGUoc2NyZWVuX3dpZHRoLCBzY3JlZW5f
aGVpZ2h0KSkKKyAgICAgIGlmIChjbGllbnRwdHIgJiYgIWNsaWVudHB0ci0+c2V0U2l6ZShzY3Jl
ZW5fd2lkdGgsIHNjcmVlbl9oZWlnaHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAK
ICAgICAgIHNjcmVlbl9iZ2NvbG9yID0gcVs1XTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBib29sIEdJ
RkltYWdlUmVhZGVyOjpyZWFkKGNvbnN0IHVuc2lnbmVkCiAgICAgICAgIHlfb2Zmc2V0ID0gMDsK
IAogICAgICAgICAvLyBDQUxMQkFDSzogSW5mb3JtIHRoZSBkZWNvZGVycGx1Z2luIG9mIG91ciBz
aXplLgotICAgICAgICBpZiAoY2xpZW50cHRyICYmICFjbGllbnRwdHItPnNpemVOb3dBdmFpbGFi
bGUoc2NyZWVuX3dpZHRoLCBzY3JlZW5faGVpZ2h0KSkKKyAgICAgICAgaWYgKGNsaWVudHB0ciAm
JiAhY2xpZW50cHRyLT5zZXRTaXplKHNjcmVlbl93aWR0aCwgc2NyZWVuX2hlaWdodCkpCiAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAJKHJldmlz
aW9uIDU1ODUzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsMTQgKzg4LDkgQEAgSW50U2l6ZSBJ
Q09JbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZQogCiBib29sIElDT0ltYWdlRGVjb2Rlcjo6
c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogewotICAgIGlmIChtX2Zy
YW1lU2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBJbWFnZURlY29kZXI6OnNldFNpemUo
d2lkdGgsIGhlaWdodCk7Ci0KICAgICAvLyBUaGUgc2l6ZSBjYWxjdWxhdGVkIGluc2lkZSB0aGUg
Qk1QSW1hZ2VSZWFkZXIgaGFkIGJldHRlciBtYXRjaCB0aGUgb25lIGluCiAgICAgLy8gdGhlIGlj
b24gZGlyZWN0b3J5LgotICAgIGlmIChJbnRTaXplKHdpZHRoLCBoZWlnaHQpICE9IG1fZnJhbWVT
aXplKQotICAgICAgICBzZXRGYWlsZWQoKTsKLSAgICByZXR1cm4gIWZhaWxlZCgpOworICAgIHJl
dHVybiBtX2ZyYW1lU2l6ZS5pc0VtcHR5KCkgPyBJbWFnZURlY29kZXI6OnNldFNpemUod2lkdGgs
IGhlaWdodCkgOiAoKEludFNpemUod2lkdGgsIGhlaWdodCkgPT0gbV9mcmFtZVNpemUpIHx8IHNl
dEZhaWxlZCgpKTsKIH0KIAogc2l6ZV90IElDT0ltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCgpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiA1NTg1MykKKysrIFdlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTMxLDcgKzEzMSw4IEBAIHB1YmxpYzoKICAgICAgICAgY2xvc2UoKTsKICAgICB9CiAK
LSAgICB2b2lkIGNsb3NlKCkgeworICAgIHZvaWQgY2xvc2UoKQorICAgIHsKICAgICAgICAgZGVj
b2Rlcl9zb3VyY2VfbWdyKiBzcmMgPSAoZGVjb2Rlcl9zb3VyY2VfbWdyKiltX2luZm8uc3JjOwog
ICAgICAgICBpZiAoc3JjKQogICAgICAgICAgICAgZmFzdEZyZWUoc3JjKTsKQEAgLTE0MCwxMyAr
MTQxLDE0IEBAIHB1YmxpYzoKICAgICAgICAganBlZ19kZXN0cm95X2RlY29tcHJlc3MoJm1faW5m
byk7CiAgICAgfQogCi0gICAgdm9pZCBza2lwQnl0ZXMobG9uZyBudW1fYnl0ZXMpIHsKKyAgICB2
b2lkIHNraXBCeXRlcyhsb25nIG51bUJ5dGVzKQorICAgIHsKICAgICAgICAgZGVjb2Rlcl9zb3Vy
Y2VfbWdyKiBzcmMgPSAoZGVjb2Rlcl9zb3VyY2VfbWdyKiltX2luZm8uc3JjOwotICAgICAgICBs
b25nIGJ5dGVzVG9Ta2lwID0gc3RkOjptaW4obnVtX2J5dGVzLCAobG9uZylzcmMtPnB1Yi5ieXRl
c19pbl9idWZmZXIpOworICAgICAgICBsb25nIGJ5dGVzVG9Ta2lwID0gc3RkOjptaW4obnVtQnl0
ZXMsIChsb25nKXNyYy0+cHViLmJ5dGVzX2luX2J1ZmZlcik7CiAgICAgICAgIHNyYy0+cHViLmJ5
dGVzX2luX2J1ZmZlciAtPSAoc2l6ZV90KWJ5dGVzVG9Ta2lwOwogICAgICAgICBzcmMtPnB1Yi5u
ZXh0X2lucHV0X2J5dGUgKz0gYnl0ZXNUb1NraXA7CiAKLSAgICAgICAgbV9ieXRlc1RvU2tpcCA9
IHN0ZDo6bWF4KG51bV9ieXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7
CisgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lw
LCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCiAgICAgYm9vbCBkZWNvZGUoY29uc3Qg
VmVjdG9yPGNoYXI+JiBkYXRhLCBib29sIG9ubHlTaXplKQpAQCAtMzc4LDE3ICszODAsNiBAQCBK
UEVHSW1hZ2VEZWNvZGVyOjp+SlBFR0ltYWdlRGVjb2RlcigpCiB7CiB9CiAKLXZvaWQgSlBFR0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQotewotICAgIGlmIChmYWlsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci0KLSAgICBpZiAoIW1fcmVh
ZGVyICYmICFmYWlsZWQoKSkKLSAgICAgICAgbV9yZWFkZXIuc2V0KG5ldyBKUEVHSW1hZ2VSZWFk
ZXIodGhpcykpOwotfQotCiBib29sIEpQRUdJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgp
CiB7CiAgICAgaWYgKCFJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpKQpAQCAtNDkwLDkg
KzQ4MSwxMiBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmpwZWdDb21wbGV0ZSgpCiAKIHZvaWQg
SlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUpCiB7Ci0gICAgaWYgKGZhaWxl
ZCgpIHx8ICFtX3JlYWRlcikKKyAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGlmICghbV9yZWFkZXIpCisgICAgICAgIG1fcmVhZGVyLnNldChuZXcgSlBFR0ltYWdlUmVh
ZGVyKHRoaXMpKTsKKwogICAgIGlmICghbV9yZWFkZXItPmRlY29kZShtX2RhdGEtPmJ1ZmZlcigp
LCBvbmx5U2l6ZSkpCiAgICAgICAgIHNldEZhaWxlZCgpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgJ
KHJldmlzaW9uIDU1ODUzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIHZpcnR1
YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gImpwZyI7IH0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKICAg
ICAgICAgdmlydHVhbCBib29sIHNldFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdo
dCk7CiAgICAgICAgIHZpcnR1YWwgUkdCQTMyQnVmZmVyKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6
ZV90IGluZGV4KTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gNTU4NTMpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw2IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RlY29kaW5n
U2l6ZU9ubHkoZmFsc2UpCiAgICAgICAgICwgbV9pbnRlcmxhY2VCdWZmZXIoMCkKICAgICAgICAg
LCBtX2hhc0FscGhhKGZhbHNlKQotICAgICAgICAsIG1faGFzRmluaXNoZWREZWNvZGluZyhmYWxz
ZSkKICAgICAgICAgLCBtX2N1cnJlbnRCdWZmZXJTaXplKDApCiAgICAgewogICAgICAgICBtX3Bu
ZyA9IHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3QoUE5HX0xJQlBOR19WRVJfU1RSSU5HLCAwLCBkZWNv
ZGluZ0ZhaWxlZCwgZGVjb2RpbmdXYXJuaW5nKTsKQEAgLTExNiwxMyArMTE1LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgZGVsZXRlW10gbV9pbnRlcmxhY2VCdWZmZXI7CiAgICAgICAgIG1faW50ZXJs
YWNlQnVmZmVyID0gMDsKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKLSAgICAgICAgbV9oYXNG
aW5pc2hlZERlY29kaW5nID0gZmFsc2U7CiAgICAgfQogCiAgICAgdW5zaWduZWQgY3VycmVudEJ1
ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRCdWZmZXJTaXplOyB9CiAKLSAgICB2
b2lkIHNldENvbXBsZXRlKCkgeyBtX2hhc0ZpbmlzaGVkRGVjb2RpbmcgPSB0cnVlOyB9Ci0KICAg
ICB2b2lkIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgc2l6ZU9ubHkpCiAg
ICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBzaXplT25seTsKQEAgLTE0MywxMCAr
MTM5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdlIGV4cGxpY2l0bHkgc3BlY2lmeSB0
aGUgc3VwZXJjbGFzcyBpc1NpemVBdmFpbGFibGUoKSBiZWNhdXNlIHdlCiAgICAgICAgICAgICAv
LyBtZXJlbHkgd2FudCB0byBjaGVjayBpZiB3ZSd2ZSBtYW5hZ2VkIHRvIHNldCB0aGUgc2l6ZSwg
bm90CiAgICAgICAgICAgICAvLyAocmVjdXJzaXZlbHkpIHRyaWdnZXIgYWRkaXRpb25hbCBkZWNv
ZGluZyBpZiB3ZSBoYXZlbid0LgotICAgICAgICAgICAgaWYgKChzaXplT25seSAmJiBkZWNvZGVy
LT5JbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpKSB8fCBtX2hhc0ZpbmlzaGVkRGVjb2Rp
bmcpCisgICAgICAgICAgICBpZiAoc2l6ZU9ubHkgPyBkZWNvZGVyLT5JbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpIDogZGVjb2Rlci0+aXNDb21wbGV0ZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoIW1faGFzRmluaXNoZWREZWNvZGluZyAm
JiBkZWNvZGVyLT5pc0FsbERhdGFSZWNlaXZlZCgpKQorICAgICAgICBpZiAoIWRlY29kZXItPmlz
Q29tcGxldGUoKSAmJiBkZWNvZGVyLT5pc0FsbERhdGFSZWNlaXZlZCgpKQogICAgICAgICAgICAg
ZGVjb2Rlci0+cG5nQ29tcGxldGUoKTsKICAgICB9CiAKQEAgLTE2OCw3ICsxNjQsNiBAQCBwcml2
YXRlOgogICAgIHBuZ19pbmZvcCBtX2luZm87CiAgICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVm
ZmVyOwogICAgIGJvb2wgbV9oYXNBbHBoYTsKLSAgICBib29sIG1faGFzRmluaXNoZWREZWNvZGlu
ZzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRCdWZmZXJTaXplOwogfTsKIApAQCAtMTgwLDE2ICsx
NzUsNiBAQCBQTkdJbWFnZURlY29kZXI6On5QTkdJbWFnZURlY29kZXIoKQogewogfQogCi12b2lk
IFBOR0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQotewotICAgIGlmIChmYWlsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci0KLSAgICBpZiAo
IW1fcmVhZGVyICYmICFmYWlsZWQoKSkKLSAgICAgICAgbV9yZWFkZXIuc2V0KG5ldyBQTkdJbWFn
ZVJlYWRlcih0aGlzKSk7Ci19CiBib29sIFBOR0ltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxl
KCkKIHsKICAgICBpZiAoIUltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkpCkBAIC0xOTgs
NiArMTgzLDE1IEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogICAg
IHJldHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCitib29sIFBOR0lt
YWdlRGVjb2Rlcjo6c2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorewor
ICAgIGlmICghSW1hZ2VEZWNvZGVyOjpzZXRTaXplKHdpZHRoLCBoZWlnaHQpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogUkdCQTMyQnVmZmVyKiBQTkdJbWFnZURlY29kZXI6OmZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4KQpAQCAtMjA4LDcgKzIw
Miw3IEBAIFJHQkEzMkJ1ZmZlciogUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmYKIAogICAgIFJH
QkEzMkJ1ZmZlciYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgaWYgKGZyYW1l
LnN0YXR1cygpICE9IFJHQkEzMkJ1ZmZlcjo6RnJhbWVDb21wbGV0ZSkKLSAgICAgICAgZGVjb2Rl
KGZhbHNlKTsgLy8gRGVjb2RlIHRoaXMgZnJhbWUuCisgICAgICAgIGRlY29kZShmYWxzZSk7CiAg
ICAgcmV0dXJuICZmcmFtZTsKIH0KIApAQCAtMjI2LDEzICsyMjAsOSBAQCB2b2lkIFBOR0ltYWdl
RGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKICAgICB9CiAgICAgCiAgICAgLy8gV2UgY2FuIGZp
bGwgaW4gdGhlIHNpemUgbm93IHRoYXQgdGhlIGhlYWRlciBpcyBhdmFpbGFibGUuCi0gICAgaWYg
KCFJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpKSB7Ci0gICAgICAgIGlmICghc2V0U2l6
ZSh3aWR0aCwgaGVpZ2h0KSkgewotICAgICAgICAgICAgLy8gU2l6ZSB1bnJlYXNvbmFibGUsIGJh
aWwgb3V0LgotICAgICAgICAgICAgbG9uZ2ptcChwbmctPmptcGJ1ZiwgMSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5
KCk7CisgICAgaWYgKCFzZXRTaXplKHdpZHRoLCBoZWlnaHQpKSB7CisgICAgICAgIGxvbmdqbXAo
cG5nLT5qbXBidWYsIDEpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaW50IGJpdERl
cHRoLCBjb2xvclR5cGUsIGludGVybGFjZVR5cGUsIGNvbXByZXNzaW9uVHlwZSwgZmlsdGVyVHlw
ZSwgY2hhbm5lbHM7CkBAIC0zNjksMjAgKzM1OSwyMSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6
cm93QXZhaWxhYmxlKHVuc2lnCiAKIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpwbmdDb21wbGV0ZSgp
CiB7Ci0gICAgbV9yZWFkZXItPnNldENvbXBsZXRlKCk7Ci0KICAgICBpZiAoIW1fZnJhbWVCdWZm
ZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpLnNl
dFN0YXR1cyhSR0JBMzJCdWZmZXI6OkZyYW1lQ29tcGxldGUpOwogfQogCiB2b2lkIFBOR0ltYWdl
RGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUpCiB7Ci0gICAgaWYgKGZhaWxlZCgpIHx8ICFt
X3JlYWRlcikKKyAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICgh
bV9yZWFkZXIpCisgICAgICAgIG1fcmVhZGVyLnNldChuZXcgUE5HSW1hZ2VSZWFkZXIodGhpcykp
OworCiAgICAgbV9yZWFkZXItPmRlY29kZSgqbV9kYXRhLCBvbmx5U2l6ZSk7CiAgICAgCi0gICAg
aWYgKGZhaWxlZCgpIHx8ICghbV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSAmJiBtX2ZyYW1l
QnVmZmVyQ2FjaGVbMF0uc3RhdHVzKCkgPT0gUkdCQTMyQnVmZmVyOjpGcmFtZUNvbXBsZXRlKSkK
KyAgICBpZiAoZmFpbGVkKCkgfHwgaXNDb21wbGV0ZSgpKQogICAgICAgICBtX3JlYWRlci5jbGVh
cigpOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAkocmV2aXNpb24gNTU4NTMpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1h
Z2VEZWNvZGVyCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29u
c3QgeyByZXR1cm4gInBuZyI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNldFNpemUodW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CiAgICAgICAgIHZpcnR1YWwgUkdCQTMyQnVmZmVy
KiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KTsKIAogICAgICAgICAvLyBDYWxsYmFj
a3MgZnJvbSBsaWJwbmcKQEAgLTUwLDYgKzUwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCByb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25l
ZCByb3dJbmRleCwgaW50IGludGVybGFjZVBhc3MpOwogICAgICAgICB2b2lkIHBuZ0NvbXBsZXRl
KCk7CiAKKyAgICAgICAgYm9vbCBpc0NvbXBsZXRlKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICFtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpICYmIChtX2ZyYW1lQnVm
ZmVyQ2FjaGUuZmlyc3QoKS5zdGF0dXMoKSA9PSBSR0JBMzJCdWZmZXI6OkZyYW1lQ29tcGxldGUp
OworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICAvLyBEZWNvZGVzIHRoZSBpbWFn
ZS4gIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgc3RvcHMgZGVjb2RpbmcgYWZ0ZXIKICAgICAgICAg
Ly8gY2FsY3VsYXRpbmcgdGhlIGltYWdlIHNpemUuCg==
</data>
<flag name="review"
          id="33729"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>