<?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>102150</bug_id>
          
          <creation_ts>2012-11-13 16:19:25 -0800</creation_ts>
          <short_desc>Pass clicks through to the restarted plugin</short_desc>
          <delta_ts>2012-11-26 14:37:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>766158</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-13 16:19:25 -0800</bug_when>
    <thetext>Clicking on the plugin enables snapshotted plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766159</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-11-13 16:19:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/12695575&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770102</commentid>
    <comment_count>2</comment_count>
      <attachid>174845</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-18 03:10:47 -0800</bug_when>
    <thetext>Created attachment 174845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770103</commentid>
    <comment_count>3</comment_count>
      <attachid>174845</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-18 03:19:14 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

Attachment 174845 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14888423</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770104</commentid>
    <comment_count>4</comment_count>
      <attachid>174845</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-18 03:19:17 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

Attachment 174845 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14888421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770106</commentid>
    <comment_count>5</comment_count>
      <attachid>174845</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-18 03:25:12 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

Attachment 174845 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14876563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770108</commentid>
    <comment_count>6</comment_count>
      <attachid>174845</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-18 03:36:34 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

Attachment 174845 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14890096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770109</commentid>
    <comment_count>7</comment_count>
      <attachid>174845</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-18 03:37:03 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

Attachment 174845 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14868803</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770110</commentid>
    <comment_count>8</comment_count>
      <attachid>174845</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-18 03:37:09 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

Attachment 174845 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14875599</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770111</commentid>
    <comment_count>9</comment_count>
      <attachid>174845</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-18 03:39:52 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

Attachment 174845 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14873744</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770112</commentid>
    <comment_count>10</comment_count>
      <attachid>174845</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-18 03:46:09 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

Attachment 174845 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14872784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770118</commentid>
    <comment_count>11</comment_count>
      <attachid>174845</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-18 07:23:31 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174845&amp;action=review

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:297
&gt; +    dispatchSimulatedClick(m_pendingClickEventFromSnapshot.get(), true, true, false);

EWS says that’s too many booleans there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770121</commentid>
    <comment_count>12</comment_count>
      <attachid>174845</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-18 07:40:06 -0800</bug_when>
    <thetext>Comment on attachment 174845
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174845&amp;action=review

&gt;&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:297
&gt;&gt; +    dispatchSimulatedClick(m_pendingClickEventFromSnapshot.get(), true, true, false);
&gt; 
&gt; EWS says that’s too many booleans there.

I see now. This patch depends on that other patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775261</commentid>
    <comment_count>13</comment_count>
      <attachid>175943</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-26 01:54:12 -0800</bug_when>
    <thetext>Created attachment 175943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775265</commentid>
    <comment_count>14</comment_count>
      <attachid>175943</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-26 01:59:42 -0800</bug_when>
    <thetext>Comment on attachment 175943
Patch

Attachment 175943 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14988533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775276</commentid>
    <comment_count>15</comment_count>
      <attachid>175946</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-26 02:13:01 -0800</bug_when>
    <thetext>Created attachment 175946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775752</commentid>
    <comment_count>16</comment_count>
      <attachid>175946</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-26 12:02:19 -0800</bug_when>
    <thetext>Comment on attachment 175946
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=175946&amp;action=review

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:278
&gt; +    ASSERT_UNUSED(timer, timer == &amp;m_simulatedMouseClickTimer);

We don&apos;t normally assert this. Why do you think you need to?

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:282
&gt; +    dispatchSimulatedClick(m_pendingClickEventFromSnapshot.get(), SendMouseOverUpDownEvents, DoNotShowPressedLook);

What if this event runs JS that destroys |this|? Have you tested that?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm:928
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return IntPoint();

Can&apos;t you just call the superclass?

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:71
&gt; -static const double pluginSnapshotTimerDelay = 1;
&gt; +static const double pluginSnapshotTimerDelay = 1.1;

Should you comment here about the dependency with simulatedMouseClickTimerDelay?

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:735
&gt; +PassOwnPtr&lt;WebEvent&gt; PluginView::createWebEvent(MouseEvent* event) const

const MouseEvent* ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775899</commentid>
    <comment_count>17</comment_count>
      <attachid>175946</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-26 14:29:37 -0800</bug_when>
    <thetext>Comment on attachment 175946
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=175946&amp;action=review

&gt;&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:278
&gt;&gt; +    ASSERT_UNUSED(timer, timer == &amp;m_simulatedMouseClickTimer);
&gt; 
&gt; We don&apos;t normally assert this. Why do you think you need to?

It is extraneous. I&apos;ll remove it.

&gt;&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:282
&gt;&gt; +    dispatchSimulatedClick(m_pendingClickEventFromSnapshot.get(), SendMouseOverUpDownEvents, DoNotShowPressedLook);
&gt; 
&gt; What if this event runs JS that destroys |this|? Have you tested that?

I have not tested this case. I&apos;ve been testing with live sites, and have not run into a case where the plugin destroys itself immediately (since |this| would have to be deleted before the 1.1 second timer fired).

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm:928
&gt;&gt; +    return IntPoint();
&gt; 
&gt; Can&apos;t you just call the superclass?

Superclass uses pure virtual. I can move this up to WebKit::Plugin as a default impl.

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:71
&gt;&gt; +static const double pluginSnapshotTimerDelay = 1.1;
&gt; 
&gt; Should you comment here about the dependency with simulatedMouseClickTimerDelay?

Done.

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:735
&gt;&gt; +PassOwnPtr&lt;WebEvent&gt; PluginView::createWebEvent(MouseEvent* event) const
&gt; 
&gt; const MouseEvent* ?

No. offsetX() and offsetY() are calculated dynamically and then cached, so the event should not be const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775905</commentid>
    <comment_count>18</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-26 14:37:37 -0800</bug_when>
    <thetext>Committed r135767: &lt;http://trac.webkit.org/changeset/135767&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174845</attachid>
            <date>2012-11-18 03:10:47 -0800</date>
            <delta_ts>2012-11-26 01:54:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102150-20121118030840.patch</filename>
            <type>text/plain</type>
            <size>24608</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5NGFjMjhhZWJlZjE0
