<?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>21213</bug_id>
          
          <creation_ts>2008-09-29 07:53:09 -0700</creation_ts>
          <short_desc>MessagePort crash when GC collects an object with a pending close event</short_desc>
          <delta_ts>2008-09-30 08:52:51 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93227</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-09-29 07:53:09 -0700</bug_when>
    <thetext>CloseMessagePortTimer retains MessagePort, but not its wrapper. As a result, event listeners can be garbage collected, and the close event will be dispatched using a stale listener object pointer.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93228</commentid>
    <comment_count>1</comment_count>
      <attachid>23908</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-09-29 08:29:09 -0700</bug_when>
    <thetext>Created attachment 23908
proposed fix

It seems really ugly to control JS garbage collection from DOM code (if anything, this will fail when we enable non-JS bindings for MessageChannel/MessagePort), but looks like we don&apos;t have another mechanism.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93229</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-29 09:01:01 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; It seems really ugly to control JS garbage collection from DOM code (if
&gt; anything, this will fail when we enable non-JS bindings for
&gt; MessageChannel/MessagePort), but looks like we don&apos;t have another mechanism.

I think we need to come up with a general way to tell the bindings that an object is &quot;active&quot; and therefore should not be subject to garbage collection until it becomes inactive. On the other hand, that doesn&apos;t seem much different from an explicit call to gcProtect, except for being a bit more language-independent. It would be a bit more elegant to make a call to the bindings machinery on the DOM object and let the helper function do the &quot;map to a wrapper and a gcProtect&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93342</commentid>
    <comment_count>3</comment_count>
      <attachid>23908</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-09-30 01:32:11 -0700</bug_when>
    <thetext>Comment on attachment 23908
proposed fix

Clearing review flag, going to investigate a better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93355</commentid>
    <comment_count>4</comment_count>
      <attachid>23937</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-09-30 04:31:54 -0700</bug_when>
    <thetext>Created attachment 23937
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93362</commentid>
    <comment_count>5</comment_count>
      <attachid>23937</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-30 07:28:30 -0700</bug_when>
    <thetext>Comment on attachment 23937
updated patch

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93377</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-09-30 08:52:51 -0700</bug_when>
    <thetext>Committed revision 37094.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23908</attachid>
            <date>2008-09-29 08:29:09 -0700</date>
            <delta_ts>2008-09-30 04:31:54 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>21213r1_patch.txt</filename>
            <type>text/plain</type>
            <size>9948</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzA2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDgtMDktMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxMworICAgICAgICBN
