<?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>41422</bug_id>
          
          <creation_ts>2010-06-30 10:56:02 -0700</creation_ts>
          <short_desc>Add assertion, off by default, for when you forget to do adoptRef</short_desc>
          <delta_ts>2010-06-30 16:09:25 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27672</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>244844</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 10:56:02 -0700</bug_when>
    <thetext>Add assertion, off by default, for when you forget to do adoptRef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244845</commentid>
    <comment_count>1</comment_count>
      <attachid>60133</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 11:01:25 -0700</bug_when>
    <thetext>Created attachment 60133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244850</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 11:13:33 -0700</bug_when>
    <thetext>Attachment 60133 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3370085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244884</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-30 12:27:44 -0700</bug_when>
    <thetext>Attachment 60133 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3283986</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244910</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-30 13:15:57 -0700</bug_when>
    <thetext>Attachment 60133 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3375060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244932</commentid>
    <comment_count>5</comment_count>
      <attachid>60151</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 14:12:42 -0700</bug_when>
    <thetext>Created attachment 60151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244933</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 14:13:00 -0700</bug_when>
    <thetext>New patch fixes the release build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244934</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-30 14:14:23 -0700</bug_when>
    <thetext>Should we do style cleanup in a separate patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244935</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 14:15:28 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Should we do style cleanup in a separate patch?

The style changes here are small and should be easy to look at, and this is a patch that limits itself to a small number of source files, but if I have an enthusiastic reviewer who wants a style-only patch for the same files, that’s OK with me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244942</commentid>
    <comment_count>9</comment_count>
      <attachid>60151</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-30 14:22:57 -0700</bug_when>
    <thetext>Comment on attachment 60151
Patch

Looks good.  Not sure why I went off to template land before for this patch.

JavaScriptCore/wtf/PassRefPtr.h:32
 +      inline void adopted(const void*)
One line?

JavaScriptCore/wtf/RefCounted.h:70
 +          ASSERT(m_deletionHasBegun);
This means we&apos;ll need to delete via deref(), right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244949</commentid>
    <comment_count>10</comment_count>
      <attachid>60151</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 14:32:08 -0700</bug_when>
    <thetext>Comment on attachment 60151
Patch

I&apos;m curious if there is a benefit to making adopted() a free function instead of a member function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244960</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 15:07:36 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; JavaScriptCore/wtf/PassRefPtr.h:32
&gt;  +      inline void adopted(const void*)
&gt; One line?

Sure, that would be OK.

&gt; JavaScriptCore/wtf/RefCounted.h:70
&gt;  +          ASSERT(m_deletionHasBegun);
&gt; This means we&apos;ll need to delete via deref(), right?

Yes.

I think this goes hand in hand with requiring adoptRef.

It found some good things when I turned it on. I had these assertions on for a while and was fixing all the things they found, but then I decided it was better to do a simple patch that makes it so other could work on it in parallel if they like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244961</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 15:07:54 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I&apos;m curious if there is a benefit to making adopted() a free function instead of a member function?

I don&apos;t think it could be a member function. A member function of what class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244962</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 15:11:02 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; I&apos;m curious if there is a benefit to making adopted() a free function instead of a member function?
&gt; 
&gt; I don&apos;t think it could be a member function. A member function of what class?

I see.  RefCounted is not the only way to make something play nice in the RefPtr system.  Makes sense now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244984</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 16:09:25 -0700</bug_when>
    <thetext>Committed r62213: &lt;http://trac.webkit.org/changeset/62213&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60133</attachid>
            <date>2010-06-30 11:01:25 -0700</date>
            <delta_ts>2010-06-30 12:20:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41422-20100630110124.patch</filename>
            <type>text/plain</type>
            <size>18801</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMTkyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDYtMzAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhc3NlcnRpb24sIG9mZiBieSBkZWZhdWx0LCBmb3Igd2hlbiB5