ZDdiOWJiN2QzMTU4OWY0MmE0MWFmYjk0ZS4uZDEyMzJkYWViYzFhZTdlYzI1YmZmZDIxMWVjOGM0
ZWI3ODBlM2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDEyLTExLTE4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAorICAgICAgICBQYXNzIGNsaWNrcyB0aHJvdWdoIHRv
IHRoZSByZXN0YXJ0ZWQgcGx1Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDIxNTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNjk1NTc1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5l
dyBzdGF0ZSB0byB0aGUgbWFjaGluZSBmb3IgcGx1Z2luIHNuYXBzaG90dGluZywgY2FsbGVkIFBs
YXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2suCisgICAgICAgIFRoaXMgcmVwcmVzZW50cyB0aGUg
c3RhdGUgd2hlcmUgdGhlIHBsdWdpbiBpcyBwbGF5aW5nLCBidXQgYmVmb3JlIHRoZSBwZW5kaW5n
IG1vdXNlIGNsaWNrCisgICAgICAgIGhhcyBiZWVuIGZpcmVkLiBPbmNlIHRoZSBjbGljayBpcyBz
ZW50LCB0aGUgcGx1Z2luIHN0YXRlIHRyYW5zaXRpb25zIHRvIFBsYXlpbmcuIEZvcgorICAgICAg
ICBzaXR1YXRpb25zIHdoZXJlIHRoZSBwbHVnaW4ganVzdCBydW5zIG5vcm1hbGx5IHdpdGhvdXQg
YSBzaW11bGF0ZWQgY2xpY2ssIHRoZSBwbHVnaW4gc3RhdGUKKyAgICAgICAganVtcHMgZnJvbSBE
aXNwbGF5aW5nU25hcHNob3Qgc3RyYWlnaHQgdG8gUGxheWluZywgYXMgYmVmb3JlLgorCisgICAg
ICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oOiBBZGQgbmV3IGRpc3BsYXkgc3RhdGUgdG8g
cmVwcmVzZW50IHdoZW4gdGhlIHBsdWdpbiBpcyBydW5uaW5nLAorICAgICAgICBidXQgYSBwZW5k
aW5nIG1vdXNlIGNsaWNrIGlzIGFib3V0IHRvIGJlIHNlbnQgdG8gdGhlIHBsdWdpbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNr
KTogQ2FsbGVkIGJ5IHRoZSBwbHVnaW4gd2hlbiBpdCBpcworICAgICAgICBvayBmb3IgdGhlIGVs
ZW1lbnQgdG8gc2VuZCB0aGUgcGVuZGluZyBtb3VzZSBjbGljay4KKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogVXBkYXRlIHRoZSBoYW5kbGVyIHRvIHBhc3MgdGhlIGV2
ZW50CisgICAgICAgIHRvIHRoZSByZW5kZXJlciB0byBoYW5kbGUgaWYgdGhlIHN0YXRlIGlzIGJl
Zm9yZSBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrLgorCisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcDogQWRkIGEgY2xpY2sgdGltZXIgdG8gZGVsYXkgdGhlIG1vdXNlIGNsaWNrIHNvIHRo
YXQgdGhlCisgICAgICAgIHBsdWdpbiBoYXMgc29tZSB0aW1lIHRvIGluaXRpYWxpemUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KTogSW5pdGlhbGl6ZSB0aGUgbW91c2UgdGltZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpzZXRQZW5kaW5nQ2xpY2tFdmVudCk6IEtlZXAgdHJhY2sgb2Yg
dGhlIGNsaWNrIGV2ZW50CisgICAgICAgIHRoZSB1c2VyIG1hZGUgdG8gcmVzdGFydCB0aGUgcGx1
Z2luLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlzcGF0Y2hQ
ZW5kaW5nTW91c2VDbGljayk6IFN0YXJ0IHRoZSB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkKTogV2hl
biB0aGUgdGltZXIgZmlyZXMsCisgICAgICAgIGRpc3BhdGNoIHRoZSBzaW11bGF0ZWQgY2xpY2ss
IHdpdGggbW91c2Ugb3ZlciwgbW91c2UgZG93biwgYW5kIG1vdXNlIHVwIGV2ZW50cy4gVHJhbnNp
dGlvbgorICAgICAgICB0byB0aGUgUGxheWluZyBzdGF0ZSwgYW5kIHdlIG5vIGxvbmdlciBuZWVk
IHRoZSBjbGljayBldmVudC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHA6IENoYW5nZSB0aGUgdGhyZXNob2xkIHN0YXRlIHRvIFBsYXlpbmdXaXRoUGVu
ZGluZ01vdXNlQ2xpY2sKKyAgICAgICAgaW5zdGVhZCBvZiBQbGF5aW5nLCBzaW5jZSB0aGF0IGlz
IHRoZSBlYXJsaWVzdCBzdGF0ZSB3aGVyZSB0aGUgcGx1Z2luIGlzIHBsYXlpbmcuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQpOiBJZiB0aGUgdXNl
ciBjbGlja2VkIG9uIHRoZSBidXR0b24sIGp1bXAgdG8KKyAgICAgICAgUGxheWluZywgYW5kIGRv
bid0IHNlbmQgYSBzaW11bGF0ZWQgY2xpY2suIE90aGVyd2lzZSwgdHJhbnNpdGlvbiB0byBQbGF5
aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrLAorICAgICAgICBhbmQga2VlcCB0cmFjayBvZiB0aGF0
IG1vdXNlIGV2ZW50LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBNb3VzZVJl
bGF0ZWRFdmVudDo6b2Zmc2V0WCgpIGFuZCBvZmZzZXRZKCkuCisKKzIwMTItMTEtMTggIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCiAgICAgICAgIEV4dGVuZCBFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sgdG8gYWxsb3cgc2VuZGluZyBhIG1vdXNlb3ZlciBldmVu
dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNjEw
CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjcyNTY2Mz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMDJjZTI4
MmJiNTg1ZTFmNTZhN2Q0YzY2ZjcyYWE2ZGYxYjQ3M2Q4Li40Yjg0YmZjZWQ1NmY0NTZhMzVkN2E5
NmE5MDU1ZDE2OThlZDQ0YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMTEt
MTggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3MgY2xpY2tzIHRo
cm91Z2ggdG8gdGhlIHJlc3RhcnRlZCBwbHVnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjE1MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI2
OTU1NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3NlIGNvbnZlcnRUb1Jvb3RWaWV3KCkgYXMgYSBwdWJsaWMgZnVuY3Rpb24gZm9yIGFsbCBw
bHVnaW5zLiBJdCBjb252ZXJ0cyB0aGUgY2xpY2sgcG9pbnQKKyAgICAgICAgZnJvbSBsb2NhbCBw
bHVnaW4gY29vcmRpbmF0ZXMgdG8gcm9vdCB2aWV3IGNvb3JkaW5hdGVzLiBXaGVuIHRoZSBldmVu
dHMgYXJlIHNlbnQgdG8gdGhlCisgICAgICAgIHBsdWdpbiwgdGhlIGNvb3JkaW5hdGUgZ2V0cyBj
b252ZXJ0ZWQgYmFjayB0byB0aGUgbG9jYWwgcmVmZXJlbmNlIGZyYW1lLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogUHJvbW90ZSBjb252ZXJ0VG9Sb290VmlldygpIGZy
b20gTmV0c2NhcGVQbHVnaW4uaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaDogQW4gaW1wbGVtZW50YXRpb24gYWxyZWFkeSBleGlzdGVkLiBN
YWtlIHRoZQorICAgICAgICBtZXRob2QgdmlydHVhbC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvU2ltcGxlUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpTaW1wbGVQREZQbHVn
aW46OmNvbnZlcnRUb1Jvb3RWaWV3KTogU3R1YiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y29u
dmVydFRvUm9vdFZpZXcpOiBBcHBseSB0aGUgdHJhbnNmb3JtIHRvIHRoZSBwcm92aWRlZCBwb2lu
dCB0byByZXR1cm4KKyAgICAgICAgYSBwb2ludCBpbiByb290IHZpZXcgY29vcmRpbmF0ZXMuCisK
KyAgICAgICAgQ2hhbmdlIHRoZSB0aHJlc2hvbGQgc3RhdGUgdG8gUGxheWluZ1dpdGhQZW5kaW5n
TW91c2VDbGljayBpbnN0ZWFkIG9mIFBsYXlpbmcsIHNpbmNlIHRoYXQgaXMKKyAgICAgICAgdGhl
IGVhcmxpZXN0IHN0YXRlIHdoZXJlIHRoZSBwbHVnaW4gaXMgcGxheWluZy4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6IEdpdmUgdGhlIHNuYXBzaG90IGEgbGl0
dGxlIG1vcmUgdGltZSB0byBnZW5lcmF0ZS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
ZGlkSW5pdGlhbGl6ZVBsdWdpbik6IFdoZW4gdGhlIHBsdWdpbiBoYXMgaW5pdGlhbGl6ZWQsIHRl
bGwgdGhlIHBsdWdpbgorICAgICAgICBlbGVtZW50IHRvIGRpc3BhdGNoIHRoZSBwZW5kaW5nIG1v
dXNlIGNsaWNrLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwYWludCk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KTogSGVscGVyIGZ1bmN0aW9uIHRv
IGNvbnZlcnQgYSBXZWJDb3JlIG1vdXNlIGV2ZW50IHRvIGEKKyAgICAgICAgV2ViTW91c2VFdmVu
dC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aGFuZGxlRXZlbnQpOiBJZiB0aGUgZXZl
bnQgaXMgc2ltdWxhdGVkLCB0aGVyZSBpcyBubyBzb3VyY2UgZXZlbnQgZnJvbQorICAgICAgICB0
aGUgVUkgcHJvY2Vzcy4gU28gd2UgZmFicmljYXRlIG9uZSBiYXNlZCBvbiB0aGUgc2ltdWxhdGVk
IGV2ZW50LgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisKIDIwMTIt
MTEtMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRl
bC5jb20+CiAKICAgICAgICAgUmVtb3ZlIDgtYml0IHJlbGF0ZWQgYXNzZXJ0aW9uIGZyb20gTmV0
c2NhcGVQbHVnaW5Nb2R1bGVYMTEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDAwNDQ4Y2FlMDRm
MTFiZDQ4MThiMDNkYzM5MDZkNTk2MjNmNTM4N2MuLmUxZDM5NzhmMDFiY2FmMTY3YjllODNhNzg4
NmU5NDgwMTZkNmEyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC00OTAsNiArNDkwLDggQEAg
X19aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjI2c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3Rh
dGVFdgogX19aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjMzcmVzdG9yZVNjcm9sbFBvc2l0
aW9uQW5kVmlld1N0YXRlRXYKIF9fWk43V2ViQ29yZTE3SlNET01HbG9iYWxPYmplY3Q2c19pbmZv
RQogX19aTjdXZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CitfX1pON1dlYkNvcmUxN01vdXNl
UmVsYXRlZEV2ZW50N29mZnNldFhFdgorX19aTjdXZWJDb3JlMTdNb3VzZVJlbGF0ZWRFdmVudDdv
ZmZzZXRZRXYKIF9fWk43V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb25DMUVSS04zV1RGNlN0cmlu
Z0VOUzFfMTlUZXh0Q2FzZVNlbnNpdGl2aXR5RQogX19aTjdXZWJDb3JlMTdSZWd1bGFyRXhwcmVz
c2lvbkQxRXYKIF9fWk43V2ViQ29yZTE3U3VicmVzb3VyY2VMb2FkZXI2Y3JlYXRlRVBOU181RnJh
bWVFUE5TXzE0Q2FjaGVkUmVzb3VyY2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzIxUmVz
b3VyY2VMb2FkZXJPcHRpb25zRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcAppbmRleCBiZDk5ZGJmZDc3YTY0OTQ2YTJlNzk2OGI5YTRiOWRmYjc4ODUzOTBmLi5lMjkw
MmFkNzE3NjQ2NTg2OGVmOTk1OGE4YTY0NGVlNTAwOTQwNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgSFRNTFBs
dWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICAg
ICAgdG9SZW5kZXJFbWJlZGRlZE9iamVjdChyKS0+aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRp
Y2F0b3JFdmVudChldmVudCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKHItPmlzU25hcHNob3R0ZWRQbHVnSW4oKSAmJiBkaXNwbGF5U3RhdGUoKSA8IFBsYXlp
bmcpIHsKKyAgICAgICAgaWYgKHItPmlzU25hcHNob3R0ZWRQbHVnSW4oKSAmJiBkaXNwbGF5U3Rh
dGUoKSA8IFBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spIHsKICAgICAgICAgICAgIHRvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4ociktPmhhbmRsZUV2ZW50KGV2ZW50KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5o
CmluZGV4IDM3OTMyNGY3MGY3OWE1NjZmZTU5NjNjNmRhNzYyMDI0MGY5NjM3OTUuLjVhNjJkNTRm
MzQzMDkyYmRiY2JmYTA2ZDc3MTk2YzQ3OWZiYWE0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmgKQEAgLTUxLDExICs1MSwxMyBAQCBwdWJsaWM6CiAgICAgZW51bSBE
aXNwbGF5U3RhdGUgewogICAgICAgICBXYWl0aW5nRm9yU25hcHNob3QsCiAgICAgICAgIERpc3Bs
YXlpbmdTbmFwc2hvdCwKKyAgICAgICAgUGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaywKICAg
ICAgICAgUGxheWluZwogICAgIH07CiAgICAgRGlzcGxheVN0YXRlIGRpc3BsYXlTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzcGxheVN0YXRlOyB9CiAgICAgdm9pZCBzZXREaXNwbGF5U3RhdGUo
RGlzcGxheVN0YXRlIHN0YXRlKSB7IG1fZGlzcGxheVN0YXRlID0gc3RhdGU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4pIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNrKCkgeyB9CiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKICAgICBOUE9iamVjdCogZ2V0TlBPYmplY3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGYxNzIwYjhk
NTI1ZWM2MjA4YTkxZGY3ODhkM2IxODVkOTY4NDJlMGYuLjRlOGI5NWFkMWI4YzUyODdhZmQyMWYx
ZTM3Yzk0YjZmNTJlNWVlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUxv
YWRlci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5j
bHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgpAQCAtMzgsNiAr
MzksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIFRoaXMgZGVsYXkgc2hvdWxkIG5v
dCBleGNlZWQgdGhlIHNuYXBzaG90IGRlbGF5IGluIFBsdWdpblZpZXcuY3BwCitzdGF0aWMgY29u
c3QgZG91YmxlIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckRlbGF5ID0gLjc1OworCiBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIFBy
ZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24gcHJlZmVyUGx1Z0luc0ZvckltYWdlc09wdGlvbikK
ICAgICA6IEhUTUxQbHVnSW5FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgIC8vIG1fbmVl
ZHNXaWRnZXRVcGRhdGUoIWNyZWF0ZWRCeVBhcnNlcikgYWxsb3dzIEhUTUxPYmplY3RFbGVtZW50
IHRvIGRlbGF5CkBAIC00Nyw2ICs1MSw3IEBAIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiAgICAg
LCBtX25lZWRzV2lkZ2V0VXBkYXRlKCFjcmVhdGVkQnlQYXJzZXIpCiAgICAgLCBtX3Nob3VsZFBy
ZWZlclBsdWdJbnNGb3JJbWFnZXMocHJlZmVyUGx1Z0luc0ZvckltYWdlc09wdGlvbiA9PSBTaG91
bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogICAgICwgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlv
bkNhbGxiYWNrcyhmYWxzZSkKKyAgICAsIG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyKHRoaXMs
ICZIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJlZCwg
c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRGVsYXkpCiB7CiAgICAgc2V0SGFzQ3VzdG9tQ2FsbGJh
Y2tzKCk7CiAKQEAgLTI3Miw0ICsyNzcsMjcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKICAgICBzZXREaXNwbGF5
U3RhdGUoRGlzcGxheWluZ1NuYXBzaG90KTsKIH0KIAordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpzZXRQZW5kaW5nQ2xpY2tFdmVudChQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGV2ZW50KQor
eworICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QgPSBldmVudDsKK30KKwordm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNrKCkKK3sK
KyAgICBBU1NFUlQoIW1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyLmlzQWN0aXZlKCkpOworICAg
IG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyLnJlc3RhcnQoKTsKK30KKwordm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJlZChEZWZlcnJhYmxl
T25lU2hvdFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KiB0aW1lcikKK3sKKyAgICBBU1NF
UlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9zaW11bGF0ZWRNb3VzZUNsaWNrVGltZXIpOwor
ICAgIEFTU0VSVChkaXNwbGF5U3RhdGUoKSA9PSBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNr
KTsKKyAgICBBU1NFUlQobV9wZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdCk7CisKKyAgICBk
aXNwYXRjaFNpbXVsYXRlZENsaWNrKG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QuZ2V0
KCksIHRydWUsIHRydWUsIGZhbHNlKTsKKworICAgIHNldERpc3BsYXlTdGF0ZShQbGF5aW5nKTsK
KyAgICBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90ID0gbnVsbHB0cjsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuaAppbmRleCA5NWZiZDhhNzkwNDBmNjZiYTllMDE4YmY4MjQ3YjBkMjljM2RmOGI3
Li5jNWJmNmZhMWY5MWUxZTgyZDA4YmNhMmMwMmM3M2RhYjJjN2E4OTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtMzAsNiArMzAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIGNsYXNzIEZyYW1l
TG9hZGVyOworY2xhc3MgTW91c2VFdmVudDsKIAogZW51bSBQbHVnaW5DcmVhdGlvbk9wdGlvbiB7
CiAgICAgQ3JlYXRlQW55V2lkZ2V0VHlwZSwKQEAgLTU4LDYgKzU5LDggQEAgcHVibGljOgogICAg
IGJvb2wgbmVlZHNXaWRnZXRVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzV2lkZ2V0VXBk
YXRlOyB9CiAgICAgdm9pZCBzZXROZWVkc1dpZGdldFVwZGF0ZShib29sIG5lZWRzV2lkZ2V0VXBk
YXRlKSB7IG1fbmVlZHNXaWRnZXRVcGRhdGUgPSBuZWVkc1dpZGdldFVwZGF0ZTsgfQogCisgICAg
dm9pZCBzZXRQZW5kaW5nQ2xpY2tFdmVudChQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+KTsKKwogcHJv
dGVjdGVkOgogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlciwgUHJlZmVyUGx1Z0luc0Zv
ckltYWdlc09wdGlvbik7CiAKQEAgLTkxLDExICs5NCwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKSBPVkVS
UklERTsKKyAgICB2b2lkIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkKERlZmVycmFibGVP
bmVTaG90VGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4qKTsKIAogICAgIGJvb2wgbV9uZWVk
c1dpZGdldFVwZGF0ZTsKICAgICBib29sIG1fc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlczsK
ICAgICBib29sIG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3M7CiAgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBtX2N1c3RvbVN0eWxlRm9yUGFnZUNhY2hlOworICAgIFJlZlB0cjxNb3Vz
ZUV2ZW50PiBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90OworICAgIERlZmVycmFibGVP
bmVTaG90VGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4gbV9zaW11bGF0ZWRNb3VzZUNsaWNr
VGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCAyNzJmMDRi
OTNiOTFmZGQ0MWY1NWE4OTM1OTI3ZDcxMjBmY2Y3MzQ3Li45NzJiMmJmOTA0MjIzYjViNzc3NWYy
NDI5ZGMxNjI4M2EwZjE2ODE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1h
Z2UpCiAKIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKHBsdWdJ
bkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5
aW5nKSB7CisgICAgaWYgKHBsdWdJbkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhU
TUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7CiAgICAgICAg
IFJlbmRlclJlcGxhY2VkOjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkK
IAogdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRSZXBsYWNlZChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChw
bHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6
UGxheWluZykgeworICAgIGlmIChwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0YXRlKCkg
PCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgewogICAg
ICAgICBwYWludFJlcGxhY2VkU25hcHNob3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAg
ICAgIHBhaW50QnV0dG9uKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgICAgICByZXR1cm47
CkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cmVwYWlu
dEJ1dHRvbigpCiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0
Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikg
Y29uc3QKIHsKLSAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwg
SFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpIHsKKyAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50
KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGlu
Z01vdXNlQ2xpY2spIHsKICAgICAgICAgb3ZlcnJpZGVDdXJzb3IgPSBoYW5kQ3Vyc29yKCk7CiAg
ICAgICAgIHJldHVybiBTZXRDdXJzb3I7CiAgICAgfQpAQCAtMTc0LDcgKzE3NCwxMiBAQCB2b2lk
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCiAgICAg
TW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCk7
CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCAmJiBt
b3VzZUV2ZW50LT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7Ci0gICAgICAgIHBsdWdJbkltYWdl
RWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpOwor
ICAgICAgICBpZiAobV9pc01vdXNlSW5CdXR0b25SZWN0KQorICAgICAgICAgICAgcGx1Z0luSW1h
Z2VFbGVtZW50KCktPnNldERpc3BsYXlTdGF0ZShIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZyk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldERp
c3BsYXlTdGF0ZShIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGlj
ayk7CisgICAgICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+c2V0UGVuZGluZ0NsaWNrRXZl
bnQobW91c2VFdmVudCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHdpZGdldCgpKSB7CiAgICAg
ICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAg
ICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5yZWNyZWF0ZVBsdWdpbih3aWRnZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDU1OWFhZGFiNTc3M2IxYjc4MjI3YWY0MjE0
Mjc4M2M0MjAyOTNjMjIuLjIwNjNjY2VlNjY0NTA0OWEzMzE1YTIxYzNjNGJkODYxNDVmNDA1NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0yMzksNyArMjM5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3Q7CiAKICAgICAvLyBDb252ZXJ0IHRo
ZSBnaXZlbiBwb2ludCBmcm9tIHBsdWctaW4gY29vcmRpbmF0ZXMgdG8gcm9vdCB2aWV3IGNvb3Jk
aW5hdGVzLgotICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBj
b252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgLy8gQ29udmVydCB0aGUgZ2l2ZW4gcG9pbnQgZnJvbSByb290IHZpZXcgY29vcmRp
bmF0ZXMgdG8gcGx1Zy1pbiBjb29yZGluYXRlcy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgcG9pbnQg
Y2FuJ3QgYmUKICAgICAvLyBjb252ZXJ0ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgg
aXNuJ3QgaW52ZXJ0aWJsZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAppbmRleCA5NGUxYWFlMTQyNzliMTNhM2Fk
Y2IxMDczMDgwM2MzYjkxMGM4ZWE5Li42MmQxNGU3MmJlMTdkYzNhN2ZjMDkzMmExNmI4MWQ5NjQ0
NDk4OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1NpbXBsZVBERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvU2ltcGxlUERGUGx1Z2luLmgKQEAgLTE2Nyw2ICsxNjcsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFp
bmluZ1ZpZXcoY29uc3QgV2ViQ29yZTo6U2Nyb2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHNjcm9sbGJhclBvaW50KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBXZWJD
b3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcGFyZW50UG9pbnQpIGNv
bnN0IE9WRVJSSURFOwogICAgIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVy
dFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKKwog
ICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRWRpdGluZ0NvbW1hbmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZXNQ
YWdlU2NhbGVGYWN0b3IoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KaW5kZXggMzIwMzJjMmQ4
NWRkNzZiYmY0ODRkZmUwYjdiYzJkYzFhYTExOThhMi4uMzkyZDVkNjJlYjI1MDdiZmNkMjE4MGZj
YTY5MjE2YWFmMmYxMGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KQEAgLTkyMiw2ICs5MjIsMTIgQEAg
SW50UG9pbnQgU2ltcGxlUERGUGx1Z2luOjpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3Jv
bGxiYXIoY29uc3QgU2Nyb2xsYmFyKgogICAgIHJldHVybiBwb2ludDsKIH0KIAorSW50UG9pbnQg
U2ltcGxlUERGUGx1Z2luOjpjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEludFBvaW50KCk7Cit9
CisKIGJvb2wgU2ltcGxlUERGUGx1Z2luOjppc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBT
dHJpbmcmKQogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAppbmRleCA1NGY4YjNhZDgzYWUyY2JmZmM3NmYzNzgxMTlkYmI0Y2Uw
NWE2NmJmLi43OTIzYWJiZDM2ZTdiMjQ0YTJjMmFiZTFjMmFkNzBmOGUwOTIxZTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0yNTAsNiArMjUwLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVu
dEZvclByaW50aW5nKCkgY29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAg
ICAgUGx1Z2luKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuY3BwCmluZGV4IGExODgzNGE2YzlkOTdiYmNmNDY1MjJjODNhZDg4MmU3OWQ1
MjVmZDEuLmY3ZWFkNTY2NGQ1MjBiN2NhM2NlMDQwNTA0NTRiMDM4ZDllYmIxN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAt
NjY1LDYgKzY2NSwxMSBAQCB2b2lkIFBsdWdpblByb3h5Ojp1cGRhdGUoY29uc3QgSW50UmVjdCYg
cGFpbnRlZFJlY3QpCiAgICAgY29udHJvbGxlcigpLT5pbnZhbGlkYXRlKHBhaW50ZWRSZWN0KTsK
IH0KIAorSW50UG9pbnQgUGx1Z2luUHJveHk6OmNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IEludFBv
aW50JiBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtLm1hcFBvaW50KHBvaW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGIxYTg5M2JkZGQ0ZThhNWJkZmRhNzgxYTVk
YmRhNTMzYjllMjA0ZTIuLjUzNWM4YzdmZWZmNDQ0OWY4ZjY3MWI2ZDVmYTNhOWJiNmMxNDkxM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CkBAIC0xMjUsNiArMTI1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9s
bGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xs
YmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpOwogCisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2lu
dCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IE9WRVJS
SURFOworCiAgICAgZmxvYXQgY29udGVudHNTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgbmVlZHNC
YWNraW5nU3RvcmUoKSBjb25zdDsKICAgICBib29sIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4
IDQ0ZjU3NWFkNTRmZmVlNDg4NTBmM2UzODk3M2ZhZmM2OTgwMjMwZTEuLjI3NTgzYmQzYWFiNDhl
ZjQ3ZDM3YjRiMmMzMjRlZWY0M2Y3OTRhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgY29uc3QgZG91
YmxlIHBsdWdpblNuYXBzaG90VGltZXJEZWxheSA9IDE7CitzdGF0aWMgY29uc3QgZG91YmxlIHBs
dWdpblNuYXBzaG90VGltZXJEZWxheSA9IDEuMTsKIAogY2xhc3MgUGx1Z2luVmlldzo6VVJMUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFVSTFJlcXVlc3Q+IHsKIHB1YmxpYzoKQEAgLTU1NCwx
MyArNTU0LDE3IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGlkSW5pdGlhbGl6ZVBsdWdpbigpCiAgICAg
cmVkZWxpdmVyTWFudWFsU3RyZWFtKCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKG1f
cGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWlu
ZykKKyAgICBpZiAobV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5F
bGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKQogICAgICAgICBtX3BsdWdpblNu
YXBzaG90VGltZXIucmVzdGFydCgpOwotICAgIGVsc2UgaWYgKG1fcGx1Z2luLT5wbHVnaW5MYXll
cigpKSB7Ci0gICAgICAgIGlmIChmcmFtZSgpKSB7Ci0gICAgICAgICAgICBmcmFtZSgpLT52aWV3
KCktPmVudGVyQ29tcG9zaXRpbmdNb2RlKCk7Ci0gICAgICAgICAgICBtX3BsdWdpbkVsZW1lbnQt
PnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgIGVsc2Ugewor
ICAgICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkxheWVyKCkpIHsKKyAgICAgICAgICAgIGlmIChm
cmFtZSgpKSB7CisgICAgICAgICAgICAgICAgZnJhbWUoKS0+dmlldygpLT5lbnRlckNvbXBvc2l0
aW5nTW9kZSgpOworICAgICAgICAgICAgICAgIG1fcGx1Z2luRWxlbWVudC0+c2V0TmVlZHNTdHls
ZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0lu
RWxlbWVudDo6UGxheWluZykKKyAgICAgICAgICAgIG1fcGx1Z2luRWxlbWVudC0+ZGlzcGF0Y2hQ
ZW5kaW5nTW91c2VDbGljaygpOwogICAgIH0KIAogICAgIHNldFdpbmRvd0lzVmlzaWJsZShtX3dl
YlBhZ2UtPndpbmRvd0lzVmlzaWJsZSgpKTsKQEAgLTY4Niw3ICs2OTAsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogCiB2b2lk
IFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgLypkaXJ0eVJlY3QqLykKIHsKLSAgICBpZiAoIW1fcGx1Z2luIHx8ICFtX2lzSW5pdGlhbGl6
ZWQgfHwgbV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50
OjpQbGF5aW5nKQorICAgIGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCB8fCBtX3Bs
dWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdX
aXRoUGVuZGluZ01vdXNlQ2xpY2spCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjb250ZXh0
LT5wYWludGluZ0Rpc2FibGVkKCkpIHsKQEAgLTcyOCwxMiArNzMyLDYyIEBAIHZvaWQgUGx1Z2lu
Vmlldzo6c2V0UGFyZW50KFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcpCiAgICAgICAgIGluaXRpYWxp
emVQbHVnaW4oKTsKIH0KIAorUGFzc093blB0cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3JlYXRl
V2ViRXZlbnQoTW91c2VFdmVudCogZXZlbnQpIGNvbnN0Cit7CisgICAgV2ViRXZlbnQ6OlR5cGUg
dHlwZSA9IFdlYkV2ZW50OjpOb1R5cGU7CisgICAgdW5zaWduZWQgY2xpY2tDb3VudCA9IDE7Cisg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KQorICAg
ICAgICB0eXBlID0gV2ViRXZlbnQ6Ok1vdXNlRG93bjsKKyAgICBlbHNlIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpCisgICAgICAgIHR5cGUgPSBXZWJFdmVu
dDo6TW91c2VVcDsKKyAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZW92ZXJFdmVudCkgeworICAgICAgICB0eXBlID0gV2ViRXZlbnQ6Ok1vdXNlTW92ZTsKKyAg
ICAgICAgY2xpY2tDb3VudCA9IDA7CisgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBlbHNlCisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1
dHRvbiA9IFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOworICAgIHN3aXRjaCAoZXZlbnQtPmJ1dHRv
bigpKSB7CisgICAgY2FzZSBXZWJDb3JlOjpMZWZ0QnV0dG9uOgorICAgICAgICBidXR0b24gPSBX
ZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNv
cmU6Ok1pZGRsZUJ1dHRvbjoKKyAgICAgICAgYnV0dG9uID0gV2ViTW91c2VFdmVudDo6TWlkZGxl
QnV0dG9uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlJpZ2h0QnV0dG9uOgor
ICAgICAgICBidXR0b24gPSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHVuc2lnbmVkIG1vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2
ZW50LT5zaGlmdEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5
OworICAgIGlmIChldmVudC0+Y3RybEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViRXZl
bnQ6OkNvbnRyb2xLZXk7CisgICAgaWYgKGV2ZW50LT5hbHRLZXkoKSkKKyAgICAgICAgbW9kaWZp
ZXJzIHw9IFdlYkV2ZW50OjpBbHRLZXk7CisgICAgaWYgKGV2ZW50LT5tZXRhS2V5KCkpCisgICAg
ICAgIG1vZGlmaWVycyB8PSBXZWJFdmVudDo6TWV0YUtleTsKKworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24sIG1fcGx1Z2luLT5jb252ZXJ0VG9Sb290
VmlldyhJbnRQb2ludChldmVudC0+b2Zmc2V0WCgpLCBldmVudC0+b2Zmc2V0WSgpKSksIGV2ZW50
LT5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50LCBzdGF0aWNfY2FzdDxXZWJF
dmVudDo6TW9kaWZpZXJzPihtb2RpZmllcnMpLCAwKSk7Cit9CisKIHZvaWQgUGx1Z2luVmlldzo6
aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8
ICFtX3BsdWdpbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgV2ViRXZlbnQqIGN1cnJl
bnRFdmVudCA9IFdlYlBhZ2U6OmN1cnJlbnRFdmVudCgpOworICAgIE93blB0cjxXZWJFdmVudD4g
c2ltdWxhdGVkV2ViRXZlbnQ7CisgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiB0b01v
dXNlRXZlbnQoZXZlbnQpLT5pc1NpbXVsYXRlZCgpKSB7CisgICAgICAgIHNpbXVsYXRlZFdlYkV2
ZW50ID0gY3JlYXRlV2ViRXZlbnQodG9Nb3VzZUV2ZW50KGV2ZW50KSk7CisgICAgICAgIGN1cnJl
bnRFdmVudCA9IHNpbXVsYXRlZFdlYkV2ZW50LmdldCgpOworICAgIH0KICAgICBpZiAoIWN1cnJl
bnRFdmVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDc5LDcgKzExMzMsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICAg
ICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBpZiAobV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3Rh
dGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKQorICAgIGlmIChtX3BsdWdpbkVsZW1l
bnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGlu
Z01vdXNlQ2xpY2spCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZW5kZXJlciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9wbHVnaW5FbGVtZW50LT5yZW5k
ZXJlcigpKTsKQEAgLTEyMzcsNyArMTI5MSw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpCiAgICAgaWYgKCFzZXR0aW5ncykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBI
VE1MUGx1Z0luRWxlbWVudDo6UGxheWluZykKKyAgICBpZiAobV9wbHVnaW5FbGVtZW50LT5kaXNw
bGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNs
aWNrKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHNldHRpbmdzLT5hY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggNTlmMGY4NDAzM2IwMDUwMTdlM2E4MjUzZjg5
YmNhMmE3OTJiMWEwNC4uY2Q5ZTM1Yjk1NDJlYWNkYjBmYjBiMzJmMTJjYzg4MGI5NzZiMGM5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBA
IC00NCwxMSArNDQsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xh
c3MgSFRNTFBsdWdJbkVsZW1lbnQ7CitjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgUmVuZGVyQm94
TW9kZWxPYmplY3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJFdmVudDsK
KwogY2xhc3MgUGx1Z2luVmlldyA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5WaWV3QmFzZSwgcHVi
bGljIFBsdWdpbkNvbnRyb2xsZXIsIHByaXZhdGUgV2ViQ29yZTo6TWVkaWFDYW5TdGFydExpc3Rl
bmVyLCBwcml2YXRlIFdlYkZyYW1lOjpMb2FkTGlzdGVuZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50PiwgUGFzc1JlZlB0cjxQbHVnaW4+LCBjb25zdCBQbHVnaW46OlBhcmFtZXRl
cnMmKTsKQEAgLTIwMSw2ICsyMDQsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkKFdlYkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkKFdlYkZy
YW1lKiwgYm9vbCB3YXNDYW5jZWxsZWQpOwogCisgICAgUGFzc093blB0cjxXZWJFdmVudD4gY3Jl
YXRlV2ViRXZlbnQoV2ViQ29yZTo6TW91c2VFdmVudCopIGNvbnN0OworCiAgICAgUmVmUHRyPFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50PiBtX3BsdWdpbkVsZW1lbnQ7CiAgICAgUmVmUHRyPFBs
dWdpbj4gbV9wbHVnaW47CiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175943</attachid>
            <date>2012-11-26 01:54:12 -0800</date>
            <delta_ts>2012-11-26 02:12:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102150-20121126015151.patch</filename>
            <type>text/plain</type>
            <size>24537</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg0N2E1MjkyOWI5NzU2
