<?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>22504</bug_id>
          
          <creation_ts>2008-11-25 17:55:02 -0800</creation_ts>
          <short_desc>Crashes during code generation occur due to refing of ignoredResult()</short_desc>
          <delta_ts>2008-12-02 22:14:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          <cc>darin</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>100352</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-11-25 17:55:02 -0800</bug_when>
    <thetext>One thing seems to have been slightly overlooked in the handling of ignoredResult(). Many functions pass their value of dst to BytecodeGenerator::emitNode() and then put its return value into a RefPtr. Unfortunately, many emitBytecode() Node member functions return their passed value of dst, which leads to a crash when attempting to increase the reference count of ignoredResult(). Here is an example of this:

function f()
{
    do
        try { } catch (o) { }
    while (false) { }
}

It seems that this problem was known, because there are many emitBytecode() functions that do something like

    if (dst == ignoredResult())
        dst = 0;

However, this seems like a suboptimal solution to the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100365</commentid>
    <comment_count>1</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-11-25 19:25:22 -0800</bug_when>
    <thetext>Geoff told me a pretty good solution to this bug. Make ignoredResult() an instance-specific register off of BytecodeGenerator, so that reffing it is legal. I think I will implement that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100525</commentid>
    <comment_count>2</comment_count>
      <attachid>25556</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-11-27 02:45:53 -0800</bug_when>
    <thetext>Created attachment 25556
Proposed patch (without tests)

I&apos;m gonna make some tests now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100678</commentid>
    <comment_count>3</comment_count>
      <attachid>25586</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-11-28 23:49:41 -0800</bug_when>
    <thetext>Created attachment 25586
Proposed patch

This includes all of the cases that will crash that I am aware of.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100854</commentid>
    <comment_count>4</comment_count>
      <attachid>25586</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-12-01 12:31:06 -0800</bug_when>
    <thetext>Comment on attachment 25586
Proposed patch

This looks sane to me.  But one of the SFX folks should probably review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100930</commentid>
    <comment_count>5</comment_count>
      <attachid>25586</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-12-01 17:55:33 -0800</bug_when>
    <thetext>Comment on attachment 25586
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101150</commentid>
    <comment_count>6</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-12-02 22:14:43 -0800</bug_when>
    <thetext>Landed in r38930.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25556</attachid>
            <date>2008-11-27 02:45:53 -0800</date>
            <delta_ts>2008-11-28 23:49:41 -0800</delta_ts>
            <desc>Proposed patch (without tests)</desc>
            <filename>ignored-result.diff</filename>
            <type>text/plain</type>
            <size>15087</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IGJ5dGVjb21waWxlci9SZWdpc3RlcklELmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYnl0ZWNvbXBp