ZXNzYWdlUG9ydCBjcmFzaCB3aGVuIEdDIGNvbGxlY3RzIGFuIG9iamVjdCB3aXRoIGEgcGVuZGlu
ZyBjbG9zZSBldmVudAorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5l
bC1nYy0yLmh0bWwKKyAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxp
c3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCisKKyAgICAgICAgKiBkb20vTWVzc2FnZVBv
cnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvc2VNZXNzYWdlUG9ydFRpbWVyOjpmaXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6cXVldWVDbG9zZUV2ZW50KToKKyAgICAg
ICAgR0MgcHJvdGVjdCBNZXNzYWdlUG9ydCB3cmFwcGVyIHdoaWxlIHRoZXJlIGlzIGEgcGVuZGlu
ZyBjbG9zZSBldmVudC4KKyAgICAgICAgVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IGZvciBtZXNzYWdl
IGV2ZW50cywgdG9vLCBidXQgdGhhdCBjYXNlIGlzIG5vdCBhIGNyYXNoZXIsIGFuZCBhY3R1YWxs
eQorICAgICAgICBiZWhhdmVzIHRvIHRoZSBsZXR0ZXIgb2YgdGhlIGN1cnJlbnQgSFRNTDUgdGV4
dCwgc28gSSdsbCBjb25zaWRlciBpdCBsYXRlci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0OjpyZW1v
dmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnNldE9u
bWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0OjpzZXRPbmNsb3NlKToK
KyAgICAgICAgRG9uJ3QgdGVsbCBET01XaW5kb3dCYXNlIHRoYXQgTWVzc2FnZVBvcnQgaXMgYSBO
b2RlRXZlbnRUYXJnZXQsIHRoaXMgaXMgbm90IHRydWUuIEkgZG8gbm90CisgICAgICAgIGtub3cg
aWYgdGhpcyB3YXMgY2F1c2luZyBhbnkgcmVhbCBpc3N1ZXMsIGJ1dCB3ZSBzaG91bGRuJ3QgbGll
IHRvIERPTVdpbmRvd0Jhc2UuCisKIDIwMDgtMDktMjkgIFRoaWFnbyBNYWNpZWlyYSAgPHRoaWFn
by5tYWNpZWlyYUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHJldmlzaW9u
IDM2OTQ2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBKU1ZhbHVlKiBKU01lc3NhZ2VQb3J0Ojph
ZGRFdmVudExpc3RlbmVyCiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3co
ZG9jdW1lbnQtPmZyYW1lKCkpOwogICAgIGlmICghd2luZG93KQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLSAgICBSZWZQdHI8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyID0gd2luZG93LT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVj
LCBhcmdzLmF0KGV4ZWMsIDEpLCB0cnVlKTsKKyAgICBSZWZQdHI8SlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyID0gd2luZG93LT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcihleGVjLCBhcmdzLmF0KGV4ZWMsIDEpKTsKICAgICBpZiAoIWxpc3RlbmVyKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVu
ZXIoYXJncy5hdChleGVjLCAwKS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLnJlbGVhc2UoKSwg
YXJncy5hdChleGVjLCAyKS0+dG9Cb29sZWFuKGV4ZWMpKTsKQEAgLTY5LDcgKzY5LDcgQEAgSlNW
YWx1ZSogSlNNZXNzYWdlUG9ydDo6cmVtb3ZlRXZlbnRMaXN0ZQogICAgIEpTRE9NV2luZG93KiB3
aW5kb3cgPSB0b0pTRE9NV2luZG93KGRvY3VtZW50LT5mcmFtZSgpKTsKICAgICBpZiAoIXdpbmRv
dykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgSlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIqIGxpc3RlbmVyID0gd2luZG93LT5maW5kSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVu
ZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSwgdHJ1ZSk7CisgICAgSlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIqIGxpc3RlbmVyID0gd2luZG93LT5maW5kSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVu
ZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSk7CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFy
Z3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lciwgYXJncy5hdChleGVjLCAy
KS0+dG9Cb29sZWFuKGV4ZWMpKTsKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBKU01lc3NhZ2VQb3J0
OjpzZXRPbm1lc3NhZ2UoRXhlY1N0YQogICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9N
V2luZG93KGRvY3VtZW50LT5mcmFtZSgpKTsKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAgcmV0
dXJuOwotICAgIGltcGwoKS0+c2V0T25NZXNzYWdlTGlzdGVuZXIod2luZG93LT5maW5kT3JDcmVh
dGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdHJ1ZSkpOworICAgIGlt
cGwoKS0+c2V0T25NZXNzYWdlTGlzdGVuZXIod2luZG93LT5maW5kT3JDcmVhdGVKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSkpOwogfQogCiBKU1ZhbHVlKiBKU01lc3NhZ2VQ
b3J0Ojpvbm1lc3NhZ2UoRXhlY1N0YXRlKikgY29uc3QKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lk
IEpTTWVzc2FnZVBvcnQ6OnNldE9uY2xvc2UoRXhlY1N0YXRlCiAgICAgSlNET01XaW5kb3cqIHdp
bmRvdyA9IHRvSlNET01XaW5kb3coZG9jdW1lbnQtPmZyYW1lKCkpOwogICAgIGlmICghd2luZG93
KQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRPbkNsb3NlTGlzdGVuZXIod2luZG93
LT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdHJ1
ZSkpOworICAgIGltcGwoKS0+c2V0T25DbG9zZUxpc3RlbmVyKHdpbmRvdy0+ZmluZE9yQ3JlYXRl
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUpKTsKIH0KIAogSlNWYWx1ZSog
SlNNZXNzYWdlUG9ydDo6b25jbG9zZShFeGVjU3RhdGUqKSBjb25zdApJbmRleDogV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmNwcAkocmV2aXNpb24gMzY5NDYpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPGtqcy9w
cm90ZWN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsNiArNTgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgbV9wb3J0LT5kaXNwYXRjaE1lc3NhZ2VzKCk7CiAKICAgICAgICAg
bV9wb3J0LT5kaXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICAgICAgSlNDOjpnY1VucHJvdGVjdE51
bGxUb2xlcmFudChnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKG1fcG9ydC5nZXQoKSkpOwogICAg
ICAgICBkZWxldGUgdGhpczsKICAgICB9CiAKQEAgLTIwOSw2ICsyMTIsOSBAQCB2b2lkIE1lc3Nh
Z2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKIAogdm9pZCBNZXNzYWdlUG9ydDo6cXVldWVDbG9z
ZUV2ZW50KCkKIHsKKyAgICAvLyBOZWVkIHRvIGtlZXAgbGlzdGVuZXJzIGFsaXZlLCBhbmQgdGhl
eSBhcmUgbWFya2VkIGJ5IHRoZSB3cmFwcGVyLgorICAgIEpTQzo6Z2NQcm90ZWN0TnVsbFRvbGVy
YW50KGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIodGhpcykpOworCiAgICAgQ2xvc2VNZXNzYWdl
UG9ydFRpbWVyKiB0aW1lciA9IG5ldyBDbG9zZU1lc3NhZ2VQb3J0VGltZXIodGhpcyk7CiAgICAg
dGltZXItPnN0YXJ0T25lU2hvdCgwKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3MDYxKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MDgtMDktMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxMworICAgICAgICBNZXNzYWdlUG9ydCBjcmFzaCB3
aGVuIEdDIGNvbGxlY3RzIGFuIG9iamVjdCB3aXRoIGEgcGVuZGluZyBjbG9zZSBldmVudAorCisg
ICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sOiBB
ZGRlZC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1j
aXJjdWxhci1vd25lcnNoaXAtZXhwZWN0ZWQudHh0OiBBZGRlZAorICAgICAgICAqIGZhc3QvZXZl
bnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbDogQWRk
ZWQKKyAgICAgICAgRGVtb25zdHJhdGUgd2h5IHR1cm5pbmcgdGhlIGxpc3RlbmVycyBpbnRvIEpT
RXZlbnRMaXN0ZW5lcnMgd291bGRuJ3QgYmUgcmlnaHQuCisKIDIwMDgtMDktMjYgIEp1bGllbiBD
aGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5u
ZWwtZ2MtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1jaGFubmVsLWdjLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1Rlc3QgdGhhdCBNZXNzYWdlUG9ydCBjbG9zZSBl
dmVudCBnZXRzIGRlbGl2ZXJlZCAod2l0aG91dCBjcmFzaGluZykgZXZlbiBpZiB0aGUgY2hhbm5l
bCBvYmplY3QgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuCisKK29uY2xvc2UKK2Nsb3NlIGxpc3RlbmVy
CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2Ut
Y2hhbm5lbC1nYy0yLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUK
ICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0yLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwt
Z2MtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACis8Ym9keT4KKzxwPlRlc3Qg
dGhhdCBNZXNzYWdlUG9ydCBjbG9zZSBldmVudCBnZXRzIGRlbGl2ZXJlZCAod2l0aG91dCBjcmFz
aGluZykgZXZlbiBpZiB0aGUgY2hhbm5lbCBvYmplY3QgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuPC9w
PgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQoreworICAgIGlm
ICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxl
Y3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNl
IGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVm
b3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworCitjaGFubmVsLnBvcnQxLm9uY2xv
c2UgPSBmdW5jdGlvbigpIHsgbG9nKCJvbmNsb3NlIik7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsgZ2MoKTsgfSwgMCkgfQorY2hhbm5lbC5wb3J0MS5hZGRFdmVudExpc3RlbmVy
KCJjbG9zZSIsIGZ1bmN0aW9uKCkgeyBsb2coImNsb3NlIGxpc3RlbmVyIik7IGdjKCk7IH0sIGZh
bHNlKTsKKworZ2MoKTsKK2NoYW5uZWwucG9ydDEuc3RhcnQoKTsKK2NoYW5uZWwucG9ydDIucG9z
dE1lc3NhZ2UoIm1zZyIpOworCitnYygpOworY2hhbm5lbC5wb3J0MS5jbG9zZSgpOworY2hhbm5l
bC5wb3J0Mi5jbG9zZSgpOworZ2MoKTsKK2NoYW5uZWwucG9ydDEub25jbG9zZS5mb28gPSBjaGFu
bmVsOworY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK2djKCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtY2hhbm5lbC1nYy0yLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsg
dGV4dC9odG1sCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVs
LWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1bGFy
LW93bmVyc2hpcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtbGlzdGVuZXItY2lyY3VsYXItb3duZXJzaGlwLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitUZXN0IHRoYXQgYSBsZWFrIGlz
IG5vdCBjcmVhdGVkIGJ5IGFzc2lnbmluZyBhIE1lc3NhZ2VQb3J0IHRvIGEgcHJvcGVydHkgb2Yg
aXRzIG93biBsaXN0ZW5lci4KKworT25seSB3b3JrcyB3aXRoIHJ1bi13ZWJraXQtdGVzdHMgLS1s
ZWFrcy4KKworCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZXNzYWdlLWNoYW5uZWwtbGlzdGVuZXItY2lyY3VsYXItb3duZXJzaGlwLWV4cGVjdGVkLnR4dApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2bjpl
b2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLWNoYW5uZWwtbGlzdGVuZXItY2lyY3VsYXItb3duZXJzaGlwLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1
bGFyLW93bmVyc2hpcC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8Ym9keT4KKzxwPlRlc3QgdGhhdCBhIGxlYWsgaXMg
bm90IGNyZWF0ZWQgYnkgYXNzaWduaW5nIGEgTWVzc2FnZVBvcnQgdG8gYSBwcm9wZXJ0eSBvZiBp
dHMgb3duIGxpc3RlbmVyLjwvcD4KKzxwPk9ubHkgd29ya3Mgd2l0aCBydW4td2Via2l0LXRlc3Rz
IC0tbGVha3MuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2Mo
KQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250
cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykg
eyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxs
b2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJh
YmMiKTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbDsKKworY2hhbm5lbC5wb3J0MS5vbmNsb3NlID0gZnVuY3Rpb24oKSB7fQor
CitjaGFubmVsLnBvcnQxLm9uY2xvc2UuZm9vID0gY2hhbm5lbDsKK2NoYW5uZWwucG9ydDEub25j
bG9zZS5iYXIgPSBjaGFubmVsLnBvcnQxOworY2hhbm5lbC5wb3J0MS5vbmNsb3NlLmJheiA9IGNo
YW5uZWwucG9ydDI7CisKK2NoYW5uZWwgPSBudWxsOworZ2MoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1j
aGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23937</attachid>
            <date>2008-09-30 04:31:54 -0700</date>
            <delta_ts>2008-09-30 07:28:30 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>21213r2_patch.txt</filename>
            <type>text/plain</type>
            <size>21766</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzA5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMDgtMDktMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxMworICAgICAgICBN
