<?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>16424</bug_id>
          
          <creation_ts>2007-12-13 11:18:49 -0800</creation_ts>
          <short_desc>Enable auto-scroll in page by mouse middle click</short_desc>
          <delta_ts>2008-07-10 09:17:58 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>19971</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Louise">louise6380</reporter>
          <assigned_to name="Maxime Britto">maxime.britto</assigned_to>
          <cc>aroben</cc>
    
    <cc>maxime.britto</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>64095</commentid>
    <comment_count>0</comment_count>
    <who name="Louise">louise6380</who>
    <bug_when>2007-12-13 11:18:49 -0800</bug_when>
    <thetext>Is there a reason for not having this feature?
Since Firefox and Opera supports it, seems reasonablt for webkit to have it too.

I couldn&apos;t find any bug concerning this problem so I&apos;m going to file one myself.
Please tell me if this is not an appropriate place to talk about this.
thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64096</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-12-13 11:23:42 -0800</bug_when>
    <thetext>&lt;rdar://5603777&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71080</commentid>
    <comment_count>2</comment_count>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-02-18 14:01:19 -0800</bug_when>
    <thetext>There is no reason to keeping enhancement requests in an unconfirmed state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83912</commentid>
    <comment_count>3</comment_count>
      <attachid>21848</attachid>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-06-19 13:16:08 -0700</bug_when>
    <thetext>Created attachment 21848
Add the feature without the icon yet

This patch adds the requested feature. I also need to work on the icon which should be displayed at the original middle click location (and stay still while scrolling) and will be issued in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83916</commentid>
    <comment_count>4</comment_count>
      <attachid>21848</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-06-19 14:00:42 -0700</bug_when>
    <thetext>Comment on attachment 21848
Add the feature without the icon yet

This patch contains tabs.  Can you re-attach a tab-free version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83919</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-06-19 14:12:35 -0700</bug_when>
    <thetext>The pan scroll shouldn&apos;t trigger if you can&apos;t scroll the clicked area.

Firefox pan scrolls only documents, and does not pan scroll overflow:auto sections.  This honestly looks like a bug to me.  Your code is doing the same thing, but I think overflow:auto sections should pan scroll....

You might want to test what IE does with overflow sections on Windows when it pan scrolls.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83920</commentid>
    <comment_count>6</comment_count>
      <attachid>21848</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-06-19 14:22:23 -0700</bug_when>
    <thetext>Comment on attachment 21848
Add the feature without the icon yet