bGVyL1JlZ2lzdGVySUQuaAkocmV2aXNpb24gMzg4MTYpCisrKyBieXRlY29tcGlsZXIvUmVnaXN0
ZXJJRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOCArMTA3LDYgQEAKICNlbmRpZgogICAgIH07
CiAKLSAgICBpbmxpbmUgUmVnaXN0ZXJJRCogaWdub3JlZFJlc3VsdCgpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXJJRCo+KDEpOyB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBu
YW1lc3BhY2UgV1RGIHsKSW5kZXg6IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAz
ODgxNikKKysrIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTgsNiArMTE4LDggQEAKIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGhhbmRsaW5n
IG9mIGRzdCByZWdpc3RlcgogCisgICAgICAgIFJlZ2lzdGVySUQqIGlnbm9yZWRSZXN1bHQoKSB7
IHJldHVybiAmbV9pZ25vcmVkUmVzdWx0UmVnaXN0ZXI7IH0KKwogICAgICAgICAvLyBSZXR1cm5z
IGEgcGxhY2UgdG8gd3JpdGUgaW50ZXJtZWRpYXRlIHZhbHVlcyBvZiBhbiBvcGVyYXRpb24KICAg
ICAgICAgLy8gd2hpY2ggcmV1c2VzIGRzdCBpZiBpdCBpcyBzYWZlIHRvIGRvIHNvLgogICAgICAg
ICBSZWdpc3RlcklEKiB0ZW1wRGVzdGluYXRpb24oUmVnaXN0ZXJJRCogZHN0KQpAQCAtNDE1LDYg
KzQxNyw3IEBACiAgICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAKICAgICAgICAgSGFz
aFNldDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgSWRlbnRpZmllclJlcEhhc2g+IG1fZnVuY3Rpb25z
OworICAgICAgICBSZWdpc3RlcklEIG1faWdub3JlZFJlc3VsdFJlZ2lzdGVyOwogICAgICAgICBS
ZWdpc3RlcklEIG1fdGhpc1JlZ2lzdGVyOwogICAgICAgICBSZWdpc3RlcklEIG1fYXJndW1lbnRz
UmVnaXN0ZXI7CiAgICAgICAgIGludCBtX2FjdGl2YXRpb25SZWdpc3RlckluZGV4OwpJbmRleDog
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMzg4MTYpCisrKyBD
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OCBAQAorMjAwOC0xMS0yNyAgQ2Ft
ZXJvbiBad2FyaWNoICA8endhcmljaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIyNTA0OiBDcmFzaGVzIGR1cmluZyBjb2Rl
IGdlbmVyYXRpb24gb2NjdXIgZHVlIHRvIHJlZmluZyBvZiBpZ25vcmVkUmVzdWx0KCkKKyAgICAg
ICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwND4KKworICAg
ICAgICBTaW5jZSBpZ25vcmVkUmVzdWx0KCkgd2FzIGltcGxlbWVudGVkIGJ5IGNhc3RpbmcgMSB0
byBhIFJlZ2lzdGVySUQqLCBhbnkKKyAgICAgICAgYXR0ZW1wdCB0byByZWYgaWdub3JlZFJlc3Vs
dCgpIHJlc3VsdHMgaW4gYSBjcmFzaC4gVGhpcyB3aWxsIG9jY3VyIGluCisgICAgICAgIGNvZGUg
Z2VuZXJhdGlvbiBvZiBhIGZ1bmN0aW9uIGJvZHkgd2hlcmUgYSBub2RlIGVtaXRzIGFub3RoZXIg
bm9kZSB3aXRoCisgICAgICAgIHRoZSBkc3QgdGhhdCB3YXMgcGFzc2VkIHRvIGl0LCBhbmQgdGhl
biByZWZzIHRoZSByZXR1cm5lZCBSZWdpc3RlcklEKi4KKworICAgICAgICBUbyBmaXggdGhpcyBw
cm9ibGVtLCBtYWtlIGlnbm9yZWRSZXN1bHQoKSBhIG1lbWJlciBmdW5jdGlvbiBvZgorICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvciB0aGF0IHNpbXBseSByZXR1cm5zIGEgcG9pbnRlIHRvIGEgZml4
ZWQgUmVnaXN0ZXJJRAorICAgICAgICBtZW1iZXIgb2YgQnl0ZWNvZGVHZW5lcmF0b3IuCisKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6Omlnbm9yZWRSZXN1bHQpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9SZWdpc3RlcklELmg6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TnVsbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6Ok9iamVjdExpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQb3N0Zml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3Rm
aXhCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeERvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZVZhbHVlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Vm9pZE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlR5cGVPZlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpU
eXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByZWZpeFJlc29s
dmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29tbWFOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpGb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJ
bk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVu
Y0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUpOgorCiAyMDA4LTExLTI2ICBFcmljIFNlaWRlbCAgPGVy
aWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBObyByZXZpZXcsIGJ1aWxkIGZpeCBvbmx5LgpJbmRl
eDogcGFyc2VyL05vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYXJzZXIvTm9kZXMuY3BwCShyZXZp
c2lvbiAzODgxNikKKysrIHBhcnNlci9Ob2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw3
ICsyNzYsNyBAQAogCiBSZWdpc3RlcklEKiBOdWxsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZHN0ID09
IGlnbm9yZWRSZXN1bHQoKSkKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0
LCBqc051bGwoKSk7CiB9CkBAIC0yODUsNyArMjg1LDcgQEAKIAogUmVnaXN0ZXJJRCogQm9vbGVh
bk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgaWYgKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwgbV92YWx1ZSk7CiB9CkBAIC0yOTQsNyArMjk0
LDcgQEAKIAogUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZHN0ID09IGln
bm9yZWRSZXN1bHQoKSkKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBt
X2RvdWJsZSk7CiB9CkBAIC0zMDMsNyArMzAzLDcgQEAKIAogUmVnaXN0ZXJJRCogU3RyaW5nTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIHsKLSAgICBpZiAoZHN0ID09IGlnbm9yZWRSZXN1bHQoKSkKKyAgICBpZiAoZHN0ID09
IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBtX3ZhbHVlKTsKIH0KQEAgLTMxNSw3ICszMTUsNyBA
QAogICAgIFJlZlB0cjxSZWdFeHA+IHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKGdlbmVyYXRvci5n
bG9iYWxEYXRhKCksIG1fcGF0dGVybiwgbV9mbGFncyk7CiAgICAgaWYgKCFyZWdFeHAtPmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuIGVtaXRUaHJvd0Vycm9yKGdlbmVyYXRvciwgU3ludGF4RXJy
b3IsICgiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246ICIgKyBVU3RyaW5nKHJlZ0V4cC0+ZXJy
b3JNZXNzYWdlKCkpKS5VVEY4U3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgaWYgKGRzdCA9PSBpZ25v
cmVkUmVzdWx0KCkpCisgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdSZWdFeHAoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgcmVnRXhwLmdldCgpKTsKIH0KQEAgLTMyNCw3
ICszMjQsNyBAQAogCiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZHN0ID09
IGlnbm9yZWRSZXN1bHQoKSkKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGlu
YXRpb25JZk5lZWRlZChkc3QsIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CiB9CkBAIC0zMzks
NyArMzM5LDcgQEAKIFJlZ2lzdGVySUQqIFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmIChSZWdp
c3RlcklEKiBsb2NhbCA9IGdlbmVyYXRvci5yZWdpc3RlckZvcihtX2lkZW50KSkgewotICAgICAg
ICBpZiAoZHN0ID09IGlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGxvY2FsKTsKICAgICB9
CkBAIC00MzEsNyArNDMxLDcgQEAKIFJlZ2lzdGVySUQqIE9iamVjdExpdGVyYWxOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewogICAgICBpZiAoIW1fbGlzdCkgewotICAgICAgICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0
KCkpCisgICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdPYmpl
Y3QoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7CiAgICAgIH0KQEAgLTcwOSwxMiAr
NzA5LDEyIEBACiB7CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gZ2VuZXJhdG9yLnJlZ2lz
dGVyRm9yKG1faWRlbnQpKSB7CiAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNMb2NhbENvbnN0YW50
KG1faWRlbnQpKSB7Ci0gICAgICAgICAgICBpZiAoZHN0ID09IGlnbm9yZWRSZXN1bHQoKSkKKyAg
ICAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFRvSlNO
dW1iZXIoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWwpOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgICAgIGlmIChkc3Qg
PT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAgIHJldHVybiBlbWl0UHJl
SW5jT3JEZWMoZ2VuZXJhdG9yLCBsb2NhbCwgbV9vcGVyYXRvcik7CiAgICAgICAgIHJldHVybiBl
bWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwgbG9jYWwsIG1fb3BlcmF0b3IpOwogICAgIH0KQEAgLTcyNSw3ICs3MjUsNyBAQAogICAgIGlm
IChnZW5lcmF0b3IuZmluZFNjb3BlZFByb3BlcnR5KG1faWRlbnQsIGluZGV4LCBkZXB0aCwgdHJ1
ZSwgZ2xvYmFsT2JqZWN0KSAmJiBpbmRleCAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkpIHsKICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRTY29wZWRW
YXIoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBkZXB0aCwgaW5kZXgsIGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlOwotICAgICAgICBpZiAoZHN0ID09IGlnbm9y
ZWRSZXN1bHQoKSkgeworICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpIHsKICAgICAgICAgICAgIG9sZFZhbHVlID0gMDsKICAgICAgICAgICAgIGVtaXRQcmVJbmNP
ckRlYyhnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICAgICAgfSBlbHNl
IHsKQEAgLTczOSw3ICs3MzksNyBAQAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhCYXNlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFs
dWUuZ2V0KCksIG1faWRlbnQpOwogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlOwotICAgIGlmIChk
c3QgPT0gaWdub3JlZFJlc3VsdCgpKSB7CisgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3Jl
ZFJlc3VsdCgpKSB7CiAgICAgICAgIG9sZFZhbHVlID0gMDsKICAgICAgICAgZW1pdFByZUluY09y
RGVjKGdlbmVyYXRvciwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgIH0gZWxzZSB7CkBA
IC03NzAsNyArNzcwLDcgQEAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZzZXQoKSAtIG1fc3ViZXhw
cmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQpOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJ
RCogb2xkVmFsdWU7Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpIHsKKyAgICBpZiAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgb2xkVmFsdWUgPSAw
OwogICAgICAgICBpZiAobV9vcGVyYXRvciA9PSBPcFBsdXNQbHVzKQogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcmVJbmModmFsdWUuZ2V0KCkpOwpAQCAtODAzLDcgKzgwMyw3IEBACiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0gbV9zdWJleHByZXNzaW9uRGl2
b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgbV9z
dWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgp
LCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklEKiBvbGRWYWx1ZTsKLSAgICBpZiAoZHN0ID09IGln
bm9yZWRSZXN1bHQoKSkgeworICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSkgewogICAgICAgICBvbGRWYWx1ZSA9IDA7CiAgICAgICAgIGlmIChtX29wZXJhdG9yID09IE9w
UGx1c1BsdXMpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByZUluYyh2YWx1ZS5nZXQoKSk7
CkBAIC05MDIsNyArOTAyLDcgQEAKIAogUmVnaXN0ZXJJRCogRGVsZXRlVmFsdWVOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewotICAgIGdlbmVyYXRvci5lbWl0Tm9kZShpZ25vcmVkUmVzdWx0KCksIG1fZXhwci5nZXQoKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhw
ci5nZXQoKSk7CiAKICAgICAvLyBkZWxldGUgb24gYSBub24tbG9jYXRpb24gZXhwcmVzc2lvbiBp
Z25vcmVzIHRoZSB2YWx1ZSBhbmQgcmV0dXJucyB0cnVlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0VW5leHBlY3RlZExvYWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdHJ1ZSk7
CkBAIC05MjIsOCArOTIyLDggQEAKIAogUmVnaXN0ZXJJRCogVm9pZE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAg
aWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGlnbm9yZWRSZXN1bHQoKSwgbV9leHByLmdldCgpKTsKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwci5nZXQoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHBy
LmdldCgpKTsKQEAgLTkzNSwxNCArOTM1LDE0IEBACiBSZWdpc3RlcklEKiBUeXBlT2ZSZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIHsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSBnZW5lcmF0b3IucmVnaXN0
ZXJGb3IobV9pZGVudCkpIHsKLSAgICAgICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisg
ICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRUeXBlT2YoZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWwpOwogICAgIH0KIAogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY3JhdGNoID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlQmFzZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIG1faWRlbnQpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChz
Y3JhdGNoLmdldCgpLCBzY3JhdGNoLmdldCgpLCBtX2lkZW50KTsKLSAgICBpZiAoZHN0ID09IGln
bm9yZWRSZXN1bHQoKSkKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFR5cGVPZihnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNjcmF0Y2guZ2V0KCkpLCBzY3JhdGNoLmdldCgp
KTsKIH0KQEAgLTk2MSw4ICs5NjEsOCBAQAogCiBSZWdpc3RlcklEKiBUeXBlT2ZWYWx1ZU5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB7Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpIHsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGlnbm9yZWRSZXN1bHQoKSwgbV9leHByLmdldCgpKTsKKyAgICBpZiAoZHN0
ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwci5nZXQoKSk7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG1fZXhwci5nZXQoKSk7CkBAIC05NzUsNyArOTc1LDcgQEAKIHsKICAgICBpZiAoUmVn
aXN0ZXJJRCogbG9jYWwgPSBnZW5lcmF0b3IucmVnaXN0ZXJGb3IobV9pZGVudCkpIHsKICAgICAg
ICAgaWYgKGdlbmVyYXRvci5pc0xvY2FsQ29uc3RhbnQobV9pZGVudCkpIHsKLSAgICAgICAgICAg
IGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgpKQorICAgICAgICAgICAgaWYgKGRzdCA9PSBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXRVbmV4cGVjdGVkTG9h
ZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAobV9vcGVyYXRvciA9PSBPcFBsdXNQ
bHVzKSA/IDEuMCA6IC0xLjApOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Qmlu
YXJ5T3Aob3BfYWRkLCByMC5nZXQoKSwgbG9jYWwsIHIwLmdldCgpLCBPcGVyYW5kVHlwZXMoKSk7
CkBAIC0xMzU5LDcgKzEzNTksNyBAQAogICAgIHNpemVfdCBkZXB0aCA9IDA7CiAgICAgSlNPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IDA7CiAgICAgaWYgKGdlbmVyYXRvci5maW5kU2NvcGVkUHJvcGVy
dHkobV9pZGVudCwgaW5kZXgsIGRlcHRoLCB0cnVlLCBnbG9iYWxPYmplY3QpICYmIGluZGV4ICE9
IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSkgewotICAgICAgICBpZiAoZHN0ID09IGlnbm9yZWRSZXN1
bHQoKSkKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAg
ICAgICAgICAgZHN0ID0gMDsKICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZHN0LCBtX3JpZ2h0LmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRT
Y29wZWRWYXIoZGVwdGgsIGluZGV4LCB2YWx1ZSwgZ2xvYmFsT2JqZWN0KTsKQEAgLTEzNjcsNyAr
MTM2Nyw3IEBACiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVCYXNlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbV9pZGVudCk7Ci0g
ICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogICAgIFJlZ2lzdGVySUQqIHZhbHVl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9yaWdodC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7
CkBAIC0xNTEyLDcgKzE1MTIsNyBAQAogCiBSZWdpc3RlcklEKiBDb21tYU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0g
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGlnbm9yZWRSZXN1bHQoKSwgbV9leHByMS5nZXQoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEu
Z2V0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIyLmdldCgp
KTsKIH0KIApAQCAtMTgyMCw3ICsxODIwLDcgQEAKIAogUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IHsKLSAgICBpZiAoZHN0ID09IGlnbm9yZWRSZXN1bHQoKSkKKyAgICBpZiAoZHN0ID09IGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CiAKICAgICBSZWZQdHI8TGFi
ZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29w
KTsKQEAgLTE4MjgsNyArMTgyOCw3IEBACiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKIAogICAgIGlmICht
X2V4cHIxKQotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoaWdub3JlZFJlc3VsdCgpLCBtX2V4
cHIxLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCksIG1fZXhwcjEuZ2V0KCkpOwogCiAgICAgUmVmUHRyPExhYmVsPiBjb25kaXRpb24g
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoY29uZGl0aW9u
LmdldCgpKTsKQEAgLTE4NDIsNyArMTg0Miw3IEBACiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKICAgICBpZiAobV9leHByMykKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGlnbm9yZWRSZXN1bHQoKSwgbV9leHByMy5nZXQoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIzLmdl
dCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoY29uZGl0aW9uLmdldCgpKTsKICAgICBp
ZiAobV9leHByMikgewpAQCAtMTkwOCw3ICsxOTA4LDcgQEAKICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwog
CiAgICAgaWYgKG1faW5pdCkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGlnbm9yZWRSZXN1
bHQoKSwgbV9pbml0LmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCksIG1faW5pdC5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogZm9ySW5C
YXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwci5nZXQoKSk7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGl0ZXIgPSBnZW5lcmF0b3IuZW1pdEdldFByb3BlcnR5TmFtZXMoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBmb3JJbkJhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0SnVtcChzY29wZS0+
Y29udGludWVUYXJnZXQoKSk7CkBAIC0yMDA4LDcgKzIwMDgsNyBAQAogICAgIGlmIChnZW5lcmF0
b3IuY29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUpCiAgICAgICAgIHJldHVybiBlbWl0VGhyb3dF
cnJvcihnZW5lcmF0b3IsIFN5bnRheEVycm9yLCAiSW52YWxpZCByZXR1cm4gc3RhdGVtZW50LiIp
OwogCi0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgaWYgKGRzdCA9PSBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogICAgIFJlZ2lzdGVySUQq
IHIwID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fdmFsdWUuZ2V0KCkpIDog
Z2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CiAgICAgaWYgKGdlbmVyYXRv
ci5zY29wZURlcHRoKCkpIHsKQEAgLTIyODUsNyArMjI4NSw3IEBACiAKIFJlZ2lzdGVySUQqIFRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZHN0ID09IGlnbm9yZWRSZXN1bHQoKSkKKyAgICBpZiAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGV4cHIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIu
Z2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRP
ZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwpAQCAtMjU1OCw3ICsyNTU4LDcgQEAKIFJlZ2lzdGVySUQq
IEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRl
ckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwotICAgIHN0YXRlbWVudExpc3RF
bWl0Q29kZShjaGlsZHJlbigpLCBnZW5lcmF0b3IsIGlnbm9yZWRSZXN1bHQoKSk7CisgICAgc3Rh
dGVtZW50TGlzdEVtaXRDb2RlKGNoaWxkcmVuKCksIGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSk7CiAgICAgaWYgKCFjaGlsZHJlbigpLnNpemUoKSB8fCAhY2hpbGRyZW4oKS5s
YXN0KCktPmlzUmV0dXJuTm9kZSgpKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJh
dG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKQEAg
LTI2MzAsOSArMjYzMCw5IEBACiAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVj
LCBtX2lkZW50LCBtX2JvZHkuZ2V0KCksIHNjb3BlQ2hhaW4pOwogfQogCi1SZWdpc3RlcklEKiBG
dW5jRGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
IGRzdCkKK1JlZ2lzdGVySUQqIEZ1bmNEZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZHN0ID09IGln
bm9yZWRSZXN1bHQoKSkKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
CiAgICAgICAgIGRzdCA9IDA7CiAgICAgcmV0dXJuIGRzdDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25586</attachid>
            <date>2008-11-28 23:49:41 -0800</date>
            <delta_ts>2008-12-01 17:55:33 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>ignored-result.diff</filename>
            <type>text/plain</type>
            <size>18775</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVySUQuaAkocmV2aXNpb24g