ZXNzYWdlUG9ydCBjcmFzaCB3aGVuIEdDIGNvbGxlY3RzIGFuIG9iamVjdCB3aXRoIGEgcGVuZGlu
ZyBjbG9zZSBldmVudAorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5l
bC1nYy0yLmh0bWwKKyAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxp
c3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9ET01Q
cm90ZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnY1Byb3RlY3RET01PYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Z2NVbnByb3RlY3RET01PYmplY3QpOgorICAgICAgICAqIGJp
bmRpbmdzL0RPTVByb3RlY3QuaDogQWRkZWQuCisgICAgICAgIEFkZGVkIGFuIGFic3RyYWN0aW9u
IGZvciBHQyBwcm90ZWN0aW9uIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNhbGwgSlMgYmluZGluZ3Mg
Y29kZSBmcm9tCisgICAgICAgIERPTSBvYmplY3RzIGRpcmVjdGx5LgorCisgICAgICAgICogZG9t
L01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb3NlTWVzc2FnZVBvcnRUaW1l
cjo6ZmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnF1ZXVlQ2xvc2VFdmVu
dCk6CisgICAgICAgIEdDIHByb3RlY3QgTWVzc2FnZVBvcnQgd3JhcHBlciB3aGlsZSB0aGVyZSBp
cyBhIHBlbmRpbmcgY2xvc2UgZXZlbnQuCisgICAgICAgIFRoaXMgbWF5IGJlIG5lY2Vzc2FyeSBm
b3IgbWVzc2FnZSBldmVudHMsIHRvbywgYnV0IHRoYXQgY2FzZSBpcyBub3QgYSBjcmFzaGVyLCBh
bmQgYWN0dWFsbHkKKyAgICAgICAgYmVoYXZlcyB0byB0aGUgbGV0dGVyIG9mIHRoZSBjdXJyZW50
IEhUTUw1IHRleHQsIHNvIEknbGwgY29uc2lkZXIgaXQgbGF0ZXIuCisKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6Omxv
YWRSZXF1ZXN0QXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OmRyb3BQcm90ZWN0aW9uKToKKyAgICAgICAgVXNlIGdjUHJvdGVjdERPTU9iamVjdCBoZXJl
LCB0b28uIFVuZm9ydHVuYXRlbHksIFhNTEh0dHBSZXF1ZXN0IGhhcyBtb3JlIGRlcGVuZGVuY2ll
cyBvbiBKU0MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0OjpzZXRPbm1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6c2V0T25jbG9zZSk6CisgICAgICAgIERvbid0IHRlbGwg
RE9NV2luZG93QmFzZSB0aGF0IE1lc3NhZ2VQb3J0IGlzIGEgTm9kZUV2ZW50VGFyZ2V0LCB0aGlz
IGlzIG5vdCB0cnVlLiBJIGRvIG5vdAorICAgICAgICBrbm93IGlmIHRoaXMgd2FzIGNhdXNpbmcg
YW55IHJlYWwgaXNzdWVzLCBidXQgd2Ugc2hvdWxkbid0IGxpZSB0byBET01XaW5kb3dCYXNlLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjptYXJrKToKKyAgICAg
ICAgV2hpbGUgYXQgaXQsIGNoYW5nZWQgdG8gdXNlIGEgdHlwZWRlZiBmb3IgZXZlbnQgbGlzdGVu
ZXJzIGZyb20gWE1MSHR0cFJlcXVlc3RVcGxvYWQsIG5vdAorICAgICAgICBmcm9tIFhNTEh0dHBS
ZXF1ZXN0LgorCiAyMDA4LTA5LTI5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzcwOTApCisrKyBXZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE1MSw2ICs0
MTUxLDggQEAKIAkJRTFBREVEREIwRTc2QkQ5MzAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBREVERDkw
RTc2QkQ5MzAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnQuY3BwICovOyB9OwogCQlFMUJFNTEyRDBD
RjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQkU1MTJCMENGNkM1MTIwMDJFQTk1OSAvKiBY
U0xUVW5pY29kZVNvcnQuY3BwICovOyB9OwogCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyog
WFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUJFNTEyQzBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggKi87
IH07CisJCUUxQ0E4NDkyMEU5MjNCRTkwMDExNDI1MSAvKiBET01Qcm90ZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNBODQ5MTBFOTIzQkU5MDAx
MTQyNTEgLyogRE9NUHJvdGVjdC5oICovOyB9OworCQlFMUNBODQ5NDBFOTIzQkVGMDAxMTQyNTEg
LyogRE9NUHJvdGVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUNBODQ5MzBFOTIzQkVGMDAxMTQyNTEgLyogRE9NUHJvdGVjdC5jcHAgKi87IH07
CiAJCUUxRTZFRUE0MEI2MjhEQTgwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTZFRUEzMEI2
MjhEQTgwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmNwcCAqLzsgfTsKIAkJRTFFNkVF
QTgwQjYyOERCMzAwNUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTZFRUE3MEI2MjhEQjMwMDVGMkY3
MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmggKi87IH07CiAJCUUxRUJCQkQ0MEFBQzlCODcwMDFG
RThFMiAvKiBDU1NDaGFyc2V0UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUVCQkJEMzBBQUM5Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1
bGUuY3BwICovOyB9OwpAQCAtODcxMyw2ICs4NzE1LDggQEAKIAkJRTFBREVERDkwRTc2QkQ5MzAw
NEExQTVFIC8qIEpTTWVzc2FnZVBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZXNzYWdlUG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQkU1MTJCMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFNMVFVuaWNvZGVTb3J0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFCRTUxMkMwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU0xUVW5pY29k
ZVNvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFDQTg0OTEwRTkyM0JFOTAw
MTE0MjUxIC8qIERPTVByb3RlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NUHJvdGVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUNBODQ5MzBFOTIz
QkVGMDAxMTQyNTEgLyogRE9NUHJvdGVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBET01Qcm90ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFFNkVFQTMwQjYyOERBODAwNUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MU2VsZWN0RWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRTZFRUE3MEI2MjhEQjMwMDVGMkY3MCAv
KiBKU0hUTUxTZWxlY3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gSlNIVE1MU2VsZWN0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUVCQkJEMzBBQUM5Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ2hhcnNldFJ1bGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTI2ODEsNiArMTI2ODUsOCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5M0Y4QjMwNTBBMzAwRkUxMDBGNjFBQjggLyogQ29k
ZUdlbmVyYXRvci5wbSAqLywKKwkJCQlFMUNBODQ5MzBFOTIzQkVGMDAxMTQyNTEgLyogRE9NUHJv
dGVjdC5jcHAgKi8sCisJCQkJRTFDQTg0OTEwRTkyM0JFOTAwMTE0MjUxIC8qIERPTVByb3RlY3Qu
aCAqLywKIAkJCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGluZ3Mu
cGwgKi8sCiAJCQkJMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLywK
IAkJCQk5M0Y4QjMwODBBMzAwRkVBMDBGNjFBQjggLyogSURMU3RydWN0dXJlLnBtICovLApAQCAt
MTU5NTUsNiArMTU5NjEsNyBAQAogCQkJCUJDM0I3QUY0MEU5MTlDQTkwMEQ1NDA2NSAvKiBKU0V2
ZW50VGFyZ2V0Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MDkwMUYwRTkxQjhFQzAwMEM2
OEI1IC8qIEpTRXZlbnRUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JDMjlDMEU5MUFC
MEYwMDgzNTU4OCAvKiBIb3N0V2luZG93LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMUNBODQ5MjBF
OTIzQkU5MDAxMTQyNTEgLyogRE9NUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzgwNSw2
ICsxNzgxMiw3IEBACiAJCQkJQkMzQjdBRjMwRTkxOUNBOTAwRDU0MDY1IC8qIEpTRXZlbnRUYXJn
ZXROb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDM0I3QjIxMEU5MUFBRjQwMEQ1NDA2NSAv
KiBKU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYwOTAy
MDBFOTFCOEVDMDAwQzY4QjUgLyogSlNFdmVudFRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlFMUNBODQ5NDBFOTIzQkVGMDAxMTQyNTEgLyogRE9NUHJvdGVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvRE9NUHJvdGVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9ET01Qcm90ZWN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
YmluZGluZ3MvRE9NUHJvdGVjdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVByb3RlY3QuaCIK
KworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBnY1Byb3RlY3RET01PYmplY3Qodm9pZCogb2Jq
ZWN0SGFuZGxlKQoreworICAgIEpTQzo6Z2NQcm90ZWN0TnVsbFRvbGVyYW50KGdldENhY2hlZERP
TU9iamVjdFdyYXBwZXIob2JqZWN0SGFuZGxlKSk7Cit9CisKK3ZvaWQgZ2NVbnByb3RlY3RET01P
YmplY3Qodm9pZCogb2JqZWN0SGFuZGxlKQoreworICAgIEpTQzo6Z2NVbnByb3RlY3ROdWxsVG9s
ZXJhbnQoZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihvYmplY3RIYW5kbGUpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5kaW5n
cy9ET01Qcm90ZWN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRp
dmUKCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL0RPTVByb3RlY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL0RPTVByb3RlY3QuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvRE9NUHJvdGVjdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgor
ICovCisKKyNpZm5kZWYgRE9NUHJvdGVjdF9oCisjZGVmaW5lIERPTVByb3RlY3RfaAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICB2b2lkIGdjUHJvdGVjdERPTU9iamVjdCh2b2lkKik7Cisg
ICAgdm9pZCBnY1VucHJvdGVjdERPTU9iamVjdCh2b2lkKik7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIERPTVByb3RlY3RfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2Vi
Q29yZS9iaW5kaW5ncy9ET01Qcm90ZWN0LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxl
CiAgICsgbmF0aXZlCgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCShyZXZpc2lvbiAzNzA5MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNz
YWdlUG9ydEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1
ZSogSlNNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcgogICAgIEpTRE9NV2luZG93KiB3aW5k
b3cgPSB0b0pTRE9NV2luZG93KGRvY3VtZW50LT5mcmFtZSgpKTsKICAgICBpZiAoIXdpbmRvdykK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgUmVmUHRyPEpTVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHdpbmRvdy0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSwgdHJ1ZSk7CisgICAgUmVmUHRy
PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHdpbmRvdy0+ZmluZE9yQ3Jl
YXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSk7CiAg
ICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaW1w
bCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4ZWMpLCBs
aXN0ZW5lci5yZWxlYXNlKCksIGFyZ3MuYXQoZXhlYywgMiktPnRvQm9vbGVhbihleGVjKSk7CkBA
IC02OSw3ICs2OSw3IEBAIEpTVmFsdWUqIEpTTWVzc2FnZVBvcnQ6OnJlbW92ZUV2ZW50TGlzdGUK
ICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhkb2N1bWVudC0+ZnJhbWUo
KSk7CiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAg
IEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHdpbmRvdy0+ZmluZEpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMSksIHRydWUpOworICAg
IEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHdpbmRvdy0+ZmluZEpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMSkpOwogICAgIGlmICgh
bGlzdGVuZXIpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGltcGwoKS0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKSwgbGlzdGVu
ZXIsIGFyZ3MuYXQoZXhlYywgMiktPnRvQm9vbGVhbihleGVjKSk7CkBAIC05NCw3ICs5NCw3IEBA
IHZvaWQgSlNNZXNzYWdlUG9ydDo6c2V0T25tZXNzYWdlKEV4ZWNTdGEKICAgICBKU0RPTVdpbmRv
dyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhkb2N1bWVudC0+ZnJhbWUoKSk7CiAgICAgaWYgKCF3
aW5kb3cpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9uTWVzc2FnZUxpc3RlbmVy
KHdpbmRvdy0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFs
dWUsIHRydWUpKTsKKyAgICBpbXBsKCktPnNldE9uTWVzc2FnZUxpc3RlbmVyKHdpbmRvdy0+Zmlu
ZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUpKTsKIH0KIAog
SlNWYWx1ZSogSlNNZXNzYWdlUG9ydDo6b25tZXNzYWdlKEV4ZWNTdGF0ZSopIGNvbnN0CkBAIC0x
MTMsNyArMTEzLDcgQEAgdm9pZCBKU01lc3NhZ2VQb3J0OjpzZXRPbmNsb3NlKEV4ZWNTdGF0ZQog
ICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KGRvY3VtZW50LT5mcmFtZSgp
KTsKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0T25D
bG9zZUxpc3RlbmVyKHdpbmRvdy0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVu
ZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKKyAgICBpbXBsKCktPnNldE9uQ2xvc2VMaXN0ZW5lcih3
aW5kb3ctPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVl
KSk7CiB9CiAKIEpTVmFsdWUqIEpTTWVzc2FnZVBvcnQ6Om9uY2xvc2UoRXhlY1N0YXRlKikgY29u
c3QKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
VXBsb2FkQ3VzdG9tLmNwcAkocmV2aXNpb24gMzcwOTApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4
ICs2Niw4IEBAIHZvaWQgSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6bWFyaygpCiAgICAgaWYgKEpT
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBvblByb2dyZXNzTGlzdGVuZXIgPSBzdGF0aWNfY2Fz
dDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25Qcm9ncmVzc0xpc3RlbmVy
KCkpKQogICAgICAgICBvblByb2dyZXNzTGlzdGVuZXItPm1hcmsoKTsKICAgICAKLSAgICB0eXBl
ZGVmIFhNTEh0dHBSZXF1ZXN0OjpFdmVudExpc3RlbmVyc01hcCBFdmVudExpc3RlbmVyc01hcDsK
LSAgICB0eXBlZGVmIFhNTEh0dHBSZXF1ZXN0OjpMaXN0ZW5lclZlY3RvciBMaXN0ZW5lclZlY3Rv
cjsKKyAgICB0eXBlZGVmIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpFdmVudExpc3RlbmVyc01hcCBF
dmVudExpc3RlbmVyc01hcDsKKyAgICB0eXBlZGVmIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpMaXN0
ZW5lclZlY3RvciBMaXN0ZW5lclZlY3RvcjsKICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRM
aXN0ZW5lcnMgPSBtX2ltcGwtPmV2ZW50TGlzdGVuZXJzKCk7CiAgICAgZm9yIChFdmVudExpc3Rl
bmVyc01hcDo6aXRlcmF0b3IgbWFwSXRlciA9IGV2ZW50TGlzdGVuZXJzLmJlZ2luKCk7IG1hcEl0
ZXIgIT0gZXZlbnRMaXN0ZW5lcnMuZW5kKCk7ICsrbWFwSXRlcikgewogICAgICAgICBmb3IgKExp
c3RlbmVyVmVjdG9yOjppdGVyYXRvciB2ZWNJdGVyID0gbWFwSXRlci0+c2Vjb25kLmJlZ2luKCk7
IHZlY0l0ZXIgIT0gbWFwSXRlci0+c2Vjb25kLmVuZCgpOyArK3ZlY0l0ZXIpIHsKSW5kZXg6IFdl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5jcHAJKHJldmlzaW9uIDM3MDkwKQorKysgV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw5IEBACiAjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgotI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiRE9NUHJvdGVjdC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCkBAIC01Niw2ICs1Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBtX3BvcnQtPmRpc3BhdGNoTWVzc2FnZXMoKTsKIAogICAg
ICAgICBtX3BvcnQtPmRpc3BhdGNoQ2xvc2VFdmVudCgpOworICAgICAgICBnY1VucHJvdGVjdERP
TU9iamVjdChtX3BvcnQuZ2V0KCkpOwogICAgICAgICBkZWxldGUgdGhpczsKICAgICB9CiAKQEAg
LTIwOSw2ICsyMTEsOSBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKIAog
dm9pZCBNZXNzYWdlUG9ydDo6cXVldWVDbG9zZUV2ZW50KCkKIHsKKyAgICAvLyBOZWVkIHRvIGtl
ZXAgbGlzdGVuZXJzIGFsaXZlLCBhbmQgdGhleSBhcmUgbWFya2VkIGJ5IHRoZSB3cmFwcGVyLgor
ICAgIGdjUHJvdGVjdERPTU9iamVjdCh0aGlzKTsKKwogICAgIENsb3NlTWVzc2FnZVBvcnRUaW1l
ciogdGltZXIgPSBuZXcgQ2xvc2VNZXNzYWdlUG9ydFRpbWVyKHRoaXMpOwogICAgIHRpbWVyLT5z
dGFydE9uZVNob3QoMCk7CiB9CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiAz
NzA5MCkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJDb25zb2xl
LmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJET01Qcm90ZWN0
LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJFdmVudEV4Y2VwdGlvbi5oIgpAQCAtNDcsNyArNDgsNiBAQAogI2luY2x1ZGUgIlhNTEh0dHBS
ZXF1ZXN0VXBsb2FkLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8a2pzL0pTTG9j
ay5oPgotI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNzY1LDggKzc2NSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmxvYWRSZXF1ZXN0QXN5bmNo
cm8KICAgICAgICAgLy8gYSByZXF1ZXN0IGlzIGluIHByb2dyZXNzIGJlY2F1c2Ugd2UgbmVlZCB0
byBrZWVwIHRoZSBsaXN0ZW5lcnMgYWxpdmUsCiAgICAgICAgIC8vIGFuZCB0aGV5IGFyZSByZWZl
cmVuY2VkIGJ5IHRoZSBKYXZhU2NyaXB0IHdyYXBwZXIuCiAgICAgICAgIHJlZigpOwotCi0gICAg
ICAgIEpTQzo6Z2NQcm90ZWN0TnVsbFRvbGVyYW50KGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIo
dGhpcykpOworICAgICAgICBnY1Byb3RlY3RET01PYmplY3QodGhpcyk7CiAgICAgfQogfQogCkBA
IC04NzQsMTEgKzg3MywxMCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpkcm9wUHJvdGVjdGlvbigp
ICAgCiAgICAgLy8gcmVwb3J0IHRoZSBleHRyYSBjb3N0IGF0IHRoYXQgcG9pbnQuCiAKICAgICBK
U0M6OkpTVmFsdWUqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKHRoaXMpOwot
ICAgIGlmICh3cmFwcGVyKSB7Ci0gICAgICAgIEpTQzo6Z2NVbnByb3RlY3Qod3JhcHBlcik7Cisg
ICAgaWYgKHdyYXBwZXIpCiAgICAgICAgIEpTQzo6SGVhcDo6aGVhcCh3cmFwcGVyKS0+cmVwb3J0
RXh0cmFNZW1vcnlDb3N0KG1fcmVzcG9uc2VUZXh0LnNpemUoKSAqIDIpOwotICAgIH0KIAorICAg
IGdjVW5wcm90ZWN0RE9NT2JqZWN0KHRoaXMpOwogICAgIGRlcmVmKCk7CiB9CiAKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDM3MDkwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzEgQEAKKzIwMDgtMDktMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxMworICAgICAg
ICBNZXNzYWdlUG9ydCBjcmFzaCB3aGVuIEdDIGNvbGxlY3RzIGFuIG9iamVjdCB3aXRoIGEgcGVu
ZGluZyBjbG9zZSBldmVudAorCisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVs
LWdjLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdl
LWNoYW5uZWwtZ2MtMi5odG1sOiBBZGRlZC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3Nh
Z2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAtZXhwZWN0ZWQudHh0OiBBZGRl
ZAorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxh
ci1vd25lcnNoaXAuaHRtbDogQWRkZWQKKyAgICAgICAgRGVtb25zdHJhdGUgd2h5IHR1cm5pbmcg
dGhlIGxpc3RlbmVycyBpbnRvIEpTRXZlbnRMaXN0ZW5lcnMgd291bGRuJ3QgYmUgcmlnaHQuCisK
KzIwMDgtMDktMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxMworICAgICAgICBNZXNzYWdlUG9ydCBjcmFz
aCB3aGVuIEdDIGNvbGxlY3RzIGFuIG9iamVjdCB3aXRoIGEgcGVuZGluZyBjbG9zZSBldmVudAor
CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1s
OiBBZGRlZC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5l
ci1jaXJjdWxhci1vd25lcnNoaXAtZXhwZWN0ZWQudHh0OiBBZGRlZAorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbDog
QWRkZWQKKyAgICAgICAgRGVtb25zdHJhdGUgd2h5IHR1cm5pbmcgdGhlIGxpc3RlbmVycyBpbnRv
IEpTRXZlbnRMaXN0ZW5lcnMgd291bGRuJ3QgYmUgcmlnaHQuCisKIDIwMDgtMDktMjkgIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDYW1l
cm9uIFp3YXJpY2guCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5u
ZWwtZ2MtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1jaGFubmVsLWdjLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1Rlc3QgdGhhdCBNZXNzYWdlUG9ydCBjbG9zZSBl
dmVudCBnZXRzIGRlbGl2ZXJlZCAod2l0aG91dCBjcmFzaGluZykgZXZlbiBpZiB0aGUgY2hhbm5l
bCBvYmplY3QgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuCisKK29uY2xvc2UKK2Nsb3NlIGxpc3RlbmVy
CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2Ut
Y2hhbm5lbC1nYy0yLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUK
ICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0yLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwt
Z2MtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACis8Ym9keT4KKzxwPlRlc3Qg
dGhhdCBNZXNzYWdlUG9ydCBjbG9zZSBldmVudCBnZXRzIGRlbGl2ZXJlZCAod2l0aG91dCBjcmFz
aGluZykgZXZlbiBpZiB0aGUgY2hhbm5lbCBvYmplY3QgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuPC9w
PgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQoreworICAgIGlm
ICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxl
Y3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNl
IGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVm
b3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworCitjaGFubmVsLnBvcnQxLm9uY2xv
c2UgPSBmdW5jdGlvbigpIHsgbG9nKCJvbmNsb3NlIik7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsgZ2MoKTsgfSwgMCkgfQorY2hhbm5lbC5wb3J0MS5hZGRFdmVudExpc3RlbmVy
KCJjbG9zZSIsIGZ1bmN0aW9uKCkgeyBsb2coImNsb3NlIGxpc3RlbmVyIik7IGdjKCk7IH0sIGZh
bHNlKTsKKworZ2MoKTsKK2NoYW5uZWwucG9ydDEuc3RhcnQoKTsKK2NoYW5uZWwucG9ydDIucG9z
dE1lc3NhZ2UoIm1zZyIpOworCitnYygpOworY2hhbm5lbC5wb3J0MS5jbG9zZSgpOworY2hhbm5l
bC5wb3J0Mi5jbG9zZSgpOworZ2MoKTsKK2NoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Citn
YygpOworPC9zY3JpcHQ+Cis8L2JvZHk+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5l
bC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1
bGFyLW93bmVyc2hpcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAor
VGVzdCB0aGF0IGEgbGVhayBpcyBub3QgY3JlYXRlZCBieSBhc3NpZ25pbmcgYSBNZXNzYWdlUG9y
dCB0byBhIHByb3BlcnR5IG9mIGl0cyBvd24gbGlzdGVuZXIuCisKK09ubHkgd29ya3Mgd2l0aCBy
dW4td2Via2l0LXRlc3RzIC0tbGVha3MuCisKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVy
c2hpcC1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4
dC9wbGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hp
cC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hh
bm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1v
d25lcnNoaXAuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPGJvZHk+Cis8cD5U
ZXN0IHRoYXQgYSBsZWFrIGlzIG5vdCBjcmVhdGVkIGJ5IGFzc2lnbmluZyBhIE1lc3NhZ2VQb3J0
IHRvIGEgcHJvcGVydHkgb2YgaXRzIG93biBsaXN0ZW5lci48L3A+Cis8cD5Pbmx5IHdvcmtzIHdp
dGggcnVuLXdlYmtpdC10ZXN0cyAtLWxlYWtzLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJl
cXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZh
ciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
dmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisKK2NoYW5uZWwucG9ydDEub25jbG9z
ZSA9IGZ1bmN0aW9uKCkge30KKworY2hhbm5lbC5wb3J0MS5vbmNsb3NlLmZvbyA9IGNoYW5uZWw7
CitjaGFubmVsLnBvcnQxLm9uY2xvc2UuYmFyID0gY2hhbm5lbC5wb3J0MTsKK2NoYW5uZWwucG9y
dDEub25jbG9zZS5iYXogPSBjaGFubmVsLnBvcnQyOworCitjaGFubmVsID0gbnVsbDsKK2djKCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRt
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCg==
</data>
<flag name="review"
          id="10801"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>