b3UgZm9yZ2V0IHRvIGRvIGFkb3B0UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MTQyMgorCisgICAgICAgICogd3RmL1Bhc3NSZWZQdHIuaDogVHdl
YWtlZCBmb3JtYXR0aW5nLiBBZGRlZCBhIG5ldyBhZG9wdGVkCisgICAgICAgIGZ1bmN0aW9uLCBj
YWxsZWQgb24gdGhlIHBvaW50ZXIgYnkgYWRvcHRSZWYsIHdpdGggYW4gZW1wdHkgaW5saW5lCisg
ICAgICAgIGRlZmF1bHQgdmVyc2lvbiwgbWVhbnQgdG8gYmUgb3ZlcmxvYWRlZC4gVW5pZmllZCB0
aGUgaW5saW5pbmcKKyAgICAgICAgd2l0aCBhIG1hY3JvIG5hbWVkIFJFRl9ERVJFRl9JTkxJTkUg
dG8gbWFrZSBpdCBjbGVhcmVyIHdoYXQncworICAgICAgICBnb2luZyBvbiBpbiB0aGUgcmVmSWZO
b3ROdWxsL2RlcmVmSWZOb3ROdWxsIGZ1bmN0aW9ucy4gUmVuYW1lZAorICAgICAgICByZWxlYXNl
UmVmIHRvIGxlYWtSZWYsIGJ1dCBsZWZ0IHRoZSBvbGQgbmFtZSBpbiBmb3IgY29tcGF0aWJpbGl0
eQorICAgICAgICBmb3Igbm93LgorCisgICAgICAgICogd3RmL1JlZkNvdW50ZWQuaDogQWRkZWQg
Y29kZSB0byByZXF1aXJlIGFkb3B0aW9uIGFuZCBhc3NlcnQgaWYKKyAgICAgICAgeW91IGRvbid0
IGNhbGwgYWRvcHRSZWYuIEZvciBub3csIGl0IGlzIHR1cm5lZCBvZmYgYmVjYXVzZSBvZiB0aGUK
KyAgICAgICAgTE9PU0VfUkVGX0NPVU5URUQgZGVmaW5lIGluIHRoaXMgaGVhZGVyLiBMYXRlciB3
ZSBjYW4gdHVybiBpdCBvbgorICAgICAgICBvbmNlIHdlIGdldCBldmVyeXRoaW5nIHdvcmtpbmcg
d2l0aG91dCBhc3NlcnRpbmcuCisKIDIwMTAtMDYtMjkgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9m
ZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3d0Zi9QYXNzUmVmUHRyLmgJKHJldmlzaW9uIDYyMTQ1KQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL1Bhc3NSZWZQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTI3LDQwICsyNywzNCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIFJlZlB0cjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNz
UmVmUHRyOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVm
KFQqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVmKFQq
KTsKIAorICAgIGlubGluZSB2b2lkIGFkb3B0ZWQoY29uc3Qgdm9pZCopCisgICAgeworICAgIH0K
IAotICAgIC8vIFJlbW92ZSBpbmxpbmUgZm9yIFdJTlNDVyBjb21waWxlciB0byBwcmV2ZW50IHRo
ZSBjb21waWxlciBhZ3Jlc3NpdmVseSByZXNvbHZpbmcKLSAgICAvLyBUOjpyZWYoKSBhbmQgVDo6
ZGVyZWYoKSwgd2hpY2ggd2lsbCBmYWlsIGNvbXBpbGluZyB3aGVuIFBhc3NSZWZQdHI8VD4gaXMg
dXNlZCBhcwotICAgIC8vIGEgY2xhc3MgbWVtYmVyIG9yIGZ1bmN0aW9uIGFyZ3VtZW50cyBiZWZv
cmUgVCBpcyBkZWZpbmVkLgotCi0gICAgLy8gW1F0XXI1NzI0MCBicm9rZSBRdCBidWlsZCAobWln
aHQgYmUgYSBnY2MgYnVnKQotICAgIC8vIEZJWE1FISBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzI1MwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAjaWYg
IUNPTVBJTEVSKFdJTlNDVykKICNpZiAhUExBVEZPUk0oUVQpCi0gICAgQUxXQVlTX0lOTElORQor
ICAgICNkZWZpbmUgUkVGX0RFUkVGX0lOTElORSBBTFdBWVNfSU5MSU5FCiAjZWxzZQotICAgIGlu
bGluZQorICAgIC8vIFVzaW5nIEFMV0FZU19JTkxJTkUgYnJva2UgdGhlIFF0IGJ1aWxkLiBUaGlz
IG1heSBiZSBhIEdDQyBidWcuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNzI1MyBmb3IgZGV0YWlscy4KKyAgICAjZGVmaW5lIFJFRl9ERVJFRl9J
TkxJTkUgaW5saW5lCiAjZW5kaWYKKyNlbHNlCisgICAgLy8gTm8gaW5saW5pbmcgZm9yIFdJTlND
VyBjb21waWxlciB0byBwcmV2ZW50IHRoZSBjb21waWxlciBhZ3Jlc3NpdmVseSByZXNvbHZpbmcK
KyAgICAvLyBUOjpyZWYoKSBhbmQgVDo6ZGVyZWYoKSwgd2hpY2ggd2lsbCBmYWlsIGNvbXBpbGlu
ZyB3aGVuIFBhc3NSZWZQdHI8VD4gaXMgdXNlZCBhcworICAgIC8vIGEgY2xhc3MgbWVtYmVyIG9y
IGZ1bmN0aW9uIGFyZ3VtZW50cyBiZWZvcmUgVCBpcyBkZWZpbmVkLgorICAgICNkZWZpbmUgUkVG
X0RFUkVGX0lOTElORQogI2VuZGlmCi0gICAgdm9pZCByZWZJZk5vdE51bGwoVCogcHRyKQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUkVGX0RFUkVGX0lOTElORSB2b2lkIHJlZklmTm90TnVs
bChUKiBwdHIpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkocHRyICE9IDApKQogICAgICAg
ICAgICAgcHRyLT5yZWYoKTsKICAgICB9CiAKLSAgICAvLyBbUXRdcjU3MjQwIGJyb2tlIFF0IGJ1
aWxkIChtaWdodCBiZSBhIGdjYyBidWcpCi0gICAgLy8gRklYTUUhIFNlZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MjUzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gCi0jaWYgIUNPTVBJTEVSKFdJTlNDVykKLSNpZiAhUExBVEZPUk0oUVQpCi0gICAgQUxXQVlT
X0lOTElORQotI2Vsc2UKLSAgICBpbmxpbmUKLSNlbmRpZgotI2VuZGlmCi0gICAgdm9pZCBkZXJl
ZklmTm90TnVsbChUKiBwdHIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUkVGX0RFUkVGX0lO
TElORSB2b2lkIGRlcmVmSWZOb3ROdWxsKFQqIHB0cikKICAgICB7CiAgICAgICAgIGlmIChVTkxJ
S0VMWShwdHIgIT0gMCkpCiAgICAgICAgICAgICBwdHItPmRlcmVmKCk7CkBAIC02OCwyOCArNjIs
MjYgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQ
YXNzUmVmUHRyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBhc3NSZWZQdHIoKSA6IG1fcHRyKDAp
IHt9CisgICAgICAgIFBhc3NSZWZQdHIoKSA6IG1fcHRyKDApIHsgfQogICAgICAgICBQYXNzUmVm
UHRyKFQqIHB0cikgOiBtX3B0cihwdHIpIHsgcmVmSWZOb3ROdWxsKHB0cik7IH0KICAgICAgICAg
Ly8gSXQgc29tZXdoYXQgYnJlYWtzIHRoZSB0eXBlIHN5c3RlbSB0byBhbGxvdyB0cmFuc2ZlciBv
ZiBvd25lcnNoaXAgb3V0IG9mCiAgICAgICAgIC8vIGEgY29uc3QgUGFzc1JlZlB0ci4gSG93ZXZl
ciwgaXQgbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NSZWZQdHIKLSAgICAg
ICAgLy8gdGVtcG9yYXJpZXMsIGFuZCB3ZSBkb24ndCByZWFsbHkgaGF2ZSBhIG5lZWQgdG8gdXNl
IHJlYWwgY29uc3QgUGFzc1JlZlB0cnMgCi0gICAgICAgIC8vIGFueXdheS4KLSAgICAgICAgUGFz
c1JlZlB0cihjb25zdCBQYXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ucmVsZWFzZVJlZigpKSB7fQot
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUGFzc1JlZlB0cihjb25zdCBQYXNzUmVmUHRy
PFU+JiBvKSA6IG1fcHRyKG8ucmVsZWFzZVJlZigpKSB7IH0KKyAgICAgICAgLy8gdGVtcG9yYXJp
ZXMsIGFuZCB3ZSBkb24ndCBoYXZlIGEgbmVlZCB0byB1c2UgcmVhbCBjb25zdCBQYXNzUmVmUHRy
cyBhbnl3YXkuCisgICAgICAgIFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0ciYgbykgOiBtX3B0
cihvLnJlbGVhc2VSZWYoKSkgeyB9CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NS
ZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykgOiBtX3B0cihvLnJlbGVhc2VSZWYoKSkgeyB9
CiAKICAgICAgICAgQUxXQVlTX0lOTElORSB+UGFzc1JlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwo
bV9wdHIpOyB9CiAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IAotICAgICAgICBQYXNzUmVm
UHRyKGNvbnN0IFJlZlB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IFQqIHB0ciA9IG1fcHRy
OyByZWZJZk5vdE51bGwocHRyKTsgfQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNz
UmVmUHRyKGNvbnN0IFJlZlB0cjxVPiYpOwogICAgICAgICAKICAgICAgICAgVCogZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9wdHI7IH0KIAogICAgICAgICB2b2lkIGNsZWFyKCkgeyBUKiBwdHIgPSBt
X3B0cjsgZGVyZWZJZk5vdE51bGwocHRyKTsgbV9wdHIgPSAwOyB9Ci0gICAgICAgIFQqIHJlbGVh
c2VSZWYoKSBjb25zdCB7IFQqIHRtcCA9IG1fcHRyOyBtX3B0ciA9IDA7IHJldHVybiB0bXA7IH0K
KyAgICAgICAgVCogbGVha1JlZigpIGNvbnN0OwogCiAgICAgICAgIFQmIG9wZXJhdG9yKigpIGNv
bnN0IHsgcmV0dXJuICptX3B0cjsgfQogICAgICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gbV9wdHI7IH0KLSAgICAgICAgCisKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhbV9wdHI7IH0KIAogICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0
b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGlu
dGVnZXIgdHlwZXMuCkBAIC05OCwxMyArOTAsMTggQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAg
ICAgUGFzc1JlZlB0ciYgb3BlcmF0b3I9KFQqKTsKICAgICAgICAgUGFzc1JlZlB0ciYgb3BlcmF0
b3I9KGNvbnN0IFBhc3NSZWZQdHImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBh
c3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+Jik7Ci0gICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPiBQYXNzUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25z
dCBQYXNzUmVmUHRyPFU+Jik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWZQ
dHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mKTsKIAogICAgICAgICBmcmllbmQgUGFzc1Jl
ZlB0ciBhZG9wdFJlZjxUPihUKik7CisKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNl
UmVmIG9uY2Ugd2UgY2hhbmdlIGFsbCBjYWxsZXJzIHRvIGNhbGwgbGVha1JlZiBpbnN0ZWFkLgor
ICAgICAgICBUKiByZWxlYXNlUmVmKCkgY29uc3QgeyByZXR1cm4gbGVha1JlZigpOyB9CisKICAg
ICBwcml2YXRlOgogICAgICAgICAvLyBhZG9wdGluZyBjb25zdHJ1Y3RvcgotICAgICAgICBQYXNz
UmVmUHRyKFQqIHB0ciwgYm9vbCkgOiBtX3B0cihwdHIpIHt9CisgICAgICAgIFBhc3NSZWZQdHIo
VCogcHRyLCBib29sKSA6IG1fcHRyKHB0cikgeyB9CisKICAgICAgICAgbXV0YWJsZSBUKiBtX3B0
cjsKICAgICB9OwogICAgIApAQCAtMTE2LDcgKzExMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IC8vIGlmIHdlIHVzZSBpbmhlcml0YW5jZSwgR0NDJ3Mgb3B0aW1pemVyIGZhaWxzIHRvIHJlYWxp
emUgdGhhdCBkZXN0cnVjdGlvbgogICAgIC8vIG9mIGEgcmVsZWFzZWQgTm9uTnVsbFBhc3NSZWZQ
dHIgaXMgYSBuby1vcC4gU28sIGZvciBub3csIGp1c3QgY29weSB0aGUKICAgICAvLyBtb3N0IGlt
cG9ydGFudCBjb2RlIGZyb20gUGFzc1JlZlB0ci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgTm9uTnVsbFBhc3NSZWZQdHIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IE5vbk51bGxQYXNzUmVmUHRyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIE5vbk51bGxQYXNzUmVm
UHRyKFQqIHB0cikKICAgICAgICAgICAgIDogbV9wdHIocHRyKQpAQCAtMTI1LDcgKzEyMiw3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgbV9wdHItPnJlZigpOwogICAgICAgICB9CiAK
LSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IE5vbk51bGxQYXNzUmVmUHRyKGNvbnN0IFJlZlB0
cjxVPiYgbykKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gTm9uTnVsbFBhc3NSZWZQdHIo
Y29uc3QgUmVmUHRyPFU+JiBvKQogICAgICAgICAgICAgOiBtX3B0cihvLmdldCgpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQobV9wdHIpOwpAQCAtMTM4LDEzICsxMzUsMTMgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgICAgICBBU1NFUlQobV9wdHIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IE5vbk51bGxQYXNzUmVmUHRyKGNvbnN0IE5vbk51bGxQ
YXNzUmVmUHRyPFU+JiBvKQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBOb25OdWxsUGFz
c1JlZlB0cihjb25zdCBOb25OdWxsUGFzc1JlZlB0cjxVPiYgbykKICAgICAgICAgICAgIDogbV9w
dHIoby5yZWxlYXNlUmVmKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX3B0cik7
CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gTm9uTnVsbFBhc3NSZWZQ
dHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Tm9uTnVsbFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykKICAgICAgICAgICAgIDog
bV9wdHIoby5yZWxlYXNlUmVmKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX3B0
cik7CkBAIC0xNjQsNyArMTYxLDIxIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBtdXRhYmxl
IFQqIG1fcHRyOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRv
cj0oY29uc3QgUmVmUHRyPFU+JiBvKSAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPjo6UGFzc1JlZlB0cihjb25zdCBSZWZQ
dHI8VT4mIG8pCisgICAgICAgIDogbV9wdHIoby5nZXQoKSkKKyAgICB7CisgICAgICAgIFQqIHB0
ciA9IG1fcHRyOworICAgICAgICByZWZJZk5vdE51bGwocHRyKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogUGFzc1JlZlB0cjxUPjo6bGVha1JlZigpIGNvbnN0
CisgICAgeworICAgICAgICBUKiBwdHIgPSBtX3B0cjsKKyAgICAgICAgbV9wdHIgPSAwOworICAg
ICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVy
YXRvcj0oY29uc3QgUmVmUHRyPFU+JiBvKQogICAgIHsKICAgICAgICAgVCogb3B0ciA9IG8uZ2V0
KCk7CiAgICAgICAgIHJlZklmTm90TnVsbChvcHRyKTsKQEAgLTE3NCw3ICsxODUsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9w
ZXJhdG9yPShUKiBvcHRyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzUmVm
UHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKICAgICB7CiAgICAgICAg
IHJlZklmTm90TnVsbChvcHRyKTsKICAgICAgICAgVCogcHRyID0gbV9wdHI7CkBAIC0xODMsNyAr
MTk0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQ
dHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFQ+JiByZWYpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9y
PShjb25zdCBQYXNzUmVmUHRyPFQ+JiByZWYpCiAgICAgewogICAgICAgICBUKiBwdHIgPSBtX3B0
cjsKICAgICAgICAgbV9wdHIgPSByZWYucmVsZWFzZVJlZigpOwpAQCAtMTkxLDcgKzIwMiw3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NS
ZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+JiBy
ZWYpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5l
IFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRy
PFU+JiByZWYpCiAgICAgewogICAgICAgICBUKiBwdHIgPSBtX3B0cjsKICAgICAgICAgbV9wdHIg
PSByZWYucmVsZWFzZVJlZigpOwpAQCAtMTk5LDcyICsyMTAsNzMgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0
cjxUPiYgYSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+
JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAKICAgICB7IAogICAgICAgICByZXR1cm4gYS5n
ZXQoKSA9PSBiLmdldCgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBj
b25zdCBSZWZQdHI8VT4mIGIpIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgY29uc3QgUmVm
UHRyPFU+JiBiKSAKICAgICB7IAogICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyAK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIp
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAKICAgICB7
IAogICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyAKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQYXNzUmVmUHRyPFQ+JiBhLCBVKiBiKSAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUq
IGIpIAogICAgIHsgCiAgICAgICAgIHJldHVybiBhLmdldCgpID09IGI7IAogICAgIH0KICAgICAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShUKiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFBhc3NS
ZWZQdHI8VT4mIGIpIAogICAgIHsKICAgICAgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgCiAgICAg
fQogICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4m
IGIpIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikg
CiAgICAgeyAKICAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgY29uc3QgUmVmUHRyPFU+JiBiKSAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikgCiAgICAgeyAKICAgICAgICAg
cmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+
JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29u
c3QgUGFzc1JlZlB0cjxVPiYgYikgCiAgICAgeyAKICAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0g
Yi5nZXQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgVSogYikKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpCiAgICAgewogICAgICAgICByZXR1cm4gYS5n
ZXQoKSAhPSBiOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KFQqIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIAogICAgIHsgCiAgICAgICAgIHJldHVy
biBhICE9IGIuZ2V0KCk7IAogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
aW5saW5lIFBhc3NSZWZQdHI8VD4gYWRvcHRSZWYoVCogcCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiBhZG9wdFJlZihUKiBwKQogICAgIHsKKyAgICAgICAg
YWRvcHRlZChwKTsKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VD4ocCwgdHJ1ZSk7CiAgICAg
fQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVm
UHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gc3Rh
dGljX3BvaW50ZXJfY2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKSAKICAgICB7IAogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8VCo+KHAucmVsZWFzZVJlZigpKSk7IAogICAg
IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1Jl
ZlB0cjxUPiBjb25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gY29u
c3RfcG9pbnRlcl9jYXN0KGNvbnN0IFBhc3NSZWZQdHI8VT4mIHApIAogICAgIHsgCiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihjb25zdF9jYXN0PFQqPihwLnJlbGVhc2VSZWYoKSkpOyAKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihjb25zdCBQYXNz
UmVmUHRyPFQ+JiBwKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHIo
Y29uc3QgUGFzc1JlZlB0cjxUPiYgcCkKICAgICB7CiAgICAgICAgIHJldHVybiBwLmdldCgpOwog
ICAgIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaAkocmV2aXNpb24gNjIxNDUpCisrKyBK
YXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yNCw2ICsyNCw5IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorLy8gUmVtb3ZlIHRoaXMgb25jZSB3ZSBtYWtlIGFs
bCBXZWJLaXQgY29kZSBjb21wYXRpYmxlIHdpdGggc3RyaWN0ZXIgcnVsZXMgYWJvdXQgUmVmQ291
bnRlZC4KKyNkZWZpbmUgTE9PU0VfUkVGX0NPVU5URUQKKwogbmFtZXNwYWNlIFdURiB7CiAKIC8v
IFRoaXMgYmFzZSBjbGFzcyBob2xkcyB0aGUgbm9uLXRlbXBsYXRlIG1ldGhvZHMgYW5kIGF0dHJp
YnV0ZXMuCkBAIC0zNCw2ICszNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisjaWZuZGVmIExPT1NFX1JFRl9D
T1VOVEVECisgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOworI2VuZGlmCiAg
ICAgICAgICsrbV9yZWZDb3VudDsKICAgICB9CiAKQEAgLTUzLDE4ICs1OSwyNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIDogbV9yZWZDb3VudCgxKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLCBt
X2RlbGV0aW9uSGFzQmVndW4oZmFsc2UpCisgICAgICAgICwgbV9hZG9wdGlvbklzUmVxdWlyZWQo
dHJ1ZSkKICNlbmRpZgogICAgIHsKICAgICB9CiAKICAgICB+UmVmQ291bnRlZEJhc2UoKQogICAg
IHsKKyNpZm5kZWYgTE9PU0VfUkVGX0NPVU5URUQKKyAgICAgICAgQVNTRVJUKG1fZGVsZXRpb25I
YXNCZWd1bik7CisgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOworI2VuZGlm
CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwb2ludGVyIHNob3VsZCBiZSBm
cmVlZCBvciBub3QuCiAgICAgYm9vbCBkZXJlZkJhc2UoKQogICAgIHsKICAgICAgICAgQVNTRVJU
KCFtX2RlbGV0aW9uSGFzQmVndW4pOworI2lmbmRlZiBMT09TRV9SRUZfQ09VTlRFRAorICAgICAg
ICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKKyNlbmRpZgorCiAgICAgICAgIEFTU0VS
VChtX3JlZkNvdW50ID4gMCk7CiAgICAgICAgIGlmIChtX3JlZkNvdW50ID09IDEpIHsKICNpZm5k
ZWYgTkRFQlVHCkBAIC05MSwxNyArMTA2LDI5IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiBwcml2
YXRlOgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgZnJpZW5kIGNsYXNzIENyb3NzVGhyZWFk
UmVmQ291bnRlZDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgQ3Jvc3NU
aHJlYWRSZWZDb3VudGVkOworICAgIGZyaWVuZCB2b2lkIGFkb3B0ZWQoUmVmQ291bnRlZEJhc2Uq
KTsKIAogICAgIGludCBtX3JlZkNvdW50OwogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZGVs
ZXRpb25IYXNCZWd1bjsKKyAgICBib29sIG1fYWRvcHRpb25Jc1JlcXVpcmVkOwogI2VuZGlmCiB9
OwogCisjaWZuZGVmIE5ERUJVRworCitpbmxpbmUgdm9pZCBhZG9wdGVkKFJlZkNvdW50ZWRCYXNl
KiBvYmplY3QpCit7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NF
UlQoIW9iamVjdC0+bV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICBvYmplY3QtPm1fYWRvcHRpb25J
c1JlcXVpcmVkID0gZmFsc2U7Cit9CisKKyNlbmRpZgogCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFz
cyBSZWZDb3VudGVkIDogcHVibGljIFJlZkNvdW50ZWRCYXNlLCBwdWJsaWMgTm9uY29weWFibGUg
ewordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZDb3Vu
dGVkQmFzZSwgcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkK
ICAgICB7CkBAIC0xMTUsNyArMTQyLDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIH07CiAKLXRlbXBs
YXRlPGNsYXNzIFQ+IGNsYXNzIFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWQgOiBwdWJsaWMgUmVm
Q291bnRlZEJhc2UsIHB1YmxpYyBOb25jb3B5YWJsZUN1c3RvbUFsbG9jYXRlZCB7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZDb3VudGVkQ3VzdG9tQWxsb2NhdGVkIDogcHVibGljIFJl
ZkNvdW50ZWRCYXNlLCBwdWJsaWMgTm9uY29weWFibGVDdXN0b21BbGxvY2F0ZWQgewogcHVibGlj
OgogICAgIHZvaWQgZGVyZWYoKQogICAgIHsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjE5MikKKysrIFdlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYtMzAgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhc3NlcnRpb24sIG9mZiBieSBkZWZhdWx0LCBmb3Ig
d2hlbiB5b3UgZm9yZ2V0IHRvIGRvIGFkb3B0UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTQyMgorCisgICAgICAgICogcGxhdGZvcm0vVHJlZVNo
YXJlZC5oOiBBZGRlZCBjb2RlIHRvIHJlcXVpcmUgYWRvcHRpb24gYW5kIGFzc2VydCBpZgorICAg
ICAgICB5b3UgZG9uJ3QgY2FsbCBhZG9wdFJlZi4gRm9yIG5vdywgaXQgaXMgdHVybmVkIG9mZiBi
ZWNhdXNlIG9mIHRoZQorICAgICAgICBMT09TRV9UUkVFX1NIQVJFRCBkZWZpbmUgaW4gdGhpcyBo
ZWFkZXIuIExhdGVyIHdlIGNhbiB0dXJuIGl0IG9uCisgICAgICAgIG9uY2Ugd2UgZ2V0IGV2ZXJ5
dGhpbmcgd29ya2luZyB3aXRob3V0IGFzc2VydGluZy4gTm90ZSBhbHNvIHRoYXQgaXQKKyAgICAg
ICAgb25seSB3b3JrcyBmb3Igb2JqZWN0cyB3aXRoIGFuIGluaXRpYWwgcmVmZXJlbmNlIGNvdW50
IG9mIDEuCisKIDIwMTAtMDYtMzAgIFZpY3RvciBXYW5nICA8dmljdG9yd0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9UcmVlU2hhcmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hh
cmVkLmgJKHJldmlzaW9uIDYyMTQ1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDE3ICsyMywyNCBAQAogCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpZm5kZWYg
TkRFQlVHCiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2VuZGlmCisKKy8vIFJlbW92ZSB0
aGlzIG9uY2Ugd2UgbWFrZSBhbGwgV2ViS2l0IGNvZGUgY29tcGF0aWJsZSB3aXRoIHN0cmljdGVy
IHJ1bGVzIGFib3V0IFRyZWVTaGFyZWQuCisjZGVmaW5lIExPT1NFX1RSRUVfU0hBUkVECiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgVHJlZVNoYXJlZCA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hh
cmVkOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8VD4qKTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVHJlZVNoYXJlZCA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CiBwdWJsaWM6CiAgICAgVHJlZVNoYXJlZChpbnQgaW5pdGlhbFJlZkNvdW50ID0gMSkK
ICAgICAgICAgOiBtX3JlZkNvdW50KGluaXRpYWxSZWZDb3VudCkKICAgICAgICAgLCBtX3BhcmVu
dCgwKQorI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLCBtX2Fkb3B0aW9uSXNSZXF1aXJlZChpbml0
aWFsUmVmQ291bnQgPT0gMSkKKyNlbmRpZgogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICNpZm5kZWYgTkRFQlVHCkBAIC00Niw2ICs1Myw5IEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCFtX3JlZkNvdW50KTsK
ICAgICAgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CisjaWZuZGVmIExPT1NFX1JFRl9D
T1VOVEVECisgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOworI2VuZGlmCiAg
ICAgfQogCiAgICAgdm9pZCByZWYoKQpAQCAtNTMsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0Jl
Z3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CisjaWZu
ZGVmIExPT1NFX1JFRl9DT1VOVEVECisgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWly
ZWQpOworI2VuZGlmCiAgICAgICAgICsrbV9yZWZDb3VudDsKICAgICB9CiAKQEAgLTYyLDYgKzc1
LDkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9yZWZDb3VudCA+PSAwKTsKICAgICAgICAg
QVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQoIW1faW5SZW1vdmVk
TGFzdFJlZkZ1bmN0aW9uKTsKKyNpZm5kZWYgTE9PU0VfUkVGX0NPVU5URUQKKyAgICAgICAgQVNT
RVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CisjZW5kaWYKICAgICAgICAgaWYgKC0tbV9yZWZD
b3VudCA8PSAwICYmICFtX3BhcmVudCkgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIG1f
aW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKQEAgLTEwMCw2ICsxMTYsOCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNo
YXJlZDxUPiopOworCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCkKICAgICB7CiAj
aWZuZGVmIE5ERUJVRwpAQCAtMTEwLDggKzEyOCwyNCBAQCBwcml2YXRlOgogCiAgICAgaW50IG1f
cmVmQ291bnQ7CiAgICAgVCogbV9wYXJlbnQ7CisjaWZuZGVmIE5ERUJVRworICAgIGJvb2wgbV9h
ZG9wdGlvbklzUmVxdWlyZWQ7CisjZW5kaWYKIH07CiAKKyNpZm5kZWYgTkRFQlVHCisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxUPiogb2JqZWN0
KQoreworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKCFvYmpl
Y3QtPm1fZGVsZXRpb25IYXNCZWd1bik7CisgICAgQVNTRVJUKCFvYmplY3QtPm1faW5SZW1vdmVk
TGFzdFJlZkZ1bmN0aW9uKTsKKyAgICBvYmplY3QtPm1fYWRvcHRpb25Jc1JlcXVpcmVkID0gZmFs
c2U7Cit9CisKKyNlbmRpZgorCiB9CiAKICNlbmRpZiAvLyBUcmVlU2hhcmVkLmgK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60151</attachid>
            <date>2010-06-30 14:12:42 -0700</date>
            <delta_ts>2010-06-30 14:32:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41422-20100630141241.patch</filename>
            <type>text/plain</type>
            <size>18876</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMTkyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDYtMzAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhc3NlcnRpb24sIG9mZiBieSBkZWZhdWx0LCBmb3Igd2hlbiB5