Mzg4MzYpCisrKyBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvUmVnaXN0ZXJJRC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDcsOCArMTA3LDYgQEAKICNlbmRpZgogICAgIH07CiAKLSAgICBpbmxp
bmUgUmVnaXN0ZXJJRCogaWdub3JlZFJlc3VsdCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
UmVnaXN0ZXJJRCo+KDEpOyB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RG
IHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCShyZXZpc2lvbiAzODgzNikKKysrIEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDggQEAKIAog
ICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGhhbmRsaW5nIG9mIGRzdCByZWdpc3RlcgogCisgICAg
ICAgIFJlZ2lzdGVySUQqIGlnbm9yZWRSZXN1bHQoKSB7IHJldHVybiAmbV9pZ25vcmVkUmVzdWx0
UmVnaXN0ZXI7IH0KKwogICAgICAgICAvLyBSZXR1cm5zIGEgcGxhY2UgdG8gd3JpdGUgaW50ZXJt
ZWRpYXRlIHZhbHVlcyBvZiBhbiBvcGVyYXRpb24KICAgICAgICAgLy8gd2hpY2ggcmV1c2VzIGRz
dCBpZiBpdCBpcyBzYWZlIHRvIGRvIHNvLgogICAgICAgICBSZWdpc3RlcklEKiB0ZW1wRGVzdGlu
YXRpb24oUmVnaXN0ZXJJRCogZHN0KQpAQCAtNDE1LDYgKzQxNyw3IEBACiAgICAgICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7CiAKICAgICAgICAgSGFzaFNldDxSZWZQdHI8VVN0cmluZzo6UmVw
PiwgSWRlbnRpZmllclJlcEhhc2g+IG1fZnVuY3Rpb25zOworICAgICAgICBSZWdpc3RlcklEIG1f
aWdub3JlZFJlc3VsdFJlZ2lzdGVyOwogICAgICAgICBSZWdpc3RlcklEIG1fdGhpc1JlZ2lzdGVy
OwogICAgICAgICBSZWdpc3RlcklEIG1fYXJndW1lbnRzUmVnaXN0ZXI7CiAgICAgICAgIGludCBt
X2FjdGl2YXRpb25SZWdpc3RlckluZGV4OwpJbmRleDogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzg4Mzgp
CisrKyBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0
OCBAQAorMjAwOC0xMS0yOCAgQ2FtZXJvbiBad2FyaWNoICA8endhcmljaEBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIyNTA0
OiBDcmFzaGVzIGR1cmluZyBjb2RlIGdlbmVyYXRpb24gb2NjdXIgZHVlIHRvIHJlZmluZyBvZiBp
Z25vcmVkUmVzdWx0KCkKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjUwND4KKworICAgICAgICBTaW5jZSBpZ25vcmVkUmVzdWx0KCkgd2FzIGltcGxl
bWVudGVkIGJ5IGNhc3RpbmcgMSB0byBhIFJlZ2lzdGVySUQqLCBhbnkKKyAgICAgICAgYXR0ZW1w
dCB0byByZWYgaWdub3JlZFJlc3VsdCgpIHJlc3VsdHMgaW4gYSBjcmFzaC4gVGhpcyB3aWxsIG9j
Y3VyIGluCisgICAgICAgIGNvZGUgZ2VuZXJhdGlvbiBvZiBhIGZ1bmN0aW9uIGJvZHkgd2hlcmUg
YSBub2RlIGVtaXRzIGFub3RoZXIgbm9kZSB3aXRoCisgICAgICAgIHRoZSBkc3QgdGhhdCB3YXMg
cGFzc2VkIHRvIGl0LCBhbmQgdGhlbiByZWZzIHRoZSByZXR1cm5lZCBSZWdpc3RlcklEKi4KKwor
ICAgICAgICBUbyBmaXggdGhpcyBwcm9ibGVtLCBtYWtlIGlnbm9yZWRSZXN1bHQoKSBhIG1lbWJl
ciBmdW5jdGlvbiBvZgorICAgICAgICBCeXRlY29kZUdlbmVyYXRvciB0aGF0IHNpbXBseSByZXR1
cm5zIGEgcG9pbnRlIHRvIGEgZml4ZWQgUmVnaXN0ZXJJRAorICAgICAgICBtZW1iZXIgb2YgQnl0
ZWNvZGVHZW5lcmF0b3IuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omlnbm9yZWRSZXN1bHQpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9SZWdpc3RlcklELmg6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkJvb2xlYW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpOdW1iZXJO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdExpdGVyYWxOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlBvc3RmaXhCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6UG9zdGZpeERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRl
bGV0ZVZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Vm9pZE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlR5cGVPZlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlByZWZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29tbWFO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUpOgorCiAyMDA4LTEx
LTI4ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAko
cmV2aXNpb24gMzg4MzYpCisrKyBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsNyArMjc2LDcgQEAKIAogUmVnaXN0ZXJJRCogTnVsbE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiB7Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgaWYgKGRzdCA9PSBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGRzdCwganNOdWxsKCkpOwogfQpAQCAtMjg1LDcgKzI4NSw3IEBACiAK
IFJlZ2lzdGVySUQqIEJvb2xlYW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChkc3QgPT0gaWdub3JlZFJl
c3VsdCgpKQorICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIG1fdmFsdWUp
OwogfQpAQCAtMjk0LDcgKzI5NCw3IEBACiAKIFJlZ2lzdGVySUQqIE51bWJlck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgaWYgKGRzdCA9PSBnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRMb2FkKGRzdCwgbV9kb3VibGUpOwogfQpAQCAtMzAzLDcgKzMwMyw3IEBACiAKIFJl
Z2lzdGVySUQqIFN0cmluZ05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0
KCkpCisgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwgbV92YWx1ZSk7CiB9
CkBAIC0zMTUsNyArMzE1LDcgQEAKICAgICBSZWZQdHI8UmVnRXhwPiByZWdFeHAgPSBSZWdFeHA6
OmNyZWF0ZShnZW5lcmF0b3IuZ2xvYmFsRGF0YSgpLCBtX3BhdHRlcm4sIG1fZmxhZ3MpOwogICAg
IGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBlbWl0VGhyb3dFcnJvcihn
ZW5lcmF0b3IsIFN5bnRheEVycm9yLCAoIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAiICsg
VVN0cmluZyhyZWdFeHAtPmVycm9yTWVzc2FnZSgpKSkuVVRGOFN0cmluZygpLmNfc3RyKCkpOwot
ICAgIGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgpKQorICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0TmV3UmVnRXhwKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHJlZ0V4cC5n
ZXQoKSk7CiB9CkBAIC0zMjQsNyArMzI0LDcgQEAKIAogUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiB7Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgaWYgKGRzdCA9PSBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBnZW5lcmF0b3IudGhpc1JlZ2lz
dGVyKCkpOwogfQpAQCAtMzM5LDcgKzMzOSw3IEBACiBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSBnZW5lcmF0b3IucmVnaXN0ZXJGb3Io
bV9pZGVudCkpIHsKLSAgICAgICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgICAg
IGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQo
ZHN0LCBsb2NhbCk7CiAgICAgfQpAQCAtNDMxLDcgKzQzMSw3IEBACiBSZWdpc3RlcklEKiBPYmpl
Y3RMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICAgaWYgKCFtX2xpc3QpIHsKLSAgICAgICAgIGlmIChk
c3QgPT0gaWdub3JlZFJlc3VsdCgpKQorICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCkpOwog
ICAgICB9CkBAIC03MDksMTIgKzcwOSwxMiBAQAogewogICAgIGlmIChSZWdpc3RlcklEKiBsb2Nh
bCA9IGdlbmVyYXRvci5yZWdpc3RlckZvcihtX2lkZW50KSkgewogICAgICAgICBpZiAoZ2VuZXJh
dG9yLmlzTG9jYWxDb25zdGFudChtX2lkZW50KSkgewotICAgICAgICAgICAgaWYgKGRzdCA9PSBp
Z25vcmVkUmVzdWx0KCkpCisgICAgICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRUb0pTTnVtYmVyKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCks
IGxvY2FsKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgp
KQorICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZW1pdFByZUluY09yRGVjKGdlbmVyYXRvciwgbG9jYWwsIG1fb3BlcmF0b3Ip
OwogICAgICAgICByZXR1cm4gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsLCBtX29wZXJhdG9yKTsKICAgICB9CkBAIC03MjUs
NyArNzI1LDcgQEAKICAgICBpZiAoZ2VuZXJhdG9yLmZpbmRTY29wZWRQcm9wZXJ0eShtX2lkZW50
LCBpbmRleCwgZGVwdGgsIHRydWUsIGdsb2JhbE9iamVjdCkgJiYgaW5kZXggIT0gbWlzc2luZ1N5
bWJvbE1hcmtlcigpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0U2NvcGVkVmFyKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZGVwdGgsIGlu
ZGV4LCBnbG9iYWxPYmplY3QpOwogICAgICAgICBSZWdpc3RlcklEKiBvbGRWYWx1ZTsKLSAgICAg
ICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpIHsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgICAgICBvbGRWYWx1ZSA9IDA7CiAgICAg
ICAgICAgICBlbWl0UHJlSW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRv
cik7CiAgICAgICAgIH0gZWxzZSB7CkBAIC03MzksNyArNzM5LDcgQEAKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVXaXRoQmFzZShnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpLCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklEKiBv
bGRWYWx1ZTsKLSAgICBpZiAoZHN0ID09IGlnbm9yZWRSZXN1bHQoKSkgeworICAgIGlmIChkc3Qg
PT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBvbGRWYWx1ZSA9IDA7CiAg
ICAgICAgIGVtaXRQcmVJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBtX29wZXJhdG9y
KTsKICAgICB9IGVsc2UgewpAQCAtNzcwLDcgKzc3MCw3IEBACiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkaXZvdCgpIC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIHN0YXJ0
T2Zmc2V0KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgbV9zdWJleHByZXNzaW9uRW5k
T2Zmc2V0KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0
KCkpOwogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlOwotICAgIGlmIChkc3QgPT0gaWdub3JlZFJl
c3VsdCgpKSB7CisgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSB7CiAg
ICAgICAgIG9sZFZhbHVlID0gMDsKICAgICAgICAgaWYgKG1fb3BlcmF0b3IgPT0gT3BQbHVzUGx1
cykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJlSW5jKHZhbHVlLmdldCgpKTsKQEAgLTgw
Myw3ICs4MDMsNyBAQAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSAt
IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBzdGFydE9mZnNldCgpIC0gbV9zdWJleHByZXNz
aW9uRGl2b3RPZmZzZXQsIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCk7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogb2xkVmFsdWU7
Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpIHsKKyAgICBpZiAoZHN0ID09IGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgb2xkVmFsdWUgPSAwOwogICAgICAgICBp
ZiAobV9vcGVyYXRvciA9PSBPcFBsdXNQbHVzKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cmVJbmModmFsdWUuZ2V0KCkpOwpAQCAtOTAyLDcgKzkwMiw3IEBACiAKIFJlZ2lzdGVySUQqIERl
bGV0ZVZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUoaWdub3JlZFJlc3Vs
dCgpLCBtX2V4cHIuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpLCBtX2V4cHIuZ2V0KCkpOwogCiAgICAgLy8gZGVsZXRlIG9uIGEgbm9uLWxv
Y2F0aW9uIGV4cHJlc3Npb24gaWdub3JlcyB0aGUgdmFsdWUgYW5kIHJldHVybnMgdHJ1ZQogICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdFVuZXhwZWN0ZWRMb2FkKGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCksIHRydWUpOwpAQCAtOTIyLDggKzkyMiw4IEBACiAKIFJlZ2lzdGVySUQqIFZv
aWROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQogewotICAgIGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgpKSB7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShpZ25vcmVkUmVzdWx0KCksIG1fZXhwci5nZXQoKSk7CisgICAg
aWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSB7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIuZ2V0KCkpOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fZXhwci5nZXQoKSk7CkBAIC05MzUsMTQgKzkzNSwxNCBAQAogUmVnaXN0
ZXJJRCogVHlwZU9mUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2Fs
ID0gZ2VuZXJhdG9yLnJlZ2lzdGVyRm9yKG1faWRlbnQpKSB7Ci0gICAgICAgIGlmIChkc3QgPT0g
aWdub3JlZFJlc3VsdCgpKQorICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0VHlwZU9mKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsKTsKICAgICB9
CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NyYXRjaCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZUJhc2UoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBtX2lkZW50KTsKICAgICBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoc2NyYXRjaC5nZXQoKSwgc2NyYXRjaC5nZXQoKSwgbV9pZGVudCk7
Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgaWYgKGRzdCA9PSBnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRUeXBlT2YoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzY3JhdGNoLmdl
dCgpKSwgc2NyYXRjaC5nZXQoKSk7CiB9CkBAIC05NjEsOCArOTYxLDggQEAKIAogUmVnaXN0ZXJJ
RCogVHlwZU9mVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgp
KSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShpZ25vcmVkUmVzdWx0KCksIG1fZXhwci5n
ZXQoKSk7CisgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSB7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIu
Z2V0KCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNyYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIuZ2V0KCkpOwpAQCAtOTc1LDcgKzk3NSw3
IEBACiB7CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gZ2VuZXJhdG9yLnJlZ2lzdGVyRm9y
KG1faWRlbnQpKSB7CiAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNMb2NhbENvbnN0YW50KG1faWRl
bnQpKSB7Ci0gICAgICAgICAgICBpZiAoZHN0ID09IGlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAg
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMCA9IGdlbmVyYXRv
ci5lbWl0VW5leHBlY3RlZExvYWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgKG1f
b3BlcmF0b3IgPT0gT3BQbHVzUGx1cykgPyAxLjAgOiAtMS4wKTsKICAgICAgICAgICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wX2FkZCwgcjAuZ2V0KCksIGxvY2FsLCByMC5nZXQo
KSwgT3BlcmFuZFR5cGVzKCkpOwpAQCAtMTM1OSw3ICsxMzU5LDcgQEAKICAgICBzaXplX3QgZGVw
dGggPSAwOwogICAgIEpTT2JqZWN0KiBnbG9iYWxPYmplY3QgPSAwOwogICAgIGlmIChnZW5lcmF0
b3IuZmluZFNjb3BlZFByb3BlcnR5KG1faWRlbnQsIGluZGV4LCBkZXB0aCwgdHJ1ZSwgZ2xvYmFs
T2JqZWN0KSAmJiBpbmRleCAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkpIHsKLSAgICAgICAgaWYg
KGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmln
bm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAgIGRzdCA9IDA7CiAgICAgICAgIFJlZ2lzdGVySUQq
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9yaWdodC5nZXQoKSk7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0U2NvcGVkVmFyKGRlcHRoLCBpbmRleCwgdmFsdWUsIGdsb2JhbE9i
amVjdCk7CkBAIC0xMzY3LDcgKzEzNjcsNyBAQAogICAgIH0KIAogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlQmFzZShnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIG1faWRlbnQpOwotICAgIGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgpKQorICAgIGlm
IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgZHN0ID0gMDsKICAg
ICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQuZ2V0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZz
ZXQoKSwgZW5kT2Zmc2V0KCkpOwpAQCAtMTUxMiw3ICsxNTEyLDcgQEAKIAogUmVnaXN0ZXJJRCog
Q29tbWFOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0Tm9kZShpZ25vcmVkUmVzdWx0KCks
IG1fZXhwcjEuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3Jl
ZFJlc3VsdCgpLCBtX2V4cHIxLmdldCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9leHByMi5nZXQoKSk7CiB9CiAKQEAgLTE4MjAsNyArMTgyMCw3IEBACiAKIFJlZ2lz
dGVySUQqIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisg
ICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAw
OwogCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2Nv
cGUoTGFiZWxTY29wZTo6TG9vcCk7CkBAIC0xODI4LDcgKzE4MjgsNyBAQAogICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CiAKICAgICBpZiAobV9leHByMSkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGln
bm9yZWRSZXN1bHQoKSwgbV9leHByMS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIxLmdldCgpKTsKIAogICAgIFJlZlB0
cjxMYWJlbD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wKGNvbmRpdGlvbi5nZXQoKSk7CkBAIC0xODQyLDcgKzE4NDIsNyBAQAogCiAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7CiAgICAgaWYgKG1f
ZXhwcjMpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShpZ25vcmVkUmVzdWx0KCksIG1fZXhw
cjMuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSwgbV9leHByMy5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGNvbmRp
dGlvbi5nZXQoKSk7CiAgICAgaWYgKG1fZXhwcjIpIHsKQEAgLTE5MDgsNyArMTkwOCw3IEBACiAg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpKTsKIAogICAgIGlmIChtX2luaXQpCi0gICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShpZ25vcmVkUmVzdWx0KCksIG1faW5pdC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQuZ2V0KCkpOwogICAg
IFJlZ2lzdGVySUQqIGZvckluQmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIuZ2V0KCkp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyID0gZ2VuZXJhdG9yLmVtaXRHZXRQcm9wZXJ0
eU5hbWVzKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZm9ySW5CYXNlKTsKICAgICBnZW5lcmF0
b3IuZW1pdEp1bXAoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwpAQCAtMjAwOCw3ICsyMDA4LDcg
QEAKICAgICBpZiAoZ2VuZXJhdG9yLmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlKQogICAgICAg
ICByZXR1cm4gZW1pdFRocm93RXJyb3IoZ2VuZXJhdG9yLCBTeW50YXhFcnJvciwgIkludmFsaWQg
cmV0dXJuIHN0YXRlbWVudC4iKTsKIAotICAgIGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgpKQor
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgZHN0ID0g
MDsKICAgICBSZWdpc3RlcklEKiByMCA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0
LCBtX3ZhbHVlLmdldCgpKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkp
OwogICAgIGlmIChnZW5lcmF0b3Iuc2NvcGVEZXB0aCgpKSB7CkBAIC0yMjg1LDcgKzIyODUsNyBA
QAogCiBSZWdpc3RlcklEKiBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVk
UmVzdWx0KCkpCisgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAg
ICAgICBkc3QgPSAwOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleHByID0gZ2VuZXJhdG9yLmVt
aXROb2RlKGRzdCwgbV9leHByLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKQEAgLTI1NTgsNyArMjU1
OCw3IEBACiBSZWdpc3RlcklEKiBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7CiAgICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsK
LSAgICBzdGF0ZW1lbnRMaXN0RW1pdENvZGUoY2hpbGRyZW4oKSwgZ2VuZXJhdG9yLCBpZ25vcmVk
UmVzdWx0KCkpOworICAgIHN0YXRlbWVudExpc3RFbWl0Q29kZShjaGlsZHJlbigpLCBnZW5lcmF0
b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogICAgIGlmICghY2hpbGRyZW4oKS5zaXpl
KCkgfHwgIWNoaWxkcmVuKCkubGFzdCgpLT5pc1JldHVybk5vZGUoKSkgewogICAgICAgICBSZWdp
c3RlcklEKiByMCA9IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CkBAIC0yNjMwLDkgKzI2MzAsOSBAQAogICAgIHJldHVybiBuZXcgKGV4
ZWMpIEpTRnVuY3Rpb24oZXhlYywgbV9pZGVudCwgbV9ib2R5LmdldCgpLCBzY29wZUNoYWluKTsK
IH0KIAotUmVnaXN0ZXJJRCogRnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBGdW5jRGVjbE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
Ci0gICAgaWYgKGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgaWYgKGRzdCA9PSBnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogICAgIHJldHVybiBkc3Q7CiB9
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAzODgzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA4LTExLTI4ICBDYW1lcm9uIFp3YXJpY2gg
IDx6d2FyaWNoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGJ1ZyAyMjUwNDogQ3Jhc2hlcyBkdXJpbmcgY29k
ZSBnZW5lcmF0aW9uIG9jY3VyIGR1ZSB0byByZWZpbmcgb2YgaWdub3JlZFJlc3VsdCgpCisgICAg
ICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MDQ+CisKKyAg
ICAgICAgKiBmYXN0L2pzL2lnbm9yZWQtcmVzdWx0LXJlZi1jcmFzaC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvaWdub3JlZC1yZXN1bHQtcmVmLWNyYXNoLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL2lnbm9yZWQtcmVzdWx0LXJlZi1jcmFz
aC5qczogQWRkZWQuCisKIDIwMDgtMTEtMjggIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMu
emltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ2FtZXJv
biBad2FyaWNoLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9pZ25vcmVkLXJlc3VsdC1yZWYt
Y3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvaWdu
b3JlZC1yZXN1bHQtcmVmLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvaWdub3JlZC1yZXN1bHQtcmVmLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGhpcyB0ZXN0cyB0aGF0IGJ5dGVjb2RlIGNvZGUg
Z2VuZXJhdGlvbiBkb2Vzbid0IGNyYXNoIHdoZW4gaXQgZW5jb3VudGVycyBvZGQgY2FzZXMgb2Yg
YW4gaWdub3JlZCByZXN1bHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGVtcHR5U3RhdGVtZW50RG9XaGlsZVRlc3QoKSBpcyB0cnVlCitQQVNTIGRlYnVnZ2VyRG9XaGls
ZVRlc3QoKSBpcyB0cnVlCitQQVNTIGNvbnRpbnVlRG9XaGlsZVRlc3QoKSBpcyB0cnVlCitQQVNT
IGJyZWFrRG9XaGlsZVRlc3QoKSBpcyB0cnVlCitQQVNTIHRyeURvV2hpbGVUZXN0KCkgaXMgdHJ1
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvaWdub3JlZC1yZXN1bHQtcmVmLWNyYXNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9pZ25vcmVkLXJlc3VsdC1yZWYtY3Jhc2gu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvaWdub3JlZC1yZXN1bHQt
cmVmLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaWdub3JlZC1yZXN1bHQtcmVmLWNyYXNoLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2Vz
L2lnbm9yZWQtcmVzdWx0LXJlZi1jcmFzaC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3Jlc291cmNlcy9pZ25vcmVkLXJlc3VsdC1yZWYtY3Jhc2guanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9pZ25vcmVkLXJlc3VsdC1yZWYtY3Jh
c2guanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKK2Rlc2NyaXB0aW9uKAorIlRoaXMg
dGVzdHMgdGhhdCBieXRlY29kZSBjb2RlIGdlbmVyYXRpb24gZG9lc24ndCBjcmFzaCB3aGVuIGl0
IGVuY291bnRlcnMgb2RkIGNhc2VzIG9mIGFuIGlnbm9yZWQgcmVzdWx0LiIKKyk7CisKK2Z1bmN0
aW9uIGVtcHR5U3RhdGVtZW50RG9XaGlsZVRlc3QoKQoreworICAgIGRvCisgICAgICAgIDsKKyAg
ICB3aGlsZSAoZmFsc2UpIHsgfQorICAgIHJldHVybiB0cnVlOworfQorCitzaG91bGRCZVRydWUo
ImVtcHR5U3RhdGVtZW50RG9XaGlsZVRlc3QoKSIpOworCitmdW5jdGlvbiBkZWJ1Z2dlckRvV2hp
bGVUZXN0KCkKK3sKKyAgICBkbworICAgICAgICBkZWJ1Z2dlcjsKKyAgICB3aGlsZSAoZmFsc2Up
IHsgfQorICAgIHJldHVybiB0cnVlOworfQorCitzaG91bGRCZVRydWUoImRlYnVnZ2VyRG9XaGls
ZVRlc3QoKSIpOworCitmdW5jdGlvbiBjb250aW51ZURvV2hpbGVUZXN0KCkKK3sKKyAgICB2YXIg
aSA9IDA7CisgICAgZG8KKyAgICAgICAgaSsrOworICAgIHdoaWxlIChpIDwgMTApIHsKKyAgICAg
ICAgZG8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB3aGlsZSAoZmFsc2UpIHsgfQor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc2hvdWxkQmVUcnVlKCJjb250aW51ZURvV2hp
bGVUZXN0KCkiKTsKKworZnVuY3Rpb24gYnJlYWtEb1doaWxlVGVzdCgpCit7CisgICAgdmFyIGkg
PSAwOworICAgIGRvCisgICAgICAgIGkrKzsKKyAgICB3aGlsZSAoaSA8IDEwKSB7CisgICAgICAg
IGRvCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgd2hpbGUgKGZhbHNlKSB7IH0KKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Nob3VsZEJlVHJ1ZSgiYnJlYWtEb1doaWxlVGVz
dCgpIik7CisKK2Z1bmN0aW9uIHRyeURvV2hpbGVUZXN0KCkKK3sKKyAgICBkbworICAgICAgICB0
cnkgeyB9IGNhdGNoIChvKSB7IH0KKyAgICB3aGlsZSAoZmFsc2UpIHsgfQorICAgIHJldHVybiB0
cnVlOworfQorCitzaG91bGRCZVRydWUoInRyeURvV2hpbGVUZXN0KCkiKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="11913"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>