OWE1MGRlN2I5NGYyNjY3M2M5YjE4NDI0Ni4uNmQzZDk0Yjg5OThmNzY1NTEyZGE5YzIzODFkNDhj
OTE3YjAyNjllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTExLTE4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIGNsaWNrcyB0aHJvdWdoIHRv
IHRoZSByZXN0YXJ0ZWQgcGx1Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDIxNTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNjk1NTc1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5l
dyBzdGF0ZSB0byB0aGUgbWFjaGluZSBmb3IgcGx1Z2luIHNuYXBzaG90dGluZywgY2FsbGVkIFBs
YXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2suCisgICAgICAgIFRoaXMgcmVwcmVzZW50cyB0aGUg
c3RhdGUgd2hlcmUgdGhlIHBsdWdpbiBpcyBwbGF5aW5nLCBidXQgYmVmb3JlIHRoZSBwZW5kaW5n
IG1vdXNlIGNsaWNrCisgICAgICAgIGhhcyBiZWVuIGZpcmVkLiBPbmNlIHRoZSBjbGljayBpcyBz
ZW50LCB0aGUgcGx1Z2luIHN0YXRlIHRyYW5zaXRpb25zIHRvIFBsYXlpbmcuIEZvcgorICAgICAg
ICBzaXR1YXRpb25zIHdoZXJlIHRoZSBwbHVnaW4ganVzdCBydW5zIG5vcm1hbGx5IHdpdGhvdXQg
YSBzaW11bGF0ZWQgY2xpY2ssIHRoZSBwbHVnaW4gc3RhdGUKKyAgICAgICAganVtcHMgZnJvbSBE
aXNwbGF5aW5nU25hcHNob3Qgc3RyYWlnaHQgdG8gUGxheWluZywgYXMgYmVmb3JlLgorCisgICAg
ICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oOiBBZGQgbmV3IGRpc3BsYXkgc3RhdGUgdG8g
cmVwcmVzZW50IHdoZW4gdGhlIHBsdWdpbiBpcyBydW5uaW5nLAorICAgICAgICBidXQgYSBwZW5k
aW5nIG1vdXNlIGNsaWNrIGlzIGFib3V0IHRvIGJlIHNlbnQgdG8gdGhlIHBsdWdpbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNr
KTogQ2FsbGVkIGJ5IHRoZSBwbHVnaW4gd2hlbiBpdCBpcworICAgICAgICBvayBmb3IgdGhlIGVs
ZW1lbnQgdG8gc2VuZCB0aGUgcGVuZGluZyBtb3VzZSBjbGljay4KKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogVXBkYXRlIHRoZSBoYW5kbGVyIHRvIHBhc3MgdGhlIGV2
ZW50CisgICAgICAgIHRvIHRoZSByZW5kZXJlciB0byBoYW5kbGUgaWYgdGhlIHN0YXRlIGlzIGJl
Zm9yZSBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrLgorCisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcDogQWRkIGEgY2xpY2sgdGltZXIgdG8gZGVsYXkgdGhlIG1vdXNlIGNsaWNrIHNvIHRo
YXQgdGhlCisgICAgICAgIHBsdWdpbiBoYXMgc29tZSB0aW1lIHRvIGluaXRpYWxpemUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KTogSW5pdGlhbGl6ZSB0aGUgbW91c2UgdGltZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpzZXRQZW5kaW5nQ2xpY2tFdmVudCk6IEtlZXAgdHJhY2sgb2Yg
dGhlIGNsaWNrIGV2ZW50CisgICAgICAgIHRoZSB1c2VyIG1hZGUgdG8gcmVzdGFydCB0aGUgcGx1
Z2luLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlzcGF0Y2hQ
ZW5kaW5nTW91c2VDbGljayk6IFN0YXJ0IHRoZSB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkKTogV2hl
biB0aGUgdGltZXIgZmlyZXMsCisgICAgICAgIGRpc3BhdGNoIHRoZSBzaW11bGF0ZWQgY2xpY2ss
IHdpdGggbW91c2Ugb3ZlciwgbW91c2UgZG93biwgYW5kIG1vdXNlIHVwIGV2ZW50cy4gVHJhbnNp
dGlvbgorICAgICAgICB0byB0aGUgUGxheWluZyBzdGF0ZSwgYW5kIHdlIG5vIGxvbmdlciBuZWVk
IHRoZSBjbGljayBldmVudC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHA6IENoYW5nZSB0aGUgdGhyZXNob2xkIHN0YXRlIHRvIFBsYXlpbmdXaXRoUGVu
ZGluZ01vdXNlQ2xpY2sKKyAgICAgICAgaW5zdGVhZCBvZiBQbGF5aW5nLCBzaW5jZSB0aGF0IGlz
IHRoZSBlYXJsaWVzdCBzdGF0ZSB3aGVyZSB0aGUgcGx1Z2luIGlzIHBsYXlpbmcuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQpOiBJZiB0aGUgdXNl
ciBjbGlja2VkIG9uIHRoZSBidXR0b24sIGp1bXAgdG8KKyAgICAgICAgUGxheWluZywgYW5kIGRv
bid0IHNlbmQgYSBzaW11bGF0ZWQgY2xpY2suIE90aGVyd2lzZSwgdHJhbnNpdGlvbiB0byBQbGF5
aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrLAorICAgICAgICBhbmQga2VlcCB0cmFjayBvZiB0aGF0
IG1vdXNlIGV2ZW50LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBNb3VzZVJl
bGF0ZWRFdmVudDo6b2Zmc2V0WCgpIGFuZCBvZmZzZXRZKCkuCisKIDIwMTItMTEtMjYgIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIEV4dGVuZCBFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sgdG8gYWxsb3cgc2VuZGluZyBhIG1vdXNlb3ZlciBldmVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDcxYTI1YmJmZTg1YjViNGI0NGVlOWMxOGU3MTRiZGUwMWEzNTZkMjAu
LmZiYTMwNWUyOTgyNDQ0NzcxZDMxZWRiZjhkOTMxMDczYmE0NDYyOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAxMi0xMS0xOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisK
KyAgICAgICAgUGFzcyBjbGlja3MgdGhyb3VnaCB0byB0aGUgcmVzdGFydGVkIHBsdWdpbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMTUwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMjY5NTU3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgY29udmVydFRvUm9vdFZpZXcoKSBhcyBhIHB1
YmxpYyBmdW5jdGlvbiBmb3IgYWxsIHBsdWdpbnMuIEl0IGNvbnZlcnRzIHRoZSBjbGljayBwb2lu
dAorICAgICAgICBmcm9tIGxvY2FsIHBsdWdpbiBjb29yZGluYXRlcyB0byByb290IHZpZXcgY29v
cmRpbmF0ZXMuIFdoZW4gdGhlIGV2ZW50cyBhcmUgc2VudCB0byB0aGUKKyAgICAgICAgcGx1Z2lu
LCB0aGUgY29vcmRpbmF0ZSBnZXRzIGNvbnZlcnRlZCBiYWNrIHRvIHRoZSBsb2NhbCByZWZlcmVu
Y2UgZnJhbWUuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOiBQcm9tb3Rl
IGNvbnZlcnRUb1Jvb3RWaWV3KCkgZnJvbSBOZXRzY2FwZVBsdWdpbi5oLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOiBBbiBpbXBsZW1lbnRh
dGlvbiBhbHJlYWR5IGV4aXN0ZWQuIE1ha2UgdGhlCisgICAgICAgIG1ldGhvZCB2aXJ0dWFsLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW06CisgICAgICAg
IChXZWJLaXQ6OlNpbXBsZVBERlBsdWdpbjo6Y29udmVydFRvUm9vdFZpZXcpOiBTdHViIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb3h5Ojpjb252ZXJ0VG9Sb290Vmlldyk6IEFwcGx5IHRoZSB0cmFuc2Zv
cm0gdG8gdGhlIHByb3ZpZGVkIHBvaW50IHRvIHJldHVybgorICAgICAgICBhIHBvaW50IGluIHJv
b3QgdmlldyBjb29yZGluYXRlcy4KKworICAgICAgICBDaGFuZ2UgdGhlIHRocmVzaG9sZCBzdGF0
ZSB0byBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrIGluc3RlYWQgb2YgUGxheWluZywgc2lu
Y2UgdGhhdCBpcworICAgICAgICB0aGUgZWFybGllc3Qgc3RhdGUgd2hlcmUgdGhlIHBsdWdpbiBp
cyBwbGF5aW5nLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDog
R2l2ZSB0aGUgc25hcHNob3QgYSBsaXR0bGUgbW9yZSB0aW1lIHRvIGdlbmVyYXRlLgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpkaWRJbml0aWFsaXplUGx1Z2luKTogV2hlbiB0aGUgcGx1
Z2luIGhhcyBpbml0aWFsaXplZCwgdGVsbCB0aGUgcGx1Z2luCisgICAgICAgIGVsZW1lbnQgdG8g
ZGlzcGF0Y2ggdGhlIHBlbmRpbmcgbW91c2UgY2xpY2suCisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZl
bnQpOiBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBhIFdlYkNvcmUgbW91c2UgZXZlbnQgdG8g
YQorICAgICAgICBXZWJNb3VzZUV2ZW50LgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpo
YW5kbGVFdmVudCk6IElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQsIHRoZXJlIGlzIG5vIHNvdXJj
ZSBldmVudCBmcm9tCisgICAgICAgIHRoZSBVSSBwcm9jZXNzLiBTbyB3ZSBmYWJyaWNhdGUgb25l
IGJhc2VkIG9uIHRoZSBzaW11bGF0ZWQgZXZlbnQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaDoKKwogMjAxMi0xMS0yNSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFp
bC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXSBUaWxlZEJhY2tpbmdTdG9y
ZTogcGFnZSBjb250ZW50cyBpcyBzY2FsZWQgd3JvbmdseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRl
eCA5OWEwNDRiYjNhZDZjMDhjYWJjZjE4ZjYxZmFkMDI3N2MyMDY5MWM0Li4xMDBlOWE0ZDdlY2Qw
MmIyM2YyOWJhZTZkNGU1YzlkNjM2MTY2ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDkx
LDYgKzQ5MSw4IEBAIF9fWk43V2ViQ29yZTE3SGlzdG9yeUNvbnRyb2xsZXIyNnNhdmVEb2N1bWVu
dEFuZFNjcm9sbFN0YXRlRXYKIF9fWk43V2ViQ29yZTE3SGlzdG9yeUNvbnRyb2xsZXIzM3Jlc3Rv
cmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZUV2CiBfX1pON1dlYkNvcmUxN0pTRE9NR2xvYmFs
T2JqZWN0NnNfaW5mb0UKIF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgorX19aTjdX
ZWJDb3JlMTdNb3VzZVJlbGF0ZWRFdmVudDdvZmZzZXRYRXYKK19fWk43V2ViQ29yZTE3TW91c2VS
ZWxhdGVkRXZlbnQ3b2Zmc2V0WUV2CiBfX1pON1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uQzFF
UktOM1dURjZTdHJpbmdFTlMxXzE5VGV4dENhc2VTZW5zaXRpdml0eUUKIF9fWk43V2ViQ29yZTE3
UmVndWxhckV4cHJlc3Npb25EMUV2CiBfX1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9hZGVyNmNy
ZWF0ZUVQTlNfNUZyYW1lRVBOU18xNENhY2hlZFJlc291cmNlRVJLTlNfMTVSZXNvdXJjZVJlcXVl
c3RFUktOU18yMVJlc291cmNlTG9hZGVyT3B0aW9uc0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKaW5kZXggYmQ5OWRiZmQ3N2E2NDk0NmEyZTc5NjhiOWE0YjlkZmI3
ODg1MzkwZi4uZTI5MDJhZDcxNzY0NjU4NjhlZjk5NThhOGE2NDRlZTUwMDk0MDUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTIwMSw3ICsyMDEsNyBA
QCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICAgICAgICAgIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QociktPmhhbmRsZVVuYXZhaWxh
YmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChyLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkgJiYgZGlzcGxheVN0
YXRlKCkgPCBQbGF5aW5nKSB7CisgICAgICAgIGlmIChyLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkg
JiYgZGlzcGxheVN0YXRlKCkgPCBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7CiAgICAg
ICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHIpLT5oYW5kbGVFdmVudChldmVudCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuaAppbmRleCAzNzkzMjRmNzBmNzlhNTY2ZmU1OTYzYzZkYTc2MjAyNDBmOTYz
Nzk1Li41YTYyZDU0ZjM0MzA5MmJkYmNiZmEwNmQ3NzE5NmM0NzlmYmFhNGRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC01MSwxMSArNTEsMTMgQEAgcHVibGlj
OgogICAgIGVudW0gRGlzcGxheVN0YXRlIHsKICAgICAgICAgV2FpdGluZ0ZvclNuYXBzaG90LAog
ICAgICAgICBEaXNwbGF5aW5nU25hcHNob3QsCisgICAgICAgIFBsYXlpbmdXaXRoUGVuZGluZ01v
dXNlQ2xpY2ssCiAgICAgICAgIFBsYXlpbmcKICAgICB9OwogICAgIERpc3BsYXlTdGF0ZSBkaXNw
bGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlTdGF0ZTsgfQogICAgIHZvaWQgc2V0
RGlzcGxheVN0YXRlKERpc3BsYXlTdGF0ZSBzdGF0ZSkgeyBtX2Rpc3BsYXlTdGF0ZSA9IHN0YXRl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygpIHsgfQogCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgTlBPYmplY3QqIGdldE5QT2JqZWN0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBiODA5YTEzNDA4MTUwMjJiNTZkZDMxYzgwMDZhZDA1NDFjOTEzNGRmLi5kNWUwMmU1NmY3
MmJmMWU1NDFkMzhjN2MwNzlkNmNmMWI0YmVmNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJIVE1MSW1hZ2VMb2FkZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bWFnZS5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aCIKQEAgLTM4LDYgKzM5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBUaGlzIGRl
bGF5IHNob3VsZCBub3QgZXhjZWVkIHRoZSBzbmFwc2hvdCBkZWxheSBpbiBQbHVnaW5WaWV3LmNw
cAorc3RhdGljIGNvbnN0IGRvdWJsZSBzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJEZWxheSA9IC43
NTsKKwogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyLCBQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzT3B0aW9uIHByZWZlclBsdWdJbnNGb3JJ
bWFnZXNPcHRpb24pCiAgICAgOiBIVE1MUGx1Z0luRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
ICAgICAvLyBtX25lZWRzV2lkZ2V0VXBkYXRlKCFjcmVhdGVkQnlQYXJzZXIpIGFsbG93cyBIVE1M
T2JqZWN0RWxlbWVudCB0byBkZWxheQpAQCAtNDcsNiArNTEsNyBAQCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvYwogICAgICwgbV9uZWVkc1dpZGdldFVwZGF0ZSghY3JlYXRlZEJ5UGFyc2VyKQogICAg
ICwgbV9zaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKHByZWZlclBsdWdJbnNGb3JJbWFnZXNP
cHRpb24gPT0gU2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKICAgICAsIG1fbmVlZHNEb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja3MoZmFsc2UpCisgICAgLCBtX3NpbXVsYXRlZE1vdXNlQ2xp
Y2tUaW1lcih0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2ltdWxhdGVkTW91c2VDbGlj
a1RpbWVyRmlyZWQsIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckRlbGF5KQogewogICAgIHNldEhh
c0N1c3RvbUNhbGxiYWNrcygpOwogCkBAIC0yNTcsNCArMjYyLDI3IEBAIHZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiAg
ICAgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlpbmdTbmFwc2hvdCk7CiB9CiAKK3ZvaWQgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6c2V0UGVuZGluZ0NsaWNrRXZlbnQoUGFzc1JlZlB0cjxNb3VzZUV2
ZW50PiBldmVudCkKK3sKKyAgICBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90ID0gZXZl
bnQ7Cit9CisKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTW91
c2VDbGljaygpCit7CisgICAgQVNTRVJUKCFtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lci5pc0Fj
dGl2ZSgpKTsKKyAgICBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lci5yZXN0YXJ0KCk7Cit9CisK
K3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmly
ZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiogdGltZXIp
Cit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fc2ltdWxhdGVkTW91c2VD
bGlja1RpbWVyKTsKKyAgICBBU1NFUlQoZGlzcGxheVN0YXRlKCkgPT0gUGxheWluZ1dpdGhQZW5k
aW5nTW91c2VDbGljayk7CisgICAgQVNTRVJUKG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNo
b3QpOworCisgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhtX3BlbmRpbmdDbGlja0V2ZW50RnJv
bVNuYXBzaG90LmdldCgpLCBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzLCBEb05vdFNob3dQcmVz
c2VkTG9vayk7CisKKyAgICBzZXREaXNwbGF5U3RhdGUoUGxheWluZyk7CisgICAgbV9wZW5kaW5n
Q2xpY2tFdmVudEZyb21TbmFwc2hvdCA9IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5k
ZXggOTVmYmQ4YTc5MDQwZjY2YmE5ZTAxOGJmODI0N2IwZDI5YzNkZjhiNy4uYzViZjZmYTFmOTFl
MWU4MmQwOGJjYTJjMDJjNzNkYWIyYzdhODkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7CiBjbGFzcyBGcmFtZUxvYWRlcjsKK2NsYXNz
IE1vdXNlRXZlbnQ7CiAKIGVudW0gUGx1Z2luQ3JlYXRpb25PcHRpb24gewogICAgIENyZWF0ZUFu
eVdpZGdldFR5cGUsCkBAIC01OCw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzV2lk
Z2V0VXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1dpZGdldFVwZGF0ZTsgfQogICAgIHZv
aWQgc2V0TmVlZHNXaWRnZXRVcGRhdGUoYm9vbCBuZWVkc1dpZGdldFVwZGF0ZSkgeyBtX25lZWRz
V2lkZ2V0VXBkYXRlID0gbmVlZHNXaWRnZXRVcGRhdGU7IH0KIAorICAgIHZvaWQgc2V0UGVuZGlu
Z0NsaWNrRXZlbnQoUGFzc1JlZlB0cjxNb3VzZUV2ZW50Pik7CisKIHByb3RlY3RlZDoKICAgICBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIFByZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24p
OwogCkBAIC05MSwxMSArOTQsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgdXNlRmFs
bGJhY2tDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNrKCkgT1ZFUlJJREU7CisgICAgdm9p
ZCBzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ+Kik7CiAKICAgICBib29sIG1fbmVlZHNXaWRnZXRVcGRhdGU7
CiAgICAgYm9vbCBtX3Nob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXM7CiAgICAgYm9vbCBtX25l
ZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
bV9jdXN0b21TdHlsZUZvclBhZ2VDYWNoZTsKKyAgICBSZWZQdHI8TW91c2VFdmVudD4gbV9wZW5k
aW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdDsKKyAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggMjcyZjA0YjkzYjkxZmRkNDFmNTVh
ODkzNTkyN2Q3MTIwZmNmNzM0Ny4uOTcyYjJiZjkwNDIyM2I1Yjc3NzVmMjQyOWRjMTYyODNhMGYx
NjgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQogCiB2b2lkIFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChwbHVnSW5JbWFnZUVsZW1lbnQo
KS0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZykgeworICAgIGlm
IChwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVu
dDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgewogICAgICAgICBSZW5kZXJSZXBsYWNl
ZDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpCiAKIHZvaWQgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAocGx1Z0luSW1hZ2VFbGVt
ZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpIHsKKyAg
ICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVs
ZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spIHsKICAgICAgICAgcGFpbnRSZXBs
YWNlZFNuYXBzaG90KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgICAgICBwYWludEJ1dHRv
bihwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU5LDcgKzE1
OSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnJlcGFpbnRCdXR0b24oKQogCiBD
dXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBM
YXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0CiB7Ci0gICAg
aWYgKHBsdWdJbkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVt
ZW50OjpQbGF5aW5nKSB7CisgICAgaWYgKHBsdWdJbkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3Rh
dGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7
CiAgICAgICAgIG92ZXJyaWRlQ3Vyc29yID0gaGFuZEN1cnNvcigpOwogICAgICAgICByZXR1cm4g
U2V0Q3Vyc29yOwogICAgIH0KQEAgLTE3NCw3ICsxNzQsMTIgQEAgdm9pZCBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQogICAgIE1vdXNlRXZlbnQqIG1v
dXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpOwogCiAgICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0
dG9uKCkgPT0gTGVmdEJ1dHRvbikgewotICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+c2V0
RGlzcGxheVN0YXRlKEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKTsKKyAgICAgICAgaWYgKG1f
aXNNb3VzZUluQnV0dG9uUmVjdCkKKyAgICAgICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5z
ZXREaXNwbGF5U3RhdGUoSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoSFRN
TFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spOworICAgICAgICAg
ICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldFBlbmRpbmdDbGlja0V2ZW50KG1vdXNlRXZlbnQp
OworICAgICAgICB9CiAgICAgICAgIGlmICh3aWRnZXQoKSkgewogICAgICAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+cmVjcmVhdGVQbHVnaW4od2lkZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaAppbmRleCA1NTlhYWRhYjU3NzNiMWI3ODIyN2FmNDIxNDI3ODNjNDIwMjkzYzIy
Li4yMDYzY2NlZTY2NDUwNDlhMzMxNWEyMWMzYzRiZDg2MTQ1ZjQwNTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0
c1NuYXBzaG90dGluZygpIGNvbnN0OwogCiAgICAgLy8gQ29udmVydCB0aGUgZ2l2ZW4gcG9pbnQg
ZnJvbSBwbHVnLWluIGNvb3JkaW5hdGVzIHRvIHJvb3QgdmlldyBjb29yZGluYXRlcy4KLSAgICBX
ZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIENv
bnZlcnQgdGhlIGdpdmVuIHBvaW50IGZyb20gcm9vdCB2aWV3IGNvb3JkaW5hdGVzIHRvIHBsdWct
aW4gY29vcmRpbmF0ZXMuIFJldHVybnMgZmFsc2UgaWYgdGhlIHBvaW50IGNhbid0IGJlCiAgICAg
Ly8gY29udmVydGVkIChpZiB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IGlzbid0IGludmVydGli
bGUpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9T
aW1wbGVQREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
U2ltcGxlUERGUGx1Z2luLmgKaW5kZXggOTRlMWFhZTE0Mjc5YjEzYTNhZGNiMTA3MzA4MDNjM2I5
MTBjOGVhOS4uNjJkMTRlNzJiZTE3ZGMzYTdmYzA5MzJhMTZiODFkOTY0NDQ5ODhlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBE
RlBsdWdpbi5oCkBAIC0xNjcsNiArMTY3LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0
IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JvbGxiYXJQ
b2ludCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgV2ViQ29yZTo6U2Nyb2xsYmFy
KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdCBPVkVSUklERTsK
ICAgICAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIGJv
b2wgaXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGhhbmRsZUVkaXRpbmdDb21tYW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVzUGFnZVNjYWxlRmFjdG9y
KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1NpbXBsZVBERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCmluZGV4IDMyMDMyYzJkODVkZDc2YmJmNDg0ZGZl
MGI3YmMyZGMxYWExMTk4YTIuLjM5MmQ1ZDYyZWIyNTA3YmZjZDIxODBmY2E2OTIxNmFhZjJmMTBk
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2lt
cGxlUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvU2ltcGxlUERGUGx1Z2luLm1tCkBAIC05MjIsNiArOTIyLDEyIEBAIEludFBvaW50IFNpbXBs
ZVBERlBsdWdpbjo6Y29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNj
cm9sbGJhcioKICAgICByZXR1cm4gcG9pbnQ7CiB9CiAKK0ludFBvaW50IFNpbXBsZVBERlBsdWdp
bjo6Y29udmVydFRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBJbnRQb2ludCgpOworfQorCiBib29sIFNpbXBs
ZVBERlBsdWdpbjo6aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJikKIHsKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmgKaW5kZXggNTRmOGIzYWQ4M2FlMmNiZmZjNzZmMzc4MTE5ZGJiNGNlMDVhNjZiZi4uNzkyM2Fi
YmQzNmU3YjI0NGEyYzJhYmUxYzJhZDcwZjhlMDkyMWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjUwLDYgKzI1MCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnRGb3JQcmludGluZygp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQ
b2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJbkxv
Y2FsQ29vcmRpbmF0ZXMpIGNvbnN0ID0gMDsKKwogcHJvdGVjdGVkOgogICAgIFBsdWdpbigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cAppbmRleCBhMTg4MzRhNmM5ZDk3YmJjZjQ2NTIyYzgzYWQ4ODJlNzlkNTI1ZmQxLi5mN2VhZDU2
NjRkNTIwYjdjYTNjZTA0MDUwNDU0YjAzOGQ5ZWJiMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTY2NSw2ICs2NjUsMTEg
QEAgdm9pZCBQbHVnaW5Qcm94eTo6dXBkYXRlKGNvbnN0IEludFJlY3QmIHBhaW50ZWRSZWN0KQog
ICAgIGNvbnRyb2xsZXIoKS0+aW52YWxpZGF0ZShwYWludGVkUmVjdCk7CiB9CiAKK0ludFBvaW50
IFBsdWdpblByb3h5Ojpjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5tYXBQb2ludChw
b2ludCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaAppbmRleCBiMWE4OTNiZGRkNGU4YTViZGZkYTc4MWE1ZGJkYTUzM2I5ZTIwNGUy
Li41MzVjOGM3ZmVmZjQ0NDlmOGY2NzFiNmQ1ZmEzYTliYjZjMTQ5MTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMTI1LDYgKzEy
NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250
YWxTY3JvbGxiYXIoKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxT
Y3JvbGxiYXIoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9v
dFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKKwogICAgIGZs
b2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IoKTsKICAgICBib29sIG5lZWRzQmFja2luZ1N0b3JlKCkg
Y29uc3Q7CiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0NGY1NzVhZDU0ZmZl
ZTQ4ODUwZjNlMzg5NzNmYWZjNjk4MDIzMGUxLi4yNzU4M2JkM2FhYjQ4ZWY0N2QzN2I0YjJjMzI0
ZWVmNDNmNzk0YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBwbHVnaW5TbmFw
c2hvdFRpbWVyRGVsYXkgPSAxOworc3RhdGljIGNvbnN0IGRvdWJsZSBwbHVnaW5TbmFwc2hvdFRp
bWVyRGVsYXkgPSAxLjE7CiAKIGNsYXNzIFBsdWdpblZpZXc6OlVSTFJlcXVlc3QgOiBwdWJsaWMg
UmVmQ291bnRlZDxVUkxSZXF1ZXN0PiB7CiBwdWJsaWM6CkBAIC01NTQsMTMgKzU1NCwxNyBAQCB2
b2lkIFBsdWdpblZpZXc6OmRpZEluaXRpYWxpemVQbHVnaW4oKQogICAgIHJlZGVsaXZlck1hbnVh
bFN0cmVhbSgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChtX3BsdWdpbkVsZW1lbnQt
PmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpCisgICAgaWYgKG1f
cGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWlu
Z1dpdGhQZW5kaW5nTW91c2VDbGljaykKICAgICAgICAgbV9wbHVnaW5TbmFwc2hvdFRpbWVyLnJl
c3RhcnQoKTsKLSAgICBlbHNlIGlmIChtX3BsdWdpbi0+cGx1Z2luTGF5ZXIoKSkgewotICAgICAg
ICBpZiAoZnJhbWUoKSkgewotICAgICAgICAgICAgZnJhbWUoKS0+dmlldygpLT5lbnRlckNvbXBv
c2l0aW5nTW9kZSgpOwotICAgICAgICAgICAgbV9wbHVnaW5FbGVtZW50LT5zZXROZWVkc1N0eWxl
UmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG1f
cGx1Z2luLT5wbHVnaW5MYXllcigpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWUoKSkgeworICAg
ICAgICAgICAgICAgIGZyYW1lKCktPnZpZXcoKS0+ZW50ZXJDb21wb3NpdGluZ01vZGUoKTsKKyAg
ICAgICAgICAgICAgICBtX3BsdWdpbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhl
dGljU3R5bGVDaGFuZ2UpOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmICht
X3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlp
bmcpCisgICAgICAgICAgICBtX3BsdWdpbkVsZW1lbnQtPmRpc3BhdGNoUGVuZGluZ01vdXNlQ2xp
Y2soKTsKICAgICB9CiAKICAgICBzZXRXaW5kb3dJc1Zpc2libGUobV93ZWJQYWdlLT53aW5kb3dJ
c1Zpc2libGUoKSk7CkBAIC02ODYsNyArNjkwLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFt
ZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIAogdm9pZCBQbHVnaW5WaWV3Ojpw
YWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0
Ki8pCiB7Ci0gICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkIHx8IG1fcGx1Z2lu
RWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZykKKyAg
ICBpZiAoIW1fcGx1Z2luIHx8ICFtX2lzSW5pdGlhbGl6ZWQgfHwgbV9wbHVnaW5FbGVtZW50LT5k
aXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3Vz
ZUNsaWNrKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNh
YmxlZCgpKSB7CkBAIC03MjgsMTIgKzczMiw2MiBAQCB2b2lkIFBsdWdpblZpZXc6OnNldFBhcmVu
dChTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQogICAgICAgICBpbml0aWFsaXplUGx1Z2luKCk7CiB9
CiAKK1Bhc3NPd25QdHI8V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNl
RXZlbnQqIGV2ZW50KSBjb25zdAoreworICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBXZWJFdmVu
dDo6Tm9UeXBlOworICAgIHVuc2lnbmVkIGNsaWNrQ291bnQgPSAxOworICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkKKyAgICAgICAgdHlwZSA9IFdl
YkV2ZW50OjpNb3VzZURvd247CisgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2V1cEV2ZW50KQorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6Ok1vdXNlVXA7Cisg
ICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQp
IHsKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpNb3VzZU1vdmU7CisgICAgICAgIGNsaWNrQ291
bnQgPSAwOworICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKworICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24gPSBXZWJNb3Vz
ZUV2ZW50OjpOb0J1dHRvbjsKKyAgICBzd2l0Y2ggKGV2ZW50LT5idXR0b24oKSkgeworICAgIGNh
c2UgV2ViQ29yZTo6TGVmdEJ1dHRvbjoKKyAgICAgICAgYnV0dG9uID0gV2ViTW91c2VFdmVudDo6
TGVmdEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpNaWRkbGVCdXR0
b246CisgICAgICAgIGJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpSaWdodEJ1dHRvbjoKKyAgICAgICAgYnV0dG9u
ID0gV2ViTW91c2VFdmVudDo6UmlnaHRCdXR0b247CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChldmVudC0+c2hpZnRLZXko
KSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAoZXZl
bnQtPmN0cmxLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFdlYkV2ZW50OjpDb250cm9sS2V5
OworICAgIGlmIChldmVudC0+YWx0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBXZWJFdmVu
dDo6QWx0S2V5OworICAgIGlmIChldmVudC0+bWV0YUtleSgpKQorICAgICAgICBtb2RpZmllcnMg
fD0gV2ViRXZlbnQ6Ok1ldGFLZXk7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYk1vdXNl
RXZlbnQodHlwZSwgYnV0dG9uLCBtX3BsdWdpbi0+Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQo
ZXZlbnQtPm9mZnNldFgoKSwgZXZlbnQtPm9mZnNldFkoKSkpLCBldmVudC0+c2NyZWVuTG9jYXRp
b24oKSwgMCwgMCwgMCwgY2xpY2tDb3VudCwgc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVy
cz4obW9kaWZpZXJzKSwgMCkpOworfQorCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2
ZW50KiBldmVudCkKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFdlYkV2ZW50KiBjdXJyZW50RXZlbnQgPSBXZWJQ
YWdlOjpjdXJyZW50RXZlbnQoKTsKKyAgICBPd25QdHI8V2ViRXZlbnQ+IHNpbXVsYXRlZFdlYkV2
ZW50OworICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgdG9Nb3VzZUV2ZW50KGV2ZW50
KS0+aXNTaW11bGF0ZWQoKSkgeworICAgICAgICBzaW11bGF0ZWRXZWJFdmVudCA9IGNyZWF0ZVdl
YkV2ZW50KHRvTW91c2VFdmVudChldmVudCkpOworICAgICAgICBjdXJyZW50RXZlbnQgPSBzaW11
bGF0ZWRXZWJFdmVudC5nZXQoKTsKKyAgICB9CiAgICAgaWYgKCFjdXJyZW50RXZlbnQpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTA3OSw3ICsxMTMzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjppbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgICAgIHJldHVybjsKICNl
bmRpZgogCi0gICAgaWYgKG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1
Z0luRWxlbWVudDo6UGxheWluZykKKyAgICBpZiAobV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3Rh
dGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKQog
ICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIgPSB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSk7CkBAIC0x
MjM3LDcgKzEyOTEsNyBAQCBib29sIFBsdWdpblZpZXc6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoKQogICAgIGlmICghc2V0dGluZ3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1l
bnQ6OlBsYXlpbmcpCisgICAgaWYgKG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBI
VE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBzZXR0aW5ncy0+YWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oCmluZGV4IDU5ZjBmODQwMzNiMDA1MDE3ZTNhODI1M2Y4OWJjYTJhNzkyYjFhMDQu
LmNkOWUzNWI5NTQyZWFjZGIwZmIwYjMyZjEyY2M4ODBiOTc2YjBjOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDQsMTEgKzQ0LDE0
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxQbHVnSW5F
bGVtZW50OworY2xhc3MgTW91c2VFdmVudDsKIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0Owog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRXZlbnQ7CisKIGNsYXNzIFBsdWdp
blZpZXcgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2luVmlld0Jhc2UsIHB1YmxpYyBQbHVnaW5Db250
cm9sbGVyLCBwcml2YXRlIFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHJpdmF0ZSBX
ZWJGcmFtZTo6TG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
bHVnaW5WaWV3PiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudD4s
IFBhc3NSZWZQdHI8UGx1Z2luPiwgY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJik7CkBAIC0yMDEs
NiArMjA0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZChXZWJG
cmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZChXZWJGcmFtZSosIGJvb2wgd2Fz
Q2FuY2VsbGVkKTsKIAorICAgIFBhc3NPd25QdHI8V2ViRXZlbnQ+IGNyZWF0ZVdlYkV2ZW50KFdl
YkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsKKwogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudD4gbV9wbHVnaW5FbGVtZW50OwogICAgIFJlZlB0cjxQbHVnaW4+IG1fcGx1Z2lu
OwogICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175946</attachid>
            <date>2012-11-26 02:13:01 -0800</date>
            <delta_ts>2012-11-26 14:29:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102150-20121126021040.patch</filename>
            <type>text/plain</type>
            <size>24543</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg0N2E1MjkyOWI5NzU2