b3UgZm9yZ2V0IHRvIGRvIGFkb3B0UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MTQyMgorCisgICAgICAgICogd3RmL1Bhc3NSZWZQdHIuaDogVHdl
YWtlZCBmb3JtYXR0aW5nLiBBZGRlZCBhIG5ldyBhZG9wdGVkCisgICAgICAgIGZ1bmN0aW9uLCBj
YWxsZWQgb24gdGhlIHBvaW50ZXIgYnkgYWRvcHRSZWYsIHdpdGggYW4gZW1wdHkgaW5saW5lCisg
ICAgICAgIGRlZmF1bHQgdmVyc2lvbiwgbWVhbnQgdG8gYmUgb3ZlcmxvYWRlZC4gVW5pZmllZCB0
aGUgaW5saW5pbmcKKyAgICAgICAgd2l0aCBhIG1hY3JvIG5hbWVkIFJFRl9ERVJFRl9JTkxJTkUg
dG8gbWFrZSBpdCBjbGVhcmVyIHdoYXQncworICAgICAgICBnb2luZyBvbiBpbiB0aGUgcmVmSWZO
b3ROdWxsL2RlcmVmSWZOb3ROdWxsIGZ1bmN0aW9ucy4gUmVuYW1lZAorICAgICAgICByZWxlYXNl
UmVmIHRvIGxlYWtSZWYsIGJ1dCBsZWZ0IHRoZSBvbGQgbmFtZSBpbiBmb3IgY29tcGF0aWJpbGl0
eQorICAgICAgICBmb3Igbm93LgorCisgICAgICAgICogd3RmL1JlZkNvdW50ZWQuaDogQWRkZWQg
Y29kZSB0byByZXF1aXJlIGFkb3B0aW9uIGFuZCBhc3NlcnQgaWYKKyAgICAgICAgeW91IGRvbid0
IGNhbGwgYWRvcHRSZWYuIEZvciBub3csIGl0IGlzIHR1cm5lZCBvZmYgYmVjYXVzZSBvZiB0aGUK
KyAgICAgICAgTE9PU0VfUkVGX0NPVU5URUQgZGVmaW5lIGluIHRoaXMgaGVhZGVyLiBMYXRlciB3
ZSBjYW4gdHVybiBpdCBvbgorICAgICAgICBvbmNlIHdlIGdldCBldmVyeXRoaW5nIHdvcmtpbmcg
d2l0aG91dCBhc3NlcnRpbmcuCisKIDIwMTAtMDYtMjkgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9m
ZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3d0Zi9QYXNzUmVmUHRyLmgJKHJldmlzaW9uIDYyMTQ1KQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL1Bhc3NSZWZQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTI3LDQwICsyNywzNCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIFJlZlB0cjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNz
UmVmUHRyOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVm
KFQqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVmKFQq
KTsKIAorICAgIGlubGluZSB2b2lkIGFkb3B0ZWQoY29uc3Qgdm9pZCopCisgICAgeworICAgIH0K
IAotICAgIC8vIFJlbW92ZSBpbmxpbmUgZm9yIFdJTlNDVyBjb21waWxlciB0byBwcmV2ZW50IHRo
ZSBjb21waWxlciBhZ3Jlc3NpdmVseSByZXNvbHZpbmcKLSAgICAvLyBUOjpyZWYoKSBhbmQgVDo6
ZGVyZWYoKSwgd2hpY2ggd2lsbCBmYWlsIGNvbXBpbGluZyB3aGVuIFBhc3NSZWZQdHI8VD4gaXMg
dXNlZCBhcwotICAgIC8vIGEgY2xhc3MgbWVtYmVyIG9yIGZ1bmN0aW9uIGFyZ3VtZW50cyBiZWZv
cmUgVCBpcyBkZWZpbmVkLgotCi0gICAgLy8gW1F0XXI1NzI0MCBicm9rZSBRdCBidWlsZCAobWln
aHQgYmUgYSBnY2MgYnVnKQotICAgIC8vIEZJWE1FISBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzI1MwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAjaWYg
IUNPTVBJTEVSKFdJTlNDVykKICNpZiAhUExBVEZPUk0oUVQpCi0gICAgQUxXQVlTX0lOTElORQor
ICAgICNkZWZpbmUgUkVGX0RFUkVGX0lOTElORSBBTFdBWVNfSU5MSU5FCiAjZWxzZQotICAgIGlu
bGluZQorICAgIC8vIFVzaW5nIEFMV0FZU19JTkxJTkUgYnJva2UgdGhlIFF0IGJ1aWxkLiBUaGlz
IG1heSBiZSBhIEdDQyBidWcuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNzI1MyBmb3IgZGV0YWlscy4KKyAgICAjZGVmaW5lIFJFRl9ERVJFRl9J
TkxJTkUgaW5saW5lCiAjZW5kaWYKKyNlbHNlCisgICAgLy8gTm8gaW5saW5pbmcgZm9yIFdJTlND
VyBjb21waWxlciB0byBwcmV2ZW50IHRoZSBjb21waWxlciBhZ3Jlc3NpdmVseSByZXNvbHZpbmcK
KyAgICAvLyBUOjpyZWYoKSBhbmQgVDo6ZGVyZWYoKSwgd2hpY2ggd2lsbCBmYWlsIGNvbXBpbGlu
ZyB3aGVuIFBhc3NSZWZQdHI8VD4gaXMgdXNlZCBhcworICAgIC8vIGEgY2xhc3MgbWVtYmVyIG9y
IGZ1bmN0aW9uIGFyZ3VtZW50cyBiZWZvcmUgVCBpcyBkZWZpbmVkLgorICAgICNkZWZpbmUgUkVG
X0RFUkVGX0lOTElORQogI2VuZGlmCi0gICAgdm9pZCByZWZJZk5vdE51bGwoVCogcHRyKQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUkVGX0RFUkVGX0lOTElORSB2b2lkIHJlZklmTm90TnVs
bChUKiBwdHIpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkocHRyICE9IDApKQogICAgICAg
ICAgICAgcHRyLT5yZWYoKTsKICAgICB9CiAKLSAgICAvLyBbUXRdcjU3MjQwIGJyb2tlIFF0IGJ1
aWxkIChtaWdodCBiZSBhIGdjYyBidWcpCi0gICAgLy8gRklYTUUhIFNlZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MjUzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gCi0jaWYgIUNPTVBJTEVSKFdJTlNDVykKLSNpZiAhUExBVEZPUk0oUVQpCi0gICAgQUxXQVlT
X0lOTElORQotI2Vsc2UKLSAgICBpbmxpbmUKLSNlbmRpZgotI2VuZGlmCi0gICAgdm9pZCBkZXJl
ZklmTm90TnVsbChUKiBwdHIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUkVGX0RFUkVGX0lO
TElORSB2b2lkIGRlcmVmSWZOb3ROdWxsKFQqIHB0cikKICAgICB7CiAgICAgICAgIGlmIChVTkxJ
S0VMWShwdHIgIT0gMCkpCiAgICAgICAgICAgICBwdHItPmRlcmVmKCk7CkBAIC02OCwyOCArNjIs
MjYgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQ
YXNzUmVmUHRyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBhc3NSZWZQdHIoKSA6IG1fcHRyKDAp
IHt9CisgICAgICAgIFBhc3NSZWZQdHIoKSA6IG1fcHRyKDApIHsgfQogICAgICAgICBQYXNzUmVm
UHRyKFQqIHB0cikgOiBtX3B0cihwdHIpIHsgcmVmSWZOb3ROdWxsKHB0cik7IH0KICAgICAgICAg
Ly8gSXQgc29tZXdoYXQgYnJlYWtzIHRoZSB0eXBlIHN5c3RlbSB0byBhbGxvdyB0cmFuc2ZlciBv
ZiBvd25lcnNoaXAgb3V0IG9mCiAgICAgICAgIC8vIGEgY29uc3QgUGFzc1JlZlB0ci4gSG93ZXZl
ciwgaXQgbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NSZWZQdHIKLSAgICAg
ICAgLy8gdGVtcG9yYXJpZXMsIGFuZCB3ZSBkb24ndCByZWFsbHkgaGF2ZSBhIG5lZWQgdG8gdXNl
IHJlYWwgY29uc3QgUGFzc1JlZlB0cnMgCi0gICAgICAgIC8vIGFueXdheS4KLSAgICAgICAgUGFz
c1JlZlB0cihjb25zdCBQYXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ucmVsZWFzZVJlZigpKSB7fQot
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUGFzc1JlZlB0cihjb25zdCBQYXNzUmVmUHRy
PFU+JiBvKSA6IG1fcHRyKG8ucmVsZWFzZVJlZigpKSB7IH0KKyAgICAgICAgLy8gdGVtcG9yYXJp
ZXMsIGFuZCB3ZSBkb24ndCBoYXZlIGEgbmVlZCB0byB1c2UgcmVhbCBjb25zdCBQYXNzUmVmUHRy
cyBhbnl3YXkuCisgICAgICAgIFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0ciYgbykgOiBtX3B0
cihvLnJlbGVhc2VSZWYoKSkgeyB9CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NS
ZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykgOiBtX3B0cihvLnJlbGVhc2VSZWYoKSkgeyB9
CiAKICAgICAgICAgQUxXQVlTX0lOTElORSB+UGFzc1JlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwo
bV9wdHIpOyB9CiAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IAotICAgICAgICBQYXNzUmVm
UHRyKGNvbnN0IFJlZlB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IFQqIHB0ciA9IG1fcHRy
OyByZWZJZk5vdE51bGwocHRyKTsgfQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNz
UmVmUHRyKGNvbnN0IFJlZlB0cjxVPiYpOwogICAgICAgICAKICAgICAgICAgVCogZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9wdHI7IH0KIAogICAgICAgICB2b2lkIGNsZWFyKCkgeyBUKiBwdHIgPSBt
X3B0cjsgZGVyZWZJZk5vdE51bGwocHRyKTsgbV9wdHIgPSAwOyB9Ci0gICAgICAgIFQqIHJlbGVh
c2VSZWYoKSBjb25zdCB7IFQqIHRtcCA9IG1fcHRyOyBtX3B0ciA9IDA7IHJldHVybiB0bXA7IH0K
KyAgICAgICAgVCogbGVha1JlZigpIGNvbnN0OwogCiAgICAgICAgIFQmIG9wZXJhdG9yKigpIGNv
bnN0IHsgcmV0dXJuICptX3B0cjsgfQogICAgICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gbV9wdHI7IH0KLSAgICAgICAgCisKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhbV9wdHI7IH0KIAogICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0
b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGlu
dGVnZXIgdHlwZXMuCkBAIC05OCwxMyArOTAsMTggQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAg
ICAgUGFzc1JlZlB0ciYgb3BlcmF0b3I9KFQqKTsKICAgICAgICAgUGFzc1JlZlB0ciYgb3BlcmF0
b3I9KGNvbnN0IFBhc3NSZWZQdHImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBh
c3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+Jik7Ci0gICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPiBQYXNzUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25z
dCBQYXNzUmVmUHRyPFU+Jik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWZQ
dHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mKTsKIAogICAgICAgICBmcmllbmQgUGFzc1Jl
ZlB0ciBhZG9wdFJlZjxUPihUKik7CisKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNl
UmVmIG9uY2Ugd2UgY2hhbmdlIGFsbCBjYWxsZXJzIHRvIGNhbGwgbGVha1JlZiBpbnN0ZWFkLgor
ICAgICAgICBUKiByZWxlYXNlUmVmKCkgY29uc3QgeyByZXR1cm4gbGVha1JlZigpOyB9CisKICAg
ICBwcml2YXRlOgogICAgICAgICAvLyBhZG9wdGluZyBjb25zdHJ1Y3RvcgotICAgICAgICBQYXNz
UmVmUHRyKFQqIHB0ciwgYm9vbCkgOiBtX3B0cihwdHIpIHt9CisgICAgICAgIFBhc3NSZWZQdHIo
VCogcHRyLCBib29sKSA6IG1fcHRyKHB0cikgeyB9CisKICAgICAgICAgbXV0YWJsZSBUKiBtX3B0
cjsKICAgICB9OwogICAgIApAQCAtMTE2LDcgKzExMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IC8vIGlmIHdlIHVzZSBpbmhlcml0YW5jZSwgR0NDJ3Mgb3B0aW1pemVyIGZhaWxzIHRvIHJlYWxp
emUgdGhhdCBkZXN0cnVjdGlvbgogICAgIC8vIG9mIGEgcmVsZWFzZWQgTm9uTnVsbFBhc3NSZWZQ
dHIgaXMgYSBuby1vcC4gU28sIGZvciBub3csIGp1c3QgY29weSB0aGUKICAgICAvLyBtb3N0IGlt
cG9ydGFudCBjb2RlIGZyb20gUGFzc1JlZlB0ci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgTm9uTnVsbFBhc3NSZWZQdHIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IE5vbk51bGxQYXNzUmVmUHRyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIE5vbk51bGxQYXNzUmVm
UHRyKFQqIHB0cikKICAgICAgICAgICAgIDogbV9wdHIocHRyKQpAQCAtMTI1LDcgKzEyMiw3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgbV9wdHItPnJlZigpOwogICAgICAgICB9CiAK
LSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IE5vbk51bGxQYXNzUmVmUHRyKGNvbnN0IFJlZlB0
cjxVPiYgbykKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gTm9uTnVsbFBhc3NSZWZQdHIo
Y29uc3QgUmVmUHRyPFU+JiBvKQogICAgICAgICAgICAgOiBtX3B0cihvLmdldCgpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQobV9wdHIpOwpAQCAtMTM4LDEzICsxMzUsMTMgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgICAgICBBU1NFUlQobV9wdHIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IE5vbk51bGxQYXNzUmVmUHRyKGNvbnN0IE5vbk51bGxQ
YXNzUmVmUHRyPFU+JiBvKQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBOb25OdWxsUGFz
c1JlZlB0cihjb25zdCBOb25OdWxsUGFzc1JlZlB0cjxVPiYgbykKICAgICAgICAgICAgIDogbV9w
dHIoby5yZWxlYXNlUmVmKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX3B0cik7
CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gTm9uTnVsbFBhc3NSZWZQ
dHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Tm9uTnVsbFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykKICAgICAgICAgICAgIDog
bV9wdHIoby5yZWxlYXNlUmVmKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX3B0
cik7CkBAIC0xNjQsNyArMTYxLDIxIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBtdXRhYmxl
IFQqIG1fcHRyOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRv
cj0oY29uc3QgUmVmUHRyPFU+JiBvKSAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPjo6UGFzc1JlZlB0cihjb25zdCBSZWZQ
dHI8VT4mIG8pCisgICAgICAgIDogbV9wdHIoby5nZXQoKSkKKyAgICB7CisgICAgICAgIFQqIHB0
ciA9IG1fcHRyOworICAgICAgICByZWZJZk5vdE51bGwocHRyKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogUGFzc1JlZlB0cjxUPjo6bGVha1JlZigpIGNvbnN0
CisgICAgeworICAgICAgICBUKiBwdHIgPSBtX3B0cjsKKyAgICAgICAgbV9wdHIgPSAwOworICAg
ICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVy
YXRvcj0oY29uc3QgUmVmUHRyPFU+JiBvKQogICAgIHsKICAgICAgICAgVCogb3B0ciA9IG8uZ2V0
KCk7CiAgICAgICAgIHJlZklmTm90TnVsbChvcHRyKTsKQEAgLTE3NCw3ICsxODUsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9w
ZXJhdG9yPShUKiBvcHRyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzUmVm
UHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKICAgICB7CiAgICAgICAg
IHJlZklmTm90TnVsbChvcHRyKTsKICAgICAgICAgVCogcHRyID0gbV9wdHI7CkBAIC0xODMsNyAr
MTk0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQ
dHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFQ+JiByZWYpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9y
PShjb25zdCBQYXNzUmVmUHRyPFQ+JiByZWYpCiAgICAgewogICAgICAgICBUKiBwdHIgPSBtX3B0
cjsKICAgICAgICAgbV9wdHIgPSByZWYucmVsZWFzZVJlZigpOwpAQCAtMTkxLDcgKzIwMiw3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NS
ZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+JiBy
ZWYpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5l
IFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRy
PFU+JiByZWYpCiAgICAgewogICAgICAgICBUKiBwdHIgPSBtX3B0cjsKICAgICAgICAgbV9wdHIg
PSByZWYucmVsZWFzZVJlZigpOwpAQCAtMTk5LDcyICsyMTAsNzMgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0
cjxUPiYgYSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+
JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAKICAgICB7IAogICAgICAgICByZXR1cm4gYS5n
ZXQoKSA9PSBiLmdldCgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBj
b25zdCBSZWZQdHI8VT4mIGIpIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgY29uc3QgUmVm
UHRyPFU+JiBiKSAKICAgICB7IAogICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyAK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIp
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAKICAgICB7
IAogICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyAKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQYXNzUmVmUHRyPFQ+JiBhLCBVKiBiKSAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUq
IGIpIAogICAgIHsgCiAgICAgICAgIHJldHVybiBhLmdldCgpID09IGI7IAogICAgIH0KICAgICAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShUKiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFBhc3NS
ZWZQdHI8VT4mIGIpIAogICAgIHsKICAgICAgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgCiAgICAg
fQogICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4m
IGIpIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikg
CiAgICAgeyAKICAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgY29uc3QgUmVmUHRyPFU+JiBiKSAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikgCiAgICAgeyAKICAgICAgICAg
cmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+
JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29u
c3QgUGFzc1JlZlB0cjxVPiYgYikgCiAgICAgeyAKICAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0g
Yi5nZXQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgVSogYikKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpCiAgICAgewogICAgICAgICByZXR1cm4gYS5n
ZXQoKSAhPSBiOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KFQqIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIAogICAgIHsgCiAgICAgICAgIHJldHVy
biBhICE9IGIuZ2V0KCk7IAogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
aW5saW5lIFBhc3NSZWZQdHI8VD4gYWRvcHRSZWYoVCogcCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiBhZG9wdFJlZihUKiBwKQogICAgIHsKKyAgICAgICAg
YWRvcHRlZChwKTsKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VD4ocCwgdHJ1ZSk7CiAgICAg
fQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVm
UHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gc3Rh
dGljX3BvaW50ZXJfY2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKSAKICAgICB7IAogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8VCo+KHAucmVsZWFzZVJlZigpKSk7IAogICAg
IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1Jl
ZlB0cjxUPiBjb25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gY29u
c3RfcG9pbnRlcl9jYXN0KGNvbnN0IFBhc3NSZWZQdHI8VT4mIHApIAogICAgIHsgCiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihjb25zdF9jYXN0PFQqPihwLnJlbGVhc2VSZWYoKSkpOyAKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihjb25zdCBQYXNz
UmVmUHRyPFQ+JiBwKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHIo
Y29uc3QgUGFzc1JlZlB0cjxUPiYgcCkKICAgICB7CiAgICAgICAgIHJldHVybiBwLmdldCgpOwog
ICAgIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaAkocmV2aXNpb24gNjIxNDUpCisrKyBK
YXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yNCw2ICsyNCw5IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorLy8gUmVtb3ZlIHRoaXMgb25jZSB3ZSBtYWtlIGFs
bCBXZWJLaXQgY29kZSBjb21wYXRpYmxlIHdpdGggc3RyaWN0ZXIgcnVsZXMgYWJvdXQgUmVmQ291
bnRlZC4KKyNkZWZpbmUgTE9PU0VfUkVGX0NPVU5URUQKKwogbmFtZXNwYWNlIFdURiB7CiAKIC8v
IFRoaXMgYmFzZSBjbGFzcyBob2xkcyB0aGUgbm9uLXRlbXBsYXRlIG1ldGhvZHMgYW5kIGF0dHJp
YnV0ZXMuCkBAIC0zNCw2ICszNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisjaWZuZGVmIExPT1NFX1JFRl9D
T1VOVEVECisgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOworI2VuZGlmCiAg
ICAgICAgICsrbV9yZWZDb3VudDsKICAgICB9CiAKQEAgLTUzLDE4ICs1OSwyNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIDogbV9yZWZDb3VudCgxKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLCBt
X2RlbGV0aW9uSGFzQmVndW4oZmFsc2UpCisgICAgICAgICwgbV9hZG9wdGlvbklzUmVxdWlyZWQo
dHJ1ZSkKICNlbmRpZgogICAgIHsKICAgICB9CiAKICAgICB+UmVmQ291bnRlZEJhc2UoKQogICAg
IHsKKyNpZm5kZWYgTE9PU0VfUkVGX0NPVU5URUQKKyAgICAgICAgQVNTRVJUKG1fZGVsZXRpb25I
YXNCZWd1bik7CisgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOworI2VuZGlm
CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwb2ludGVyIHNob3VsZCBiZSBm
cmVlZCBvciBub3QuCiAgICAgYm9vbCBkZXJlZkJhc2UoKQogICAgIHsKICAgICAgICAgQVNTRVJU
KCFtX2RlbGV0aW9uSGFzQmVndW4pOworI2lmbmRlZiBMT09TRV9SRUZfQ09VTlRFRAorICAgICAg
ICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKKyNlbmRpZgorCiAgICAgICAgIEFTU0VS
VChtX3JlZkNvdW50ID4gMCk7CiAgICAgICAgIGlmIChtX3JlZkNvdW50ID09IDEpIHsKICNpZm5k
ZWYgTkRFQlVHCkBAIC05MSwxNyArMTA2LDMyIEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiBwcml2
YXRlOgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgZnJpZW5kIGNsYXNzIENyb3NzVGhyZWFk
UmVmQ291bnRlZDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgQ3Jvc3NU
aHJlYWRSZWZDb3VudGVkOworCisjaWZuZGVmIE5ERUJVRworICAgIGZyaWVuZCB2b2lkIGFkb3B0
ZWQoUmVmQ291bnRlZEJhc2UqKTsKKyNlbmRpZgogCiAgICAgaW50IG1fcmVmQ291bnQ7CiAjaWZu
ZGVmIE5ERUJVRwogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuOworICAgIGJvb2wgbV9hZG9w
dGlvbklzUmVxdWlyZWQ7CiAjZW5kaWYKIH07CiAKKyNpZm5kZWYgTkRFQlVHCisKK2lubGluZSB2
b2lkIGFkb3B0ZWQoUmVmQ291bnRlZEJhc2UqIG9iamVjdCkKK3sKKyAgICBpZiAoIW9iamVjdCkK
KyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghb2JqZWN0LT5tX2RlbGV0aW9uSGFzQmVndW4p
OworICAgIG9iamVjdC0+bV9hZG9wdGlvbklzUmVxdWlyZWQgPSBmYWxzZTsKK30KKworI2VuZGlm
CiAKLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFJlZkNvdW50ZWQgOiBwdWJsaWMgUmVmQ291bnRl
ZEJhc2UsIHB1YmxpYyBOb25jb3B5YWJsZSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBS
ZWZDb3VudGVkIDogcHVibGljIFJlZkNvdW50ZWRCYXNlLCBwdWJsaWMgTm9uY29weWFibGUgewog
cHVibGljOgogICAgIHZvaWQgZGVyZWYoKQogICAgIHsKQEAgLTExNSw3ICsxNDUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgfQogfTsKIAotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgUmVmQ291bnRlZEN1
c3RvbUFsbG9jYXRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSwgcHVibGljIE5vbmNvcHlhYmxl
Q3VzdG9tQWxsb2NhdGVkIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZkNvdW50ZWRD
dXN0b21BbGxvY2F0ZWQgOiBwdWJsaWMgUmVmQ291bnRlZEJhc2UsIHB1YmxpYyBOb25jb3B5YWJs
ZUN1c3RvbUFsbG9jYXRlZCB7CiBwdWJsaWM6CiAgICAgdm9pZCBkZXJlZigpCiAgICAgewpJbmRl
eDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDYyMTkyKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNiBAQAorMjAxMC0wNi0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFzc2Vy
dGlvbiwgb2ZmIGJ5IGRlZmF1bHQsIGZvciB3aGVuIHlvdSBmb3JnZXQgdG8gZG8gYWRvcHRSZWYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDIyCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6IEFkZGVkIGNvZGUgdG8gcmVxdWlyZSBh
ZG9wdGlvbiBhbmQgYXNzZXJ0IGlmCisgICAgICAgIHlvdSBkb24ndCBjYWxsIGFkb3B0UmVmLiBG
b3Igbm93LCBpdCBpcyB0dXJuZWQgb2ZmIGJlY2F1c2Ugb2YgdGhlCisgICAgICAgIExPT1NFX1RS
RUVfU0hBUkVEIGRlZmluZSBpbiB0aGlzIGhlYWRlci4gTGF0ZXIgd2UgY2FuIHR1cm4gaXQgb24K
KyAgICAgICAgb25jZSB3ZSBnZXQgZXZlcnl0aGluZyB3b3JraW5nIHdpdGhvdXQgYXNzZXJ0aW5n
LiBOb3RlIGFsc28gdGhhdCBpdAorICAgICAgICBvbmx5IHdvcmtzIGZvciBvYmplY3RzIHdpdGgg
YW4gaW5pdGlhbCByZWZlcmVuY2UgY291bnQgb2YgMS4KKwogMjAxMC0wNi0zMCAgVmljdG9yIFdh
bmcgIDx2aWN0b3J3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBG
aXNoZXIuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAkocmV2aXNpb24gNjIxNDUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMs
MTcgKzIzLDI2IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+Ci0jZW5kaWYKKworLy8gUmVtb3ZlIHRoaXMgb25jZSB3ZSBtYWtlIGFsbCBXZWJLaXQgY29k
ZSBjb21wYXRpYmxlIHdpdGggc3RyaWN0ZXIgcnVsZXMgYWJvdXQgVHJlZVNoYXJlZC4KKyNkZWZp
bmUgTE9PU0VfVFJFRV9TSEFSRUQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTxj
bGFzcyBUPiBjbGFzcyBUcmVlU2hhcmVkIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyNpZm5kZWYg
TkRFQlVHCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVkOwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8VD4qKTsKKyNlbmRpZgorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVkIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
IHB1YmxpYzoKICAgICBUcmVlU2hhcmVkKGludCBpbml0aWFsUmVmQ291bnQgPSAxKQogICAgICAg
ICA6IG1fcmVmQ291bnQoaW5pdGlhbFJlZkNvdW50KQogICAgICAgICAsIG1fcGFyZW50KDApCisj
aWZuZGVmIE5ERUJVRworICAgICAgICAsIG1fYWRvcHRpb25Jc1JlcXVpcmVkKGluaXRpYWxSZWZD
b3VudCA9PSAxKQorI2VuZGlmCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogI2lmbmRlZiBOREVCVUcKQEAgLTQ2LDYgKzU1LDkgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQoIW1fcmVmQ291bnQpOwogICAgICAg
ICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKKyNpZm5kZWYgTE9PU0VfUkVGX0NPVU5URUQK
KyAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CisjZW5kaWYKICAgICB9CiAK
ICAgICB2b2lkIHJlZigpCkBAIC01Myw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwog
ICAgICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKKyNpZm5kZWYgTE9P
U0VfUkVGX0NPVU5URUQKKyAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7Cisj
ZW5kaWYKICAgICAgICAgKyttX3JlZkNvdW50OwogICAgIH0KIApAQCAtNjIsNiArNzcsOSBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3JlZkNvdW50ID49IDApOwogICAgICAgICBBU1NFUlQo
IW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVm
RnVuY3Rpb24pOworI2lmbmRlZiBMT09TRV9SRUZfQ09VTlRFRAorICAgICAgICBBU1NFUlQoIW1f
YWRvcHRpb25Jc1JlcXVpcmVkKTsKKyNlbmRpZgogICAgICAgICBpZiAoLS1tX3JlZkNvdW50IDw9
IDAgJiYgIW1fcGFyZW50KSB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgbV9pblJlbW92
ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOwpAQCAtMTAwLDYgKzExOCwxMCBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKKyNpZm5kZWYgTkRFQlVHCisgICAgZnJpZW5kIHZvaWQgYWRvcHRl
ZDw+KFRyZWVTaGFyZWQ8VD4qKTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRM
YXN0UmVmKCkKICAgICB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMTEwLDggKzEzMiwyNCBAQCBwcml2
YXRlOgogCiAgICAgaW50IG1fcmVmQ291bnQ7CiAgICAgVCogbV9wYXJlbnQ7CisjaWZuZGVmIE5E
RUJVRworICAgIGJvb2wgbV9hZG9wdGlvbklzUmVxdWlyZWQ7CisjZW5kaWYKIH07CiAKKyNpZm5k
ZWYgTkRFQlVHCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFkb3B0ZWQoVHJl
ZVNoYXJlZDxUPiogb2JqZWN0KQoreworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm47
CisgICAgQVNTRVJUKCFvYmplY3QtPm1fZGVsZXRpb25IYXNCZWd1bik7CisgICAgQVNTRVJUKCFv
YmplY3QtPm1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKKyAgICBvYmplY3QtPm1fYWRvcHRp
b25Jc1JlcXVpcmVkID0gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9CiAKICNlbmRpZiAvLyBUcmVl
U2hhcmVkLmgK
</data>
<flag name="review"
          id="47462"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>