+	else if (mouseEvent.button() == MiddleButton &amp;&amp; !mev.isOverLink()) {
+		startPanScroll();
+		invalidateClick();
+        return false;

I don&apos;t think !mev.isOverLink() is a good enough check here. You probably wouldn&apos;t want the pan to occur when you middle-click on a button.

In general, we may not want the pan to occur if event.preventDefault() is called. We should test in Firefox and IE to see if calling event.preventDefault() on a middle-click event prevents the pan from occurring. We should match their behavior in this regard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85028</commentid>
    <comment_count>7</comment_count>
      <attachid>22057</attachid>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-07-02 18:53:14 -0700</bug_when>
    <thetext>Created attachment 22057
patch attempt

Works only on windows.
Icon added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85095</commentid>
    <comment_count>8</comment_count>
      <attachid>22057</attachid>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-07-03 09:55:49 -0700</bug_when>
    <thetext>Comment on attachment 22057
patch attempt

I noticed some cosmetic changes so don&apos;t review this one, I&apos;m preparing a new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85111</commentid>
    <comment_count>9</comment_count>
      <attachid>22068</attachid>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-07-03 12:02:46 -0700</bug_when>
    <thetext>Created attachment 22068
patch

Made some functional and cosmetic corrections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85471</commentid>
    <comment_count>10</comment_count>
      <attachid>22159</attachid>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-07-08 11:24:40 -0700</bug_when>
    <thetext>Created attachment 22159
new patch

This version fix 2 problems I found with the previous one :
- It was possible to trigger multiple panScroll on frameset (one on each frame)
- It was possible to trigger the panScroll event when the object was not scrollable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85586</commentid>
    <comment_count>11</comment_count>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-07-09 17:31:49 -0700</bug_when>
    <thetext>Fixed in r35083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85597</commentid>
    <comment_count>12</comment_count>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-07-09 22:26:18 -0700</bug_when>
    <thetext>Why the patch is not reviewed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85598</commentid>
    <comment_count>13</comment_count>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-07-09 22:33:43 -0700</bug_when>
    <thetext>It has been reviewed by email this afternoon by Adele Peterson. She will mark it reviewed tomorrow on bugzilla I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85611</commentid>
    <comment_count>14</comment_count>
      <attachid>22159</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-07-10 09:17:58 -0700</bug_when>
    <thetext>Comment on attachment 22159
new patch

I reviewed this yesterday.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21848</attachid>
            <date>2008-06-19 13:16:08 -0700</date>
            <delta_ts>2008-07-03 12:02:46 -0700</delta_ts>
            <desc>Add the feature without the icon yet</desc>
            <filename>mbritto_bug16424_20080619.txt</filename>
            <type>text/plain</type>
            <size>9321</size>
            <attacher name="Maxime Britto">maxime.britto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDY1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMDgtMDYtMTggIFUtbWJyaXR0by12aXN0YVxtYnJpdHRvICA8YnJp
dHRvQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgdGhlIHBhbm5pbmcgZmVhdHVyZSB0byB3aW5kb3dzIHZlcnNpb24uCisgICAg
ICAgIFRvIHVzZSBpdCwgbWlkZGxlIGNsaWNrIHNvbWV3aGVyZSBvbiB0aGUgcGFnZSAod2hlcmUg
dGhlcmUgaXMgbm8gbGluaykgYW5kIHRoZXJlIG1vdXZlIHlvdXIgbW91c2UgYXJvdW5kIHRvIHNj
cm9sbC4KKyAgICAgICAgVGhlIGZhcnRoZXIgeW91IGFyZSBmcm9tIHRoZSBvcmlnaW5hbCBwb2lu
dCwgdGhlIGZhc3RlciBpdCBzY3JvbGxzLgorICAgICAgICBUT0RPOiBhZGQgYW4gaWNvbiBvbiB0
aGUgb3JpZ2luYWwgY2xpY2sgbG9jYXRpb24uIAorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6cGFuU2Nyb2xsVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnN0b3BQYW5TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Nyb2xs
Vmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxBY2NvcmRp
bmdUb1BvaW50KToKKwogMjAwOC0wNi0xOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIGEgc2NyaXB0IGJ1aWxkIHBoYXNlIHRvIHJlbW92ZSB0aGUg
V2ViS2l0LnFyYyBmaWxlIGZyb20KSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAz
NDY0NikKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTEwMCw2ICsxMDEsNyBAQCBFdmVu
dEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAgICAgLCBtX21vdXNlRG93bldh
c1NpbmdsZUNsaWNrSW5TZWxlY3Rpb24oZmFsc2UpCiAgICAgLCBtX2JlZ2FuU2VsZWN0aW5nVGV4
dChmYWxzZSkKICAgICAsIG1faG92ZXJUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpob3ZlclRp
bWVyRmlyZWQpCisJLCBtX3BhblNjcm9sbFRpbWVyKHRoaXMsICZFdmVudEhhbmRsZXI6OnBhblNj
cm9sbFRpbWVyRmlyZWQpCiAgICAgLCBtX2F1dG9zY3JvbGxUaW1lcih0aGlzLCAmRXZlbnRIYW5k
bGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCkKICAgICAsIG1fYXV0b3Njcm9sbFJlbmRlcmVyKDAp
CiAgICAgLCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbChmYWxzZSkKQEAgLTExOSw2ICsx
MjEsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAgICAgLCBt
X2FjdGl2YXRpb25FdmVudE51bWJlcigwKQogI2VuZGlmCiB7CisJbV9wYW5TY3JvbGxJblByb2dy
ZXNzID0gZmFsc2U7CiB9CiAKIEV2ZW50SGFuZGxlcjo6fkV2ZW50SGFuZGxlcigpCkBAIC0xNDcs
NiArMTUwLDggQEAgdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyKCkKICAgICBtX21vdXNlUHJlc3NO
b2RlID0gMDsKICAgICBtX21vdXNlUHJlc3NlZCA9IGZhbHNlOwogICAgIG1fY2FwdHVyaW5nTW91
c2VFdmVudHNOb2RlID0gMDsKKwlzdG9wUGFuU2Nyb2xsKCk7CisJCiB9CiAKIHZvaWQgRXZlbnRI
YW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZyb21Nb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIHJlc3VsdCkKQEAgLTgyNCw2ICs4MjksMjEgQEAgQ3Vyc29yIEV2
ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IAogICAgIHJldHVybiBwb2ludGVyQ3Vyc29y
KCk7CiB9CiAKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbCgpIHsKKwltX3BhblNj
cm9sbEluUHJvZ3Jlc3MgPSB0cnVlOworCW1fcGFuU2Nyb2xsU3RhcnRQb3MgPSBtX2N1cnJlbnRN
b3VzZVBvc2l0aW9uOworCW1fcGFuU2Nyb2xsVGltZXIuc3RhcnRSZXBlYXRpbmcoMC4wMSk7Cit9
CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpwYW5TY3JvbGxUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFu
ZGxlcj4qKSB7CisJbV9mcmFtZS0+dmlldygpLT5zY3JvbGxBY2NvcmRpbmdUb1BvaW50KG1fcGFu
U2Nyb2xsU3RhcnRQb3MsIG1fY3VycmVudE1vdXNlUG9zaXRpb24pOworfQorCit2b2lkIEV2ZW50
SGFuZGxlcjo6c3RvcFBhblNjcm9sbCgpIHsKKwltX3BhblNjcm9sbEluUHJvZ3Jlc3MgPSBmYWxz
ZTsKKwltX3BhblNjcm9sbFRpbWVyLnN0b3AoKTsKK30KKwogYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQp
CiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpKQpAQCAtODQyLDYgKzg2MiwxNSBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgCiAgICAgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChIaXRUZXN0UmVx
dWVzdChmYWxzZSwgdHJ1ZSksIG1vdXNlRXZlbnQpOwogCisJaWYobV9wYW5TY3JvbGxJblByb2dy
ZXNzKSB7CisJCXN0b3BQYW5TY3JvbGwoKTsKKwl9CisJZWxzZSBpZiAobW91c2VFdmVudC5idXR0
b24oKSA9PSBNaWRkbGVCdXR0b24gJiYgIW1ldi5pc092ZXJMaW5rKCkpIHsKKwkJc3RhcnRQYW5T
Y3JvbGwoKTsKKwkJaW52YWxpZGF0ZUNsaWNrKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKwl9
CisKICAgICBpZiAoIW1ldi50YXJnZXROb2RlKCkpIHsKICAgICAgICAgaW52YWxpZGF0ZUNsaWNr
KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMzUsNyArMTM2NCw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KFBsYXQKICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCh2UG9pbnQpOwogICAgIGRvYy0+cmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0
LCByZXN1bHQpOwogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0gICAgCisK
ICAgICBpZiAobm9kZSkgewogICAgICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIHZpZXcgdG8gc2Vu
ZCB0aGUgZXZlbnQgdG8uCiAgICAgICAgIFJlbmRlck9iamVjdCogdGFyZ2V0ID0gbm9kZS0+cmVu
ZGVyZXIoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9uIDM0NjQ2KQorKysgV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkxLDE1IEBA
IHByaXZhdGU6CiAKICAgICBJbnRQb2ludCBtX2RyYWdTdGFydFBvczsKIAorCisJdm9pZCBzdGFy
dFBhblNjcm9sbCgpOworCXZvaWQgcGFuU2Nyb2xsVGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRs
ZXI+Kik7CisJdm9pZCBzdG9wUGFuU2Nyb2xsKCk7CisKKwlJbnRQb2ludCBtX3BhblNjcm9sbFN0
YXJ0UG9zOworCWJvb2wgbV9wYW5TY3JvbGxJblByb2dyZXNzOworCVRpbWVyPEV2ZW50SGFuZGxl
cj4gbV9wYW5TY3JvbGxUaW1lcjsKKwogICAgIFRpbWVyPEV2ZW50SGFuZGxlcj4gbV9ob3ZlclRp
bWVyOwogICAgIAogICAgIFRpbWVyPEV2ZW50SGFuZGxlcj4gbV9hdXRvc2Nyb2xsVGltZXI7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkocmV2aXNpb24gMzQ2NDYpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBjb250ZW50c1koKSBjb25zdDsKICAgICAgICAgSW50
U2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdDsKICAgICAgICAgdm9pZCBzY3JvbGxCeShpbnQgZHgs
IGludCBkeSk7CisJCXZvaWQgc2Nyb2xsQWNjb3JkaW5nVG9Qb2ludChjb25zdCBJbnRQb2ludCYs
IGNvbnN0IEludFBvaW50Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1Zp
ZXdSZWN1cnNpdmVseShjb25zdCBJbnRSZWN0Jik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRlbnRzUG9zKGludCB4LCBpbnQgeSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9T
Y3JvbGxWaWV3V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3Jv
bGxWaWV3V2luLmNwcAkocmV2aXNpb24gMzQ2NDYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dpbi9T
Y3JvbGxWaWV3V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDYgKzM2MCwzMyBAQCBJbnRT
aXplIFNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGwoKSBjb25zCiAgICAgcmV0dXJuIGRlbHRhOwog
fQogCit2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbEFjY29yZGluZ1RvUG9pbnQoY29uc3QgSW50UG9p
bnQmIFNvdXJjZVBvaW50LCBjb25zdCBJbnRQb2ludCYgQ3VycmVudFBvaW50KSB7CisJaW50IHlE
LCB4RCwgY3VycmVudFgsIGN1cnJlbnRZOworCWZsb2F0IGRpc3RhbmNlLCBmYWN0b3I7CisJY3Vy
cmVudFggPSBDdXJyZW50UG9pbnQueCgpOworCWN1cnJlbnRZID0gQ3VycmVudFBvaW50LnkoKTsK
KworCS8vaWYoY3VycmVudFggPiBtX2ZyYW1lLT52aWV3KCktPnZpc2libGVXaWR0aCgpKSAKKwkv
LwljdXJyZW50WCA9IG1fZnJhbWUtPnZpZXcoKS0+dmlzaWJsZVdpZHRoKCk7CisJLy9pZihjdXJy
ZW50WSA+IG1fZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpKSAKKwkvLwljdXJyZW50WSA9
IG1fZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpOworCisJeUQgPSBjdXJyZW50WSAtIFNv
dXJjZVBvaW50LnkoKSA7CisJaWYoeUQgPiAxMDApIHlEID0gMTAwOworCWVsc2UgaWYoeUQgPCAt
MTAwKSB5RCA9IC0xMDA7CisJZWxzZSBpZihhYnMoeUQpIDwgMTApIHlEID0gMDsKKworCXhEID0g
Y3VycmVudFggLSBTb3VyY2VQb2ludC54KCkgOworCWlmKHhEID4gODApIHhEID0gODA7CisJZWxz
ZSBpZih4RCA8IC04MCkgeEQgPSAtODA7CisJZWxzZSBpZihhYnMoeEQpIDwgMTApIHhEID0gMDsK
KworCWRpc3RhbmNlID0gIHNxcnQoKGZsb2F0KSAoeUQqeUQgKyB4RCp4RCkpOworCWZhY3RvciA9
IGRpc3RhbmNlIC8gMTAwMDsKKworCXNjcm9sbEJ5KGZhY3RvciAqIHhELCBmYWN0b3IgKiB5RCk7
Cit9CisKIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQnkoaW50IGR4LCBpbnQgZHkpCiB7CiAgICAg
SW50U2l6ZSBzY3JvbGxPZmZzZXQgPSBtX2RhdGEtPm1fc2Nyb2xsT2Zmc2V0OwpJbmRleDogV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDM0NjUyKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAwOC0wNi0xOCAgVS1tYnJpdHRvLXZpc3RhXG1icml0dG8gIDxicml0
dG9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJv
ajoKKworMjAwOC0wNi0xOCAgVS1tYnJpdHRvLXZpc3RhXG1icml0dG8gIDxzZXQgRU1BSUxfQURE
UkVTUyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvajoKKwogMjAw
OC0wNi0xNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VHJ5aW5nIHRvIGZpeCBXaW5kb3dzIGJ1aWxkLgpJbmRleDogV2ViS2l0L3dpbi9XZWJLaXQudmNw
cm9qL1dlYktpdC52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9q
L1dlYktpdC52Y3Byb2oJKHJldmlzaW9uIDM0NjQ2KQorKysgV2ViS2l0L3dpbi9XZWJLaXQudmNw
cm9qL1dlYktpdC52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQAogCQkJ
Pg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1h
bmRMaW5lPSJzZXQgUEFUSD0lU3lzdGVtRHJpdmUlXGN5Z3dpblxiaW47JVBBVEglJiN4MEQ7JiN4
MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7IGdy
ZXAgWFgkKFByb2plY3ROYW1lKVhYICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxl
ZCZxdW90OyYjeDBEOyYjeDBBO2lmIGVycm9ybGV2ZWwgMSBleGl0IDEmI3gwRDsmI3gwQTtlY2hv
IFhYJChQcm9qZWN0TmFtZSlYWCAmZ3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZh
aWxlZCZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3RvdWNoICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVx0bXAuY3BwJnF1b3Q7JiN4MEQ7JiN4MEE7Y2wgL2FuYWx5emUgL25vbG9nbyAvYyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcdG1wLmNwcCZxdW90OyAyJmd0OyZhbXA7MSB8IGZpbmRz
dHIgRDkwNDAmI3gwRDsmI3gwQTtpZiBFUlJPUkxFVkVMIDAgc2V0IEVuYWJsZVBSRWZhc3Q9JnF1
b3Q7ZmFsc2UmcXVvdDsgZWxzZSBzZXQgRW5hYmxlUFJFZmFzdD0mcXVvdDt0cnVlJnF1b3Q7JiN4
MEQ7JiN4MEE7aWYgRVJST1JMRVZFTCAwIHNldCBBbmFseXplV2l0aExhcmdlU3RhY2s9JnF1b3Q7
JnF1b3Q7IEFuYWx5emVXaXRoTGFyZ2VTdGFjaz0mcXVvdDsvYW5hbHl6ZTo2NTUzNiZxdW90OyYj
eDBEOyYjeDBBOyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXEphdmFTY3JpcHRDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNj
cmlwdENvcmVcSmF2YVNjcmlwdENvcmVcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxKYXZhU2NyaXB0Q29yZVxKYXZhU2NyaXB0Q29yZSZxdW90OyYjeDBEOyYjeDBBOyYj
eDBEOyYjeDBBO2Jhc2ggJnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXHRvb2xzXHNjcmlwdHNc
YXV0by12ZXJzaW9uLnNoJnF1b3Q7ICZxdW90OyQoSW50RGlyKSZxdW90OyYjeDBEOyYjeDBBOyIN
CisJCQkJQ29tbWFuZExpbmU9InNldCBQQVRIPSVTeXN0ZW1Ecml2ZSVcY3lnd2luXGJpbjslUEFU
SCUmI3gwRDsmI3gwQTtpZiBleGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWls
ZWQmcXVvdDsgZ3JlcCBYWCQoUHJvamVjdE5hbWUpWFggJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7aWYgZXJyb3JsZXZlbCAxIGV4aXQgMSYjeDBE
OyYjeDBBO2VjaG8gWFgkKFByb2plY3ROYW1lKVhYICZndDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7dG91Y2ggJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXHRtcC5jcHAmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtp
ZiBFUlJPUkxFVkVMIDAgc2V0IEVuYWJsZVBSRWZhc3Q9JnF1b3Q7ZmFsc2UmcXVvdDsgZWxzZSBz
ZXQgRW5hYmxlUFJFZmFzdD0mcXVvdDt0cnVlJnF1b3Q7JiN4MEQ7JiN4MEE7aWYgRVJST1JMRVZF
TCAwIHNldCBBbmFseXplV2l0aExhcmdlU3RhY2s9JnF1b3Q7JnF1b3Q7IEFuYWx5emVXaXRoTGFy
Z2VTdGFjaz0mcXVvdDsvYW5hbHl6ZTo2NTUzNiZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBB
O21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXEphdmFTY3Jp
cHRDb3JlXEphdmFTY3JpcHRDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmVcSmF2YVNjcmlwdENv
cmVcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29y
ZVxKYXZhU2NyaXB0Q29yZSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2Jhc2ggJnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXHRvb2xzXHNjcmlwdHNcYXV0by12ZXJzaW9uLnNoJnF1b3Q7
ICZxdW90OyQoSW50RGlyKSZxdW90OyYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJCTxUb29sDQog
CQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0K
</data>
<flag name="review"
          id="9590"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22057</attachid>
            <date>2008-07-02 18:53:14 -0700</date>
            <delta_ts>2008-07-03 09:55:49 -0700</delta_ts>
            <desc>patch attempt</desc>
            <filename>mbritto_bug16424_20080702.txt</filename>
            <type>text/plain</type>
            <size>26994</size>
            <attacher name="Maxime Britto">maxime.britto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgKHJldmlzaW9uIDM0OTY0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cgICAod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQ3IEBACisyMDA4LTA3LTAyICBNYXhpbWUgQnJpdHRvICA8YnJpdHRvQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIyNworICAgICAgICBB
ZGQgdGhlIG1pZGRsZSBjbGljayBwYW5uaW5nIGZlYXR1cmUgdG8gdGhlIHdpbmRvd3MgcmVsZWFz
ZS4KKyAgICAgICAgTWFudWFsIHRlc3QgaXMgaW5jbHVkZWQgaW4gdGhlIHBhdGNoLgorCisgICAg
ICAgICogbWFudWFsLXRlc3RzL3BhblNjcm9sbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYW51
YWwtdGVzdHMvcmVzb3VyY2VzL2JpZy1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFn
Z2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJl
bGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUF1dG9z
Y3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xsVGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xsVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZl
bnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxWaWV3V2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpTY3JvbGxW
aWV3UHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJp
dmF0ZTo6c2Nyb2xsQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVdp
bmRvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQnkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cHJpbnRQYW5TY3JvbGxJY29uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OnJlbW92ZVBhblNjcm9sbEljb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFuU2Nyb2xsRnJvbVBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojpw
YW5TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6c2Nyb2xsVG93YXJk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpzaG91bGRQYW5TY3JvbGwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzaG91bGRBdXRvc2Nyb2xs
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cGFuU2Nyb2xsKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnN0b3BQYW5TY3JvbGwpOgorCiAyMDA4LTA3LTAyICBCZXRoIERha2luICA8YmRha2luQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IFdlYkNvcmUvbWFu
dWFsLXRlc3RzL3BhblNjcm9sbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWFudWFsLXRl
c3RzL3BhblNjcm9sbC5odG1sIChyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMv
cGFuU2Nyb2xsLmh0bWwgKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorPC9o
ZWFkPgorPGJvZHk+CisgICA8cD48Yj5CVUcgSUQ6PC9iPiA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjQiPkJ1Z3ppbGxhIEJ1ZyAxNjQyNDwvYT4g
RW5hYmxlIGF1dG8tc2Nyb2xsIGluIHBhZ2UgYnkgbW91c2UgbWlkZGxlIGNsaWNrPC9wPgorCisg
ICA8cCBpZD0idGVzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6c2t5Ymx1ZTsgcGFkZGluZzoz
cHg7Ij48Yj5TVEVQUyBUTyBURVNUOjwvYj4gCisgICAgICAgRm9yIGVhY2ggaWZyYW1lIDogTWlk
ZGxlLWNsaWNrIHdpdGhpbiB0aGUgaWZyYW1lIGFuZCB0aGVuIG1vdmUgeW91ciBtb3VzZS48L3A+
CisKKyAgICAgICA8cCBpZD0ic3VjY2VzcyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6cGFsZWdy
ZWVuOyBwYWRkaW5nOjNweDsiPjxiPlRFU1QgUEFTUzo8L2I+IAorICAgICAgICAgICBGb3IgZWFj
aCBpZnJhbWUsIHlvdSBzaG91bGQgc2VlIHRoZSBzY3JvbGwgYmFycyBmb2xsb3cgeW91ciBtb3Zl
cyBhbmQgZXZlbiByZWFjaCB0aGUgZW5kIG9mIHRoZSBwYWdlIGluY2x1ZGVkIGluIHRoZSBpZnJh
bWUuCisgICAgICAgPC9wPgorCisgICAgICAgPHAgaWQ9ImZhaWx1cmUiIHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOiNGRjMzMDA7IHBhZGRpbmc6M3B4OyI+PGI+VEVTVCBGQUlMOjwvYj4gIAorICAg
ICAgICAgICBUaGUgc2Nyb2xsIGRvZXNuJ3QgZm9sbG93IHRoZSBtb3VzZSBtb3ZlcyBvciBkb2Vz
bid0IGdldCBhY3RpdmF0ZWQuCisgICAgICAgPC9wPgorCisgICAgICAgPGRpdiBzdHlsZT0iaGVp
Z2h0PTIwMDBweDt3aWR0aD0yMDAwcHgiPgorICAgICAgICAgICA8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL2JpZy1wYWdlLmh0bWwiPjwvaWZyYW1lPgorICAgICAgICAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL2JpZy1wYWdlLmh0bWwiIHNjcm9sbGluZz48L2lmcmFtZT4KKyAgICAgICAgICAgPGlm
cmFtZSBzcmM9InJlc291cmNlcy9iaWctcGFnZS5odG1sIiBzY3JvbGxpbmc9IiI+PC9pZnJhbWU+
CisgICAgICAgICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCIgc2Nyb2xs
aW5nPSJhdXRvIj48L2lmcmFtZT4KKyAgICAgICAgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9i
aWctcGFnZS5odG1sIiBzY3JvbGxpbmc9InllcyI+PC9pZnJhbWU+CisgICAgICAgICAgIDxpZnJh
bWUgc3JjPSJyZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCIgc2Nyb2xsaW5nPSJubyI+PC9pZnJhbWU+
CisgICAgICAgICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCIgc2Nyb2xs
aW5nPSJib2d1cyI+PC9pZnJhbWU+CisgICAgICAgICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMv
YmlnLXBhZ2UuaHRtbCIgc2Nyb2xsaW5nPSIxMjM0Ij48L2lmcmFtZT4KKyAgICAgICA8L2Rpdj4K
KworICAgPC9ib2R5PgorICAgPC9odG1sPgpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMvcmVz
b3VyY2VzL2JpZy1wYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMv
cmVzb3VyY2VzL2JpZy1wYWdlLmh0bWwgICAgKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hbnVh
bC10ZXN0cy9yZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCAgICAocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyIEBACis8cD5UaGlzIHBhZ2UgaXMgbGFyZ2UgZW5vdWdoIHRvIG5lZWQgdG8gYmUgc2Nyb2xs
ZWQgaW4gYSAyMDB4MjAwIGZyYW1lLjwvcD4KKzxkaXYgc3R5bGU9IndpZHRoOiA0MDBweDsgaGVp
Z2h0OiA0MDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZSI+PC9kaXY+CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCAgIChyZXZpc2lvbiAzNDY5NSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwICAgKHdvcmtpbmcgY29weSkKQEAgLTk5LDkgKzk5LDExIEBAIEV2ZW50SGFuZGxlcjo6
RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnREcmFn
KGZhbHNlKQogICAgICwgbV9tb3VzZURvd25XYXNTaW5nbGVDbGlja0luU2VsZWN0aW9uKGZhbHNl
KQogICAgICwgbV9iZWdhblNlbGVjdGluZ1RleHQoZmFsc2UpCisgICAgLCBtX3BhblNjcm9sbElu
UHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2hvdmVyVGltZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6
aG92ZXJUaW1lckZpcmVkKQogICAgICwgbV9hdXRvc2Nyb2xsVGltZXIodGhpcywgJkV2ZW50SGFu
ZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQpCiAgICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigw
KQorICAgICwgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyhmYWxzZSkKICAgICAsIG1fbW91c2VEb3du
TWF5U3RhcnRBdXRvc2Nyb2xsKGZhbHNlKQogICAgICwgbV9tb3VzZURvd25XYXNJblN1YmZyYW1l
KGZhbHNlKQogI2lmIEVOQUJMRShTVkcpCkBAIC0zNzAsMTQgKzM3MiwxNiBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlCiAKICAgICBtX21vdXNlRG93bk1heVN0YXJ0
RHJhZyA9IGZhbHNlOwogCi0gICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKSB7
ICAgICAgICAgICAgCisgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsICYmICFt
X3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsgICAgICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIHNl
bGVjdGlvbiBpcyBjb250YWluZWQgaW4gYSBsYXllciB0aGF0IGNhbiBzY3JvbGwsIHRoYXQgbGF5
ZXIgc2hvdWxkIGhhbmRsZSB0aGUgYXV0b3Njcm9sbAogICAgICAgICAvLyBPdGhlcndpc2UsIGxl
dCB0aGUgYnJpZGdlIGhhbmRsZSBpdCBzbyB0aGUgdmlldyBjYW4gc2Nyb2xsIGl0c2VsZi4KICAg
ICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRhcmdldE5vZGUtPnJlbmRlcmVyKCk7CiAg
ICAgICAgIHdoaWxlIChyZW5kZXJlciAmJiAhcmVuZGVyZXItPnNob3VsZEF1dG9zY3JvbGwoKSkK
ICAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwotICAgICAgICBpZiAo
cmVuZGVyZXIpCisgICAgICAgIGlmIChyZW5kZXJlcikgeworICAgICAgICAgICAgbV9hdXRvc2Ny
b2xsSW5Qcm9ncmVzcyA9IHRydWU7CiAgICAgICAgICAgICBoYW5kbGVBdXRvc2Nyb2xsKHJlbmRl
cmVyKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3Vz
ZURyYWcodGFyZ2V0Tm9kZSwgZXZlbnQubG9jYWxQb2ludCgpKTsKQEAgLTQ4OSw3ICs0OTMsOCBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VVcChjb25zdCBNCiAKIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBldmVudCkKIHsKLSAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgaWYg
KCFtX3BhblNjcm9sbEluUHJvZ3Jlc3MpCisgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsK
IAogICAgIGlmIChoYW5kbGVNb3VzZVVwKGV2ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC01MzUsMTcgKzU0MCwzNCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6aGFuZGxlQXV0b3Njcm9sbChS
ZW5kCiAgICAgaWYgKG1fYXV0b3Njcm9sbFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBzZXRBdXRvc2Nyb2xsUmVuZGVyZXIocmVuZGVyZXIpOworCisgICAgaWYgKG1fcGFu
U2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAgICBtX3BhblNjcm9sbFN0YXJ0UG9zID0gY3VycmVu
dE1vdXNlUG9zaXRpb24oKTsKKyAgICAgICAgbV9mcmFtZS0+dmlldygpLT5wcmludFBhblNjcm9s
bEljb24obV9wYW5TY3JvbGxTdGFydFBvcyk7CisgICAgfQorCiAgICAgc3RhcnRBdXRvc2Nyb2xs
VGltZXIoKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxUaW1lckZpcmVkKFRp
bWVyPEV2ZW50SGFuZGxlcj4qKQogewotICAgIGlmICghbV9tb3VzZVByZXNzZWQpIHsKKyAgICBS
ZW5kZXJPYmplY3QqIHIgPSBhdXRvc2Nyb2xsUmVuZGVyZXIoKTsKKyAgICBpZiAoIXIpIHsKICAg
ICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmIChSZW5kZXJPYmplY3QqIHIgPSBhdXRvc2Nyb2xsUmVuZGVyZXIoKSkKKworICAgIGlmICht
X2F1dG9zY3JvbGxJblByb2dyZXNzKSB7CisgICAgICAgIGlmICghbV9tb3VzZVByZXNzZWQpIHsK
KyAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICAgICAgICAgIG1fYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
ICAgICAgICByLT5hdXRvc2Nyb2xsKCk7CisgICAgfQorCisgICAgaWYgKG1fcGFuU2Nyb2xsSW5Q
cm9ncmVzcykKKyAgICAgICAgci0+cGFuU2Nyb2xsKG1fcGFuU2Nyb2xsU3RhcnRQb3MpOwogfQog
CiBSZW5kZXJPYmplY3QqIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVyKCkgY29uc3QK
QEAgLTYwOSwxNiArNjMxLDI4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydEF1dG9zY3JvbGxU
aW1lcigKIAogdm9pZCBFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIoYm9vbCByZW5k
ZXJlcklzQmVpbmdEZXN0cm95ZWQpCiB7Ci0gICAgaWYgKG1fbW91c2VEb3duV2FzSW5TdWJmcmFt
ZSkgewotICAgICAgICBpZiAoRnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JUYXJnZXROb2Rl
KG1fbW91c2VQcmVzc05vZGUuZ2V0KCkpKQotICAgICAgICAgICAgc3ViZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAg
ICBpZiAobV9tb3VzZURvd25XYXNJblN1YmZyYW1lKSB7CisgICAgICAgICAgICBpZiAoRnJhbWUq
IHN1YmZyYW1lID0gc3ViZnJhbWVGb3JUYXJnZXROb2RlKG1fbW91c2VQcmVzc05vZGUuZ2V0KCkp
KQorICAgICAgICAgICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c3RvcEF1dG9zY3Jv
bGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG9zY3JvbGxSZW5kZXJlcigpKSB7CisgICAg
ICAgIGlmICghcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkICYmIG1fYXV0b3Njcm9sbEluUHJvZ3Jl
c3MpCisgICAgICAgICAgICBhdXRvc2Nyb2xsUmVuZGVyZXIoKS0+c3RvcEF1dG9zY3JvbGwoKTsK
KyAgICAgICAgaWYgKG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAgICAgICAgYXV0b3Nj
cm9sbFJlbmRlcmVyKCktPnN0b3BQYW5TY3JvbGwoKTsKKyAgICAgICAgICAgIG1fZnJhbWUtPnZp
ZXcoKS0+cmVtb3ZlUGFuU2Nyb2xsSWNvbigpOworICAgICAgICB9CisKKyAgICAgICAgc2V0QXV0
b3Njcm9sbFJlbmRlcmVyKDApOwogICAgIH0KIAotICAgIGlmICghcmVuZGVyZXJJc0JlaW5nRGVz
dHJveWVkICYmIGF1dG9zY3JvbGxSZW5kZXJlcigpKQotICAgICAgICBhdXRvc2Nyb2xsUmVuZGVy
ZXIoKS0+c3RvcEF1dG9zY3JvbGwoKTsKLSAgICBzZXRBdXRvc2Nyb2xsUmVuZGVyZXIoMCk7CiAg
ICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RvcCgpOworICAgIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3Mg
PSBmYWxzZTsKKyAgICBtX3BhblNjcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKIH0KIAogTm9kZSog
RXZlbnRIYW5kbGVyOjptb3VzZVByZXNzTm9kZSgpIGNvbnN0CkBAIC04NTgsNiArODkyLDI0IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICAgICAgaW52YWxp
ZGF0ZUNsaWNrKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAKKyNpZiBQTEFURk9S
TShXSU4pIHx8IChQTEFURk9STShXWCkgJiYgUExBVEZPUk0oV0lOX09TKSkKKyAgICBpZiAobV9w
YW5TY3JvbGxJblByb2dyZXNzIHx8IG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MpIHsKKyAgICAgICAg
c3RvcEF1dG9zY3JvbGxUaW1lcigpOworICAgIH0gZWxzZSBpZiAobW91c2VFdmVudC5idXR0b24o
KSA9PSBNaWRkbGVCdXR0b24gJiYgIW1ldi5pc092ZXJMaW5rKCkpIHsKKyAgICAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG1ldi50YXJnZXROb2RlKCktPnJlbmRlcmVyKCk7CisKKyAgICAg
ICAgd2hpbGUgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+c2hvdWxkQXV0b3Njcm9sbCgpKQorICAg
ICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CisKKyAgICAgICAgaWYgKHJl
bmRlcmVyKSB7CisgICAgICAgICAgICBtX3BhblNjcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOworICAg
ICAgICAgICAgaGFuZGxlQXV0b3Njcm9sbChyZW5kZXJlcik7CisgICAgICAgICAgICBpbnZhbGlk
YXRlQ2xpY2soKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICB9Cisj
ZW5kaWYKIAogICAgIG1fY2xpY2tDb3VudCA9IG1vdXNlRXZlbnQuY2xpY2tDb3VudCgpOwogICAg
IG1fY2xpY2tOb2RlID0gbWV2LnRhcmdldE5vZGUoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggKHJl
dmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oICh3b3JraW5nIGNv
cHkpCkBAIC0yMjAsNyArMjIwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUF1dG9zY3Jv
bGwoUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxUaW1lcigpOwogICAg
IHZvaWQgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCopOwotCiAgICAgdm9pZCBh
dXRvc2Nyb2xsVGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRsZXI+Kik7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGVDbGljaygpOwpAQCAtMjkxLDEwICsyOTAsMTQgQEAgcHJpdmF0ZToKIAogICAgIElu
dFBvaW50IG1fZHJhZ1N0YXJ0UG9zOwogCisgICAgSW50UG9pbnQgbV9wYW5TY3JvbGxTdGFydFBv
czsKKyAgICBib29sIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzczsKKwogICAgIFRpbWVyPEV2ZW50SGFu
ZGxlcj4gbV9ob3ZlclRpbWVyOwogICAgIAogICAgIFRpbWVyPEV2ZW50SGFuZGxlcj4gbV9hdXRv
c2Nyb2xsVGltZXI7CiAgICAgUmVuZGVyT2JqZWN0KiBtX2F1dG9zY3JvbGxSZW5kZXJlcjsKKyAg
ICBib29sIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3M7CiAgICAgYm9vbCBtX21vdXNlRG93bk1heVN0
YXJ0QXV0b3Njcm9sbDsKICAgICBib29sIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZTsKICNpZiBF
TkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggICAocmV2aXNpb24gMzQ2OTUpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgICh3b3JraW5nIGNvcHkpCkBAIC04OCw4
ICs4OCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYWRkQ2hpbGQoV2lk
Z2V0Kik7CiAgICAgICAgIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7CiAKKyAgICAgICAgdm9p
ZCBwcmludFBhblNjcm9sbEljb24oY29uc3QgSW50UG9pbnQmKTsKKyAgICAgICAgdm9pZCByZW1v
dmVQYW5TY3JvbGxJY29uKCk7CisKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc2l6ZUNvbnRlbnRz
KGludCB3LCBpbnQgaCk7CiAgICAgICAgIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3QgSW50UmVj
dCYsIGJvb2wgbm93ID0gZmFsc2UpOworICAgICAgICB2b2lkIHVwZGF0ZVdpbmRvd1JlY3QoY29u
c3QgSW50UmVjdCYsIGJvb2wgbm93ID0gZmFsc2UpOwogICAgICAgICB2b2lkIHVwZGF0ZSgpOwog
CiAgICAgICAgIC8vIEV2ZW50IGNvb3JkaW5hdGVzIGFyZSBhc3N1bWVkIHRvIGJlIGluIHRoZSBj
b29yZGluYXRlIHNwYWNlIG9mIGEgd2luZG93IHRoYXQgY29udGFpbnMKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwICAocmV2aXNpb24gMzQ2OTUpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TY3JvbGxWaWV3V2luLmNwcCAgKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDggQEAgcHVibGljOgogICAgICAgICAsIG1faFNjcm9sbGJhck1vZGUoU2Nyb2xsYmFyQXV0
bykKICAgICAgICAgLCBtX3Zpc2libGUoZmFsc2UpCiAgICAgICAgICwgbV9hdHRhY2hlZFRvV2lu
ZG93KGZhbHNlKQorICAgICAgICAsIG1fcGFuU2Nyb2xsSWNvblBvaW50KDAsMCkKKyAgICAgICAg
LCBtX2RyYXdQYW5TY3JvbGxJY29uKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTk5LDYgKzEw
MSw4IEBAIHB1YmxpYzoKICAgICBIYXNoU2V0PFdpZGdldCo+IG1fY2hpbGRyZW47CiAgICAgYm9v
bCBtX3Zpc2libGU7CiAgICAgYm9vbCBtX2F0dGFjaGVkVG9XaW5kb3c7CisgICAgSW50UG9pbnQg
bV9wYW5TY3JvbGxJY29uUG9pbnQ7CisgICAgYm9vbCBtX2RyYXdQYW5TY3JvbGxJY29uOwogfTsK
IAogdm9pZCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6c2V0SGFzSG9yaXpvbnRhbFNj
cm9sbGJhcihib29sIGhhc0JhcikKQEAgLTE2MCw2ICsxNjQsMTIgQEAgdm9pZCBTY3JvbGxWaWV3
OjpTY3JvbGxWaWV3UHJpdmF0ZTo6c2NybwogICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHNjcm9s
bFZpZXdSZWN0KTsKICAgICBSRUNUIHIgPSB1cGRhdGVSZWN0OwogICAgIDo6SW52YWxpZGF0ZVJl
Y3QoY29udGFpbmluZ1dpbmRvd0hhbmRsZSwgJnIsIGZhbHNlKTsKKyAgICBpZiAobV9kcmF3UGFu
U2Nyb2xsSWNvbil7CisgICAgICAgIEludFJlY3QgcGFuU2Nyb2xsSWNvblJlY3QgPSBJbnRSZWN0
KEludFBvaW50KG1fcGFuU2Nyb2xsSWNvblBvaW50LngoKSAtIDcwLCBtX3BhblNjcm9sbEljb25Q
b2ludC55KCkgLSA3MCksIEludFNpemUoMTYwLDE2MCkpOworICAgICAgICBSRUNUIGlyID0gcGFu
U2Nyb2xsSWNvblJlY3Q7CisgICAgICAgIDo6SW52YWxpZGF0ZVJlY3QoY29udGFpbmluZ1dpbmRv
d0hhbmRsZSwgJmlyLCBmYWxzZSk7CisgICAgICAgIG1fdmlldy0+YWRkVG9EaXJ0eVJlZ2lvbihw
YW5TY3JvbGxJY29uUmVjdCk7CisgICAgfQogCiAgICAgaWYgKCFtX2hhc1N0YXRpY0JhY2tncm91
bmQpIC8vIFRoZSBtYWluIGZyYW1lIGNhbiBqdXN0IGJsaXQgdGhlIFdlYlZpZXcgd2luZG93CiAg
ICAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gYmxpdCBzdWJmcmFtZXMgd2l0aG91dCBibGl0
dGluZyBvdmVybGFwcGluZyBjb250ZW50CkBAIC0yMzAsMTMgKzI0MCwxOCBAQCB2b2lkIFNjcm9s
bFZpZXc6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IEluCiAgICAgSW50UmVjdCBjb250YWluaW5nV2lu
ZG93UmVjdCA9IHJlY3Q7CiAgICAgY29udGFpbmluZ1dpbmRvd1JlY3Quc2V0TG9jYXRpb24od2lu
ZG93UG9pbnQpOwogCi0gICAgUkVDVCBjb250YWluaW5nV2luZG93UmVjdFdpbiA9IGNvbnRhaW5p
bmdXaW5kb3dSZWN0OworICAgIHVwZGF0ZVdpbmRvd1JlY3QoY29udGFpbmluZ1dpbmRvd1JlY3Qs
IG5vdyk7Cit9CisKK3ZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlV2luZG93UmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0LCBib29sIG5vdykKK3sKKyAgICBSRUNUIGNvbnRhaW5pbmdXaW5kb3dSZWN0V2lu
ID0gcmVjdDsKICAgICBIV05EIGNvbnRhaW5pbmdXaW5kb3dIYW5kbGUgPSBjb250YWluaW5nV2lu
ZG93KCk7CiAKICAgICA6OkludmFsaWRhdGVSZWN0KGNvbnRhaW5pbmdXaW5kb3dIYW5kbGUsICZj
b250YWluaW5nV2luZG93UmVjdFdpbiwgZmFsc2UpOwotCisgICAgICAKICAgICAvLyBDYWNoZSB0
aGUgZGlydHkgc3BvdC4KLSAgICBhZGRUb0RpcnR5UmVnaW9uKGNvbnRhaW5pbmdXaW5kb3dSZWN0
KTsKKyAgICBhZGRUb0RpcnR5UmVnaW9uKHJlY3QpOwogCiAgICAgaWYgKG5vdykKICAgICAgICAg
OjpVcGRhdGVXaW5kb3coY29udGFpbmluZ1dpbmRvd0hhbmRsZSk7CkBAIC0zNjUsMTAgKzM4MCwx
MCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbEJ5KGludCBkeCwgaW50IGR5CiAgICAgSW50U2l6
ZSBzY3JvbGxPZmZzZXQgPSBtX2RhdGEtPm1fc2Nyb2xsT2Zmc2V0OwogICAgIEludFNpemUgbmV3
U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0ICsgSW50U2l6ZShkeCwgZHkpLnNocnVua1RvKG1h
eGltdW1TY3JvbGwoKSk7CiAgICAgbmV3U2Nyb2xsT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8o
KTsKLQorICAgIAogICAgIGlmIChuZXdTY3JvbGxPZmZzZXQgPT0gc2Nyb2xsT2Zmc2V0KQogICAg
ICAgICByZXR1cm47Ci0KKyAgICAKICAgICB1cGRhdGVTY3JvbGxiYXJzKG5ld1Njcm9sbE9mZnNl
dCk7CiB9CiAKQEAgLTYwMCw2ICs2MTUsMjEgQEAgdm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVDaGls
ZChXaWRnZXQqIGNoaQogICAgIG1fZGF0YS0+bV9jaGlsZHJlbi5yZW1vdmUoY2hpbGQpOwogfQog
Cit2b2lkIFNjcm9sbFZpZXc6OnByaW50UGFuU2Nyb2xsSWNvbihjb25zdCBJbnRQb2ludCYgaWNv
blBvc2l0aW9uKQoreworICAgIG1fZGF0YS0+bV9kcmF3UGFuU2Nyb2xsSWNvbiA9IHRydWU7ICAg
IAorICAgIG1fZGF0YS0+bV9wYW5TY3JvbGxJY29uUG9pbnQgPSBJbnRQb2ludChpY29uUG9zaXRp
b24ueCgpIC0gNCAsIGljb25Qb3NpdGlvbi55KCkgLSA0KSA7CisKKyAgICB1cGRhdGVXaW5kb3dS
ZWN0KEludFJlY3QobV9kYXRhLT5tX3BhblNjcm9sbEljb25Qb2ludCwgSW50U2l6ZSg3MCw3MCkp
LCB0cnVlKTsgICAgCit9CisKK3ZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlUGFuU2Nyb2xsSWNvbigp
Cit7CisgICAgbV9kYXRhLT5tX2RyYXdQYW5TY3JvbGxJY29uID0gZmFsc2U7IAorCisgICAgdXBk
YXRlV2luZG93UmVjdChJbnRSZWN0KG1fZGF0YS0+bV9wYW5TY3JvbGxJY29uUG9pbnQsIEludFNp
emUoNzAsNzApKSwgdHJ1ZSk7Cit9CisKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGNvZGUgaXMgaGVyZSBzbyB3ZSBkb24ndCBoYXZlIHRvIGZvcmsgRnJhbWVWaWV3LmgvLmNw
cC4KQEAgLTY2MCw2ICs2OTAsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0Nv
bnRleHQqIAogCiAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKICAgICB9CisKKyAgICAvL1Bh
aW50IHRoZSBwYW5TY3JvbGwgSWNvbgorICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNvbjsK
KyAgICBpZiAobV9kYXRhLT5tX2RyYXdQYW5TY3JvbGxJY29uKSB7CisgICAgICAgIGlmICghcGFu
U2Nyb2xsSWNvbikKKyAgICAgICAgICAgIHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoImNvbXBhc3MiKTsKKyAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKHBhblNj
cm9sbEljb24sIG1fZGF0YS0+bV9wYW5TY3JvbGxJY29uUG9pbnQpOworICAgIH0KIH0KIAogdm9p
ZCBTY3JvbGxWaWV3Ojp0aGVtZUNoYW5nZWQoKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCAgIChyZXZpc2lvbiAzNDY5NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCAgICh3b3JraW5nIGNvcHkpCkBAIC02OTAsNiArNjkwLDUyIEBAIFJlbmRlckxheWVyOjpj
b252ZXJ0VG9MYXllckNvb3Jkcyhjb25zdCAKICAgICB5ICs9IHlQb3MoKTsKIH0KIAordm9pZCBS
ZW5kZXJMYXllcjo6cGFuU2Nyb2xsRnJvbVBvaW50KGNvbnN0IEludFBvaW50JiBzb3VyY2VQb2lu
dCkgCit7CisgICBjb25zdCBpbnQgc2Vuc2l0aXZpdHlTY2FsZSA9IDI1MDsKKyAgICBjb25zdCBp
bnQgaWNvblJhZGl1cyA9IDEwOworICAgIGNvbnN0IGludCBzcGVlZFJlZHVjZXIgPSAzOworICAg
IEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYg
KCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEludFBvaW50IGN1cnJlbnRNb3Vz
ZVBvc2l0aW9uID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigp
OworICAgIAorICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgbW91c2UgcG9z
aXRpb24gaXMgb3V0IG9mIHRoZSB3aW5kb3cuIFdoZW4gdGhlIG1vdXNlIGlzIG91dCBvZiB0aGUg
d2luZG93LCB0aGUgcG9zaXRpb24gaXMgKC0zMjc2OCwtMzI3NjgpCisgICAgc3RhdGljIEludFBv
aW50IHByZXZpb3VzTW91c2VQb3NpdGlvbjsKKyAgICBpZiAoY3VycmVudE1vdXNlUG9zaXRpb24u
eCgpIDwgMCB8fCBjdXJyZW50TW91c2VQb3NpdGlvbi55KCkgPCAwKQorICAgICAgICBjdXJyZW50
TW91c2VQb3NpdGlvbiA9IHByZXZpb3VzTW91c2VQb3NpdGlvbjsKKyAgICBlbHNlCisgICAgICAg
IHByZXZpb3VzTW91c2VQb3NpdGlvbiA9IGN1cnJlbnRNb3VzZVBvc2l0aW9uOworCisgICAgaW50
IHhEZWx0YSA9IGN1cnJlbnRNb3VzZVBvc2l0aW9uLngoKSAtIHNvdXJjZVBvaW50LngoKTsKKyAg
ICBpbnQgeURlbHRhID0gY3VycmVudE1vdXNlUG9zaXRpb24ueSgpIC0gc291cmNlUG9pbnQueSgp
OworICAgIAorICAgLy8gSWYgdGhlIHBvaW50IGlzIHRvbyBmYXIgZnJvbSB0aGUgY2VudGVyIHdl
IGxpbWl0IHRoZSBzcGVlZAorICAgIHhEZWx0YSA9IG1heChtaW4oeERlbHRhLCBzZW5zaXRpdml0
eVNjYWxlKSwgLXNlbnNpdGl2aXR5U2NhbGUpOworICAgIHlEZWx0YSA9IG1heChtaW4oeURlbHRh
LCBzZW5zaXRpdml0eVNjYWxlKSwgLXNlbnNpdGl2aXR5U2NhbGUpOworCisgICBpZihhYnMoeERl
bHRhKSA8IGljb25SYWRpdXMpIC8vIGF0IHRoZSBjZW50ZXIgd2UgbGV0IHRoZSBzcGFjZSBmb3Ig
dGhlIGljb24KKyAgICAgICAgeERlbHRhID0gMDsKKyAgICBpZihhYnMoeURlbHRhKSA8IGljb25S
YWRpdXMpCisgICAgICAgIHlEZWx0YSA9IDA7CisKKyAgICAvLyBMZXQncyBhdHRlbnVhdGUgdGhl
IHNwZWVkCisgICAgeERlbHRhIC89IHNwZWVkUmVkdWNlcjsKKyAgICB5RGVsdGEgLz0gc3BlZWRS
ZWR1Y2VyOworCisgICAgYm9vbCByZXN0cmljdGVkQnlMaW5lQ2xhbXAgPSBmYWxzZTsKKyAgICBp
ZiAobV9vYmplY3QtPnBhcmVudCgpKQorICAgICAgICByZXN0cmljdGVkQnlMaW5lQ2xhbXAgPSBt
X29iamVjdC0+cGFyZW50KCktPnN0eWxlKCktPmxpbmVDbGFtcCgpID49IDA7CisKKyAgICBpZiAo
bV9vYmplY3QtPmhhc092ZXJmbG93Q2xpcCgpICYmICFyZXN0cmljdGVkQnlMaW5lQ2xhbXApIHsK
KyAgICAgICAgaW50IG5ld09mZnNldFggPSBtYXgoMCwgc2Nyb2xsWE9mZnNldCgpICsgeERlbHRh
KTsKKyAgICAgICAgaW50IG5ld09mZnNldFkgPSBtYXgoMCwgc2Nyb2xsWU9mZnNldCgpICsgeURl
bHRhKTsKKyAgICAgICAgc2Nyb2xsVG9PZmZzZXQobmV3T2Zmc2V0WCwgbmV3T2Zmc2V0WSk7IAor
ICAgIH0gZWxzZSBpZiAobV9vYmplY3QtPnZpZXcoKS0+ZnJhbWVWaWV3KCkpCisgICAgICAgIG1f
b2JqZWN0LT52aWV3KCktPmZyYW1lVmlldygpLT5zY3JvbGxCeSh4RGVsdGEsIHlEZWx0YSk7Cit9
CisKIHZvaWQKIFJlbmRlckxheWVyOjpzY3JvbGxPZmZzZXQoaW50JiB4LCBpbnQmIHkpCiB7Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggKHJldmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCAod29ya2luZyBjb3B5KQpAQCAtMjQ0LDYgKzI0NCw4IEBA
IHB1YmxpYzoKICAgICBpbnQgc2Nyb2xsV2lkdGgoKTsKICAgICBpbnQgc2Nyb2xsSGVpZ2h0KCk7
CiAKKyAgICB2b2lkIHBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYpOworCiAgICAg
Ly8gU2Nyb2xsaW5nIG1ldGhvZHMgZm9yIGxheWVycyB0aGF0IGNhbiBzY3JvbGwgdGhlaXIgb3Zl
cmZsb3cuCiAgICAgdm9pZCBzY3JvbGxPZmZzZXQoaW50JiB4LCBpbnQmIHkpOwogICAgIHZvaWQg
c3VidHJhY3RTY3JvbGxPZmZzZXQoaW50JiB4LCBpbnQmIHkpOwpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAgKHJldmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAgKHdvcmtpbmcgY29weSkKQEAgLTQwNiwzMSArNDA2LDgxIEBAIGlu
dCBSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhBdE9mZnNldChpbnQKICAgICByZXR1cm4gbmV3T2Zm
c2V0IDwgbnVtSXRlbXMoKSA/IG5ld09mZnNldCA6IC0xOwogfQogCi12b2lkIFJlbmRlckxpc3RC
b3g6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5kZXJMaXN0Qm94OjpwYW5TY3JvbGwoY29uc3QgSW50
UG9pbnQmIHBhblN0YXJ0TW91c2VQb3NpdGlvbikKIHsKLSAgICBJbnRQb2ludCBwb3MgPSBkb2N1
bWVudCgpLT5mcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZG9jdW1lbnQoKS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkpOworICAgIGNvbnN0
IGludCBtYXhTcGVlZCA9IDIwOworICAgIGludCBvZmZzZXRYID0gMCwgb2Zmc2V0WSA9IDA7Cisg
ICAgY29uc3QgaW50IGljb25SYWRpdXMgPSA3OworICAgIGNvbnN0IGludCBzcGVlZFJlZHVjZXIg
PSA0OworCisgICAgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24gPSBkb2N1bWVudCgpLT5m
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKTsKKyAgICAvLyBX
ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjdXJyZW50IG1vdXNlIHBvc2l0aW9uIGlzIG91dCBvZiB0
aGUgd2luZG93LiBXaGVuIHRoZSBtb3VzZSBpcyBvdXQgb2YgdGhlIHdpbmRvdywgdGhlIHBvc2l0
aW9uIGlzICgtMSwtMSkKKyAgICBzdGF0aWMgSW50UG9pbnQgcHJldmlvdXNNb3VzZVBvc2l0aW9u
OworICAgIGlmIChjdXJyZW50TW91c2VQb3NpdGlvbi55KCkgPCAwKQorICAgICAgICBjdXJyZW50
TW91c2VQb3NpdGlvbiA9IHByZXZpb3VzTW91c2VQb3NpdGlvbjsKKyAgICBlbHNlCisgICAgICAg
IHByZXZpb3VzTW91c2VQb3NpdGlvbiA9IGN1cnJlbnRNb3VzZVBvc2l0aW9uOworCisgICAgaW50
IHlEZWx0YSA9IGN1cnJlbnRNb3VzZVBvc2l0aW9uLnkoKSAtIHBhblN0YXJ0TW91c2VQb3NpdGlv
bi55KCk7CisKKyAgIC8vIElmIHRoZSBwb2ludCBpcyB0b28gZmFyIGZyb20gdGhlIGNlbnRlciB3
ZSBsaW1pdCB0aGUgc3BlZWQKKyAgICB5RGVsdGEgPSBtYXgobWluKHlEZWx0YSwgbWF4U3BlZWQp
LCAtbWF4U3BlZWQpOworICAgIAorICAgIGlmKGFicyh5RGVsdGEpIDwgaWNvblJhZGl1cykgLy8g
YXQgdGhlIGNlbnRlciB3ZSBsZXQgdGhlIHNwYWNlIGZvciB0aGUgaWNvbgorICAgICAgICB5RGVs
dGEgPSAwOworCisgICAgaWYgKHlEZWx0YSA+IDApCisgICAgICAgIG9mZnNldFkgPSB2aWV3KCkt
PnZpZXdIZWlnaHQoKTsKKyAgIGVsc2UgaWYgKHlEZWx0YSA8IDApCisgICAgICAgeURlbHRhLS07
CisKKyAgICAvLyBMZXQncyBhdHRlbnVhdGUgdGhlIHNwZWVkCisgICAgeURlbHRhIC89IHNwZWVk
UmVkdWNlcjsKKworICAgIEludFBvaW50IHNjcm9sbFBvaW50KDAsMCk7CisgICAgc2Nyb2xsUG9p
bnQuc2V0WShvZmZzZXRZICsgeURlbHRhKTsKKyAgICBpbnQgbmV3T2Zmc2V0OworICAgIGlmIChu
ZXdPZmZzZXQgPSBzY3JvbGxUb3dhcmQoc2Nyb2xsUG9pbnQpIDwgMCkgCisgICAgICAgIHJldHVy
bjsKKworICAgIG1faW5BdXRvc2Nyb2xsID0gdHJ1ZTsKKyAgICBIVE1MU2VsZWN0RWxlbWVudCog
c2VsZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihub2RlKCkpOworICAgIHNl
bGVjdC0+dXBkYXRlTGlzdEJveFNlbGVjdGlvbighc2VsZWN0LT5tdWx0aXBsZSgpKTsKKyAgICBt
X2luQXV0b3Njcm9sbCA9IGZhbHNlOworfQogCitpbnQgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG93
YXJkKGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbikKK3sKICAgICBpbnQgcnggPSAwOwogICAg
IGludCByeSA9IDA7CiAgICAgYWJzb2x1dGVQb3NpdGlvbihyeCwgcnkpOwotICAgIGludCBvZmZz
ZXRYID0gcG9zLngoKSAtIHJ4OwotICAgIGludCBvZmZzZXRZID0gcG9zLnkoKSAtIHJ5OwotICAg
IAotICAgIGludCBlbmRJbmRleCA9IC0xOworICAgIGludCBvZmZzZXRYID0gZGVzdGluYXRpb24u
eCgpIC0gcng7CisgICAgaW50IG9mZnNldFkgPSBkZXN0aW5hdGlvbi55KCkgLSByeTsKKwogICAg
IGludCByb3dzID0gbnVtVmlzaWJsZUl0ZW1zKCk7CiAgICAgaW50IG9mZnNldCA9IG1faW5kZXhP
ZmZzZXQ7CisgICAgCiAgICAgaWYgKG9mZnNldFkgPCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KSAmJiBzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChvZmZzZXQgLSAxKSkKLSAgICAg
ICAgZW5kSW5kZXggPSBvZmZzZXQgLSAxOwotICAgIGVsc2UgaWYgKG9mZnNldFkgPiBoZWlnaHQo
KSAtIHBhZGRpbmdCb3R0b20oKSAtIGJvcmRlckJvdHRvbSgpICYmIHNjcm9sbFRvUmV2ZWFsRWxl
bWVudEF0TGlzdEluZGV4KG9mZnNldCArIHJvd3MpKQotICAgICAgICBlbmRJbmRleCA9IG9mZnNl
dCArIHJvd3MgLSAxOwotICAgIGVsc2UKLSAgICAgICAgZW5kSW5kZXggPSBsaXN0SW5kZXhBdE9m
ZnNldChvZmZzZXRYLCBvZmZzZXRZKTsKKyAgICAgICAgcmV0dXJuIG9mZnNldCAtIDE7CisgICAg
CisgICAgaWYgKG9mZnNldFkgPiBoZWlnaHQoKSAtIHBhZGRpbmdCb3R0b20oKSAtIGJvcmRlckJv
dHRvbSgpICYmIHNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KG9mZnNldCArIHJvd3Mp
KQorICAgICAgICByZXR1cm4gb2Zmc2V0ICsgcm93cyAtIDE7CisgICAgCisgICAgcmV0dXJuIGxp
c3RJbmRleEF0T2Zmc2V0KG9mZnNldFgsIG9mZnNldFkpOworfQogCit2b2lkIFJlbmRlckxpc3RC
b3g6OmF1dG9zY3JvbGwoKQoreworICAgIEludFBvaW50IHBvcyA9IGRvY3VtZW50KCktPmZyYW1l
KCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhkb2N1bWVudCgpLT5mcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKSk7CisKKyAgICBpbnQgZW5kSW5kZXggPSBz
Y3JvbGxUb3dhcmQocG9zKTsKICAgICBpZiAoZW5kSW5kZXggPj0gMCkgewogICAgICAgICBIVE1M
U2VsZWN0RWxlbWVudCogc2VsZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihu
b2RlKCkpOwogICAgICAgICBtX2luQXV0b3Njcm9sbCA9IHRydWU7CisKICAgICAgICAgaWYgKCFz
ZWxlY3QtPm11bHRpcGxlKCkpCiAgICAgICAgICAgICBzZWxlY3QtPnNldEFjdGl2ZVNlbGVjdGlv
bkFuY2hvckluZGV4KGVuZEluZGV4KTsKKwogICAgICAgICBzZWxlY3QtPnNldEFjdGl2ZVNlbGVj
dGlvbkVuZEluZGV4KGVuZEluZGV4KTsKICAgICAgICAgc2VsZWN0LT51cGRhdGVMaXN0Qm94U2Vs
ZWN0aW9uKCFzZWxlY3QtPm11bHRpcGxlKCkpOwogICAgICAgICBtX2luQXV0b3Njcm9sbCA9IGZh
bHNlOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCAgIChyZXZpc2lvbiAzNDY5NSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCAgICh3b3JraW5nIGNvcHkpCkBA
IC04MSw2ICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcEF1dG9zY3JvbGwoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRQYW5TY3JvbGwoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lk
IHBhblNjcm9sbChjb25zdCBJbnRQb2ludCYpOworCisgICAgaW50IHNjcm9sbFRvd2FyZChjb25z
dCBJbnRQb2ludCYpOyAvLyBSZXR1cm5zIHRoZSBuZXcgaW5kZXggb3IgLTEgaWYgbm8gc2Nyb2xs
IG9jY3VyZWQKKwogICAgIHZpcnR1YWwgaW50IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxMZWZ0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQg
c2Nyb2xsVG9wKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgIChy
ZXZpc2lvbiAzNDY5NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgICh3
b3JraW5nIGNvcHkpCkBAIC02NDIsNyArNjQyLDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnNjcm9s
bChTY3JvbGxEaXJlY3RpbwogCiBib29sIFJlbmRlck9iamVjdDo6c2hvdWxkQXV0b3Njcm9sbCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuICgoaXNSb290KCkpIHx8IChoYXNPdmVyZmxvd0NsaXAoKSAm
JiAoc2Nyb2xsc092ZXJmbG93KCkgfHwgKG5vZGUoKSAmJiBub2RlKCktPmlzQ29udGVudEVkaXRh
YmxlKCkpKSkpOworICAgIHJldHVybiBpc1Jvb3QoKSB8fCAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYg
KHNjcm9sbHNPdmVyZmxvdygpIHx8IChub2RlKCkgJiYgbm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpKSkpOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6YXV0b3Njcm9sbCgpCkBAIC02NTEsNiAr
NjUxLDEyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphdXRvc2Nyb2xsKCkKICAgICAgICAgbC0+YXV0
b3Njcm9sbCgpOwogfQogCit2b2lkIFJlbmRlck9iamVjdDo6cGFuU2Nyb2xsKGNvbnN0IEludFBv
aW50JiBzb3VyY2UpCit7CisgICAgaWYgKFJlbmRlckxheWVyKiBsID0gbGF5ZXIoKSkKKyAgICAg
ICAgbC0+cGFuU2Nyb2xsRnJvbVBvaW50KHNvdXJjZSk7Cit9CisKIGJvb2wgUmVuZGVyT2JqZWN0
OjpoYXNTdGF0aWNYKCkgY29uc3QKIHsKICAgICByZXR1cm4gKHN0eWxlKCktPmxlZnQoKS5pc0F1
dG8oKSAmJiBzdHlsZSgpLT5yaWdodCgpLmlzQXV0bygpKSB8fCBzdHlsZSgpLT5sZWZ0KCkuaXNT
dGF0aWMoKSB8fCBzdHlsZSgpLT5yaWdodCgpLmlzU3RhdGljKCk7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaCAgICAocmV2aXNpb24gMzQ2OTUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaCAgICAod29ya2luZyBjb3B5KQpAQCAtNjUzLDYgKzY1MywxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9zY3JvbGwoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgYXV0b3Njcm9sbCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQXV0b3Njcm9sbCgp
IHsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25zdCBJbnRQb2ludCYpOworICAg
IHZpcnR1YWwgdm9pZCBzdG9wUGFuU2Nyb2xsKCkgeyB9IAorCiAgICAgdmlydHVhbCBib29sIGlz
U2Nyb2xsYWJsZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBzZXZlbiBmdW5jdGlv
bnMgYXJlIHVzZWQgdG8gaW1wbGVtZW50IGNvbGxhcHNpbmcgbWFyZ2lucy4KSW5kZXg6IFdlYktp
dC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgIChy
ZXZpc2lvbiAzNDk2NCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMDgtMDctMDIgIE1heGltZSBCcml0dG8gIDxicml0dG9AYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgIAor
ICAgICAgICBBZGRlZCB0aGUgcGFubmluZyBpY29uIGluIHRoZSByZXNzb3VyY2VzLgorICAgICAg
ICBJdHMgbmFtZSBpcyBjb21wYXNzLnBuZyB0byBtYWtlIGEgZGlmZmVyZW5jZSB3aXRoIG1vdmVD
dXJzb3IucG5nIChmcm9tIHRoZSBXZWJDb3JlIHJlc3NvdXJjZXMpCisKKyAgICAgICAgKiBXZWJL
aXQudmNwcm9qL1dlYktpdC5yYzoKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdC52Y3By
b2o6CisgICAgICAgICogV2ViS2l0LnZjcHJvai9jb21wYXNzLnBuZzogQWRkZWQuCisgICAgICAg
ICogV2ViS2l0LnZjcHJvai9yZXNvdXJjZS5oOgorICAgICAgICAqIFdlYktpdERMTC5jcHA6Cisg
ICAgICAgIChsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKToKKwogMjAwOC0wNy0wMiAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIC0gdHJ5IHRvIGZpeCB0aGUgV2luZG93
cyBidWlsZApJbmRleDogV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViS2l0RExMLmNwcCAgICAocmV2aXNpb24gMzQ2OTUpCisrKyBXZWJLaXQvd2lu
L1dlYktpdERMTC5jcHAgICAgKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsOCBAQCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlCiAgICAgICAgIGlkciA9IElEUl9V
UkxfSUNPTjsKICAgICBlbHNlIGlmICghc3RyY21wKG5hbWUsICJudWxsUGx1Z2luIikpCiAgICAg
ICAgIGlkciA9IElEUl9OVUxMX1BMVUdJTjsKKyAgICBlbHNlIGlmICghc3RyY21wKG5hbWUsICJj
b21wYXNzIikpCisgICAgICAgIGlkciA9IElEUl9QQU5fU0NST0xMX0lDT047CiAgICAgZWxzZSBp
ZiAoIXN0cmNtcChuYW1lLCAiem9vbUluQ3Vyc29yIikpCiAgICAgICAgIGlkciA9IElEUl9aT09N
X0lOX0NVUlNPUjsKICAgICBlbHNlIGlmICghc3RyY21wKG5hbWUsICJ6b29tT3V0Q3Vyc29yIikp
CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnJjCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQucmMgIChyZXZpc2lvbiAzNDY5NSkKKysr
IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQucmMgICh3b3JraW5nIGNvcHkpCkBAIC02
OSw0ICs2OSw1IEBAIElEUl9ERUxFVEVfQlVUVE9OX1BSRVNTRUQgICAgICAgIFBORyAgICAKIElE
Ul9aT09NX0lOX0NVUlNPUiAgICAgICAgICAgICAgIFBORyAgICAgICAgICAgICAgICAgICAgICJ6
b29tSW5DdXJzb3IucG5nIgogSURSX1pPT01fT1VUX0NVUlNPUiAgICAgICAgICAgICAgUE5HICAg
ICAgICAgICAgICAgICAgICAgInpvb21PdXRDdXJzb3IucG5nIgogSURSX1ZFUlRJQ0FMX1RFWFRf
Q1VSU09SICAgICAgICAgUE5HICAgICAgICAgICAgICAgICAgICAgInZlcnRpY2FsVGV4dEN1cnNv
ci5wbmciCitJRFJfUEFOX1NDUk9MTF9JQ09OICAgICAgICAgICAgICBQTkcgICAgICAgICAgICAg
ICAgICAgICAiY29tcGFzcy5wbmciCiAKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9y
ZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9yZXNvdXJj
ZS5oIChyZXZpc2lvbiAzNDY5NSkKKysrIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9yZXNvdXJj
ZS5oICh3b3JraW5nIGNvcHkpCkBAIC0yLDIyICsyLDMwIEBACiAvLyBNaWNyb3NvZnQgVmlzdWFs
IEMrKyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlLgogLy8gVXNlZCBieSBXZWJLaXQucmMKIC8vCisj
ZGVmaW5lIF9fQlVJTERfTlVNQkVSX01JTk9SX18gICAgICAgICAgMAorI2RlZmluZSBfX0JVSUxE
X05VTUJFUl9WQVJJQU5UX18gICAgICAgIDAKICNkZWZpbmUgSURSX1dFQktJVCAgICAgICAgICAg
ICAgICAgICAgICAxCisjZGVmaW5lIEJVSUxEX05VTUJFUiAgICAgICAgICAgICAgICAgICAgMQor
I2RlZmluZSBfX1ZFUlNJT05fTUlOT1JfXyAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgX19WRVJT
SU9OX1RJTllfXyAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFZTX1ZFUlNJT05fSU5GTyAgICAg
ICAgICAgICAgICAgMQogI2RlZmluZSBJRFJfUkVTSVpFX0NPUk5FUiAgICAgICAgICAgICAgIDIK
ICNkZWZpbmUgSURSX01JU1NJTkdfSU1BR0UgICAgICAgICAgICAgICAzCisjZGVmaW5lIF9fVkVS
U0lPTl9NQUpPUl9fICAgICAgICAgICAgICAgMwogI2RlZmluZSBJRFJfVVJMX0lDT04gICAgICAg
ICAgICAgICAgICAgIDQKICNkZWZpbmUgSURSX05VTExfUExVR0lOICAgICAgICAgICAgICAgICA1
CiAjZGVmaW5lIElEUl9aT09NX0lOX0NVUlNPUiAgICAgICAgICAgICAgNgogI2RlZmluZSBJRFJf
Wk9PTV9PVVRfQ1VSU09SICAgICAgICAgICAgIDcKICNkZWZpbmUgSURSX1ZFUlRJQ0FMX1RFWFRf
Q1VSU09SICAgICAgICA4Ci0KLSNkZWZpbmUgQlVJTERfTlVNQkVSICAgICAgICAgICAgICAgICAg
ICAxCisjZGVmaW5lIElEUl9QQU5fU0NST0xMX0lDT04gICAgICAgICAgICAgMTIKKyNkZWZpbmUg
X19CVUlMRF9OVU1CRVJfTUFKT1JfXyAgICAgICAgICA1MjYKKyNkZWZpbmUgSURDX1NUQVRJQyAg
ICAgICAgICAgICAgICAgICAgICAtMQogCiAvLyBOZXh0IGRlZmF1bHQgdmFsdWVzIGZvciBuZXcg
b2JqZWN0cwogLy8gCiAjaWZkZWYgQVBTVFVESU9fSU5WT0tFRAogI2lmbmRlZiBBUFNUVURJT19S
RUFET05MWV9TWU1CT0xTCi0jZGVmaW5lIF9BUFNfTkVYVF9SRVNPVVJDRV9WQUxVRSAgICAgICAg
NgorI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDEzCiAjZGVmaW5lIF9B
UFNfTkVYVF9DT01NQU5EX1ZBTFVFICAgICAgICAgNDAwMDEKICNkZWZpbmUgX0FQU19ORVhUX0NP
TlRST0xfVkFMVUUgICAgICAgICAxMDAwCiAjZGVmaW5lIF9BUFNfTkVYVF9TWU1FRF9WQUxVRSAg
ICAgICAgICAgMTAxCkluZGV4OiBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovY29tcGFzcy5wbmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4K
c3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL2NvbXBhc3MucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFt
ZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0KCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFB
QUFmOC85aEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBCllVbEVRVlI0bkt4VHl3b0FJ
QXdhOVAvZmJCQjBhQThYWmVDcGRMbzJBMkFFKzVSdktObHNMRENSbHR5SlhKR1pTSlVaU1lUakto
UHcKVmJMS3dVblZzTktCRjZXWk93U3Jyd0xmRVNSTmxIeWpaSkFrb3l4WnB1dDFuZ0FBQVAvL0F3
QTZBS1piekF1a1dBQUFBQUJKUlU1RQpya0pnZ2c9PQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22068</attachid>
            <date>2008-07-03 12:02:46 -0700</date>
            <delta_ts>2008-07-08 11:24:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>mbritto_bug16424_20080703.txt</filename>
            <type>text/plain</type>
            <size>27594</size>
            <attacher name="Maxime Britto">maxime.britto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgKHJldmlzaW9uIDM0OTY0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cgICAod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQ3IEBACisyMDA4LTA3LTAzICBNYXhpbWUgQnJpdHRvICA8YnJpdHRvQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIyNworICAgICAgICBB
ZGQgdGhlIG1pZGRsZSBjbGljayBwYW5uaW5nIGZlYXR1cmUgdG8gYm90aCBtYWMgYW5kIHdpbmRv
d3MgcmVsZWFzZS4KKyAgICAgICAgTWFudWFsIHRlc3QgaXMgaW5jbHVkZWQgaW4gdGhlIHBhdGNo
LgorCisgICAgICAgICogbWFudWFsLXRlc3RzL3BhblNjcm9sbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBtYW51YWwtdGVzdHMvcmVzb3VyY2VzL2JpZy1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZUF1dG9zY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphdXRvc2Ny
b2xsVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnN0b3BBdXRv
c2Nyb2xsVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxWaWV3
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRl
OjpTY3JvbGxWaWV3UHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3Jv
bGxWaWV3UHJpdmF0ZTo6c2Nyb2xsQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OnVwZGF0ZVdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xs
QnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cHJpbnRQYW5TY3JvbGxJY29uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnJlbW92ZVBhblNjcm9sbEljb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFuU2Nyb2xs
RnJvbVBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpwYW5TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6c2Ny
b2xsVG93YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0Qm94OjpzaG91bGRQYW5TY3JvbGwpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzaG91bGRB
dXRvc2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cGFuU2Nyb2xsKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OnN0b3BQYW5TY3JvbGwpOgorCiAyMDA4LTA3LTAyICBCZXRoIERha2luICA8
YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IFdl
YkNvcmUvbWFudWFsLXRlc3RzL3BhblNjcm9sbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bWFudWFsLXRlc3RzL3BhblNjcm9sbC5odG1sIChyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51
YWwtdGVzdHMvcGFuU2Nyb2xsLmh0bWwgKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICJodHRw
Oi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxodG1sIGxhbmc9ImVuIj4KKzxo
ZWFkPgorPC9oZWFkPgorPGJvZHk+CisgICA8cD48Yj5CVUcgSUQ6PC9iPiA8YSBocmVmPSJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjQiPkJ1Z3ppbGxhIEJ1ZyAx
NjQyNDwvYT4gRW5hYmxlIGF1dG8tc2Nyb2xsIGluIHBhZ2UgYnkgbW91c2UgbWlkZGxlIGNsaWNr
PC9wPgorCisgICA8cCBpZD0idGVzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6c2t5Ymx1ZTsg
cGFkZGluZzozcHg7Ij48Yj5TVEVQUyBUTyBURVNUOjwvYj4gCisgICAgICAgRm9yIGVhY2ggaWZy
YW1lIDogTWlkZGxlLWNsaWNrIHdpdGhpbiB0aGUgaWZyYW1lIGFuZCB0aGVuIG1vdmUgeW91ciBt
b3VzZS48L3A+CisKKyAgICAgICA8cCBpZD0ic3VjY2VzcyIgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6cGFsZWdyZWVuOyBwYWRkaW5nOjNweDsiPjxiPlRFU1QgUEFTUzo8L2I+IAorICAgICAgICAg
ICBGb3IgZWFjaCBpZnJhbWUsIHlvdSBzaG91bGQgc2VlIHRoZSBzY3JvbGwgYmFycyBmb2xsb3cg
eW91ciBtb3ZlcyBhbmQgZXZlbiByZWFjaCB0aGUgZW5kIG9mIHRoZSBwYWdlIGluY2x1ZGVkIGlu
IHRoZSBpZnJhbWUuCisgICAgICAgPC9wPgorCisgICAgICAgPHAgaWQ9ImZhaWx1cmUiIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiNGRjMzMDA7IHBhZGRpbmc6M3B4OyI+PGI+VEVTVCBGQUlMOjwv
Yj4gIAorICAgICAgICAgICBUaGUgc2Nyb2xsIGRvZXNuJ3QgZm9sbG93IHRoZSBtb3VzZSBtb3Zl
cyBvciBkb2Vzbid0IGdldCBhY3RpdmF0ZWQuCisgICAgICAgPC9wPgorCisgICAgICAgPGRpdiBz
dHlsZT0iaGVpZ2h0PTIwMDBweDt3aWR0aD0yMDAwcHgiPgorICAgICAgICAgICA8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL2JpZy1wYWdlLmh0bWwiPjwvaWZyYW1lPgorICAgICAgICAgICA8aWZyYW1l
IHNyYz0icmVzb3VyY2VzL2JpZy1wYWdlLmh0bWwiIHNjcm9sbGluZz48L2lmcmFtZT4KKyAgICAg
ICAgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9iaWctcGFnZS5odG1sIiBzY3JvbGxpbmc9IiI+
PC9pZnJhbWU+CisgICAgICAgICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvYmlnLXBhZ2UuaHRt
bCIgc2Nyb2xsaW5nPSJhdXRvIj48L2lmcmFtZT4KKyAgICAgICAgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9iaWctcGFnZS5odG1sIiBzY3JvbGxpbmc9InllcyI+PC9pZnJhbWU+CisgICAgICAg
ICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCIgc2Nyb2xsaW5nPSJubyI+
PC9pZnJhbWU+CisgICAgICAgICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvYmlnLXBhZ2UuaHRt
bCIgc2Nyb2xsaW5nPSJib2d1cyI+PC9pZnJhbWU+CisgICAgICAgICAgIDxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCIgc2Nyb2xsaW5nPSIxMjM0Ij48L2lmcmFtZT4KKyAgICAg
ICA8L2Rpdj4KKworICAgPC9ib2R5PgorICAgPC9odG1sPgpJbmRleDogV2ViQ29yZS9tYW51YWwt
dGVzdHMvcmVzb3VyY2VzL2JpZy1wYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51
YWwtdGVzdHMvcmVzb3VyY2VzL2JpZy1wYWdlLmh0bWwgICAgKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hbnVhbC10ZXN0cy9yZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCAgICAocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyIEBACis8cD5UaGlzIHBhZ2UgaXMgbGFyZ2UgZW5vdWdoIHRvIG5lZWQgdG8g
YmUgc2Nyb2xsZWQgaW4gYSAyMDB4MjAwIGZyYW1lLjwvcD4KKzxkaXYgc3R5bGU9IndpZHRoOiA0
MDBweDsgaGVpZ2h0OiA0MDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZSI+PC9kaXY+CkluZGV4
OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcCAgIChyZXZpc2lvbiAzNDY5NSkKKysrIFdlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwICAgKHdvcmtpbmcgY29weSkKQEAgLTk5LDkgKzk5LDExIEBAIEV2ZW50
SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICAgICAsIG1fbW91c2VEb3duTWF5
U3RhcnREcmFnKGZhbHNlKQogICAgICwgbV9tb3VzZURvd25XYXNTaW5nbGVDbGlja0luU2VsZWN0
aW9uKGZhbHNlKQogICAgICwgbV9iZWdhblNlbGVjdGluZ1RleHQoZmFsc2UpCisgICAgLCBtX3Bh
blNjcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2hvdmVyVGltZXIodGhpcywgJkV2ZW50
SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKQogICAgICwgbV9hdXRvc2Nyb2xsVGltZXIodGhpcywg
JkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQpCiAgICAgLCBtX2F1dG9zY3JvbGxS
ZW5kZXJlcigwKQorICAgICwgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyhmYWxzZSkKICAgICAsIG1f
bW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKGZhbHNlKQogICAgICwgbV9tb3VzZURvd25XYXNJ
blN1YmZyYW1lKGZhbHNlKQogI2lmIEVOQUJMRShTVkcpCkBAIC0zNzAsMTQgKzM3MiwxNiBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlCiAKICAgICBtX21vdXNlRG93
bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogCi0gICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRBdXRv
c2Nyb2xsKSB7ICAgICAgICAgICAgCisgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Ny
b2xsICYmICFtX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsgICAgICAgICAgICAKICAgICAgICAgLy8g
SWYgdGhlIHNlbGVjdGlvbiBpcyBjb250YWluZWQgaW4gYSBsYXllciB0aGF0IGNhbiBzY3JvbGws
IHRoYXQgbGF5ZXIgc2hvdWxkIGhhbmRsZSB0aGUgYXV0b3Njcm9sbAogICAgICAgICAvLyBPdGhl
cndpc2UsIGxldCB0aGUgYnJpZGdlIGhhbmRsZSBpdCBzbyB0aGUgdmlldyBjYW4gc2Nyb2xsIGl0
c2VsZi4KICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRhcmdldE5vZGUtPnJlbmRl
cmVyKCk7CiAgICAgICAgIHdoaWxlIChyZW5kZXJlciAmJiAhcmVuZGVyZXItPnNob3VsZEF1dG9z
Y3JvbGwoKSkKICAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwotICAg
ICAgICBpZiAocmVuZGVyZXIpCisgICAgICAgIGlmIChyZW5kZXJlcikgeworICAgICAgICAgICAg
bV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7CiAgICAgICAgICAgICBoYW5kbGVBdXRvc2Ny
b2xsKHJlbmRlcmVyKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB1cGRhdGVTZWxlY3Rp
b25Gb3JNb3VzZURyYWcodGFyZ2V0Tm9kZSwgZXZlbnQubG9jYWxQb2ludCgpKTsKQEAgLTQ4OSw3
ICs0OTMsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VVcChjb25zdCBNCiAKIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKLSAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7
CisgICAgaWYgKCFtX3BhblNjcm9sbEluUHJvZ3Jlc3MpCisgICAgICAgIHN0b3BBdXRvc2Nyb2xs
VGltZXIoKTsKIAogICAgIGlmIChoYW5kbGVNb3VzZVVwKGV2ZW50KSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC01MzUsMTcgKzU0MCwzNCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6aGFuZGxlQXV0
b3Njcm9sbChSZW5kCiAgICAgaWYgKG1fYXV0b3Njcm9sbFRpbWVyLmlzQWN0aXZlKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBzZXRBdXRvc2Nyb2xsUmVuZGVyZXIocmVuZGVyZXIpOworCisgICAg
aWYgKG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAgICBtX3BhblNjcm9sbFN0YXJ0UG9z
ID0gY3VycmVudE1vdXNlUG9zaXRpb24oKTsKKyAgICAgICAgbV9mcmFtZS0+dmlldygpLT5wcmlu
dFBhblNjcm9sbEljb24obV9wYW5TY3JvbGxTdGFydFBvcyk7CisgICAgfQorCiAgICAgc3RhcnRB
dXRvc2Nyb2xsVGltZXIoKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxUaW1l
ckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKQogewotICAgIGlmICghbV9tb3VzZVByZXNzZWQp
IHsKKyAgICBSZW5kZXJPYmplY3QqIHIgPSBhdXRvc2Nyb2xsUmVuZGVyZXIoKTsKKyAgICBpZiAo
IXIpIHsKICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmIChSZW5kZXJPYmplY3QqIHIgPSBhdXRvc2Nyb2xsUmVuZGVyZXIoKSkKKwor
ICAgIGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7CisgICAgICAgIGlmICghbV9tb3VzZVBy
ZXNzZWQpIHsKKyAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICAgICAgICAg
IG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogICAgICAgICByLT5hdXRvc2Nyb2xsKCk7CisgICAgfQorCisgICAgaWYgKG1fcGFu
U2Nyb2xsSW5Qcm9ncmVzcykKKyAgICAgICAgci0+cGFuU2Nyb2xsKG1fcGFuU2Nyb2xsU3RhcnRQ
b3MpOwogfQogCiBSZW5kZXJPYmplY3QqIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVy
KCkgY29uc3QKQEAgLTYwOSwxNiArNjMxLDI4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydEF1
dG9zY3JvbGxUaW1lcigKIAogdm9pZCBFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIo
Ym9vbCByZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpCiB7Ci0gICAgaWYgKG1fbW91c2VEb3duV2Fz
SW5TdWJmcmFtZSkgewotICAgICAgICBpZiAoRnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JU
YXJnZXROb2RlKG1fbW91c2VQcmVzc05vZGUuZ2V0KCkpKQotICAgICAgICAgICAgc3ViZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKHJlbmRlcmVySXNCZWluZ0Rlc3Ry
b3llZCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykg
eworICAgICAgICBpZiAobV9tb3VzZURvd25XYXNJblN1YmZyYW1lKSB7CisgICAgICAgICAgICBp
ZiAoRnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JUYXJnZXROb2RlKG1fbW91c2VQcmVzc05v
ZGUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c3Rv
cEF1dG9zY3JvbGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG9zY3JvbGxSZW5kZXJlcigp
KSB7CisgICAgICAgIGlmICghcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkICYmIG1fYXV0b3Njcm9s
bEluUHJvZ3Jlc3MpCisgICAgICAgICAgICBhdXRvc2Nyb2xsUmVuZGVyZXIoKS0+c3RvcEF1dG9z
Y3JvbGwoKTsKKyAgICAgICAgaWYgKG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAgICAg
ICAgYXV0b3Njcm9sbFJlbmRlcmVyKCktPnN0b3BQYW5TY3JvbGwoKTsKKyAgICAgICAgICAgIG1f
ZnJhbWUtPnZpZXcoKS0+cmVtb3ZlUGFuU2Nyb2xsSWNvbigpOworICAgICAgICB9CisKKyAgICAg
ICAgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKDApOwogICAgIH0KIAotICAgIGlmICghcmVuZGVyZXJJ
c0JlaW5nRGVzdHJveWVkICYmIGF1dG9zY3JvbGxSZW5kZXJlcigpKQotICAgICAgICBhdXRvc2Ny
b2xsUmVuZGVyZXIoKS0+c3RvcEF1dG9zY3JvbGwoKTsKLSAgICBzZXRBdXRvc2Nyb2xsUmVuZGVy
ZXIoMCk7CiAgICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RvcCgpOworICAgIG1fYXV0b3Njcm9sbElu
UHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBtX3BhblNjcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKIH0K
IAogTm9kZSogRXZlbnRIYW5kbGVyOjptb3VzZVByZXNzTm9kZSgpIGNvbnN0CkBAIC04NTgsNiAr
ODkyLDI0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKICAgICAg
ICAgaW52YWxpZGF0ZUNsaWNrKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAKKyNp
ZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShXWCkgJiYgUExBVEZPUk0oV0lOX09TKSkKKyAg
ICBpZiAobV9wYW5TY3JvbGxJblByb2dyZXNzIHx8IG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MpIHsK
KyAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOworICAgIH0gZWxzZSBpZiAobW91c2VFdmVu
dC5idXR0b24oKSA9PSBNaWRkbGVCdXR0b24gJiYgIW1ldi5pc092ZXJMaW5rKCkpIHsKKyAgICAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1ldi50YXJnZXROb2RlKCktPnJlbmRlcmVyKCk7
CisKKyAgICAgICAgd2hpbGUgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+c2hvdWxkQXV0b3Njcm9s
bCgpKQorICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CisKKyAgICAg
ICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICBtX3BhblNjcm9sbEluUHJvZ3Jlc3MgPSB0
cnVlOworICAgICAgICAgICAgaGFuZGxlQXV0b3Njcm9sbChyZW5kZXJlcik7CisgICAgICAgICAg
ICBpbnZhbGlkYXRlQ2xpY2soKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICB9CisjZW5kaWYKIAogICAgIG1fY2xpY2tDb3VudCA9IG1vdXNlRXZlbnQuY2xpY2tDb3Vu
dCgpOwogICAgIG1fY2xpY2tOb2RlID0gbWV2LnRhcmdldE5vZGUoKTsKSW5kZXg6IFdlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmggKHJldmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oICh3
b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRs
ZUF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxUaW1l
cigpOwogICAgIHZvaWQgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCopOwotCiAg
ICAgdm9pZCBhdXRvc2Nyb2xsVGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRsZXI+Kik7CiAKICAg
ICB2b2lkIGludmFsaWRhdGVDbGljaygpOwpAQCAtMjkxLDEwICsyOTAsMTQgQEAgcHJpdmF0ZToK
IAogICAgIEludFBvaW50IG1fZHJhZ1N0YXJ0UG9zOwogCisgICBJbnRQb2ludCBtX3BhblNjcm9s
bFN0YXJ0UG9zOworICAgIGJvb2wgbV9wYW5TY3JvbGxJblByb2dyZXNzOworCiAgICAgVGltZXI8
RXZlbnRIYW5kbGVyPiBtX2hvdmVyVGltZXI7CiAgICAgCiAgICAgVGltZXI8RXZlbnRIYW5kbGVy
PiBtX2F1dG9zY3JvbGxUaW1lcjsKICAgICBSZW5kZXJPYmplY3QqIG1fYXV0b3Njcm9sbFJlbmRl
cmVyOworICAgIGJvb2wgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzczsKICAgICBib29sIG1fbW91c2VE
b3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIGJvb2wgbV9tb3VzZURvd25XYXNJblN1YmZyYW1l
OwogI2lmIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgIChyZXZpc2lvbiAz
NDY5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oICAgKHdvcmtpbmcgY29weSkK
QEAgLTg4LDggKzg4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhZGRD
aGlsZChXaWRnZXQqKTsKICAgICAgICAgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQqKTsKIAorICAg
ICAgICB2b2lkIHByaW50UGFuU2Nyb2xsSWNvbihjb25zdCBJbnRQb2ludCYpOworICAgICAgICB2
b2lkIHJlbW92ZVBhblNjcm9sbEljb24oKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzaXpl
Q29udGVudHMoaW50IHcsIGludCBoKTsKICAgICAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25z
dCBJbnRSZWN0JiwgYm9vbCBub3cgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgdXBkYXRlV2luZG93
UmVjdChjb25zdCBJbnRSZWN0JiwgYm9vbCBub3cgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgdXBk
YXRlKCk7CiAKICAgICAgICAgLy8gRXZlbnQgY29vcmRpbmF0ZXMgYXJlIGFzc3VtZWQgdG8gYmUg
aW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgYSB3aW5kb3cgdGhhdCBjb250YWlucwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAgIChyZXZpc2lvbiAzNDY5NSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwICAod29ya2luZyBjb3B5KQpA
QCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9oU2Nyb2xsYmFyTW9kZShTY3Jv
bGxiYXJBdXRvKQogICAgICAgICAsIG1fdmlzaWJsZShmYWxzZSkKICAgICAgICAgLCBtX2F0dGFj
aGVkVG9XaW5kb3coZmFsc2UpCisgICAgICAgICwgbV9wYW5TY3JvbGxJY29uUG9pbnQoMCwwKQor
ICAgICAgICAsIG1fZHJhd1BhblNjcm9sbEljb24oZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAt
OTksOCArMTAxLDEyIEBAIHB1YmxpYzoKICAgICBIYXNoU2V0PFdpZGdldCo+IG1fY2hpbGRyZW47
CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBtX2F0dGFjaGVkVG9XaW5kb3c7CisgICAg
SW50UG9pbnQgbV9wYW5TY3JvbGxJY29uUG9pbnQ7CisgICAgYm9vbCBtX2RyYXdQYW5TY3JvbGxJ
Y29uOwogfTsKIAorY29uc3QgaW50IHBhbkljb25TaXplTGVuZ3RoID0gMjA7CisKIHZvaWQgU2Ny
b2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGU6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9v
bCBoYXNCYXIpCiB7CiAgICAgaWYgKFNjcm9sbGJhcjo6aGFzUGxhdGZvcm1TY3JvbGxiYXJzKCkp
IHsKQEAgLTE2MSw2ICsxNjcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0
ZTo6c2NybwogICAgIFJFQ1QgciA9IHVwZGF0ZVJlY3Q7CiAgICAgOjpJbnZhbGlkYXRlUmVjdChj
b250YWluaW5nV2luZG93SGFuZGxlLCAmciwgZmFsc2UpOwogCisgICAgaWYgKG1fZHJhd1BhblNj
cm9sbEljb24pIHsKKyAgICAgICAgaW50IHBhbkljb25EaXJ0eVNxdWFyZVNpemVMZW5ndGggPSAy
ICogKHBhbkljb25TaXplTGVuZ3RoICsgbWF4KGFicyhzY3JvbGxEZWx0YS53aWR0aCgpKSwgYWJz
KHNjcm9sbERlbHRhLmhlaWdodCgpKSkpOyAvLyBXZSBvbmx5IHdhbnQgdG8gcmVwYWludCB3aGF0
J3MgbmVjZXNzYXJ5CisgICAgICAgIEludFBvaW50IHBhbkljb25EaXJ0eVNxdWFyZUxvY2F0aW9u
ID0gSW50UG9pbnQobV9wYW5TY3JvbGxJY29uUG9pbnQueCgpIC0gKHBhbkljb25EaXJ0eVNxdWFy
ZVNpemVMZW5ndGggLyAyKSwgbV9wYW5TY3JvbGxJY29uUG9pbnQueSgpIC0gKHBhbkljb25EaXJ0
eVNxdWFyZVNpemVMZW5ndGggLyAyKSk7CisgICAgICAgIEludFJlY3QgcGFuU2Nyb2xsSWNvbkRp
cnR5UmVjdCA9IEludFJlY3QocGFuSWNvbkRpcnR5U3F1YXJlTG9jYXRpb24gLCBJbnRTaXplKHBh
bkljb25EaXJ0eVNxdWFyZVNpemVMZW5ndGgsIHBhbkljb25EaXJ0eVNxdWFyZVNpemVMZW5ndGgp
KTsKKyAgICAgICAgCisgICAgICAgIG1fdmlldy0+dXBkYXRlV2luZG93UmVjdChwYW5TY3JvbGxJ
Y29uRGlydHlSZWN0KTsKKyAgICB9CisKICAgICBpZiAoIW1faGFzU3RhdGljQmFja2dyb3VuZCkg
Ly8gVGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2ViVmlldyB3aW5kb3cKICAgICAg
ICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZyYW1lcyB3aXRob3V0IGJsaXR0aW5n
IG92ZXJsYXBwaW5nIGNvbnRlbnQKICAgICAgICBtX3ZpZXctPnNjcm9sbEJhY2tpbmdTdG9yZSgt
c2Nyb2xsRGVsdGEud2lkdGgoKSwgLXNjcm9sbERlbHRhLmhlaWdodCgpLCBzY3JvbGxWaWV3UmVj
dCwgY2xpcFJlY3QpOwpAQCAtMjMwLDEzICsyNDQsMTggQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRh
dGVDb250ZW50cyhjb25zdCBJbgogICAgIEludFJlY3QgY29udGFpbmluZ1dpbmRvd1JlY3QgPSBy
ZWN0OwogICAgIGNvbnRhaW5pbmdXaW5kb3dSZWN0LnNldExvY2F0aW9uKHdpbmRvd1BvaW50KTsK
IAotICAgIFJFQ1QgY29udGFpbmluZ1dpbmRvd1JlY3RXaW4gPSBjb250YWluaW5nV2luZG93UmVj
dDsKKyAgICB1cGRhdGVXaW5kb3dSZWN0KGNvbnRhaW5pbmdXaW5kb3dSZWN0LCBub3cpOworfQor
Cit2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVdpbmRvd1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwg
Ym9vbCBub3cpCit7CisgICAgUkVDVCBjb250YWluaW5nV2luZG93UmVjdFdpbiA9IHJlY3Q7CiAg
ICAgSFdORCBjb250YWluaW5nV2luZG93SGFuZGxlID0gY29udGFpbmluZ1dpbmRvdygpOwogCiAg
ICAgOjpJbnZhbGlkYXRlUmVjdChjb250YWluaW5nV2luZG93SGFuZGxlLCAmY29udGFpbmluZ1dp
bmRvd1JlY3RXaW4sIGZhbHNlKTsKLQorICAgICAgCiAgICAgLy8gQ2FjaGUgdGhlIGRpcnR5IHNw
b3QuCi0gICAgYWRkVG9EaXJ0eVJlZ2lvbihjb250YWluaW5nV2luZG93UmVjdCk7CisgICAgYWRk
VG9EaXJ0eVJlZ2lvbihyZWN0KTsKIAogICAgIGlmIChub3cpCiAgICAgICAgIDo6VXBkYXRlV2lu
ZG93KGNvbnRhaW5pbmdXaW5kb3dIYW5kbGUpOwpAQCAtMzY1LDEwICszODQsMTAgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpzY3JvbGxCeShpbnQgZHgsIGludCBkeQogICAgIEludFNpemUgc2Nyb2xsT2Zm
c2V0ID0gbV9kYXRhLT5tX3Njcm9sbE9mZnNldDsKICAgICBJbnRTaXplIG5ld1Njcm9sbE9mZnNl
dCA9IHNjcm9sbE9mZnNldCArIEludFNpemUoZHgsIGR5KS5zaHJ1bmtUbyhtYXhpbXVtU2Nyb2xs
KCkpOwogICAgIG5ld1Njcm9sbE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0KKyAgICAK
ICAgICBpZiAobmV3U2Nyb2xsT2Zmc2V0ID09IHNjcm9sbE9mZnNldCkKICAgICAgICAgcmV0dXJu
OwotCisgICAgCiAgICAgdXBkYXRlU2Nyb2xsYmFycyhuZXdTY3JvbGxPZmZzZXQpOwogfQogCkBA
IC02MDAsNiArNjE5LDIxIEBAIHZvaWQgU2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0KiBj
aGkKICAgICBtX2RhdGEtPm1fY2hpbGRyZW4ucmVtb3ZlKGNoaWxkKTsKIH0KIAordm9pZCBTY3Jv
bGxWaWV3OjpwcmludFBhblNjcm9sbEljb24oY29uc3QgSW50UG9pbnQmIGljb25Qb3NpdGlvbikK
K3sKKyAgICBtX2RhdGEtPm1fZHJhd1BhblNjcm9sbEljb24gPSB0cnVlOyAgICAKKyAgICBtX2Rh
dGEtPm1fcGFuU2Nyb2xsSWNvblBvaW50ID0gSW50UG9pbnQoaWNvblBvc2l0aW9uLngoKSAtIHBh
bkljb25TaXplTGVuZ3RoIC8gMiAsIGljb25Qb3NpdGlvbi55KCkgLSBwYW5JY29uU2l6ZUxlbmd0
aCAvIDIpIDsKKworICAgIHVwZGF0ZVdpbmRvd1JlY3QoSW50UmVjdChtX2RhdGEtPm1fcGFuU2Ny
b2xsSWNvblBvaW50LCBJbnRTaXplKHBhbkljb25TaXplTGVuZ3RoLHBhbkljb25TaXplTGVuZ3Ro
KSksIHRydWUpOyAgICAKK30KKwordm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVQYW5TY3JvbGxJY29u
KCkKK3sKKyAgICBtX2RhdGEtPm1fZHJhd1BhblNjcm9sbEljb24gPSBmYWxzZTsgCisKKyAgICB1
cGRhdGVXaW5kb3dSZWN0KEludFJlY3QobV9kYXRhLT5tX3BhblNjcm9sbEljb25Qb2ludCwgSW50
U2l6ZShwYW5JY29uU2l6ZUxlbmd0aCwgcGFuSWNvblNpemVMZW5ndGgpKSwgdHJ1ZSk7Cit9CisK
IHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgaGVyZSBzbyB3ZSBk
b24ndCBoYXZlIHRvIGZvcmsgRnJhbWVWaWV3LmgvLmNwcC4KQEAgLTY2MCw2ICs2OTQsMTQgQEAg
dm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIAogCiAgICAgICAgIGNvbnRl
eHQtPnJlc3RvcmUoKTsKICAgICB9CisKKyAgICAvL1BhaW50IHRoZSBwYW5TY3JvbGwgSWNvbgor
ICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNvbjsKKyAgICBpZiAobV9kYXRhLT5tX2RyYXdQ
YW5TY3JvbGxJY29uKSB7CisgICAgICAgIGlmICghcGFuU2Nyb2xsSWNvbikKKyAgICAgICAgICAg
IHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImNvbXBhc3MiKTsK
KyAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKHBhblNjcm9sbEljb24sIG1fZGF0YS0+bV9wYW5T
Y3JvbGxJY29uUG9pbnQpOworICAgIH0KIH0KIAogdm9pZCBTY3JvbGxWaWV3Ojp0aGVtZUNoYW5n
ZWQoKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCAgIChyZXZpc2lvbiAzNDY5NSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCAgICh3b3JraW5nIGNvcHkpCkBA
IC02OTAsNiArNjkwLDUyIEBAIFJlbmRlckxheWVyOjpjb252ZXJ0VG9MYXllckNvb3Jkcyhjb25z
dCAKICAgICB5ICs9IHlQb3MoKTsKIH0KIAordm9pZCBSZW5kZXJMYXllcjo6cGFuU2Nyb2xsRnJv
bVBvaW50KGNvbnN0IEludFBvaW50JiBzb3VyY2VQb2ludCkgCit7CisgICBjb25zdCBpbnQgc2Vu
c2l0aXZpdHlTY2FsZSA9IDI1MDsKKyAgICBjb25zdCBpbnQgaWNvblJhZGl1cyA9IDEwOworICAg
IGNvbnN0IGludCBzcGVlZFJlZHVjZXIgPSAzOworICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVy
KCktPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9uID0gZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpOworICAgIAorICAgIC8vIFdlIG5lZWQg
dG8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgbW91c2UgcG9zaXRpb24gaXMgb3V0IG9mIHRoZSB3aW5k
b3cuIFdoZW4gdGhlIG1vdXNlIGlzIG91dCBvZiB0aGUgd2luZG93LCB0aGUgcG9zaXRpb24gaXMg
aW5jb2hlcmVudAorICAgIHN0YXRpYyBJbnRQb2ludCBwcmV2aW91c01vdXNlUG9zaXRpb247Cisg
ICAgaWYgKGN1cnJlbnRNb3VzZVBvc2l0aW9uLngoKSA8IDAgfHwgY3VycmVudE1vdXNlUG9zaXRp
b24ueSgpIDwgMCkKKyAgICAgICAgY3VycmVudE1vdXNlUG9zaXRpb24gPSBwcmV2aW91c01vdXNl
UG9zaXRpb247CisgICAgZWxzZQorICAgICAgICBwcmV2aW91c01vdXNlUG9zaXRpb24gPSBjdXJy
ZW50TW91c2VQb3NpdGlvbjsKKworICAgIGludCB4RGVsdGEgPSBjdXJyZW50TW91c2VQb3NpdGlv
bi54KCkgLSBzb3VyY2VQb2ludC54KCk7CisgICAgaW50IHlEZWx0YSA9IGN1cnJlbnRNb3VzZVBv
c2l0aW9uLnkoKSAtIHNvdXJjZVBvaW50LnkoKTsKKyAgICAKKyAgIC8vIElmIHRoZSBwb2ludCBp
cyB0b28gZmFyIGZyb20gdGhlIGNlbnRlciB3ZSBsaW1pdCB0aGUgc3BlZWQKKyAgICB4RGVsdGEg
PSBtYXgobWluKHhEZWx0YSwgc2Vuc2l0aXZpdHlTY2FsZSksIC1zZW5zaXRpdml0eVNjYWxlKTsK
KyAgICB5RGVsdGEgPSBtYXgobWluKHlEZWx0YSwgc2Vuc2l0aXZpdHlTY2FsZSksIC1zZW5zaXRp
dml0eVNjYWxlKTsKKworICAgaWYoYWJzKHhEZWx0YSkgPCBpY29uUmFkaXVzKSAvLyBhdCB0aGUg
Y2VudGVyIHdlIGxldCB0aGUgc3BhY2UgZm9yIHRoZSBpY29uCisgICAgICAgIHhEZWx0YSA9IDA7
CisgICAgaWYoYWJzKHlEZWx0YSkgPCBpY29uUmFkaXVzKQorICAgICAgICB5RGVsdGEgPSAwOwor
CisgICAgLy8gTGV0J3MgYXR0ZW51YXRlIHRoZSBzcGVlZAorICAgIHhEZWx0YSAvPSBzcGVlZFJl
ZHVjZXI7CisgICAgeURlbHRhIC89IHNwZWVkUmVkdWNlcjsKKworICAgIGJvb2wgcmVzdHJpY3Rl
ZEJ5TGluZUNsYW1wID0gZmFsc2U7CisgICAgaWYgKG1fb2JqZWN0LT5wYXJlbnQoKSkKKyAgICAg
ICAgcmVzdHJpY3RlZEJ5TGluZUNsYW1wID0gbV9vYmplY3QtPnBhcmVudCgpLT5zdHlsZSgpLT5s
aW5lQ2xhbXAoKSA+PSAwOworCisgICAgaWYgKG1fb2JqZWN0LT5oYXNPdmVyZmxvd0NsaXAoKSAm
JiAhcmVzdHJpY3RlZEJ5TGluZUNsYW1wKSB7CisgICAgICAgIGludCBuZXdPZmZzZXRYID0gbWF4
KDAsIHNjcm9sbFhPZmZzZXQoKSArIHhEZWx0YSk7CisgICAgICAgIGludCBuZXdPZmZzZXRZID0g
bWF4KDAsIHNjcm9sbFlPZmZzZXQoKSArIHlEZWx0YSk7CisgICAgICAgIHNjcm9sbFRvT2Zmc2V0
KG5ld09mZnNldFgsIG5ld09mZnNldFkpOyAKKyAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT52aWV3
KCktPmZyYW1lVmlldygpKQorICAgICAgICBtX29iamVjdC0+dmlldygpLT5mcmFtZVZpZXcoKS0+
c2Nyb2xsQnkoeERlbHRhLCB5RGVsdGEpOworfQorCiB2b2lkCiBSZW5kZXJMYXllcjo6c2Nyb2xs
T2Zmc2V0KGludCYgeCwgaW50JiB5KQogewpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIChy
ZXZpc2lvbiAzNDY5NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggKHdvcmtp
bmcgY29weSkKQEAgLTI0NCw2ICsyNDQsOCBAQCBwdWJsaWM6CiAgICAgaW50IHNjcm9sbFdpZHRo
KCk7CiAgICAgaW50IHNjcm9sbEhlaWdodCgpOwogCisgICAgdm9pZCBwYW5TY3JvbGxGcm9tUG9p
bnQoY29uc3QgSW50UG9pbnQmKTsKKwogICAgIC8vIFNjcm9sbGluZyBtZXRob2RzIGZvciBsYXll
cnMgdGhhdCBjYW4gc2Nyb2xsIHRoZWlyIG92ZXJmbG93LgogICAgIHZvaWQgc2Nyb2xsT2Zmc2V0
KGludCYgeCwgaW50JiB5KTsKICAgICB2b2lkIHN1YnRyYWN0U2Nyb2xsT2Zmc2V0KGludCYgeCwg
aW50JiB5KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIChyZXZpc2lvbiAz
NDY5NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwICh3b3JraW5nIGNv
cHkpCkBAIC00MDYsMzEgKzQwNiw4NCBAQCBpbnQgUmVuZGVyTGlzdEJveDo6bGlzdEluZGV4QXRP
ZmZzZXQoaW50CiAgICAgcmV0dXJuIG5ld09mZnNldCA8IG51bUl0ZW1zKCkgPyBuZXdPZmZzZXQg
OiAtMTsKIH0KIAotdm9pZCBSZW5kZXJMaXN0Qm94OjphdXRvc2Nyb2xsKCkKK3ZvaWQgUmVuZGVy
TGlzdEJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBwYW5TdGFydE1vdXNlUG9zaXRpb24p
CiB7Ci0gICAgSW50UG9pbnQgcG9zID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKGRvY3VtZW50KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50
TW91c2VQb3NpdGlvbigpKTsKKyAgICBjb25zdCBpbnQgbWF4U3BlZWQgPSAyMDsKKyAgICBjb25z
dCBpbnQgaWNvblJhZGl1cyA9IDc7CisgICAgY29uc3QgaW50IHNwZWVkUmVkdWNlciA9IDQ7CisK
KyAgICBpbnQgb2Zmc2V0WCA9IDAsIG9mZnNldFkgPSB3aW5kb3dDbGlwUmVjdCgpLnkoKTsKKyAg
ICBhYnNvbHV0ZVBvc2l0aW9uKG9mZnNldFgsIG9mZnNldFkpOworCisgICAgSW50UG9pbnQgY3Vy
cmVudE1vdXNlUG9zaXRpb24gPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+
Y3VycmVudE1vdXNlUG9zaXRpb24oKTsKKyAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBj
dXJyZW50IG1vdXNlIHBvc2l0aW9uIGlzIG91dCBvZiB0aGUgd2luZG93LiBXaGVuIHRoZSBtb3Vz
ZSBpcyBvdXQgb2YgdGhlIHdpbmRvdywgdGhlIHBvc2l0aW9uIGlzIGluY29oZXJlbnQKKyAgICBz
dGF0aWMgSW50UG9pbnQgcHJldmlvdXNNb3VzZVBvc2l0aW9uOworICAgIGlmIChjdXJyZW50TW91
c2VQb3NpdGlvbi55KCkgPCAwKQorICAgICAgICBjdXJyZW50TW91c2VQb3NpdGlvbiA9IHByZXZp
b3VzTW91c2VQb3NpdGlvbjsKKyAgICBlbHNlCisgICAgICAgIHByZXZpb3VzTW91c2VQb3NpdGlv
biA9IGN1cnJlbnRNb3VzZVBvc2l0aW9uOworCisgICAgaW50IHlEZWx0YSA9IGN1cnJlbnRNb3Vz
ZVBvc2l0aW9uLnkoKSAtIHBhblN0YXJ0TW91c2VQb3NpdGlvbi55KCk7CisKKyAgIC8vIElmIHRo
ZSBwb2ludCBpcyB0b28gZmFyIGZyb20gdGhlIGNlbnRlciB3ZSBsaW1pdCB0aGUgc3BlZWQKKyAg
ICB5RGVsdGEgPSBtYXgobWluKHlEZWx0YSwgbWF4U3BlZWQpLCAtbWF4U3BlZWQpOworICAgIAor
ICAgIGlmKGFicyh5RGVsdGEpIDwgaWNvblJhZGl1cykgLy8gYXQgdGhlIGNlbnRlciB3ZSBsZXQg
dGhlIHNwYWNlIGZvciB0aGUgaWNvbgorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoeURlbHRh
ID4gMCkKKyAgICAgICAgLy9vZmZzZXRZID0gdmlldygpLT52aWV3SGVpZ2h0KCk7CisgICAgICAg
IG9mZnNldFkgKz0gbGlzdEhlaWdodCgpOworICAgZWxzZSBpZiAoeURlbHRhIDwgMCkKKyAgICAg
ICB5RGVsdGEtLTsKKworICAgIC8vIExldCdzIGF0dGVudWF0ZSB0aGUgc3BlZWQKKyAgICB5RGVs
dGEgLz0gc3BlZWRSZWR1Y2VyOworCisgICAgSW50UG9pbnQgc2Nyb2xsUG9pbnQoMCwwKTsKKyAg
ICBzY3JvbGxQb2ludC5zZXRZKG9mZnNldFkgKyB5RGVsdGEpOworICAgIGludCBuZXdPZmZzZXQ7
CisgICAgaWYgKG5ld09mZnNldCA9IHNjcm9sbFRvd2FyZChzY3JvbGxQb2ludCkgPCAwKSAKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9pbkF1dG9zY3JvbGwgPSB0cnVlOworICAgIEhUTUxTZWxl
Y3RFbGVtZW50KiBzZWxlY3QgPSBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KG5vZGUo
KSk7CisgICAgc2VsZWN0LT51cGRhdGVMaXN0Qm94U2VsZWN0aW9uKCFzZWxlY3QtPm11bHRpcGxl
KCkpOworICAgIG1faW5BdXRvc2Nyb2xsID0gZmFsc2U7Cit9CiAKK2ludCBSZW5kZXJMaXN0Qm94
OjpzY3JvbGxUb3dhcmQoY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uKQorewogICAgIGludCBy
eCA9IDA7CiAgICAgaW50IHJ5ID0gMDsKICAgICBhYnNvbHV0ZVBvc2l0aW9uKHJ4LCByeSk7Ci0g
ICAgaW50IG9mZnNldFggPSBwb3MueCgpIC0gcng7Ci0gICAgaW50IG9mZnNldFkgPSBwb3MueSgp
IC0gcnk7Ci0gICAgCi0gICAgaW50IGVuZEluZGV4ID0gLTE7CisgICAgaW50IG9mZnNldFggPSBk
ZXN0aW5hdGlvbi54KCkgLSByeDsKKyAgICBpbnQgb2Zmc2V0WSA9IGRlc3RpbmF0aW9uLnkoKSAt
IHJ5OworCiAgICAgaW50IHJvd3MgPSBudW1WaXNpYmxlSXRlbXMoKTsKICAgICBpbnQgb2Zmc2V0
ID0gbV9pbmRleE9mZnNldDsKKyAgICAKICAgICBpZiAob2Zmc2V0WSA8IGJvcmRlclRvcCgpICsg
cGFkZGluZ1RvcCgpICYmIHNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KG9mZnNldCAt
IDEpKQotICAgICAgICBlbmRJbmRleCA9IG9mZnNldCAtIDE7Ci0gICAgZWxzZSBpZiAob2Zmc2V0
WSA+IGhlaWdodCgpIC0gcGFkZGluZ0JvdHRvbSgpIC0gYm9yZGVyQm90dG9tKCkgJiYgc2Nyb2xs
VG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgob2Zmc2V0ICsgcm93cykpCi0gICAgICAgIGVuZElu
ZGV4ID0gb2Zmc2V0ICsgcm93cyAtIDE7Ci0gICAgZWxzZQotICAgICAgICBlbmRJbmRleCA9IGxp
c3RJbmRleEF0T2Zmc2V0KG9mZnNldFgsIG9mZnNldFkpOworICAgICAgICByZXR1cm4gb2Zmc2V0
IC0gMTsKKyAgICAKKyAgICBpZiAob2Zmc2V0WSA+IGhlaWdodCgpIC0gcGFkZGluZ0JvdHRvbSgp
IC0gYm9yZGVyQm90dG9tKCkgJiYgc2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgob2Zm
c2V0ICsgcm93cykpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyByb3dzIC0gMTsKKyAgICAKKyAg
ICByZXR1cm4gbGlzdEluZGV4QXRPZmZzZXQob2Zmc2V0WCwgb2Zmc2V0WSk7Cit9CiAKK3ZvaWQg
UmVuZGVyTGlzdEJveDo6YXV0b3Njcm9sbCgpCit7CisgICAgSW50UG9pbnQgcG9zID0gZG9jdW1l
bnQoKS0+ZnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRvY3VtZW50KCktPmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpKTsKKworICAgIGludCBl
bmRJbmRleCA9IHNjcm9sbFRvd2FyZChwb3MpOwogICAgIGlmIChlbmRJbmRleCA+PSAwKSB7CiAg
ICAgICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0
RWxlbWVudCo+KG5vZGUoKSk7CiAgICAgICAgIG1faW5BdXRvc2Nyb2xsID0gdHJ1ZTsKKwogICAg
ICAgICBpZiAoIXNlbGVjdC0+bXVsdGlwbGUoKSkKICAgICAgICAgICAgIHNlbGVjdC0+c2V0QWN0
aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoZW5kSW5kZXgpOworCiAgICAgICAgIHNlbGVjdC0+c2V0
QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoZW5kSW5kZXgpOwogICAgICAgICBzZWxlY3QtPnVwZGF0
ZUxpc3RCb3hTZWxlY3Rpb24oIXNlbGVjdC0+bXVsdGlwbGUoKSk7CiAgICAgICAgIG1faW5BdXRv
c2Nyb2xsID0gZmFsc2U7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oICAgKHJldmlz
aW9uIDM0Njk1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oICAgKHdvcmtp
bmcgY29weSkKQEAgLTgxLDYgKzgxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXV0
b3Njcm9sbCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQXV0b3Njcm9sbCgpOwogCisgICAgdmly
dHVhbCBib29sIHNob3VsZFBhblNjcm9sbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGFuU2Nyb2xsKGNvbnN0IEludFBvaW50Jik7CisKKyAgICBpbnQgc2Nyb2xs
VG93YXJkKGNvbnN0IEludFBvaW50Jik7IC8vIFJldHVybnMgdGhlIG5ldyBpbmRleCBvciAtMSBp
ZiBubyBzY3JvbGwgb2NjdXJlZAorCiAgICAgdmlydHVhbCBpbnQgdmVydGljYWxTY3JvbGxiYXJX
aWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IHNjcm9sbExlZnQoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGludCBzY3JvbGxUb3AoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCAgKHJldmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCAgKHdvcmtpbmcgY29weSkKQEAgLTY0Miw3ICs2NDIsNyBAQCBib29sIFJlbmRlck9i
amVjdDo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvCiAKIGJvb2wgUmVuZGVyT2JqZWN0OjpzaG91bGRB
dXRvc2Nyb2xsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKChpc1Jvb3QoKSkgfHwgKGhhc092ZXJm
bG93Q2xpcCgpICYmIChzY3JvbGxzT3ZlcmZsb3coKSB8fCAobm9kZSgpICYmIG5vZGUoKS0+aXND
b250ZW50RWRpdGFibGUoKSkpKSk7CisgICAgcmV0dXJuIGlzUm9vdCgpIHx8IChoYXNPdmVyZmxv
d0NsaXAoKSAmJiAoc2Nyb2xsc092ZXJmbG93KCkgfHwgKG5vZGUoKSAmJiBub2RlKCktPmlzQ29u
dGVudEVkaXRhYmxlKCkpKSk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjphdXRvc2Nyb2xsKCkK
QEAgLTY1MSw2ICs2NTEsMTIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmF1dG9zY3JvbGwoKQogICAg
ICAgICBsLT5hdXRvc2Nyb2xsKCk7CiB9CiAKK3ZvaWQgUmVuZGVyT2JqZWN0OjpwYW5TY3JvbGwo
Y29uc3QgSW50UG9pbnQmIHNvdXJjZSkKK3sKKyAgICBpZiAoUmVuZGVyTGF5ZXIqIGwgPSBsYXll
cigpKQorICAgICAgICBsLT5wYW5TY3JvbGxGcm9tUG9pbnQoc291cmNlKTsKK30KKwogYm9vbCBS
ZW5kZXJPYmplY3Q6Omhhc1N0YXRpY1goKSBjb25zdAogewogICAgIHJldHVybiAoc3R5bGUoKS0+
bGVmdCgpLmlzQXV0bygpICYmIHN0eWxlKCktPnJpZ2h0KCkuaXNBdXRvKCkpIHx8IHN0eWxlKCkt
PmxlZnQoKS5pc1N0YXRpYygpIHx8IHN0eWxlKCktPnJpZ2h0KCkuaXNTdGF0aWMoKTsKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgIChyZXZpc2lvbiAzNDY5NSkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICh3b3JraW5nIGNvcHkpCkBAIC02NTMsNiArNjUz
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b3Njcm9sbCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BB
dXRvc2Nyb2xsKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFuU2Nyb2xsKGNvbnN0IEludFBv
aW50Jik7CisgICAgdmlydHVhbCB2b2lkIHN0b3BQYW5TY3JvbGwoKSB7IH0gCisKICAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxhYmxlKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIHNl
dmVuIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgY29sbGFwc2luZyBtYXJnaW5zLgpJ
bmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgICAgKHJldmlzaW9uIDM0OTY0KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cgICAgKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAwOC0wNy0wMyAgTWF4aW1lIEJyaXR0byAg
PGJyaXR0b0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgCisgICAgICAgIEFkZGVkIHRoZSBwYW5uaW5nIGljb24gaW4gdGhlIHJlc3NvdXJj
ZXMuCisgICAgICAgIEl0cyBuYW1lIGlzIGNvbXBhc3MucG5nIHRvIG1ha2UgYSBkaWZmZXJlbmNl
IHdpdGggbW92ZUN1cnNvci5wbmcgKGZyb20gdGhlIFdlYkNvcmUgcmVzc291cmNlcykKKworICAg
ICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnJjOgorCisgICAgICAgICogV2ViS2l0LnZjcHJv
ai9jb21wYXNzLnBuZzogQWRkZWQuCisgICAgICAgICogV2ViS2l0LnZjcHJvai9yZXNvdXJjZS5o
OgorICAgICAgICAqIFdlYktpdERMTC5jcHA6CisgICAgICAgIChsb2FkUmVzb3VyY2VJbnRvQnVm
ZmVyKToKKwogMjAwOC0wNy0wMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIC0gdHJ5IHRvIGZpeCB0aGUgV2luZG93cyBidWlsZApJbmRleDogV2ViS2l0L3dpbi9X
ZWJLaXRETEwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViS2l0RExMLmNwcCAgICAo
cmV2aXNpb24gMzQ2OTUpCisrKyBXZWJLaXQvd2luL1dlYktpdERMTC5jcHAgICAgKHdvcmtpbmcg
Y29weSkKQEAgLTE0NSw2ICsxNDUsOCBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbG9hZFJlCiAgICAgICAgIGlkciA9IElEUl9VUkxfSUNPTjsKICAgICBlbHNlIGlmICghc3Ry
Y21wKG5hbWUsICJudWxsUGx1Z2luIikpCiAgICAgICAgIGlkciA9IElEUl9OVUxMX1BMVUdJTjsK
KyAgICBlbHNlIGlmICghc3RyY21wKG5hbWUsICJjb21wYXNzIikpCisgICAgICAgIGlkciA9IElE
Ul9QQU5fU0NST0xMX0lDT047CiAgICAgZWxzZSBpZiAoIXN0cmNtcChuYW1lLCAiem9vbUluQ3Vy
c29yIikpCiAgICAgICAgIGlkciA9IElEUl9aT09NX0lOX0NVUlNPUjsKICAgICBlbHNlIGlmICgh
c3RyY21wKG5hbWUsICJ6b29tT3V0Q3Vyc29yIikpCkluZGV4OiBXZWJLaXQvd2luL1dlYktpdC52
Y3Byb2ovV2ViS2l0LnJjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXQucmMgIChyZXZpc2lvbiAzNDY5NSkKKysrIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXQucmMgICh3b3JraW5nIGNvcHkpCkBAIC02OSw0ICs2OSw1IEBAIElEUl9ERUxFVEVfQlVU
VE9OX1BSRVNTRUQgICAgICAgIFBORyAgICAKIElEUl9aT09NX0lOX0NVUlNPUiAgICAgICAgICAg
ICAgIFBORyAgICAgICAgICAgICAgICAgICAgICJ6b29tSW5DdXJzb3IucG5nIgogSURSX1pPT01f
T1VUX0NVUlNPUiAgICAgICAgICAgICAgUE5HICAgICAgICAgICAgICAgICAgICAgInpvb21PdXRD
dXJzb3IucG5nIgogSURSX1ZFUlRJQ0FMX1RFWFRfQ1VSU09SICAgICAgICAgUE5HICAgICAgICAg
ICAgICAgICAgICAgInZlcnRpY2FsVGV4dEN1cnNvci5wbmciCitJRFJfUEFOX1NDUk9MTF9JQ09O
ICAgICAgICAgICAgICBQTkcgICAgICAgICAgICAgICAgICAgICAiY29tcGFzcy5wbmciCiAKSW5k
ZXg6IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9yZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViS2l0LnZjcHJvai9yZXNvdXJjZS5oIChyZXZpc2lvbiAzNDY5NSkKKysrIFdl
YktpdC93aW4vV2ViS2l0LnZjcHJvai9yZXNvdXJjZS5oICh3b3JraW5nIGNvcHkpCkBAIC0yLDIy
ICsyLDMwIEBACiAvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxl
LgogLy8gVXNlZCBieSBXZWJLaXQucmMKIC8vCisjZGVmaW5lIF9fQlVJTERfTlVNQkVSX01JTk9S
X18gICAgICAgICAgMAorI2RlZmluZSBfX0JVSUxEX05VTUJFUl9WQVJJQU5UX18gICAgICAgIDAK
ICNkZWZpbmUgSURSX1dFQktJVCAgICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIEJVSUxE
X05VTUJFUiAgICAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBfX1ZFUlNJT05fTUlOT1JfXyAg
ICAgICAgICAgICAgIDEKKyNkZWZpbmUgX19WRVJTSU9OX1RJTllfXyAgICAgICAgICAgICAgICAx
CisjZGVmaW5lIFZTX1ZFUlNJT05fSU5GTyAgICAgICAgICAgICAgICAgMQogI2RlZmluZSBJRFJf
UkVTSVpFX0NPUk5FUiAgICAgICAgICAgICAgIDIKICNkZWZpbmUgSURSX01JU1NJTkdfSU1BR0Ug
ICAgICAgICAgICAgICAzCisjZGVmaW5lIF9fVkVSU0lPTl9NQUpPUl9fICAgICAgICAgICAgICAg
MwogI2RlZmluZSBJRFJfVVJMX0lDT04gICAgICAgICAgICAgICAgICAgIDQKICNkZWZpbmUgSURS
X05VTExfUExVR0lOICAgICAgICAgICAgICAgICA1CiAjZGVmaW5lIElEUl9aT09NX0lOX0NVUlNP
UiAgICAgICAgICAgICAgNgogI2RlZmluZSBJRFJfWk9PTV9PVVRfQ1VSU09SICAgICAgICAgICAg
IDcKICNkZWZpbmUgSURSX1ZFUlRJQ0FMX1RFWFRfQ1VSU09SICAgICAgICA4Ci0KLSNkZWZpbmUg
QlVJTERfTlVNQkVSICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIElEUl9QQU5fU0NST0xM
X0lDT04gICAgICAgICAgICAgMTIKKyNkZWZpbmUgX19CVUlMRF9OVU1CRVJfTUFKT1JfXyAgICAg
ICAgICA1MjYKKyNkZWZpbmUgSURDX1NUQVRJQyAgICAgICAgICAgICAgICAgICAgICAtMQogCiAv
LyBOZXh0IGRlZmF1bHQgdmFsdWVzIGZvciBuZXcgb2JqZWN0cwogLy8gCiAjaWZkZWYgQVBTVFVE
SU9fSU5WT0tFRAogI2lmbmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCi0jZGVmaW5lIF9B
UFNfTkVYVF9SRVNPVVJDRV9WQUxVRSAgICAgICAgNgorI2RlZmluZSBfQVBTX05FWFRfUkVTT1VS
Q0VfVkFMVUUgICAgICAgIDEzCiAjZGVmaW5lIF9BUFNfTkVYVF9DT01NQU5EX1ZBTFVFICAgICAg
ICAgNDAwMDEKICNkZWZpbmUgX0FQU19ORVhUX0NPTlRST0xfVkFMVUUgICAgICAgICAxMDAwCiAj
ZGVmaW5lIF9BUFNfTkVYVF9TWU1FRF9WQUxVRSAgICAgICAgICAgMTAxCkluZGV4OiBXZWJLaXQv
d2luL1dlYktpdC52Y3Byb2ovY29tcGFzcy5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L3dpbi9XZWJLaXQudmNw
cm9qL2NvbXBhc3MucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCk5h
bWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCgppVkJPUncw
S0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFDWEJJV1hNQUFBc1RBQUFM
RXdFQW1wd1lBQUFBCllVbEVRVlI0bkt4VHl3b0FJQXdhOVAvZmJCQjBhQThYWmVDcGRMbzJBMkFF
KzVSdktObHNMRENSbHR5SlhKR1pTSlVaU1lUaktoUHcKVmJMS3dVblZzTktCRjZXWk93U3Jyd0xm
RVNSTmxIeWpaSkFrb3l4WnB1dDFuZ0FBQVAvL0F3QTZBS1piekF1a1dBQUFBQUJKUlU1RQpya0pn
Z2c9PQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22159</attachid>
            <date>2008-07-08 11:24:40 -0700</date>
            <delta_ts>2008-07-10 09:17:58 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>mbritto_bug16424_20080708.diff</filename>
            <type>text/plain</type>
            <size>33625</size>
            <attacher name="Maxime Britto">maxime.britto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTA1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTggQEAKKzIwMDgtMDctMDggIE1heGltZSBCcml0dG8gIDxicml0dG9AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjI3CisgICAgICAgIEFkZCB0
aGUgbWlkZGxlIGNsaWNrIHBhbm5pbmcgZmVhdHVyZSB0byB0aGUgd2luZG93cyByZWxlYXNlLgor
ICAgICAgICBEZXRhaWxzIG9uIGFsbW9zdCBlYWNoIG1ldGhvZCBiZWxvdy4KKyAgICAgICAgTWFu
dWFsIHRlc3QgaXMgaW5jbHVkZWQgaW4gdGhlIHBhdGNoLgorCisgICAgICAgICogQ2hhbmdlTG9n
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIG1h
bnVhbC10ZXN0cy9wYW5TY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogbWFudWFsLXRlc3Rz
L3Jlc291cmNlcy9iaWctcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5jcHA6IEFkZGVkIHRoZSBwYW5TY3JvbGwgc3RhcnQvc3RvcCBoYW5kbGVycyBhbmQgYWRh
cHRlZCB0aGUgYXV0b3Njcm9sbCBmb3IgYm90aCB0byBzaGFyZSBzb21lIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKTogSW5pdGlhbGl6ZSB0
aGUgbmV3IGNsYXNzIG1lbWJlcnMgZm9yIHRoZSBwYW5TY3JvbGwKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOiBQcmV2ZW50IHRoZSBhdXRv
c2Nyb2xsIHRvIHRyaWdnZXIgaWYgdGhlIHBhblNjcm9sbCBpcyBpbiBwcm9ncmVzcworICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6IFByZXZl
bnQgdGhlIGF1dG9zY3JvbGwgdG8gc3RvcCB0aGUgcGFuU2Nyb2xsIG9uIG1vdXNlIHJlbGVhc2UK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlQXV0b3Njcm9sbCk6IEFkZGVk
IHRoZSBzcGVjaWZpYyBjYWxscyBmb3IgdGhlIHBhblNjcm9sbCAoc2F2ZSBtb3VzZSBwb3NpdGlv
biwgZHJhdyB0aGUgcGFuU2Nyb2xsIGljb24pIHRvIHRoZSBzaGFyZWQgY29kZQorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCk6IFNwZWNpZnkgdGhl
IGNhbGxzIHRvIHBlcmZvcm0gZm9yIGVhY2ggZnVuY3Rpb24gKGF1dG9zY3JvbGwgYW5kIHBhblNj
cm9sbCkKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1l
cik6IFNwZWNpZnkgdGhlIGNhbGxzIHRvIHBlcmZvcm0gZm9yIGVhY2ggZnVuY3Rpb24gKGF1dG9z
Y3JvbGwgYW5kIHBhblNjcm9sbCkKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VQcmVzc0V2ZW50KTogVHJpZ2dlciBmb3IgdGhlIHBhblNjcm9sbC4gVGVzdCBpcyB0
aGUgYnV0dG9uIGlzIHRoZSBtaWRkbGUgYnV0dG9uIGFuZCB0cnkgdG8gZmluZCBhIHJlbmRlcmVy
IHdoZXJlIHRoZSBwYW5TY3JvbGwgaXMgcG9zc2libGUuIElmIGl0IGZpbmRzIG9uZSwgaXQgY2Fs
bHMgdGhlIGhhbmRsZUF1dG9zY3JvbGwgbWV0aG9kLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBBZGRlZCBhIG1ldGhvZCB1
c2VkIGJ5IHRoZSBSZW5kZXJPYmplY3QgdG8gdGVzdCBpZiB0aGUgdmlldyBjYW4gYmUgc2Nyb2xs
ZWQuIEFkZGVkIHRoZSBwcmludC9yZW1vdmUgcGFuU2Nyb2xsIGljb24gbWV0aG9kcyBiZXR3ZWVu
IHRoZSB3aW5kb3dzIHBsYXRmb3JtIGZsYWdzCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9s
bFZpZXdHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6aXNTY3JvbGxhYmxl
KTogTm90IGltcGxlbWVudGVkIDogcmV0dXJucyB0cnVlCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbFZpZXdNYWMubW06IEltcGxlbWVudGVkIGJlY2F1c2UgaXQgd2FzIHVzZWZ1bCBmb3Ig
dGhlIGF1dG9zY3JvbGwgZmVhdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Omlz
U2Nyb2xsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2Nyb2xsVmlld1F0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmlzU2Nyb2xsYWJsZSk6IE5vdCBpbXBsZW1lbnRl
ZCA6IHJldHVybnMgdHJ1ZQorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxWaWV3V2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpTY3Jv
bGxWaWV3UHJpdmF0ZSk6IEFkZGVkIGEgYm9vbGVhbiBhbmQgYW4gSW50UG9pbnQgdG8gZHJhdyB0
aGUgaWNvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRl
OjpzY3JvbGxCYWNraW5nU3RvcmUpOiBJZiB0aGUgaWNvbiBtdXN0IGJlIGRyYXduLCBkZWZpbmUg
dGhlIHJlY3QgdG8gaW52YWxpZGF0ZSB0byBlcmFzZSB0aGUgcHJldmlvdXMgaWNvbiBhbmQgdG8g
ZGlzcGxheSB0aGUgbmV3IG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0
ZUNvbnRlbnRzKTogSSBzcGxpdCB0aGlzIG1ldGhvZCB0byBiZSBhYmxlIHRvIGludmFsaWRhdGUg
YSByZWN0IHdpdGggd2luZG93IGNvb3JkaW5hdGVzIGluc3RlYWQgb2YgY29udGVudHMgY29vcmRp
bmF0ZXMuIFRoaXMgZnVuY3Rpb24gbm93IGNvbnZlcnRzIHRoZSBjb250ZW50cyBjb29yZCBpbiB3
aW5kb3cgY29vcmQgYW5kIGNhbGxzIHRoZSBuZXcgdXBkYXRlV2luZG93UmVjdCgpIG1ldGhvZCAg
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGVXaW5kb3dSZWN0KTogTmV3IG1l
dGhvZCB3aGljaCBwZXJmb3JtcyB0aGUgd29yayB0aGF0IHdhcyBkb2luZyB0aGUgZW5kIG9mIHRo
ZSBvbGQgdXBkYXRlQ29udGVudHMgOiBpbnZhbGlkYXRlIGEgcmVjdCB3aXRoIHdpbmRvdyBjb29y
ZGluYXRlcworICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6aXNTY3JvbGxhYmxlKTogY2hl
Y2tzIGlzIHRoZSB2aWV3IGhhcyBzY3JvbGxiYXJzCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwcmludFBhblNjcm9sbEljb24pOiBzZXRzIHRoZSBib29sZWFuIGFuZCB0aGUgSW50UG9p
bnQgZm9yIHRoZSBpY29uLiBJbnZhbGlkYXRlIGhpcyByZWN0IGFuZCBhc2sgZm9yIHJlcGFpbnQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpyZW1vdmVQYW5TY3JvbGxJY29uKTogc2V0
cyB0aGUgYm9vbGVhbiB0byBmYWxzZS4gSW52YWxpZGF0ZSBoaXMgcmVjdCBhbmQgYXNrIGZvciBy
ZXBhaW50LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnQpOiBNb2RpZmllZCB0
byBkcmF3IHRoZSBpY29uIGlmIG5lZWRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93eC9TY3JvbGxW
aWV3V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6aXNTY3JvbGxhYmxlKTog
Tm90IGltcGxlbWVudGVkIDogcmV0dXJucyB0cnVlCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9t
UG9pbnQpOiBSZWNlaXZlcyB0aGUgTWlkZGxlIGNsaWNrIGxvY2F0aW9uIGFuZCByZXRyaWV2ZXMg
dGhlIGN1cnJlbnRNb3VzZSBwb3NpdGlvbiBmcm9tIHRoZSBFdmVudEhhbmRsZXIuIFdpdGggdGhl
c2UgaW5mb3JtYXRpb25zIGl0IGNvbXB1dGVzIHRoZSBkaXJlY3Rpb24gdG8gc2Nyb2xsIHRvIGFu
ZCB0aGUgc3BlZWQgdGhlbiBjYWxscyBmb3IgdGhlIGZpbmFsIHNjcm9sbC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHA6IEFkYXB0IHRoZSBwYW5TY3JvbGwgdG8gdGhlIExpc3RCb3ggb2JqZWN0IHRvIHNjcm9s
bCBieSBsaW5lcyBpbnN0ZWFkIG9mIHBpeGVscworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlz
dEJveDo6cGFuU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnNjcm9s
bFRvd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjphdXRvc2Nyb2xsKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdEJveDo6c2hvdWxkUGFuU2Nyb2xsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDogCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3VsZEF1
dG9zY3JvbGwpOiBJbXByb3ZlZCB0aGUgdmVyaWZpY2F0aW9uIHRvIGF2b2lkIHRyaWdnZXJpbmcg
dGhlIGF1dG9zY3JvbGwvcGFuU2Nyb2xsIHdoZW4gdGhlIHJvb3Qgb2JqZWN0IGNhbid0IHNjcm9s
bAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwYW5TY3JvbGwpOiBDYWxscyB0aGUg
UmVuZGVyTGF5ZXIncyBwYW5TY3JvbGxGcm9tUG9pbnQoKSBtZXRob2QKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0
b3BQYW5TY3JvbGwpOiAKKwogMjAwOC0wNy0wNyAgQWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNv
cmUvbWFudWFsLXRlc3RzL3BhblNjcm9sbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWFu
dWFsLXRlc3RzL3BhblNjcm9sbC5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51YWwt
dGVzdHMvcGFuU2Nyb2xsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICJodHRwOi8v
d3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFk
PgorPC9oZWFkPgorPGJvZHk+CisgICA8cD48Yj5CVUcgSUQ6PC9iPiA8YSBocmVmPSJodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjQiPkJ1Z3ppbGxhIEJ1ZyAxNjQy
NDwvYT4gRW5hYmxlIGF1dG8tc2Nyb2xsIGluIHBhZ2UgYnkgbW91c2UgbWlkZGxlIGNsaWNrPC9w
PgorCisgICA8cCBpZD0idGVzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6c2t5Ymx1ZTsgcGFk
ZGluZzozcHg7Ij48Yj5TVEVQUyBUTyBURVNUOjwvYj4gCisgICAgICAgRm9yIGVhY2ggaWZyYW1l
IDogTWlkZGxlLWNsaWNrIHdpdGhpbiB0aGUgaWZyYW1lIGFuZCB0aGVuIG1vdmUgeW91ciBtb3Vz
ZS48L3A+CisKKyAgICAgICA8cCBpZD0ic3VjY2VzcyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
cGFsZWdyZWVuOyBwYWRkaW5nOjNweDsiPjxiPlRFU1QgUEFTUzo8L2I+IAorICAgICAgICAgICBG
b3IgZWFjaCBpZnJhbWUsIHlvdSBzaG91bGQgc2VlIHRoZSBzY3JvbGwgYmFycyBmb2xsb3cgeW91
ciBtb3ZlcyBhbmQgZXZlbiByZWFjaCB0aGUgZW5kIG9mIHRoZSBwYWdlIGluY2x1ZGVkIGluIHRo
ZSBpZnJhbWUuCisgICAgICAgPC9wPgorCisgICAgICAgPHAgaWQ9ImZhaWx1cmUiIHN0eWxlPSJi
YWNrZ3JvdW5kLWNvbG9yOiNGRjMzMDA7IHBhZGRpbmc6M3B4OyI+PGI+VEVTVCBGQUlMOjwvYj4g
IAorICAgICAgICAgICBUaGUgc2Nyb2xsIGRvZXNuJ3QgZm9sbG93IHRoZSBtb3VzZSBtb3ZlcyBv
ciBkb2Vzbid0IGdldCBhY3RpdmF0ZWQuCisgICAgICAgPC9wPgorCisgICAgICAgPGRpdiBzdHls
ZT0iaGVpZ2h0PTIwMDBweDt3aWR0aD0yMDAwcHgiPgorICAgICAgICAgICA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL2JpZy1wYWdlLmh0bWwiPjwvaWZyYW1lPgorICAgICAgICAgICA8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL2JpZy1wYWdlLmh0bWwiIHNjcm9sbGluZz48L2lmcmFtZT4KKyAgICAgICAg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9iaWctcGFnZS5odG1sIiBzY3JvbGxpbmc9IiI+PC9p
ZnJhbWU+CisgICAgICAgICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCIg
c2Nyb2xsaW5nPSJhdXRvIj48L2lmcmFtZT4KKyAgICAgICAgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9iaWctcGFnZS5odG1sIiBzY3JvbGxpbmc9InllcyI+PC9pZnJhbWU+CisgICAgICAgICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCIgc2Nyb2xsaW5nPSJubyI+PC9p
ZnJhbWU+CisgICAgICAgICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbCIg
c2Nyb2xsaW5nPSJib2d1cyI+PC9pZnJhbWU+CisgICAgICAgICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvYmlnLXBhZ2UuaHRtbCIgc2Nyb2xsaW5nPSIxMjM0Ij48L2lmcmFtZT4KKyAgICAgICA8
L2Rpdj4KKworICAgPC9ib2R5PgorICAgPC9odG1sPgpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVz
dHMvcmVzb3VyY2VzL2JpZy1wYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwt
dGVzdHMvcmVzb3VyY2VzL2JpZy1wYWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21h
bnVhbC10ZXN0cy9yZXNvdXJjZXMvYmlnLXBhZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyIEBACis8cD5UaGlzIHBhZ2UgaXMgbGFyZ2UgZW5vdWdoIHRvIG5lZWQgdG8gYmUgc2Nyb2xs
ZWQgaW4gYSAyMDB4MjAwIGZyYW1lLjwvcD4KKzxkaXYgc3R5bGU9IndpZHRoOiA0MDBweDsgaGVp
Z2h0OiA0MDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZSI+PC9kaXY+CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAkocmV2aXNpb24gMzUwNTMpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsOCBAQCB1c2luZyBuYW1lc3BhY2UgU1ZH
TmFtZXM7CiAKIGNvbnN0IGRvdWJsZSBhdXRvc2Nyb2xsSW50ZXJ2YWwgPSAwLjE7CiAKK2Jvb2wg
RXZlbnRIYW5kbGVyOjpzX3BhblNjcm9sbEFscmVhZHlJblByb2dyZXNzID0gZmFsc2U7CisKIHN0
YXRpYyBGcmFtZSogc3ViZnJhbWVGb3JUYXJnZXROb2RlKE5vZGUqIG5vZGUpOwogCiBFdmVudEhh
bmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCkBAIC05OSw5ICsxMDEsMTEgQEAgRXZl
bnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUqIGZyYW1lKQogICAgICwgbV9tb3VzZURvd25N
YXlTdGFydERyYWcoZmFsc2UpCiAgICAgLCBtX21vdXNlRG93bldhc1NpbmdsZUNsaWNrSW5TZWxl
Y3Rpb24oZmFsc2UpCiAgICAgLCBtX2JlZ2FuU2VsZWN0aW5nVGV4dChmYWxzZSkKKyAgICAsIG1f
cGFuU2Nyb2xsSW5Qcm9ncmVzcyhmYWxzZSkKICAgICAsIG1faG92ZXJUaW1lcih0aGlzLCAmRXZl
bnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQpCiAgICAgLCBtX2F1dG9zY3JvbGxUaW1lcih0aGlz
LCAmRXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCkKICAgICAsIG1fYXV0b3Njcm9s
bFJlbmRlcmVyKDApCisgICAgLCBtX2F1dG9zY3JvbGxJblByb2dyZXNzKGZhbHNlKQogICAgICwg
bV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwoZmFsc2UpCiAgICAgLCBtX21vdXNlRG93bldh
c0luU3ViZnJhbWUoZmFsc2UpCiAjaWYgRU5BQkxFKFNWRykKQEAgLTM3MCwxNCArMzc0LDE2IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmUKIAogICAgIG1fbW91c2VE
b3duTWF5U3RhcnREcmFnID0gZmFsc2U7CiAKLSAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydEF1
dG9zY3JvbGwpIHsgICAgICAgICAgICAKKyAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydEF1dG9z
Y3JvbGwgJiYgIW1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeyAgICAgICAgICAgIAogICAgICAgICAv
LyBJZiB0aGUgc2VsZWN0aW9uIGlzIGNvbnRhaW5lZCBpbiBhIGxheWVyIHRoYXQgY2FuIHNjcm9s
bCwgdGhhdCBsYXllciBzaG91bGQgaGFuZGxlIHRoZSBhdXRvc2Nyb2xsCiAgICAgICAgIC8vIE90
aGVyd2lzZSwgbGV0IHRoZSBicmlkZ2UgaGFuZGxlIGl0IHNvIHRoZSB2aWV3IGNhbiBzY3JvbGwg
aXRzZWxmLgogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0Tm9kZS0+cmVu
ZGVyZXIoKTsKICAgICAgICAgd2hpbGUgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+c2hvdWxkQXV0
b3Njcm9sbCgpKQogICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7Ci0g
ICAgICAgIGlmIChyZW5kZXJlcikKKyAgICAgICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAg
ICBtX2F1dG9zY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKICAgICAgICAgICAgIGhhbmRsZUF1dG9z
Y3JvbGwocmVuZGVyZXIpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHVwZGF0ZVNlbGVj
dGlvbkZvck1vdXNlRHJhZyh0YXJnZXROb2RlLCBldmVudC5sb2NhbFBvaW50KCkpOwpAQCAtNDg5
LDcgKzQ5NSw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKGNvbnN0IE0KIAog
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIo
KTsKKyAgICBpZiAoIW1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykKKyAgICAgICAgc3RvcEF1dG9zY3Jv
bGxUaW1lcigpOwogCiAgICAgaWYgKGhhbmRsZU1vdXNlVXAoZXZlbnQpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTUzNSwxNyArNTQyLDM3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpoYW5kbGVB
dXRvc2Nyb2xsKFJlbmQKICAgICBpZiAobV9hdXRvc2Nyb2xsVGltZXIuaXNBY3RpdmUoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIHNldEF1dG9zY3JvbGxSZW5kZXJlcihyZW5kZXJlcik7CisjaWYg
UExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oV1gpICYmIFBMQVRGT1JNKFdJTl9PUykpCisgICAg
aWYgKG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAgICBtX3BhblNjcm9sbFN0YXJ0UG9z
ID0gY3VycmVudE1vdXNlUG9zaXRpb24oKTsKKyAgICAgICAgbV9mcmFtZS0+dmlldygpLT5wcmlu
dFBhblNjcm9sbEljb24obV9wYW5TY3JvbGxTdGFydFBvcyk7CisgICAgICAgIHNfcGFuU2Nyb2xs
QWxyZWFkeUluUHJvZ3Jlc3MgPSB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgc3RhcnRBdXRv
c2Nyb2xsVGltZXIoKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxUaW1lckZp
cmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKQogewotICAgIGlmICghbV9tb3VzZVByZXNzZWQpIHsK
KyAgICBSZW5kZXJPYmplY3QqIHIgPSBhdXRvc2Nyb2xsUmVuZGVyZXIoKTsKKyAgICBpZiAoIXIp
IHsKICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmIChSZW5kZXJPYmplY3QqIHIgPSBhdXRvc2Nyb2xsUmVuZGVyZXIoKSkKKworICAg
IGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7CisgICAgICAgIGlmICghbV9tb3VzZVByZXNz
ZWQpIHsKKyAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICAgICAgICAgIG1f
YXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogICAgICAgICByLT5hdXRvc2Nyb2xsKCk7CisgICAgfQorI2lmIFBMQVRGT1JNKFdJTikg
fHwgKFBMQVRGT1JNKFdYKSAmJiBQTEFURk9STShXSU5fT1MpKQorICAgIGlmIChtX3BhblNjcm9s
bEluUHJvZ3Jlc3MpCisgICAgICAgIHItPnBhblNjcm9sbChtX3BhblNjcm9sbFN0YXJ0UG9zKTsK
KyNlbmRpZgogfQogCiBSZW5kZXJPYmplY3QqIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFJlbmRl
cmVyKCkgY29uc3QKQEAgLTYwOSwxNiArNjM2LDMzIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFy
dEF1dG9zY3JvbGxUaW1lcigKIAogdm9pZCBFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xsVGlt
ZXIoYm9vbCByZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpCiB7Ci0gICAgaWYgKG1fbW91c2VEb3du
V2FzSW5TdWJmcmFtZSkgewotICAgICAgICBpZiAoRnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVG
b3JUYXJnZXROb2RlKG1fbW91c2VQcmVzc05vZGUuZ2V0KCkpKQotICAgICAgICAgICAgc3ViZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKHJlbmRlcmVySXNCZWluZ0Rl
c3Ryb3llZCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVz
cykgeworICAgICAgICBpZiAobV9tb3VzZURvd25XYXNJblN1YmZyYW1lKSB7CisgICAgICAgICAg
ICBpZiAoRnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JUYXJnZXROb2RlKG1fbW91c2VQcmVz
c05vZGUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
c3RvcEF1dG9zY3JvbGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG9zY3JvbGxSZW5kZXJl
cigpKSB7CisgICAgICAgIGlmICghcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkICYmIG1fYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MpCisgICAgICAgICAgICBhdXRvc2Nyb2xsUmVuZGVyZXIoKS0+c3RvcEF1
dG9zY3JvbGwoKTsKKyNpZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShXWCkgJiYgUExBVEZP
Uk0oV0lOX09TKSkKKyAgICAgICAgaWYgKG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAg
ICAgICAgYXV0b3Njcm9sbFJlbmRlcmVyKCktPnN0b3BQYW5TY3JvbGwoKTsKKyAgICAgICAgICAg
IG1fZnJhbWUtPnZpZXcoKS0+cmVtb3ZlUGFuU2Nyb2xsSWNvbigpOworICAgICAgICB9CisjZW5k
aWYKKworICAgICAgICBzZXRBdXRvc2Nyb2xsUmVuZGVyZXIoMCk7CiAgICAgfQogCi0gICAgaWYg
KCFyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQgJiYgYXV0b3Njcm9sbFJlbmRlcmVyKCkpCi0gICAg
ICAgIGF1dG9zY3JvbGxSZW5kZXJlcigpLT5zdG9wQXV0b3Njcm9sbCgpOwotICAgIHNldEF1dG9z
Y3JvbGxSZW5kZXJlcigwKTsKICAgICBtX2F1dG9zY3JvbGxUaW1lci5zdG9wKCk7CisgICAgbV9h
dXRvc2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIGlmIChtX3BhblNjcm9sbEluUHJvZ3Jl
c3MpIHsKKyAgICAgICAgbV9wYW5TY3JvbGxJblByb2dyZXNzID0gZmFsc2U7CisgICAgICAgIHNf
cGFuU2Nyb2xsQWxyZWFkeUluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICB9CiB9CiAKIE5vZGUqIEV2
ZW50SGFuZGxlcjo6bW91c2VQcmVzc05vZGUoKSBjb25zdApAQCAtODU4LDYgKzkwMiwyNCBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgICAgIGludmFsaWRh
dGVDbGljaygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgCisjaWYgUExBVEZPUk0o
V0lOKSB8fCAoUExBVEZPUk0oV1gpICYmIFBMQVRGT1JNKFdJTl9PUykpCisgICAgaWYgKG1fcGFu
U2Nyb2xsSW5Qcm9ncmVzcyB8fCBtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7CisgICAgICAgIHN0
b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICB9IGVsc2UgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkg
PT0gTWlkZGxlQnV0dG9uICYmICFtZXYuaXNPdmVyTGluaygpICYmICFFdmVudEhhbmRsZXI6OnNf
cGFuU2Nyb2xsQWxyZWFkeUluUHJvZ3Jlc3MpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG1ldi50YXJnZXROb2RlKCktPnJlbmRlcmVyKCk7CisKKyAgICAgICAgd2hpbGUgKHJl
bmRlcmVyICYmICFyZW5kZXJlci0+c2hvdWxkUGFuU2Nyb2xsKCkpCisgICAgICAgICAgICByZW5k
ZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKworICAgICAgICBpZiAocmVuZGVyZXIpIHsKKyAg
ICAgICAgICAgIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgICAgICAgICBoYW5k
bGVBdXRvc2Nyb2xsKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIGludmFsaWRhdGVDbGljaygpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgIH0KKyNlbmRpZgogCiAgICAg
bV9jbGlja0NvdW50ID0gbW91c2VFdmVudC5jbGlja0NvdW50KCk7CiAgICAgbV9jbGlja05vZGUg
PSBtZXYudGFyZ2V0Tm9kZSgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gMzUwNTMp
CisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw3
ICsyMjAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlQXV0b3Njcm9sbChSZW5kZXJPYmpl
Y3QqKTsKICAgICB2b2lkIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7CiAgICAgdm9pZCBzZXRBdXRv
c2Nyb2xsUmVuZGVyZXIoUmVuZGVyT2JqZWN0Kik7Ci0KICAgICB2b2lkIGF1dG9zY3JvbGxUaW1l
ckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUNsaWNr
KCk7CkBAIC0yOTEsMTAgKzI5MCwxNSBAQCBwcml2YXRlOgogCiAgICAgSW50UG9pbnQgbV9kcmFn
U3RhcnRQb3M7CiAKKyAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0YXJ0UG9zOworICAgIGJvb2wg
bV9wYW5TY3JvbGxJblByb2dyZXNzOworICAgIHN0YXRpYyBib29sIHNfcGFuU2Nyb2xsQWxyZWFk
eUluUHJvZ3Jlc3M7CisKICAgICBUaW1lcjxFdmVudEhhbmRsZXI+IG1faG92ZXJUaW1lcjsKICAg
ICAKICAgICBUaW1lcjxFdmVudEhhbmRsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOwogICAgIFJlbmRl
ck9iamVjdCogbV9hdXRvc2Nyb2xsUmVuZGVyZXI7CisgICAgYm9vbCBtX2F1dG9zY3JvbGxJblBy
b2dyZXNzOwogICAgIGJvb2wgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7CiAgICAgYm9v
bCBtX21vdXNlRG93bldhc0luU3ViZnJhbWU7CiAjaWYgRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oCShyZXZpc2lvbiAzNTA1MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxMSArODUsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBTY3JvbGxiYXJNb2RlIHZTY3JvbGxiYXJNb2RlKCkgY29uc3Q7CiAgICAg
ICAgIFNjcm9sbGJhck1vZGUgaFNjcm9sbGJhck1vZGUoKSBjb25zdDsKIAorICAgICAgICBib29s
IGlzU2Nyb2xsYWJsZSgpOwogICAgICAgICB2b2lkIGFkZENoaWxkKFdpZGdldCopOwogICAgICAg
ICB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNp
emVDb250ZW50cyhpbnQgdywgaW50IGgpOwogICAgICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNv
bnN0IEludFJlY3QmLCBib29sIG5vdyA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCB1cGRhdGVXaW5k
b3dSZWN0KGNvbnN0IEludFJlY3QmLCBib29sIG5vdyA9IGZhbHNlKTsKICAgICAgICAgdm9pZCB1
cGRhdGUoKTsKIAogICAgICAgICAvLyBFdmVudCBjb29yZGluYXRlcyBhcmUgYXNzdW1lZCB0byBi
ZSBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiBhIHdpbmRvdyB0aGF0IGNvbnRhaW5zCkBAIC0x
NzIsNiArMTc0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoVG9XaW5kb3coKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21XaW5kb3co
KTsKICAgICAgICAgYm9vbCBpc0F0dGFjaGVkVG9XaW5kb3coKSBjb25zdDsKKyAgICAgICAgCisg
ICAgICAgIHZvaWQgcHJpbnRQYW5TY3JvbGxJY29uKGNvbnN0IEludFBvaW50Jik7CisgICAgICAg
IHZvaWQgcmVtb3ZlUGFuU2Nyb2xsSWNvbigpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93
KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TY3JvbGxWaWV3R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0
ay9TY3JvbGxWaWV3R3RrLmNwcAkocmV2aXNpb24gMzUwNTMpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TY3JvbGxWaWV3R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIyLDYgKzQyMiwxMSBA
QCBTY3JvbGxiYXJNb2RlIFNjcm9sbFZpZXc6OnZTY3JvbGxiYXJNb2RlCiAgICAgcmV0dXJuIG1f
ZGF0YS0+dlNjcm9sbGJhck1vZGU7CiB9CiAKK2Jvb2wgU2Nyb2xsVmlldzo6aXNTY3JvbGxhYmxl
KCkgCit7IAorICAgIHJldHVybiB0cnVlOyAvLyBGSVhNRSA6IHJldHVybiB3aGV0aGVyIG9yIG5v
dCB0aGUgdmlldyBpcyBzY3JvbGxhYmxlCit9CisKIHZvaWQgU2Nyb2xsVmlldzo6c3VwcHJlc3NT
Y3JvbGxiYXJzKGJvb2wgc3VwcHJlc3NlZCwgYm9vbCByZXBhaW50T25TdXBwcmVzcykKIHsKICAg
ICBtX2RhdGEtPnNjcm9sbGJhcnNTdXBwcmVzc2VkID0gc3VwcHJlc3NlZDsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQkocmV2aXNpb24gMzUwNTMpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiAr
MTQ3LDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsUmVjdEludG9WaWV3UmVjdXIKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCitib29sIFNjcm9sbFZpZXc6OmlzU2Nyb2xs
YWJsZSgpIAoreyAKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJu
IFtzY3JvbGxWaWV3KCkgaGFzSG9yaXpvbnRhbFNjcm9sbGVyXSB8fCBbc2Nyb2xsVmlldygpIGhh
c1ZlcnRpY2FsU2Nyb2xsZXJdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNQb3MoaW50IHgs
IGludCB5KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vcXQvU2Nyb2xsVmlld1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL3F0L1Njcm9sbFZpZXdRdC5jcHAJKHJldmlzaW9uIDM1MDUzKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9xdC9TY3JvbGxWaWV3UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsNiArMzkz
LDExIEBAIFdlYkNvcmU6OlNjcm9sbGJhck1vZGUgU2Nyb2xsVmlldzo6dlNjcm8KICAgICByZXR1
cm4gbV9kYXRhLT5tX3ZTY3JvbGxiYXJNb2RlOwogfQogCitib29sIFNjcm9sbFZpZXc6OmlzU2Ny
b2xsYWJsZSgpIAoreyAKKyAgICByZXR1cm4gdHJ1ZTsgLy8gRklYTUUgOiByZXR1cm4gd2hldGhl
ciBvciBub3QgdGhlIHZpZXcgaXMgc2Nyb2xsYWJsZQorfQorCiB2b2lkIFNjcm9sbFZpZXc6OnN1
cHByZXNzU2Nyb2xsYmFycyhib29sIHN1cHByZXNzZWQsIGJvb2wgcmVwYWludE9uU3VwcHJlc3Mp
CiB7CiAgICAgbV9kYXRhLT5tX3Njcm9sbGJhcnNTdXBwcmVzc2VkID0gc3VwcHJlc3NlZDsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCShyZXZpc2lvbiAzNTA1MykK
KysrIFdlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2hTY3JvbGxiYXJNb2RlKFNj
cm9sbGJhckF1dG8pCiAgICAgICAgICwgbV92aXNpYmxlKGZhbHNlKQogICAgICAgICAsIG1fYXR0
YWNoZWRUb1dpbmRvdyhmYWxzZSkKKyAgICAgICAgLCBtX3BhblNjcm9sbEljb25Qb2ludCgwLDAp
CisgICAgICAgICwgbV9kcmF3UGFuU2Nyb2xsSWNvbihmYWxzZSkKICAgICB7CiAgICAgfQogCkBA
IC05OSw4ICsxMDEsMTIgQEAgcHVibGljOgogICAgIEhhc2hTZXQ8V2lkZ2V0Kj4gbV9jaGlsZHJl
bjsKICAgICBib29sIG1fdmlzaWJsZTsKICAgICBib29sIG1fYXR0YWNoZWRUb1dpbmRvdzsKKyAg
ICBJbnRQb2ludCBtX3BhblNjcm9sbEljb25Qb2ludDsKKyAgICBib29sIG1fZHJhd1BhblNjcm9s
bEljb247CiB9OwogCitjb25zdCBpbnQgcGFuSWNvblNpemVMZW5ndGggPSAyMDsKKwogdm9pZCBT
Y3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihi
b29sIGhhc0JhcikKIHsKICAgICBpZiAoU2Nyb2xsYmFyOjpoYXNQbGF0Zm9ybVNjcm9sbGJhcnMo
KSkgewpAQCAtMTYxLDYgKzE2NywxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2
YXRlOjpzY3JvCiAgICAgUkVDVCByID0gdXBkYXRlUmVjdDsKICAgICA6OkludmFsaWRhdGVSZWN0
KGNvbnRhaW5pbmdXaW5kb3dIYW5kbGUsICZyLCBmYWxzZSk7CiAKKyAgICBpZiAobV9kcmF3UGFu
U2Nyb2xsSWNvbikgeworICAgICAgICBpbnQgcGFuSWNvbkRpcnR5U3F1YXJlU2l6ZUxlbmd0aCA9
IDIgKiAocGFuSWNvblNpemVMZW5ndGggKyBtYXgoYWJzKHNjcm9sbERlbHRhLndpZHRoKCkpLCBh
YnMoc2Nyb2xsRGVsdGEuaGVpZ2h0KCkpKSk7IC8vIFdlIG9ubHkgd2FudCB0byByZXBhaW50IHdo
YXQncyBuZWNlc3NhcnkKKyAgICAgICAgSW50UG9pbnQgcGFuSWNvbkRpcnR5U3F1YXJlTG9jYXRp
b24gPSBJbnRQb2ludChtX3BhblNjcm9sbEljb25Qb2ludC54KCkgLSAocGFuSWNvbkRpcnR5U3F1
YXJlU2l6ZUxlbmd0aCAvIDIpLCBtX3BhblNjcm9sbEljb25Qb2ludC55KCkgLSAocGFuSWNvbkRp
cnR5U3F1YXJlU2l6ZUxlbmd0aCAvIDIpKTsKKyAgICAgICAgSW50UmVjdCBwYW5TY3JvbGxJY29u
RGlydHlSZWN0ID0gSW50UmVjdChwYW5JY29uRGlydHlTcXVhcmVMb2NhdGlvbiAsIEludFNpemUo
cGFuSWNvbkRpcnR5U3F1YXJlU2l6ZUxlbmd0aCwgcGFuSWNvbkRpcnR5U3F1YXJlU2l6ZUxlbmd0
aCkpOworICAgICAgICAKKyAgICAgICAgbV92aWV3LT51cGRhdGVXaW5kb3dSZWN0KHBhblNjcm9s
bEljb25EaXJ0eVJlY3QpOworICAgIH0KKwogICAgIGlmICghbV9oYXNTdGF0aWNCYWNrZ3JvdW5k
KSAvLyBUaGUgbWFpbiBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRvdwogICAg
ICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxpdHRp
bmcgb3ZlcmxhcHBpbmcgY29udGVudAogICAgICAgIG1fdmlldy0+c2Nyb2xsQmFja2luZ1N0b3Jl
KC1zY3JvbGxEZWx0YS53aWR0aCgpLCAtc2Nyb2xsRGVsdGEuaGVpZ2h0KCksIHNjcm9sbFZpZXdS
ZWN0LCBjbGlwUmVjdCk7CkBAIC0yMzAsMTMgKzI0NCwxOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnVw
ZGF0ZUNvbnRlbnRzKGNvbnN0IEluCiAgICAgSW50UmVjdCBjb250YWluaW5nV2luZG93UmVjdCA9
IHJlY3Q7CiAgICAgY29udGFpbmluZ1dpbmRvd1JlY3Quc2V0TG9jYXRpb24od2luZG93UG9pbnQp
OwogCi0gICAgUkVDVCBjb250YWluaW5nV2luZG93UmVjdFdpbiA9IGNvbnRhaW5pbmdXaW5kb3dS
ZWN0OworICAgIHVwZGF0ZVdpbmRvd1JlY3QoY29udGFpbmluZ1dpbmRvd1JlY3QsIG5vdyk7Cit9
CisKK3ZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlV2luZG93UmVjdChjb25zdCBJbnRSZWN0JiByZWN0
LCBib29sIG5vdykKK3sKKyAgICBSRUNUIGNvbnRhaW5pbmdXaW5kb3dSZWN0V2luID0gcmVjdDsK
ICAgICBIV05EIGNvbnRhaW5pbmdXaW5kb3dIYW5kbGUgPSBjb250YWluaW5nV2luZG93KCk7CiAK
ICAgICA6OkludmFsaWRhdGVSZWN0KGNvbnRhaW5pbmdXaW5kb3dIYW5kbGUsICZjb250YWluaW5n
V2luZG93UmVjdFdpbiwgZmFsc2UpOwotCisgICAgICAKICAgICAvLyBDYWNoZSB0aGUgZGlydHkg
c3BvdC4KLSAgICBhZGRUb0RpcnR5UmVnaW9uKGNvbnRhaW5pbmdXaW5kb3dSZWN0KTsKKyAgICBh
ZGRUb0RpcnR5UmVnaW9uKHJlY3QpOwogCiAgICAgaWYgKG5vdykKICAgICAgICAgOjpVcGRhdGVX
aW5kb3coY29udGFpbmluZ1dpbmRvd0hhbmRsZSk7CkBAIC0zOTMsNiArNDEyLDExIEBAIFdlYkNv
cmU6OlNjcm9sbGJhck1vZGUgU2Nyb2xsVmlldzo6dlNjcm8KICAgICByZXR1cm4gbV9kYXRhLT5t
X3ZTY3JvbGxiYXJNb2RlOwogfQogCitib29sIFNjcm9sbFZpZXc6OmlzU2Nyb2xsYWJsZSgpIAor
eyAKKyAgICByZXR1cm4gbV9kYXRhLT5tX3ZCYXIgIT0gMCB8fCBtX2RhdGEtPm1faEJhciAhPSAw
OworfQorCiB2b2lkIFNjcm9sbFZpZXc6OnN1cHByZXNzU2Nyb2xsYmFycyhib29sIHN1cHByZXNz
ZWQsIGJvb2wgcmVwYWludE9uU3VwcHJlc3MpCiB7CiAgICAgbV9kYXRhLT5tX3Njcm9sbGJhcnNT
dXBwcmVzc2VkID0gc3VwcHJlc3NlZDsKQEAgLTYwMCw2ICs2MjQsMjEgQEAgdm9pZCBTY3JvbGxW
aWV3OjpyZW1vdmVDaGlsZChXaWRnZXQqIGNoaQogICAgIG1fZGF0YS0+bV9jaGlsZHJlbi5yZW1v
dmUoY2hpbGQpOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnByaW50UGFuU2Nyb2xsSWNvbihjb25z
dCBJbnRQb2ludCYgaWNvblBvc2l0aW9uKQoreworICAgIG1fZGF0YS0+bV9kcmF3UGFuU2Nyb2xs
SWNvbiA9IHRydWU7ICAgIAorICAgIG1fZGF0YS0+bV9wYW5TY3JvbGxJY29uUG9pbnQgPSBJbnRQ
b2ludChpY29uUG9zaXRpb24ueCgpIC0gcGFuSWNvblNpemVMZW5ndGggLyAyICwgaWNvblBvc2l0
aW9uLnkoKSAtIHBhbkljb25TaXplTGVuZ3RoIC8gMikgOworCisgICAgdXBkYXRlV2luZG93UmVj
dChJbnRSZWN0KG1fZGF0YS0+bV9wYW5TY3JvbGxJY29uUG9pbnQsIEludFNpemUocGFuSWNvblNp
emVMZW5ndGgscGFuSWNvblNpemVMZW5ndGgpKSwgdHJ1ZSk7ICAgIAorfQorCit2b2lkIFNjcm9s
bFZpZXc6OnJlbW92ZVBhblNjcm9sbEljb24oKQoreworICAgIG1fZGF0YS0+bV9kcmF3UGFuU2Ny
b2xsSWNvbiA9IGZhbHNlOyAKKworICAgIHVwZGF0ZVdpbmRvd1JlY3QoSW50UmVjdChtX2RhdGEt
Pm1fcGFuU2Nyb2xsSWNvblBvaW50LCBJbnRTaXplKHBhbkljb25TaXplTGVuZ3RoLCBwYW5JY29u
U2l6ZUxlbmd0aCkpLCB0cnVlKTsKK30KKwogdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgY29kZSBpcyBoZXJlIHNvIHdlIGRvbid0IGhhdmUgdG8gZm9yayBGcmFtZVZpZXcuaC8u
Y3BwLgpAQCAtNjYwLDYgKzY5OSwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCogCiAKICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgIH0KKworICAgIC8v
UGFpbnQgdGhlIHBhblNjcm9sbCBJY29uCisgICAgc3RhdGljIEltYWdlKiBwYW5TY3JvbGxJY29u
OworICAgIGlmIChtX2RhdGEtPm1fZHJhd1BhblNjcm9sbEljb24pIHsKKyAgICAgICAgaWYgKCFw
YW5TY3JvbGxJY29uKQorICAgICAgICAgICAgcGFuU2Nyb2xsSWNvbiA9IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZSgicGFuSWNvbiIpOworICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UocGFu
U2Nyb2xsSWNvbiwgbV9kYXRhLT5tX3BhblNjcm9sbEljb25Qb2ludCk7CisgICAgfQogfQogCiB2
b2lkIFNjcm9sbFZpZXc6OnRoZW1lQ2hhbmdlZCgpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4
L1Njcm9sbFZpZXdXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3Jv
bGxWaWV3V3guY3BwCShyZXZpc2lvbiAzNTA1MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gvU2Ny
b2xsVmlld1d4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDYgKzM0OSwxMSBAQCBXZWJDb3Jl
OjpTY3JvbGxiYXJNb2RlIFNjcm9sbFZpZXc6OnZTY3JvCiAgICAgcmV0dXJuIG1fZGF0YS0+dlNj
cm9sbGJhck1vZGU7CiB9CiAKK2Jvb2wgU2Nyb2xsVmlldzo6aXNTY3JvbGxhYmxlKCkgCit7IAor
ICAgIHJldHVybiB0cnVlOyAvLyBGSVhNRSA6IHJldHVybiB3ZXRoZXIgb3Igbm90IHRoZSB2aWV3
IGlzIHNjcm9sbGFibGUKK30KKwogdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJzTW9kZShT
Y3JvbGxiYXJNb2RlIG5ld01vZGUpCiB7CiAgICAgYm9vbCBuZWVkc0FkanVzdCA9IGZhbHNlOwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMzUwNTMpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5MCw2ICs2
OTAsNTIgQEAgUmVuZGVyTGF5ZXI6OmNvbnZlcnRUb0xheWVyQ29vcmRzKGNvbnN0IAogICAgIHkg
Kz0geVBvcygpOwogfQogCit2b2lkIFJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9tUG9pbnQoY29u
c3QgSW50UG9pbnQmIHNvdXJjZVBvaW50KSAKK3sKKyAgIGNvbnN0IGludCBzZW5zaXRpdml0eVNj
YWxlID0gMjUwOworICAgIGNvbnN0IGludCBpY29uUmFkaXVzID0gMTA7CisgICAgY29uc3QgaW50
IHNwZWVkUmVkdWNlciA9IDM7CisgICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24gPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmN1cnJlbnRNb3VzZVBvc2l0aW9uKCk7CisgICAgCisgICAgLy8gV2UgbmVlZCB0byBjaGVjayBp
ZiB0aGUgY3VycmVudCBtb3VzZSBwb3NpdGlvbiBpcyBvdXQgb2YgdGhlIHdpbmRvdy4gV2hlbiB0
aGUgbW91c2UgaXMgb3V0IG9mIHRoZSB3aW5kb3csIHRoZSBwb3NpdGlvbiBpcyBpbmNvaGVyZW50
CisgICAgc3RhdGljIEludFBvaW50IHByZXZpb3VzTW91c2VQb3NpdGlvbjsKKyAgICBpZiAoY3Vy
cmVudE1vdXNlUG9zaXRpb24ueCgpIDwgMCB8fCBjdXJyZW50TW91c2VQb3NpdGlvbi55KCkgPCAw
KQorICAgICAgICBjdXJyZW50TW91c2VQb3NpdGlvbiA9IHByZXZpb3VzTW91c2VQb3NpdGlvbjsK
KyAgICBlbHNlCisgICAgICAgIHByZXZpb3VzTW91c2VQb3NpdGlvbiA9IGN1cnJlbnRNb3VzZVBv
c2l0aW9uOworCisgICAgaW50IHhEZWx0YSA9IGN1cnJlbnRNb3VzZVBvc2l0aW9uLngoKSAtIHNv
dXJjZVBvaW50LngoKTsKKyAgICBpbnQgeURlbHRhID0gY3VycmVudE1vdXNlUG9zaXRpb24ueSgp
IC0gc291cmNlUG9pbnQueSgpOworICAgIAorICAgLy8gSWYgdGhlIHBvaW50IGlzIHRvbyBmYXIg
ZnJvbSB0aGUgY2VudGVyIHdlIGxpbWl0IHRoZSBzcGVlZAorICAgIHhEZWx0YSA9IG1heChtaW4o
eERlbHRhLCBzZW5zaXRpdml0eVNjYWxlKSwgLXNlbnNpdGl2aXR5U2NhbGUpOworICAgIHlEZWx0
YSA9IG1heChtaW4oeURlbHRhLCBzZW5zaXRpdml0eVNjYWxlKSwgLXNlbnNpdGl2aXR5U2NhbGUp
OworCisgICBpZihhYnMoeERlbHRhKSA8IGljb25SYWRpdXMpIC8vIGF0IHRoZSBjZW50ZXIgd2Ug
bGV0IHRoZSBzcGFjZSBmb3IgdGhlIGljb24KKyAgICAgICAgeERlbHRhID0gMDsKKyAgICBpZihh
YnMoeURlbHRhKSA8IGljb25SYWRpdXMpCisgICAgICAgIHlEZWx0YSA9IDA7CisKKyAgICAvLyBM
ZXQncyBhdHRlbnVhdGUgdGhlIHNwZWVkCisgICAgeERlbHRhIC89IHNwZWVkUmVkdWNlcjsKKyAg
ICB5RGVsdGEgLz0gc3BlZWRSZWR1Y2VyOworCisgICAgYm9vbCByZXN0cmljdGVkQnlMaW5lQ2xh
bXAgPSBmYWxzZTsKKyAgICBpZiAobV9vYmplY3QtPnBhcmVudCgpKQorICAgICAgICByZXN0cmlj
dGVkQnlMaW5lQ2xhbXAgPSBtX29iamVjdC0+cGFyZW50KCktPnN0eWxlKCktPmxpbmVDbGFtcCgp
ID49IDA7CisKKyAgICBpZiAobV9vYmplY3QtPmhhc092ZXJmbG93Q2xpcCgpICYmICFyZXN0cmlj
dGVkQnlMaW5lQ2xhbXApIHsKKyAgICAgICAgaW50IG5ld09mZnNldFggPSBtYXgoMCwgc2Nyb2xs
WE9mZnNldCgpICsgeERlbHRhKTsKKyAgICAgICAgaW50IG5ld09mZnNldFkgPSBtYXgoMCwgc2Ny
b2xsWU9mZnNldCgpICsgeURlbHRhKTsKKyAgICAgICAgc2Nyb2xsVG9PZmZzZXQobmV3T2Zmc2V0
WCwgbmV3T2Zmc2V0WSk7IAorICAgIH0gZWxzZSBpZiAobV9vYmplY3QtPnZpZXcoKS0+ZnJhbWVW
aWV3KCkpCisgICAgICAgIG1fb2JqZWN0LT52aWV3KCktPmZyYW1lVmlldygpLT5zY3JvbGxCeSh4
RGVsdGEsIHlEZWx0YSk7Cit9CisKIHZvaWQKIFJlbmRlckxheWVyOjpzY3JvbGxPZmZzZXQoaW50
JiB4LCBpbnQmIHkpCiB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDM1
MDUzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQ0LDYgKzI0NCw4IEBAIHB1YmxpYzoKICAgICBpbnQgc2Nyb2xsV2lkdGgoKTsKICAgICBp
bnQgc2Nyb2xsSGVpZ2h0KCk7CiAKKyAgICB2b2lkIHBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJ
bnRQb2ludCYpOworCiAgICAgLy8gU2Nyb2xsaW5nIG1ldGhvZHMgZm9yIGxheWVycyB0aGF0IGNh
biBzY3JvbGwgdGhlaXIgb3ZlcmZsb3cuCiAgICAgdm9pZCBzY3JvbGxPZmZzZXQoaW50JiB4LCBp
bnQmIHkpOwogICAgIHZvaWQgc3VidHJhY3RTY3JvbGxPZmZzZXQoaW50JiB4LCBpbnQmIHkpOwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHJldmlzaW9uIDM1MDUzKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
NiwzMSArNDA2LDg0IEBAIGludCBSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhBdE9mZnNldChpbnQK
ICAgICByZXR1cm4gbmV3T2Zmc2V0IDwgbnVtSXRlbXMoKSA/IG5ld09mZnNldCA6IC0xOwogfQog
Ci12b2lkIFJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwoKQordm9pZCBSZW5kZXJMaXN0Qm94Ojpw
YW5TY3JvbGwoY29uc3QgSW50UG9pbnQmIHBhblN0YXJ0TW91c2VQb3NpdGlvbikKIHsKLSAgICBJ
bnRQb2ludCBwb3MgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0
aW9uKCkpOworICAgIGNvbnN0IGludCBtYXhTcGVlZCA9IDIwOworICAgIGNvbnN0IGludCBpY29u
UmFkaXVzID0gNzsKKyAgICBjb25zdCBpbnQgc3BlZWRSZWR1Y2VyID0gNDsKKworICAgIGludCBv
ZmZzZXRYID0gMCwgb2Zmc2V0WSA9IHdpbmRvd0NsaXBSZWN0KCkueSgpOworICAgIGFic29sdXRl
UG9zaXRpb24ob2Zmc2V0WCwgb2Zmc2V0WSk7CisKKyAgICBJbnRQb2ludCBjdXJyZW50TW91c2VQ
b3NpdGlvbiA9IGRvY3VtZW50KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50TW91
c2VQb3NpdGlvbigpOworICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgbW91
c2UgcG9zaXRpb24gaXMgb3V0IG9mIHRoZSB3aW5kb3cuIFdoZW4gdGhlIG1vdXNlIGlzIG91dCBv
ZiB0aGUgd2luZG93LCB0aGUgcG9zaXRpb24gaXMgaW5jb2hlcmVudAorICAgIHN0YXRpYyBJbnRQ
b2ludCBwcmV2aW91c01vdXNlUG9zaXRpb247CisgICAgaWYgKGN1cnJlbnRNb3VzZVBvc2l0aW9u
LnkoKSA8IDApCisgICAgICAgIGN1cnJlbnRNb3VzZVBvc2l0aW9uID0gcHJldmlvdXNNb3VzZVBv
c2l0aW9uOworICAgIGVsc2UKKyAgICAgICAgcHJldmlvdXNNb3VzZVBvc2l0aW9uID0gY3VycmVu
dE1vdXNlUG9zaXRpb247CisKKyAgICBpbnQgeURlbHRhID0gY3VycmVudE1vdXNlUG9zaXRpb24u
eSgpIC0gcGFuU3RhcnRNb3VzZVBvc2l0aW9uLnkoKTsKKworICAgLy8gSWYgdGhlIHBvaW50IGlz
IHRvbyBmYXIgZnJvbSB0aGUgY2VudGVyIHdlIGxpbWl0IHRoZSBzcGVlZAorICAgIHlEZWx0YSA9
IG1heChtaW4oeURlbHRhLCBtYXhTcGVlZCksIC1tYXhTcGVlZCk7CisgICAgCisgICAgaWYoYWJz
KHlEZWx0YSkgPCBpY29uUmFkaXVzKSAvLyBhdCB0aGUgY2VudGVyIHdlIGxldCB0aGUgc3BhY2Ug
Zm9yIHRoZSBpY29uCisgICAgICAgIHJldHVybjsKIAorICAgIGlmICh5RGVsdGEgPiAwKQorICAg
ICAgICAvL29mZnNldFkgPSB2aWV3KCktPnZpZXdIZWlnaHQoKTsKKyAgICAgICAgb2Zmc2V0WSAr
PSBsaXN0SGVpZ2h0KCk7CisgICBlbHNlIGlmICh5RGVsdGEgPCAwKQorICAgICAgIHlEZWx0YS0t
OworCisgICAgLy8gTGV0J3MgYXR0ZW51YXRlIHRoZSBzcGVlZAorICAgIHlEZWx0YSAvPSBzcGVl
ZFJlZHVjZXI7CisKKyAgICBJbnRQb2ludCBzY3JvbGxQb2ludCgwLDApOworICAgIHNjcm9sbFBv
aW50LnNldFkob2Zmc2V0WSArIHlEZWx0YSk7CisgICAgaW50IG5ld09mZnNldCA9IHNjcm9sbFRv
d2FyZChzY3JvbGxQb2ludCk7CisgICAgaWYgKG5ld09mZnNldCA8IDApIAorICAgICAgICByZXR1
cm47CisKKyAgICBtX2luQXV0b3Njcm9sbCA9IHRydWU7CisgICAgSFRNTFNlbGVjdEVsZW1lbnQq
IHNlbGVjdCA9IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4obm9kZSgpKTsKKyAgICBz
ZWxlY3QtPnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24oIXNlbGVjdC0+bXVsdGlwbGUoKSk7CisgICAg
bV9pbkF1dG9zY3JvbGwgPSBmYWxzZTsKK30KKworaW50IFJlbmRlckxpc3RCb3g6OnNjcm9sbFRv
d2FyZChjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24pCit7CiAgICAgaW50IHJ4ID0gMDsKICAg
ICBpbnQgcnkgPSAwOwogICAgIGFic29sdXRlUG9zaXRpb24ocngsIHJ5KTsKLSAgICBpbnQgb2Zm
c2V0WCA9IHBvcy54KCkgLSByeDsKLSAgICBpbnQgb2Zmc2V0WSA9IHBvcy55KCkgLSByeTsKLSAg
ICAKLSAgICBpbnQgZW5kSW5kZXggPSAtMTsKKyAgICBpbnQgb2Zmc2V0WCA9IGRlc3RpbmF0aW9u
LngoKSAtIHJ4OworICAgIGludCBvZmZzZXRZID0gZGVzdGluYXRpb24ueSgpIC0gcnk7CisKICAg
ICBpbnQgcm93cyA9IG51bVZpc2libGVJdGVtcygpOwogICAgIGludCBvZmZzZXQgPSBtX2luZGV4
T2Zmc2V0OworICAgIAogICAgIGlmIChvZmZzZXRZIDwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9w
KCkgJiYgc2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgob2Zmc2V0IC0gMSkpCi0gICAg
ICAgIGVuZEluZGV4ID0gb2Zmc2V0IC0gMTsKLSAgICBlbHNlIGlmIChvZmZzZXRZID4gaGVpZ2h0
KCkgLSBwYWRkaW5nQm90dG9tKCkgLSBib3JkZXJCb3R0b20oKSAmJiBzY3JvbGxUb1JldmVhbEVs
ZW1lbnRBdExpc3RJbmRleChvZmZzZXQgKyByb3dzKSkKLSAgICAgICAgZW5kSW5kZXggPSBvZmZz
ZXQgKyByb3dzIC0gMTsKLSAgICBlbHNlCi0gICAgICAgIGVuZEluZGV4ID0gbGlzdEluZGV4QXRP
ZmZzZXQob2Zmc2V0WCwgb2Zmc2V0WSk7CisgICAgICAgIHJldHVybiBvZmZzZXQgLSAxOworICAg
IAorICAgIGlmIChvZmZzZXRZID4gaGVpZ2h0KCkgLSBwYWRkaW5nQm90dG9tKCkgLSBib3JkZXJC
b3R0b20oKSAmJiBzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChvZmZzZXQgKyByb3dz
KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldCArIHJvd3MgLSAxOworICAgIAorICAgIHJldHVybiBs
aXN0SW5kZXhBdE9mZnNldChvZmZzZXRYLCBvZmZzZXRZKTsKK30KIAordm9pZCBSZW5kZXJMaXN0
Qm94OjphdXRvc2Nyb2xsKCkKK3sKKyAgICBJbnRQb2ludCBwb3MgPSBkb2N1bWVudCgpLT5mcmFt
ZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkpOworCisgICAgaW50IGVuZEluZGV4ID0g
c2Nyb2xsVG93YXJkKHBvcyk7CiAgICAgaWYgKGVuZEluZGV4ID49IDApIHsKICAgICAgICAgSFRN
TFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4o
bm9kZSgpKTsKICAgICAgICAgbV9pbkF1dG9zY3JvbGwgPSB0cnVlOworCiAgICAgICAgIGlmICgh
c2VsZWN0LT5tdWx0aXBsZSgpKQogICAgICAgICAgICAgc2VsZWN0LT5zZXRBY3RpdmVTZWxlY3Rp
b25BbmNob3JJbmRleChlbmRJbmRleCk7CisKICAgICAgICAgc2VsZWN0LT5zZXRBY3RpdmVTZWxl
Y3Rpb25FbmRJbmRleChlbmRJbmRleCk7CiAgICAgICAgIHNlbGVjdC0+dXBkYXRlTGlzdEJveFNl
bGVjdGlvbighc2VsZWN0LT5tdWx0aXBsZSgpKTsKICAgICAgICAgbV9pbkF1dG9zY3JvbGwgPSBm
YWxzZTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgJKHJldmlzaW9uIDM1MDUzKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw2ICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcEF1dG9zY3JvbGwoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRQYW5TY3JvbGwoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHBh
blNjcm9sbChjb25zdCBJbnRQb2ludCYpOworCisgICAgaW50IHNjcm9sbFRvd2FyZChjb25zdCBJ
bnRQb2ludCYpOyAvLyBSZXR1cm5zIHRoZSBuZXcgaW5kZXggb3IgLTEgaWYgbm8gc2Nyb2xsIG9j
Y3VyZWQKKwogICAgIHZpcnR1YWwgaW50IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGludCBzY3JvbGxMZWZ0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgc2Ny
b2xsVG9wKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlz
aW9uIDM1MDUzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQyLDcgKzY0Miw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpzY3JvbGwoU2Ny
b2xsRGlyZWN0aW8KIAogYm9vbCBSZW5kZXJPYmplY3Q6OnNob3VsZEF1dG9zY3JvbGwoKSBjb25z
dAogewotICAgIHJldHVybiAoKGlzUm9vdCgpKSB8fCAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgKHNj
cm9sbHNPdmVyZmxvdygpIHx8IChub2RlKCkgJiYgbm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgp
KSkpKTsKKyAgICByZXR1cm4gKGhhc092ZXJmbG93Q2xpcCgpICYmIChzY3JvbGxzT3ZlcmZsb3co
KSB8fCAobm9kZSgpICYmIG5vZGUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkpKSB8fCAoaXNSb290
KCkgJiYgdmlldygpICYmIHZpZXcoKS0+ZnJhbWVWaWV3KCktPmlzU2Nyb2xsYWJsZSgpKTsKIH0K
IAogdm9pZCBSZW5kZXJPYmplY3Q6OmF1dG9zY3JvbGwoKQpAQCAtNjUxLDYgKzY1MSwxMiBAQCB2
b2lkIFJlbmRlck9iamVjdDo6YXV0b3Njcm9sbCgpCiAgICAgICAgIGwtPmF1dG9zY3JvbGwoKTsK
IH0KIAordm9pZCBSZW5kZXJPYmplY3Q6OnBhblNjcm9sbChjb25zdCBJbnRQb2ludCYgc291cmNl
KQoreworICAgIGlmIChSZW5kZXJMYXllciogbCA9IGxheWVyKCkpCisgICAgICAgIGwtPnBhblNj
cm9sbEZyb21Qb2ludChzb3VyY2UpOworfQorCiBib29sIFJlbmRlck9iamVjdDo6aGFzU3RhdGlj
WCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChzdHlsZSgpLT5sZWZ0KCkuaXNBdXRvKCkgJiYgc3R5
bGUoKS0+cmlnaHQoKS5pc0F1dG8oKSkgfHwgc3R5bGUoKS0+bGVmdCgpLmlzU3RhdGljKCkgfHwg
c3R5bGUoKS0+cmlnaHQoKS5pc1N0YXRpYygpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgJKHJldmlzaW9uIDM1MDUzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY1Myw2ICs2NTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRBdXRvc2Nyb2xsKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF1dG9zY3Jv
bGwoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEF1dG9zY3JvbGwoKSB7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBwYW5TY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFBhblNjcm9sbCgpIHsgfSAKKwogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGUoKSBjb25z
dDsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgc2V2ZW4gZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGlt
cGxlbWVudCBjb2xsYXBzaW5nIG1hcmdpbnMuCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMzUwNTMpCisrKyBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA4
LTA3LTA4ICBNYXhpbWUgQnJpdHRvICA8YnJpdHRvQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwkJCisJQWRkZWQgdGhlIHBhbm5pbmcgaWNvbiBpbiB0
aGUgcmVzc291cmNlcy4KKyAgICAgICAgSXRzIG5hbWUgaXMgY29tcGFzcy5wbmcgdG8gbWFrZSBh
IGRpZmZlcmVuY2Ugd2l0aCBtb3ZlQ3Vyc29yLnBuZyAoZnJvbSB0aGUgV2ViQ29yZSByZXNzb3Vy
Y2VzKQorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2Vi
S2l0LnJjOgorICAgICAgICAqIFdlYktpdC52Y3Byb2ovcGFuSWNvbi5wbmc6IEFkZGVkLgorICAg
ICAgICAqIFdlYktpdC52Y3Byb2ovcmVzb3VyY2UuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3Bw
OiBEZWNsYXJlZCB0aGUgbmV3IHJlc3NvdXJjZSB3aXRoIHRoZSBuYW1lICJwYW5JY29uIgorICAg
ICAgICAobG9hZFJlc291cmNlSW50b0J1ZmZlcik6CisKIDIwMDgtMDctMDIgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICAtIHRyeSB0byBmaXggdGhlIFdpbmRvd3Mg
YnVpbGQKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0RExMLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYktpdERMTC5jcHAJKHJldmlzaW9uIDM1MDUzKQorKysgV2ViS2l0L3dpbi9XZWJL
aXRETEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNiArMTQ1LDggQEAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZQogICAgICAgICBpZHIgPSBJRFJfVVJMX0lDT047
CiAgICAgZWxzZSBpZiAoIXN0cmNtcChuYW1lLCAibnVsbFBsdWdpbiIpKQogICAgICAgICBpZHIg
PSBJRFJfTlVMTF9QTFVHSU47CisgICAgZWxzZSBpZiAoIXN0cmNtcChuYW1lLCAicGFuSWNvbiIp
KQorICAgICAgICBpZHIgPSBJRFJfUEFOX1NDUk9MTF9JQ09OOwogICAgIGVsc2UgaWYgKCFzdHJj
bXAobmFtZSwgInpvb21JbkN1cnNvciIpKQogICAgICAgICBpZHIgPSBJRFJfWk9PTV9JTl9DVVJT
T1I7CiAgICAgZWxzZSBpZiAoIXN0cmNtcChuYW1lLCAiem9vbU91dEN1cnNvciIpKQpJbmRleDog
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5yYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnJjCShyZXZpc2lvbiAzNTA1MykKKysrIFdlYktpdC93
aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQucmMJKHdvcmtpbmcgY29weSkKQEAgLTY5LDQgKzY5LDUg
QEAgSURSX0RFTEVURV9CVVRUT05fUFJFU1NFRCAgICAgICAgUE5HICAgIAogSURSX1pPT01fSU5f
Q1VSU09SICAgICAgICAgICAgICAgUE5HICAgICAgICAgICAgICAgICAgICAgInpvb21JbkN1cnNv
ci5wbmciCiBJRFJfWk9PTV9PVVRfQ1VSU09SICAgICAgICAgICAgICBQTkcgICAgICAgICAgICAg
ICAgICAgICAiem9vbU91dEN1cnNvci5wbmciCiBJRFJfVkVSVElDQUxfVEVYVF9DVVJTT1IgICAg
ICAgICBQTkcgICAgICAgICAgICAgICAgICAgICAidmVydGljYWxUZXh0Q3Vyc29yLnBuZyIKK0lE
Ul9QQU5fU0NST0xMX0lDT04gICAgICAgICAgICAgIFBORyAgICAgICAgICAgICAgICAgICAgICJw
YW5JY29uLnBuZyIKIApJbmRleDogV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL3Jlc291cmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL3Jlc291cmNlLmgJKHJldmlz
aW9uIDM1MDUzKQorKysgV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL3Jlc291cmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIsMjIgKzIsMzAgQEAKIC8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVy
YXRlZCBpbmNsdWRlIGZpbGUuCiAvLyBVc2VkIGJ5IFdlYktpdC5yYwogLy8KKyNkZWZpbmUgX19C
VUlMRF9OVU1CRVJfTUlOT1JfXyAgICAgICAgICAwCisjZGVmaW5lIF9fQlVJTERfTlVNQkVSX1ZB
UklBTlRfXyAgICAgICAgMAogI2RlZmluZSBJRFJfV0VCS0lUICAgICAgICAgICAgICAgICAgICAg
IDEKKyNkZWZpbmUgQlVJTERfTlVNQkVSICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIF9f
VkVSU0lPTl9NSU5PUl9fICAgICAgICAgICAgICAgMQorI2RlZmluZSBfX1ZFUlNJT05fVElOWV9f
ICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgVlNfVkVSU0lPTl9JTkZPICAgICAgICAgICAgICAg
ICAxCiAjZGVmaW5lIElEUl9SRVNJWkVfQ09STkVSICAgICAgICAgICAgICAgMgogI2RlZmluZSBJ
RFJfTUlTU0lOR19JTUFHRSAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgX19WRVJTSU9OX01BSk9S
X18gICAgICAgICAgICAgICAzCiAjZGVmaW5lIElEUl9VUkxfSUNPTiAgICAgICAgICAgICAgICAg
ICAgNAogI2RlZmluZSBJRFJfTlVMTF9QTFVHSU4gICAgICAgICAgICAgICAgIDUKICNkZWZpbmUg
SURSX1pPT01fSU5fQ1VSU09SICAgICAgICAgICAgICA2CiAjZGVmaW5lIElEUl9aT09NX09VVF9D
VVJTT1IgICAgICAgICAgICAgNwogI2RlZmluZSBJRFJfVkVSVElDQUxfVEVYVF9DVVJTT1IgICAg
ICAgIDgKLQotI2RlZmluZSBCVUlMRF9OVU1CRVIgICAgICAgICAgICAgICAgICAgIDEKKyNkZWZp
bmUgSURSX1BBTl9TQ1JPTExfSUNPTiAgICAgICAgICAgICAxMgorI2RlZmluZSBfX0JVSUxEX05V
TUJFUl9NQUpPUl9fICAgICAgICAgIDUyNgorI2RlZmluZSBJRENfU1RBVElDICAgICAgICAgICAg
ICAgICAgICAgIC0xCiAKIC8vIE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCiAv
LyAKICNpZmRlZiBBUFNUVURJT19JTlZPS0VECiAjaWZuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZ
TUJPTFMKLSNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICA2CisjZGVmaW5l
IF9BUFNfTkVYVF9SRVNPVVJDRV9WQUxVRSAgICAgICAgMTMKICNkZWZpbmUgX0FQU19ORVhUX0NP
TU1BTkRfVkFMVUUgICAgICAgICA0MDAwMQogI2RlZmluZSBfQVBTX05FWFRfQ09OVFJPTF9WQUxV
RSAgICAgICAgIDEwMDAKICNkZWZpbmUgX0FQU19ORVhUX1NZTUVEX1ZBTFVFICAgICAgICAgICAx
MDEKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9wYW5JY29uLnBuZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10
eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJL
aXQvd2luL1dlYktpdC52Y3Byb2ovcGFuSWNvbi5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWlt
ZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKaVZCT1J3MEtHZ29BQUFBTlNV
aEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFB
QQpZVWxFUVZSNG5LeFR5d29BSUF3YTlQL2ZiQkIwYUE4WFplQ3BkTG8yQTJBRSs1UnZLTmxzTERD
Umx0eUpYSkdaU0pVWlNZVGpLaFB3ClZiTEt3VW5Wc05LQkY2V1pPd1NycndMZkVTUk5sSHlqWkpB
a295eFpwdXQxbmdBQUFQLy9Bd0E2QUtaYnpBdWtXQUFBQUFCSlJVNUUKcmtKZ2dnPT0KCg==
</data>
<flag name="review"
          id="9759"
          type_id="1"
          status="+"
          setter="adele"
    />
          </attachment>
      

    </bug>

</bugzilla>