OWE1MGRlN2I5NGYyNjY3M2M5YjE4NDI0Ni4uNmQzZDk0Yjg5OThmNzY1NTEyZGE5YzIzODFkNDhj
OTE3YjAyNjllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTExLTE4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIGNsaWNrcyB0aHJvdWdoIHRv
IHRoZSByZXN0YXJ0ZWQgcGx1Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDIxNTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNjk1NTc1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5l
dyBzdGF0ZSB0byB0aGUgbWFjaGluZSBmb3IgcGx1Z2luIHNuYXBzaG90dGluZywgY2FsbGVkIFBs
YXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2suCisgICAgICAgIFRoaXMgcmVwcmVzZW50cyB0aGUg
c3RhdGUgd2hlcmUgdGhlIHBsdWdpbiBpcyBwbGF5aW5nLCBidXQgYmVmb3JlIHRoZSBwZW5kaW5n
IG1vdXNlIGNsaWNrCisgICAgICAgIGhhcyBiZWVuIGZpcmVkLiBPbmNlIHRoZSBjbGljayBpcyBz
ZW50LCB0aGUgcGx1Z2luIHN0YXRlIHRyYW5zaXRpb25zIHRvIFBsYXlpbmcuIEZvcgorICAgICAg
ICBzaXR1YXRpb25zIHdoZXJlIHRoZSBwbHVnaW4ganVzdCBydW5zIG5vcm1hbGx5IHdpdGhvdXQg
YSBzaW11bGF0ZWQgY2xpY2ssIHRoZSBwbHVnaW4gc3RhdGUKKyAgICAgICAganVtcHMgZnJvbSBE
aXNwbGF5aW5nU25hcHNob3Qgc3RyYWlnaHQgdG8gUGxheWluZywgYXMgYmVmb3JlLgorCisgICAg
ICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oOiBBZGQgbmV3IGRpc3BsYXkgc3RhdGUgdG8g
cmVwcmVzZW50IHdoZW4gdGhlIHBsdWdpbiBpcyBydW5uaW5nLAorICAgICAgICBidXQgYSBwZW5k
aW5nIG1vdXNlIGNsaWNrIGlzIGFib3V0IHRvIGJlIHNlbnQgdG8gdGhlIHBsdWdpbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNr
KTogQ2FsbGVkIGJ5IHRoZSBwbHVnaW4gd2hlbiBpdCBpcworICAgICAgICBvayBmb3IgdGhlIGVs
ZW1lbnQgdG8gc2VuZCB0aGUgcGVuZGluZyBtb3VzZSBjbGljay4KKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogVXBkYXRlIHRoZSBoYW5kbGVyIHRvIHBhc3MgdGhlIGV2
ZW50CisgICAgICAgIHRvIHRoZSByZW5kZXJlciB0byBoYW5kbGUgaWYgdGhlIHN0YXRlIGlzIGJl
Zm9yZSBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrLgorCisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcDogQWRkIGEgY2xpY2sgdGltZXIgdG8gZGVsYXkgdGhlIG1vdXNlIGNsaWNrIHNvIHRo
YXQgdGhlCisgICAgICAgIHBsdWdpbiBoYXMgc29tZSB0aW1lIHRvIGluaXRpYWxpemUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KTogSW5pdGlhbGl6ZSB0aGUgbW91c2UgdGltZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpzZXRQZW5kaW5nQ2xpY2tFdmVudCk6IEtlZXAgdHJhY2sgb2Yg
dGhlIGNsaWNrIGV2ZW50CisgICAgICAgIHRoZSB1c2VyIG1hZGUgdG8gcmVzdGFydCB0aGUgcGx1
Z2luLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlzcGF0Y2hQ
ZW5kaW5nTW91c2VDbGljayk6IFN0YXJ0IHRoZSB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkKTogV2hl
biB0aGUgdGltZXIgZmlyZXMsCisgICAgICAgIGRpc3BhdGNoIHRoZSBzaW11bGF0ZWQgY2xpY2ss
IHdpdGggbW91c2Ugb3ZlciwgbW91c2UgZG93biwgYW5kIG1vdXNlIHVwIGV2ZW50cy4gVHJhbnNp
dGlvbgorICAgICAgICB0byB0aGUgUGxheWluZyBzdGF0ZSwgYW5kIHdlIG5vIGxvbmdlciBuZWVk
IHRoZSBjbGljayBldmVudC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHA6IENoYW5nZSB0aGUgdGhyZXNob2xkIHN0YXRlIHRvIFBsYXlpbmdXaXRoUGVu
ZGluZ01vdXNlQ2xpY2sKKyAgICAgICAgaW5zdGVhZCBvZiBQbGF5aW5nLCBzaW5jZSB0aGF0IGlz
IHRoZSBlYXJsaWVzdCBzdGF0ZSB3aGVyZSB0aGUgcGx1Z2luIGlzIHBsYXlpbmcuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQpOiBJZiB0aGUgdXNl
ciBjbGlja2VkIG9uIHRoZSBidXR0b24sIGp1bXAgdG8KKyAgICAgICAgUGxheWluZywgYW5kIGRv
bid0IHNlbmQgYSBzaW11bGF0ZWQgY2xpY2suIE90aGVyd2lzZSwgdHJhbnNpdGlvbiB0byBQbGF5
aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrLAorICAgICAgICBhbmQga2VlcCB0cmFjayBvZiB0aGF0
IG1vdXNlIGV2ZW50LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBNb3VzZVJl
bGF0ZWRFdmVudDo6b2Zmc2V0WCgpIGFuZCBvZmZzZXRZKCkuCisKIDIwMTItMTEtMjYgIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIEV4dGVuZCBFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sgdG8gYWxsb3cgc2VuZGluZyBhIG1vdXNlb3ZlciBldmVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDcxYTI1YmJmZTg1YjViNGI0NGVlOWMxOGU3MTRiZGUwMWEzNTZkMjAu
LmZiYTMwNWUyOTgyNDQ0NzcxZDMxZWRiZjhkOTMxMDczYmE0NDYyOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAxMi0xMS0xOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisK
KyAgICAgICAgUGFzcyBjbGlja3MgdGhyb3VnaCB0byB0aGUgcmVzdGFydGVkIHBsdWdpbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMTUwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMjY5NTU3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgY29udmVydFRvUm9vdFZpZXcoKSBhcyBhIHB1
YmxpYyBmdW5jdGlvbiBmb3IgYWxsIHBsdWdpbnMuIEl0IGNvbnZlcnRzIHRoZSBjbGljayBwb2lu
dAorICAgICAgICBmcm9tIGxvY2FsIHBsdWdpbiBjb29yZGluYXRlcyB0byByb290IHZpZXcgY29v
cmRpbmF0ZXMuIFdoZW4gdGhlIGV2ZW50cyBhcmUgc2VudCB0byB0aGUKKyAgICAgICAgcGx1Z2lu
LCB0aGUgY29vcmRpbmF0ZSBnZXRzIGNvbnZlcnRlZCBiYWNrIHRvIHRoZSBsb2NhbCByZWZlcmVu
Y2UgZnJhbWUuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOiBQcm9tb3Rl
IGNvbnZlcnRUb1Jvb3RWaWV3KCkgZnJvbSBOZXRzY2FwZVBsdWdpbi5oLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOiBBbiBpbXBsZW1lbnRh
dGlvbiBhbHJlYWR5IGV4aXN0ZWQuIE1ha2UgdGhlCisgICAgICAgIG1ldGhvZCB2aXJ0dWFsLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW06CisgICAgICAg
IChXZWJLaXQ6OlNpbXBsZVBERlBsdWdpbjo6Y29udmVydFRvUm9vdFZpZXcpOiBTdHViIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb3h5Ojpjb252ZXJ0VG9Sb290Vmlldyk6IEFwcGx5IHRoZSB0cmFuc2Zv
cm0gdG8gdGhlIHByb3ZpZGVkIHBvaW50IHRvIHJldHVybgorICAgICAgICBhIHBvaW50IGluIHJv
b3QgdmlldyBjb29yZGluYXRlcy4KKworICAgICAgICBDaGFuZ2UgdGhlIHRocmVzaG9sZCBzdGF0
ZSB0byBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrIGluc3RlYWQgb2YgUGxheWluZywgc2lu
Y2UgdGhhdCBpcworICAgICAgICB0aGUgZWFybGllc3Qgc3RhdGUgd2hlcmUgdGhlIHBsdWdpbiBp
cyBwbGF5aW5nLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDog
R2l2ZSB0aGUgc25hcHNob3QgYSBsaXR0bGUgbW9yZSB0aW1lIHRvIGdlbmVyYXRlLgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpkaWRJbml0aWFsaXplUGx1Z2luKTogV2hlbiB0aGUgcGx1
Z2luIGhhcyBpbml0aWFsaXplZCwgdGVsbCB0aGUgcGx1Z2luCisgICAgICAgIGVsZW1lbnQgdG8g
ZGlzcGF0Y2ggdGhlIHBlbmRpbmcgbW91c2UgY2xpY2suCisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZl
bnQpOiBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBhIFdlYkNvcmUgbW91c2UgZXZlbnQgdG8g
YQorICAgICAgICBXZWJNb3VzZUV2ZW50LgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpo
YW5kbGVFdmVudCk6IElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQsIHRoZXJlIGlzIG5vIHNvdXJj
ZSBldmVudCBmcm9tCisgICAgICAgIHRoZSBVSSBwcm9jZXNzLiBTbyB3ZSBmYWJyaWNhdGUgb25l
IGJhc2VkIG9uIHRoZSBzaW11bGF0ZWQgZXZlbnQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaDoKKwogMjAxMi0xMS0yNSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFp
bC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXSBUaWxlZEJhY2tpbmdTdG9y
ZTogcGFnZSBjb250ZW50cyBpcyBzY2FsZWQgd3JvbmdseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRl
eCA5OWEwNDRiYjNhZDZjMDhjYWJjZjE4ZjYxZmFkMDI3N2MyMDY5MWM0Li4xMDBlOWE0ZDdlY2Qw
MmIyM2YyOWJhZTZkNGU1YzlkNjM2MTY2ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDkx
LDYgKzQ5MSw4IEBAIF9fWk43V2ViQ29yZTE3SGlzdG9yeUNvbnRyb2xsZXIyNnNhdmVEb2N1bWVu
dEFuZFNjcm9sbFN0YXRlRXYKIF9fWk43V2ViQ29yZTE3SGlzdG9yeUNvbnRyb2xsZXIzM3Jlc3Rv
cmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZUV2CiBfX1pON1dlYkNvcmUxN0pTRE9NR2xvYmFs
T2JqZWN0NnNfaW5mb0UKIF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgorX19aTjdX
ZWJDb3JlMTdNb3VzZVJlbGF0ZWRFdmVudDdvZmZzZXRYRXYKK19fWk43V2ViQ29yZTE3TW91c2VS
ZWxhdGVkRXZlbnQ3b2Zmc2V0WUV2CiBfX1pON1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uQzFF
UktOM1dURjZTdHJpbmdFTlMxXzE5VGV4dENhc2VTZW5zaXRpdml0eUUKIF9fWk43V2ViQ29yZTE3
UmVndWxhckV4cHJlc3Npb25EMUV2CiBfX1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9hZGVyNmNy
ZWF0ZUVQTlNfNUZyYW1lRVBOU18xNENhY2hlZFJlc291cmNlRVJLTlNfMTVSZXNvdXJjZVJlcXVl
c3RFUktOU18yMVJlc291cmNlTG9hZGVyT3B0aW9uc0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKaW5kZXggYmQ5OWRiZmQ3N2E2NDk0NmEyZTc5NjhiOWE0YjlkZmI3
ODg1MzkwZi4uZTI5MDJhZDcxNzY0NjU4NjhlZjk5NThhOGE2NDRlZTUwMDk0MDUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTIwMSw3ICsyMDEsNyBA
QCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICAgICAgICAgIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QociktPmhhbmRsZVVuYXZhaWxh
YmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChyLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkgJiYgZGlzcGxheVN0
YXRlKCkgPCBQbGF5aW5nKSB7CisgICAgICAgIGlmIChyLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkg
JiYgZGlzcGxheVN0YXRlKCkgPCBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7CiAgICAg
ICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHIpLT5oYW5kbGVFdmVudChldmVudCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuaAppbmRleCAzNzkzMjRmNzBmNzlhNTY2ZmU1OTYzYzZkYTc2MjAyNDBmOTYz
Nzk1Li41YTYyZDU0ZjM0MzA5MmJkYmNiZmEwNmQ3NzE5NmM0NzlmYmFhNGRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC01MSwxMSArNTEsMTMgQEAgcHVibGlj
OgogICAgIGVudW0gRGlzcGxheVN0YXRlIHsKICAgICAgICAgV2FpdGluZ0ZvclNuYXBzaG90LAog
ICAgICAgICBEaXNwbGF5aW5nU25hcHNob3QsCisgICAgICAgIFBsYXlpbmdXaXRoUGVuZGluZ01v
dXNlQ2xpY2ssCiAgICAgICAgIFBsYXlpbmcKICAgICB9OwogICAgIERpc3BsYXlTdGF0ZSBkaXNw
bGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlTdGF0ZTsgfQogICAgIHZvaWQgc2V0
RGlzcGxheVN0YXRlKERpc3BsYXlTdGF0ZSBzdGF0ZSkgeyBtX2Rpc3BsYXlTdGF0ZSA9IHN0YXRl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygpIHsgfQogCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgTlBPYmplY3QqIGdldE5QT2JqZWN0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBiODA5YTEzNDA4MTUwMjJiNTZkZDMxYzgwMDZhZDA1NDFjOTEzNGRmLi5kNWUwMmU1NmY3
MmJmMWU1NDFkMzhjN2MwNzlkNmNmMWI0YmVmNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJIVE1MSW1hZ2VMb2FkZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bWFnZS5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aCIKQEAgLTM4LDYgKzM5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBUaGlzIGRl
bGF5IHNob3VsZCBub3QgZXhjZWVkIHRoZSBzbmFwc2hvdCBkZWxheSBpbiBQbHVnaW5WaWV3LmNw
cAorc3RhdGljIGNvbnN0IGRvdWJsZSBzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJEZWxheSA9IC43
NTsKKwogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyLCBQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzT3B0aW9uIHByZWZlclBsdWdJbnNGb3JJ
bWFnZXNPcHRpb24pCiAgICAgOiBIVE1MUGx1Z0luRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
ICAgICAvLyBtX25lZWRzV2lkZ2V0VXBkYXRlKCFjcmVhdGVkQnlQYXJzZXIpIGFsbG93cyBIVE1M
T2JqZWN0RWxlbWVudCB0byBkZWxheQpAQCAtNDcsNiArNTEsNyBAQCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvYwogICAgICwgbV9uZWVkc1dpZGdldFVwZGF0ZSghY3JlYXRlZEJ5UGFyc2VyKQogICAg
ICwgbV9zaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKHByZWZlclBsdWdJbnNGb3JJbWFnZXNP
cHRpb24gPT0gU2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKICAgICAsIG1fbmVlZHNEb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja3MoZmFsc2UpCisgICAgLCBtX3NpbXVsYXRlZE1vdXNlQ2xp
Y2tUaW1lcih0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2ltdWxhdGVkTW91c2VDbGlj
a1RpbWVyRmlyZWQsIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckRlbGF5KQogewogICAgIHNldEhh
c0N1c3RvbUNhbGxiYWNrcygpOwogCkBAIC0yNTcsNCArMjYyLDI3IEBAIHZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiAg
ICAgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlpbmdTbmFwc2hvdCk7CiB9CiAKK3ZvaWQgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6c2V0UGVuZGluZ0NsaWNrRXZlbnQoUGFzc1JlZlB0cjxNb3VzZUV2
ZW50PiBldmVudCkKK3sKKyAgICBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90ID0gZXZl
bnQ7Cit9CisKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTW91
c2VDbGljaygpCit7CisgICAgQVNTRVJUKCFtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lci5pc0Fj
dGl2ZSgpKTsKKyAgICBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lci5yZXN0YXJ0KCk7Cit9CisK
K3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmly
ZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiogdGltZXIp
Cit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fc2ltdWxhdGVkTW91c2VD
bGlja1RpbWVyKTsKKyAgICBBU1NFUlQoZGlzcGxheVN0YXRlKCkgPT0gUGxheWluZ1dpdGhQZW5k
aW5nTW91c2VDbGljayk7CisgICAgQVNTRVJUKG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNo
b3QpOworCisgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhtX3BlbmRpbmdDbGlja0V2ZW50RnJv
bVNuYXBzaG90LmdldCgpLCBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzLCBEb05vdFNob3dQcmVz
c2VkTG9vayk7CisKKyAgICBzZXREaXNwbGF5U3RhdGUoUGxheWluZyk7CisgICAgbV9wZW5kaW5n
Q2xpY2tFdmVudEZyb21TbmFwc2hvdCA9IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5k
ZXggOTVmYmQ4YTc5MDQwZjY2YmE5ZTAxOGJmODI0N2IwZDI5YzNkZjhiNy4uYzViZjZmYTFmOTFl
MWU4MmQwOGJjYTJjMDJjNzNkYWIyYzdhODkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7CiBjbGFzcyBGcmFtZUxvYWRlcjsKK2NsYXNz
IE1vdXNlRXZlbnQ7CiAKIGVudW0gUGx1Z2luQ3JlYXRpb25PcHRpb24gewogICAgIENyZWF0ZUFu
eVdpZGdldFR5cGUsCkBAIC01OCw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzV2lk
Z2V0VXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1dpZGdldFVwZGF0ZTsgfQogICAgIHZv
aWQgc2V0TmVlZHNXaWRnZXRVcGRhdGUoYm9vbCBuZWVkc1dpZGdldFVwZGF0ZSkgeyBtX25lZWRz
V2lkZ2V0VXBkYXRlID0gbmVlZHNXaWRnZXRVcGRhdGU7IH0KIAorICAgIHZvaWQgc2V0UGVuZGlu
Z0NsaWNrRXZlbnQoUGFzc1JlZlB0cjxNb3VzZUV2ZW50Pik7CisKIHByb3RlY3RlZDoKICAgICBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIFByZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24p
OwogCkBAIC05MSwxMSArOTQsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgdXNlRmFs
bGJhY2tDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNrKCkgT1ZFUlJJREU7CisgICAgdm9p
ZCBzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ+Kik7CiAKICAgICBib29sIG1fbmVlZHNXaWRnZXRVcGRhdGU7
CiAgICAgYm9vbCBtX3Nob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXM7CiAgICAgYm9vbCBtX25l
ZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
bV9jdXN0b21TdHlsZUZvclBhZ2VDYWNoZTsKKyAgICBSZWZQdHI8TW91c2VFdmVudD4gbV9wZW5k
aW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdDsKKyAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggMjcyZjA0YjkzYjkxZmRkNDFmNTVh
ODkzNTkyN2Q3MTIwZmNmNzM0Ny4uOTcyYjJiZjkwNDIyM2I1Yjc3NzVmMjQyOWRjMTYyODNhMGYx
NjgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQogCiB2b2lkIFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChwbHVnSW5JbWFnZUVsZW1lbnQo
KS0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZykgeworICAgIGlm
IChwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVu
dDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgewogICAgICAgICBSZW5kZXJSZXBsYWNl
ZDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpCiAKIHZvaWQgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAocGx1Z0luSW1hZ2VFbGVt
ZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpIHsKKyAg
ICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVs
ZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spIHsKICAgICAgICAgcGFpbnRSZXBs
YWNlZFNuYXBzaG90KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgICAgICBwYWludEJ1dHRv
bihwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU5LDcgKzE1
OSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnJlcGFpbnRCdXR0b24oKQogCiBD
dXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBM
YXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0CiB7Ci0gICAg
aWYgKHBsdWdJbkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVt
ZW50OjpQbGF5aW5nKSB7CisgICAgaWYgKHBsdWdJbkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3Rh
dGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7
CiAgICAgICAgIG92ZXJyaWRlQ3Vyc29yID0gaGFuZEN1cnNvcigpOwogICAgICAgICByZXR1cm4g
U2V0Q3Vyc29yOwogICAgIH0KQEAgLTE3NCw3ICsxNzQsMTIgQEAgdm9pZCBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQogICAgIE1vdXNlRXZlbnQqIG1v
dXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpOwogCiAgICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0
dG9uKCkgPT0gTGVmdEJ1dHRvbikgewotICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+c2V0
RGlzcGxheVN0YXRlKEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKTsKKyAgICAgICAgaWYgKG1f
aXNNb3VzZUluQnV0dG9uUmVjdCkKKyAgICAgICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5z
ZXREaXNwbGF5U3RhdGUoSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoSFRN
TFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spOworICAgICAgICAg
ICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldFBlbmRpbmdDbGlja0V2ZW50KG1vdXNlRXZlbnQp
OworICAgICAgICB9CiAgICAgICAgIGlmICh3aWRnZXQoKSkgewogICAgICAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+cmVjcmVhdGVQbHVnaW4od2lkZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaAppbmRleCA1NTlhYWRhYjU3NzNiMWI3ODIyN2FmNDIxNDI3ODNjNDIwMjkzYzIy
Li4yMDYzY2NlZTY2NDUwNDlhMzMxNWEyMWMzYzRiZDg2MTQ1ZjQwNTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0
c1NuYXBzaG90dGluZygpIGNvbnN0OwogCiAgICAgLy8gQ29udmVydCB0aGUgZ2l2ZW4gcG9pbnQg
ZnJvbSBwbHVnLWluIGNvb3JkaW5hdGVzIHRvIHJvb3QgdmlldyBjb29yZGluYXRlcy4KLSAgICBX
ZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIENv
bnZlcnQgdGhlIGdpdmVuIHBvaW50IGZyb20gcm9vdCB2aWV3IGNvb3JkaW5hdGVzIHRvIHBsdWct
aW4gY29vcmRpbmF0ZXMuIFJldHVybnMgZmFsc2UgaWYgdGhlIHBvaW50IGNhbid0IGJlCiAgICAg
Ly8gY29udmVydGVkIChpZiB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IGlzbid0IGludmVydGli
bGUpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9T
aW1wbGVQREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
U2ltcGxlUERGUGx1Z2luLmgKaW5kZXggOTRlMWFhZTE0Mjc5YjEzYTNhZGNiMTA3MzA4MDNjM2I5
MTBjOGVhOS4uNjJkMTRlNzJiZTE3ZGMzYTdmYzA5MzJhMTZiODFkOTY0NDQ5ODhlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBE
RlBsdWdpbi5oCkBAIC0xNjcsNiArMTY3LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0
IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JvbGxiYXJQ
b2ludCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgV2ViQ29yZTo6U2Nyb2xsYmFy
KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdCBPVkVSUklERTsK
ICAgICAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIGJv
b2wgaXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGhhbmRsZUVkaXRpbmdDb21tYW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVzUGFnZVNjYWxlRmFjdG9y
KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1NpbXBsZVBERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCmluZGV4IDMyMDMyYzJkODVkZDc2YmJmNDg0ZGZl
MGI3YmMyZGMxYWExMTk4YTIuLjM5MmQ1ZDYyZWIyNTA3YmZjZDIxODBmY2E2OTIxNmFhZjJmMTBk
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2lt
cGxlUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvU2ltcGxlUERGUGx1Z2luLm1tCkBAIC05MjIsNiArOTIyLDEyIEBAIEludFBvaW50IFNpbXBs
ZVBERlBsdWdpbjo6Y29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNj
cm9sbGJhcioKICAgICByZXR1cm4gcG9pbnQ7CiB9CiAKK0ludFBvaW50IFNpbXBsZVBERlBsdWdp
bjo6Y29udmVydFRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBJbnRQb2ludCgpOworfQorCiBib29sIFNpbXBs
ZVBERlBsdWdpbjo6aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJikKIHsKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmgKaW5kZXggNTRmOGIzYWQ4M2FlMmNiZmZjNzZmMzc4MTE5ZGJiNGNlMDVhNjZiZi4uNzkyM2Fi
YmQzNmU3YjI0NGEyYzJhYmUxYzJhZDcwZjhlMDkyMWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjUwLDYgKzI1MCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnRGb3JQcmludGluZygp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQ
b2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJbkxv
Y2FsQ29vcmRpbmF0ZXMpIGNvbnN0ID0gMDsKKwogcHJvdGVjdGVkOgogICAgIFBsdWdpbigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cAppbmRleCBhMTg4MzRhNmM5ZDk3YmJjZjQ2NTIyYzgzYWQ4ODJlNzlkNTI1ZmQxLi5mN2VhZDU2
NjRkNTIwYjdjYTNjZTA0MDUwNDU0YjAzOGQ5ZWJiMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTY2NSw2ICs2NjUsMTEg
QEAgdm9pZCBQbHVnaW5Qcm94eTo6dXBkYXRlKGNvbnN0IEludFJlY3QmIHBhaW50ZWRSZWN0KQog
ICAgIGNvbnRyb2xsZXIoKS0+aW52YWxpZGF0ZShwYWludGVkUmVjdCk7CiB9CiAKK0ludFBvaW50
IFBsdWdpblByb3h5Ojpjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5tYXBQb2ludChw
b2ludCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaAppbmRleCBiMWE4OTNiZGRkNGU4YTViZGZkYTc4MWE1ZGJkYTUzM2I5ZTIwNGUy
Li41MzVjOGM3ZmVmZjQ0NDlmOGY2NzFiNmQ1ZmEzYTliYjZjMTQ5MTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMTI1LDYgKzEy
NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250
YWxTY3JvbGxiYXIoKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxT
Y3JvbGxiYXIoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9v
dFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKKwogICAgIGZs
b2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IoKTsKICAgICBib29sIG5lZWRzQmFja2luZ1N0b3JlKCkg
Y29uc3Q7CiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0NGY1NzVhZDU0ZmZl
ZTQ4ODUwZjNlMzg5NzNmYWZjNjk4MDIzMGUxLi5iM2Y1YmIyMTRjYzVhYmU5YWE4OGRiNzA4M2Nj
MDJiNDUzNDE2MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBwbHVnaW5TbmFw
c2hvdFRpbWVyRGVsYXkgPSAxOworc3RhdGljIGNvbnN0IGRvdWJsZSBwbHVnaW5TbmFwc2hvdFRp
bWVyRGVsYXkgPSAxLjE7CiAKIGNsYXNzIFBsdWdpblZpZXc6OlVSTFJlcXVlc3QgOiBwdWJsaWMg
UmVmQ291bnRlZDxVUkxSZXF1ZXN0PiB7CiBwdWJsaWM6CkBAIC01NTQsMTMgKzU1NCwxNyBAQCB2
b2lkIFBsdWdpblZpZXc6OmRpZEluaXRpYWxpemVQbHVnaW4oKQogICAgIHJlZGVsaXZlck1hbnVh
bFN0cmVhbSgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChtX3BsdWdpbkVsZW1lbnQt
PmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpCisgICAgaWYgKG1f
cGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWlu
Z1dpdGhQZW5kaW5nTW91c2VDbGljaykKICAgICAgICAgbV9wbHVnaW5TbmFwc2hvdFRpbWVyLnJl
c3RhcnQoKTsKLSAgICBlbHNlIGlmIChtX3BsdWdpbi0+cGx1Z2luTGF5ZXIoKSkgewotICAgICAg
ICBpZiAoZnJhbWUoKSkgewotICAgICAgICAgICAgZnJhbWUoKS0+dmlldygpLT5lbnRlckNvbXBv
c2l0aW5nTW9kZSgpOwotICAgICAgICAgICAgbV9wbHVnaW5FbGVtZW50LT5zZXROZWVkc1N0eWxl
UmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG1f
cGx1Z2luLT5wbHVnaW5MYXllcigpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWUoKSkgeworICAg
ICAgICAgICAgICAgIGZyYW1lKCktPnZpZXcoKS0+ZW50ZXJDb21wb3NpdGluZ01vZGUoKTsKKyAg
ICAgICAgICAgICAgICBtX3BsdWdpbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhl
dGljU3R5bGVDaGFuZ2UpOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmICht
X3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlp
bmcpCisgICAgICAgICAgICBtX3BsdWdpbkVsZW1lbnQtPmRpc3BhdGNoUGVuZGluZ01vdXNlQ2xp
Y2soKTsKICAgICB9CiAKICAgICBzZXRXaW5kb3dJc1Zpc2libGUobV93ZWJQYWdlLT53aW5kb3dJ
c1Zpc2libGUoKSk7CkBAIC02ODYsNyArNjkwLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFt
ZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIAogdm9pZCBQbHVnaW5WaWV3Ojpw
YWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0
Ki8pCiB7Ci0gICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkIHx8IG1fcGx1Z2lu
RWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZykKKyAg
ICBpZiAoIW1fcGx1Z2luIHx8ICFtX2lzSW5pdGlhbGl6ZWQgfHwgbV9wbHVnaW5FbGVtZW50LT5k
aXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3Vz
ZUNsaWNrKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNh
YmxlZCgpKSB7CkBAIC03MjgsMTIgKzczMiw2MiBAQCB2b2lkIFBsdWdpblZpZXc6OnNldFBhcmVu
dChTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQogICAgICAgICBpbml0aWFsaXplUGx1Z2luKCk7CiB9
CiAKK1Bhc3NPd25QdHI8V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNl
RXZlbnQqIGV2ZW50KSBjb25zdAoreworICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBXZWJFdmVu
dDo6Tm9UeXBlOworICAgIHVuc2lnbmVkIGNsaWNrQ291bnQgPSAxOworICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkKKyAgICAgICAgdHlwZSA9IFdl
YkV2ZW50OjpNb3VzZURvd247CisgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2V1cEV2ZW50KQorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6Ok1vdXNlVXA7Cisg
ICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQp
IHsKKyAgICAgICAgdHlwZSA9IFdlYkV2ZW50OjpNb3VzZU1vdmU7CisgICAgICAgIGNsaWNrQ291
bnQgPSAwOworICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZWxzZQorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24gPSBX
ZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKKyAgICBzd2l0Y2ggKGV2ZW50LT5idXR0b24oKSkgewor
ICAgIGNhc2UgV2ViQ29yZTo6TGVmdEJ1dHRvbjoKKyAgICAgICAgYnV0dG9uID0gV2ViTW91c2VF
dmVudDo6TGVmdEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpNaWRk
bGVCdXR0b246CisgICAgICAgIGJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpSaWdodEJ1dHRvbjoKKyAgICAgICAg
YnV0dG9uID0gV2ViTW91c2VFdmVudDo6UmlnaHRCdXR0b247CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChldmVudC0+c2hp
ZnRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBp
ZiAoZXZlbnQtPmN0cmxLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFdlYkV2ZW50OjpDb250
cm9sS2V5OworICAgIGlmIChldmVudC0+YWx0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBX
ZWJFdmVudDo6QWx0S2V5OworICAgIGlmIChldmVudC0+bWV0YUtleSgpKQorICAgICAgICBtb2Rp
ZmllcnMgfD0gV2ViRXZlbnQ6Ok1ldGFLZXk7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdl
Yk1vdXNlRXZlbnQodHlwZSwgYnV0dG9uLCBtX3BsdWdpbi0+Y29udmVydFRvUm9vdFZpZXcoSW50
UG9pbnQoZXZlbnQtPm9mZnNldFgoKSwgZXZlbnQtPm9mZnNldFkoKSkpLCBldmVudC0+c2NyZWVu
TG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3VudCwgc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1v
ZGlmaWVycz4obW9kaWZpZXJzKSwgMCkpOworfQorCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2
ZW50KEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVn
aW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFdlYkV2ZW50KiBjdXJyZW50RXZlbnQg
PSBXZWJQYWdlOjpjdXJyZW50RXZlbnQoKTsKKyAgICBPd25QdHI8V2ViRXZlbnQ+IHNpbXVsYXRl
ZFdlYkV2ZW50OworICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgdG9Nb3VzZUV2ZW50
KGV2ZW50KS0+aXNTaW11bGF0ZWQoKSkgeworICAgICAgICBzaW11bGF0ZWRXZWJFdmVudCA9IGNy
ZWF0ZVdlYkV2ZW50KHRvTW91c2VFdmVudChldmVudCkpOworICAgICAgICBjdXJyZW50RXZlbnQg
PSBzaW11bGF0ZWRXZWJFdmVudC5nZXQoKTsKKyAgICB9CiAgICAgaWYgKCFjdXJyZW50RXZlbnQp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTA3OSw3ICsxMTMzLDcgQEAgdm9pZCBQbHVnaW5WaWV3
OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgICAgIHJldHVy
bjsKICNlbmRpZgogCi0gICAgaWYgKG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBI
VE1MUGx1Z0luRWxlbWVudDo6UGxheWluZykKKyAgICBpZiAobV9wbHVnaW5FbGVtZW50LT5kaXNw
bGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNs
aWNrKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVy
ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSk7
CkBAIC0xMjM3LDcgKzEyOTEsNyBAQCBib29sIFBsdWdpblZpZXc6OmlzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoKQogICAgIGlmICghc2V0dGluZ3MpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJ
bkVsZW1lbnQ6OlBsYXlpbmcpCisgICAgaWYgKG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRl
KCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBzZXR0aW5ncy0+YWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCmluZGV4IDU5ZjBmODQwMzNiMDA1MDE3ZTNhODI1M2Y4OWJjYTJhNzky
YjFhMDQuLmNkOWUzNWI5NTQyZWFjZGIwZmIwYjMyZjEyY2M4ODBiOTc2YjBjOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDQsMTEg
KzQ0LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxQ
bHVnSW5FbGVtZW50OworY2xhc3MgTW91c2VFdmVudDsKIGNsYXNzIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRXZlbnQ7CisKIGNsYXNz
IFBsdWdpblZpZXcgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2luVmlld0Jhc2UsIHB1YmxpYyBQbHVn
aW5Db250cm9sbGVyLCBwcml2YXRlIFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHJp
dmF0ZSBXZWJGcmFtZTo6TG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbHVnaW5WaWV3PiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudD4sIFBhc3NSZWZQdHI8UGx1Z2luPiwgY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJik7CkBA
IC0yMDEsNiArMjA0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZChXZWJGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZChXZWJGcmFtZSosIGJv
b2wgd2FzQ2FuY2VsbGVkKTsKIAorICAgIFBhc3NPd25QdHI8V2ViRXZlbnQ+IGNyZWF0ZVdlYkV2
ZW50KFdlYkNvcmU6Ok1vdXNlRXZlbnQqKSBjb25zdDsKKwogICAgIFJlZlB0cjxXZWJDb3JlOjpI
VE1MUGx1Z0luRWxlbWVudD4gbV9wbHVnaW5FbGVtZW50OwogICAgIFJlZlB0cjxQbHVnaW4+IG1f
cGx1Z2luOwogICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsK
</data>
<flag name="review"
          id="191577"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>