<?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>79492</bug_id>
          
          <creation_ts>2012-02-24 08:15:58 -0800</creation_ts>
          <short_desc>[Mac] Basic DRT support for web notifications</short_desc>
          <delta_ts>2012-08-30 13:04:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>95093</dependson>
    
    <dependson>95412</dependson>
          <blocked>81048</blocked>
    
    <blocked>81697</blocked>
    
    <blocked>77969</blocked>
    
    <blocked>95232</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jessie Berlin">jberlin</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>ap</cc>
    
    <cc>jberlin</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>564333</commentid>
    <comment_count>0</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-02-24 08:15:58 -0800</bug_when>
    <thetext>Right now all the notification tests are skipped on Mac.

&lt;rdar://problem/10357639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705890</commentid>
    <comment_count>1</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-08-27 17:01:49 -0700</bug_when>
    <thetext>This does not include any additional output for platform events (platform showed the notification, user clicked on a notification, etc). That is tracked in another bug under master bug 77969.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707675</commentid>
    <comment_count>2</comment_count>
      <attachid>161272</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-08-29 11:20:52 -0700</bug_when>
    <thetext>Created attachment 161272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707691</commentid>
    <comment_count>3</comment_count>
      <attachid>161272</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-29 11:37:31 -0700</bug_when>
    <thetext>Comment on attachment 161272
Patch

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

&gt; Tools/DumpRenderTree/mac/MockWebNotificationProvider.h:39
&gt; +typedef HashMap&lt;uint64_t, WebView *&gt; NotificationViewMap;

We don&apos;t want to retain the web views?

&gt; Tools/DumpRenderTree/mac/MockWebNotificationProvider.h:42
&gt; +    HashSet&lt;WebView *&gt; _registeredWebViews;

Ditto.

&gt; Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm:88
&gt; +        uint64_t id = [notificationID unsignedLongLongValue];

I&apos;m surprised that &quot;id&quot; doesn&apos;t cause a build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707693</commentid>
    <comment_count>4</comment_count>
      <attachid>161272</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-29 11:38:17 -0700</bug_when>
    <thetext>Comment on attachment 161272
Patch

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

&gt; Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm:58
&gt; +- (void)registerWebView:(WebView *)webView
&gt; +{
&gt; +    ASSERT(!_registeredWebViews.contains(webView));
&gt; +    _registeredWebViews.add(webView);
&gt; +}
&gt; +
&gt; +- (void)unregisterWebView:(WebView *)webView
&gt; +{
&gt; +    ASSERT(_registeredWebViews.contains(webView));
&gt; +    _registeredWebViews.remove(webView);
&gt; +}

I don&apos;t see where these are called from. Is that in a separate patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707702</commentid>
    <comment_count>5</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-08-29 11:50:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 161272 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161272&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/mac/MockWebNotificationProvider.h:39
&gt; &gt; +typedef HashMap&lt;uint64_t, WebView *&gt; NotificationViewMap;
&gt; 
&gt; We don&apos;t want to retain the web views?

I didn&apos;t think this was necessary. Between tests we clear out all the maps anyway, and if there is any bad access, that&apos;s an error in the provider implementation.

&gt; 
&gt; &gt; Tools/DumpRenderTree/mac/MockWebNotificationProvider.h:42
&gt; &gt; +    HashSet&lt;WebView *&gt; _registeredWebViews;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm:88
&gt; &gt; +        uint64_t id = [notificationID unsignedLongLongValue];
&gt; 
&gt; I&apos;m surprised that &quot;id&quot; doesn&apos;t cause a build failure.

It does not, at least on my machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707703</commentid>
    <comment_count>6</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-08-29 11:52:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 161272 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161272&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm:58
&gt; &gt; +- (void)registerWebView:(WebView *)webView
&gt; &gt; +{
&gt; &gt; +    ASSERT(!_registeredWebViews.contains(webView));
&gt; &gt; +    _registeredWebViews.add(webView);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +- (void)unregisterWebView:(WebView *)webView
&gt; &gt; +{
&gt; &gt; +    ASSERT(_registeredWebViews.contains(webView));
&gt; &gt; +    _registeredWebViews.remove(webView);
&gt; &gt; +}
&gt; 
&gt; I don&apos;t see where these are called from. Is that in a separate patch?

No, these methods are called in WebKit, when the provider is added to the web view. It is part of the WebNotificationProvider protocol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707748</commentid>
    <comment_count>7</comment_count>
      <attachid>161272</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-29 12:39:25 -0700</bug_when>
    <thetext>Comment on attachment 161272
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707803</commentid>
    <comment_count>8</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-08-29 13:31:50 -0700</bug_when>
    <thetext>Committed r127042: &lt;http://trac.webkit.org/changeset/127042&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708149</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-29 18:13:27 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 95412</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708936</commentid>
    <comment_count>10</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-08-30 13:04:28 -0700</bug_when>
    <thetext>Patch for bug 95465 was submitted, and fixes the problem that this patch unearthed. Back to resolved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161272</attachid>
            <date>2012-08-29 11:20:52 -0700</date>
            <delta_ts>2012-08-29 12:39:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79492-20120829112042.patch</filename>
            <type>text/plain</type>
            <size>22845</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDE5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjRkYWUwMDlkNGIwYjY4YzAwZDUzMDk3NGE2YTg5Mzgy
NzQxY2M2Yi4uM2IyNzcyZjBmYWQzNDY4NjVjZjIxMjUyZWU5NmU0MzgwOGQxZDQ4NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0
IEBACiAyMDEyLTA4LTI5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAorICAgICAgICBb
TWFjXSBCYXNpYyBEUlQgc3VwcG9ydCBmb3Igd2ViIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDkyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMDM1NzYzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHN0dWJzIGZvciB3ZWIgbm90
aWZpY2F0aW9uIHN1cHBvcnQgb24gRFJULiBBc3N1bWUgdGhhdCB3aGVuCisgICAgICAgIE5vdGlm
aWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbigpIGlzIGNhbGxlZCwgdGhlIHVzZXIgYWx3YXlzIGNo
b29zZXMgdG8gYWxsb3cgaXQuIFRoaXMgY2FuIGJlIGVhc2lseQorICAgICAgICBvdmVycmlkZGVu
IGluIGxheW91dCB0ZXN0cyB3aXRoIHRlc3RSdW5uZXIuZGVueVdlYk5vdGlmaWNhdGlvblBlcm1p
c3Npb24oKSB3aGVuIG5lZWRlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBNb2NrV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
OgorICAgICAgICAoY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6IFNldCBNb2NrV2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXIgc2luZ2xldG9uIGFzIHRoZSBwcm92aWRlciBmb3IgdGhlCisg
ICAgICAgIHdlYiB2aWV3LgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVC
ZWZvcmVUZXN0aW5nKTogTWFrZSBzdXJlIHRvIHJlc2V0IHRoZSBwcm92aWRlcidzIHN0YXRlIGJl
dHdlZW4gZWFjaCB0ZXN0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1p
c3Npb24pOiBTZXQgcGVybWlzc2lvbiB0byBncmFudGVkIGZvciBzcGVjaWZpZWQgb3JpZ2luLgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6ZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24pOiBTZXQg
cGVybWlzc2lvbiB0byBkZW5pZWQgZm9yIHNwZWNpZmllZCBvcmlnaW4uCisgICAgICAgIChUZXN0
UnVubmVyOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKTogUmV0cmlldmUgdGhlIG5v
dGlmaWNhdGlvbiBJRCBmcm9tIHRoZSBKUyBub3RpZmljYXRpb24gb2JqZWN0LCBhbmQKKyAgICAg
ICAgc2ltdWxhdGUgdGhlIGNsaWNrLiBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IFdUUiBwZXJmb3Jt
cyB0aGUgY2xpY2suCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06
CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRp
b25SZXF1ZXN0RnJvbU9yaWdpbjpsaXN0ZW5lcjpdKTogQXNzdW1lIHdoZW4gYXNrZWQsIHRoZQor
ICAgICAgICB1c2VyIGFsbG93cyB3ZWIgbm90aWZpY2F0aW9ucy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaDogQWRkZWQuIE1haW50
YWlucyBhIGxpc3Qgb2YgcmVnaXN0ZXJlZCB3ZWIgdmlld3MsIGtub3duIHBlcm1pc3Npb25zLAor
ICAgICAgICBhIG1hcCBvZiBub3RpZmljYXRpb24gSURzIHRvIFdlYk5vdGlmaWNhdGlvbiBpbnN0
YW5jZXMsIGFuZCBhIG1hcCBvZiB0aGUgV2ViVmlld3MgZnJvbSB3aGljaCB0aGUgbm90aWZpY2F0
aW9ucyB3ZXJlIGRpc3BhdGNoZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL01vY2tX
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTogQWRkZWQuCisgICAgICAgICgrW01vY2tXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlciBzaGFyZWRdKTogVGhlIHByb3ZpZGVyIGlzIGEgc2luZ2xldG9uLgor
ICAgICAgICAoLVtNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgaW5pdF0pOiBJbnN0YW50aWF0
ZSB0aGUgcGVybWlzc2lvbnMgbWFwLgorICAgICAgICAoLVtNb2NrV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIgcmVnaXN0ZXJXZWJWaWV3Ol0pOgorICAgICAgICAoLVtNb2NrV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIgdW5yZWdpc3RlcldlYlZpZXc6XSk6CisgICAgICAgICgtW01vY2tXZWJOb3RpZmlj
YXRpb25Qcm92aWRlciBzaG93Tm90aWZpY2F0aW9uOmZyb21XZWJWaWV3Ol0pOiBBZGQgdGhlIG5v
dGlmaWNhdGlvbiB0byB0aGUgbWFwcy4gVGVsbCB0aGUgd2ViIHZpZXcgdGhhdCB0aGUKKyAgICAg
ICAgbm90aWZpY2F0aW9uIGRpZCBzaG93LgorICAgICAgICAoLVtNb2NrV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIgY2FuY2VsTm90aWZpY2F0aW9uOl0pOiBUZWxsIHRoZSB3ZWIgdmlldyB0aGUgbm90
aWZpY2F0aW9uIGRpZCBjbG9zZS4KKyAgICAgICAgKC1bTW9ja1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyIG5vdGlmaWNhdGlvbkRlc3Ryb3llZDpdKTogUmVtb3ZlIHRoZSBub3RpZmljYXRpb24gZnJv
bSB0aGUgbWFwcy4gSGVyZSB3ZSBkb24ndCBtYWtlIGEgY2FsbGJhY2suCisgICAgICAgICgtW01v
Y2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciBjbGVhck5vdGlmaWNhdGlvbnM6XSk6IFJlbW92ZSB0
aGUgc3BlY2lmaWVkIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGUgbWFwcy4gSGVyZSB3ZSBkb24ndCBt
YWtlIGEgY2FsbGJhY2suCisgICAgICAgICgtW01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciB3
ZWJWaWV3OmRpZFNob3dOb3RpZmljYXRpb246XSk6IERlbGVnYXRlIGNhbGxiYWNrLiBEaXNwYXRj
aCB0aGUgc2hvdyBldmVudC4KKyAgICAgICAgKC1bTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
IHdlYlZpZXc6ZGlkQ2xpY2tOb3RpZmljYXRpb246XSk6IERlbGVnYXRlIGNhbGxiYWNrLiBEaXNw
YXRjaCB0aGUgY2xpY2sgZXZlbnQuCisgICAgICAgICgtW01vY2tXZWJOb3RpZmljYXRpb25Qcm92
aWRlciB3ZWJWaWV3OmRpZENsb3NlTm90aWZpY2F0aW9uczpdKTogRGVsZWdhdGUgY2FsbGJhY2su
IERpc3BhdGNoIHRoZSBjbG9zZSBldmVudC4KKyAgICAgICAgKC1bTW9ja1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2s6XSk6IFRlbGwgdGhlIHdlYiB2
aWV3IHdlIGNsaWNrZWQgdGhlIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKC1bTW9ja1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyIHBvbGljeUZvck9yaWdpbjpdKTogTG9vayBpbiB0aGUgcGVybWlzc2lv
biBkaWN0aW9uYXJ5LgorICAgICAgICAoLVtNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2V0
V2ViTm90aWZpY2F0aW9uT3JpZ2luOnBlcm1pc3Npb246XSk6IFNldCB0aGUgcGVybWlzc2lvbiBm
b3IgdGhlIG9yaWdpbiBpbiB0aGUgZGljdGlvbmFyeS4KKyAgICAgICAgKC1bTW9ja1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyIHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zXSk6IENs
ZWFyIHRoZSBwZXJtaXNzaW9uIG1hcC4KKyAgICAgICAgKC1bTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyIHJlc2V0XSk6IFJlbW92ZSBhbGwgbWFwcGluZ3MgYW5kIHBlcm1pc3Npb25zLgorCisy
MDEyLTA4LTI5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKwogICAgICAgICBVcGRhdGUg
VGVzdFJ1bm5lciBBUEkgZm9yIHdlYiBub3RpZmljYXRpb25zCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA5MwogICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTIxNzk2NDk+CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMmFjNjc5NDBkZDJl
YjJlYmYxNzRiZjk4MmY3MzNhOTNlMGQ5Njk0Li5kMmVlMjM5ZWIyNWM2MTNjNjJjZmM1MTAxYThi
YjljZTIyMmMzZmI1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYwLDYgKzYwLDgg
QEAKIAkJMkQ0MDNGMDYxNTA4NzFGOTAwNTM1OEQyIC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEY2MDg5MDhCMTM2
REEwMEU5NzQ1RiAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07CiAJCTJENDAzRjA4MTUwODcxRjkw
MDUzNThEMiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjNCQ0I4OEYwRUE1NzYyMzAwM0M2Mjg5IC8qIE9wZW5HTC5m
cmFtZXdvcmsgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0
SGVscGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OworCQkz
MTExN0IzQzE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQTE1
RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi87IH07CisJ
CTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0Iz
QjE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9
OwogCQkzQTU2MjZDQjEzMUNBMDJBMDAyQkU2RDkgLyogU3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNBNTYyNkMx
MTMxQzhCMTcwMDJCRTZEOSAvKiBTdG9yYWdlVHJhY2tlckRlbGVnYXRlLm1tICovOyB9OwogCQkz
QTU2MjZDQzEzMUNBMDM2MDAyQkU2RDkgLyogU3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0E1NjI2QzAxMzFDOEIx
NzAwMkJFNkQ5IC8qIFN0b3JhZ2VUcmFja2VyRGVsZWdhdGUuaCAqLzsgfTsKIAkJNDE3REFBMUQx
MzdCM0UyNDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3REFBMUMxMzdCM0UyNDAwN0M1N0ZCIC8q
IFdlYkNvcmVUZXN0U3VwcG9ydC5oICovOyB9OwpAQCAtMjYzLDYgKzI2NSw4IEBACiAJCTI5Q0ZC
QTJEMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5
b3V0VGVzdEhlbHBlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBMYXlv
dXRUZXN0SGVscGVyLm07IHBhdGggPSBtYWMvTGF5b3V0VGVzdEhlbHBlci5tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDQwM0YxOTE1MDg3MUY5MDA1MzU4RDIgLyogTGF5b3V0VGVz
dEhlbHBlciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0g
ImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0g
TGF5b3V0VGVzdEhlbHBlcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJ
MzExMTdCM0ExNUQ5QTU2QTAwMTYzQkM4IC8qIE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2NrV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuaDsgcGF0aCA9IG1hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzExMTdCM0IxNUQ5QTU2QTAwMTYzQkM4IC8qIE1vY2tX
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgcGF0aCA9IG1hYy9Nb2Nr
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBEdW1wUmVuZGVyVHJlZVByZWZpeC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wUmVuZGVyVHJlZVByZWZpeC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzVGMDk3MTBEQUMzQ0I2MDBDOEI0RTUgLyogV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7
IHBhdGggPSBmb250cy9XZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0Zjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzc1RjA5NzIwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdh
dGNoZXIyMDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmOyBwYXRoID0gZm9u
dHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00ODIsMTEgKzQ4NiwxMSBAQAogCQkxNDIyQTI2OTBBRjZGNDUyMDBFMUE4ODMgLyogQ29u
dHJvbGxlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTgwMDQ1QUVCMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5oICovLAotCQkJCTgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLywKIAkJCQlCQ0QwOEIzOTBFMTA1N0VGMDBBN0QwQzEg
LyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwICovLAogCQkJCUJDRDA4QTU4MEUxMDQ5NkIw
MEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oICovLAogCQkJCUJDRDA4QjcwMEUx
MDU5RDIwMEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSAqLywKKwkJCQk4
MDA0NUFFQjE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXIuaCAqLywKKwkJCQk4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIubW0gKi8sCiAJCQkJMjlDRkJBMEYxMjI3MzZFNjAwQkMzMEMwIC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLywKIAkJCQkyOUNGQkEwRTEyMjczNkU2MDBC
QzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLywKIAkJCQkyOUNGQkEyRDEyMjcz
QTEwMDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi8sCkBAIC01MDUs
NiArNTA5LDggQEAKIAkJCQlCQ0ExOEIyMjBDOUIwMTRCMDAxMTQzNjkgLyogVGVzdFJ1bm5lck1h
Yy5tbSAqLywKIAkJCQlFMUI3ODA4NTExQUYxNjQzMDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIuaCAqLywKIAkJCQlFMUI3ODA4NzExQUYxNjY5MDA3RTFCQzIgLyogTW9ja0dlb2xv
Y2F0aW9uUHJvdmlkZXIubW0gKi8sCisJCQkJMzExMTdCM0ExNUQ5QTU2QTAwMTYzQkM4IC8qIE1v
Y2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oICovLAorCQkJCTMxMTE3QjNCMTVEOUE1NkEwMDE2
M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gKi8sCiAJCQkJQkNBMThCNkQw
QzlCMDhEQjAwMTE0MzY5IC8qIE5hdmlnYXRpb25Db250cm9sbGVyLmggKi8sCiAJCQkJQkNBMThC
NkUwQzlCMDhEQjAwMTE0MzY5IC8qIE5hdmlnYXRpb25Db250cm9sbGVyLm0gKi8sCiAJCQkJQkNB
MThCMkYwQzlCMDFCNDAwMTE0MzY5IC8qIE9iakNDb250cm9sbGVyLmggKi8sCkBAIC03MzYsNiAr
NzQyLDcgQEAKIAkJCQkzQTU2MjZDQzEzMUNBMDM2MDAyQkU2RDkgLyogU3RvcmFnZVRyYWNrZXJE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3REFBMUQxMzdCM0UyNDAwN0M1N0ZCIC8q
IFdlYkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODAwNDVBRUQxNDc3MThF
NzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMTExN0IzQzE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTk2Nyw2ICs5NzQsNyBAQAogCQkJCTNBNTYy
NkNCMTMxQ0EwMkEwMDJCRTZEOSAvKiBTdG9yYWdlVHJhY2tlckRlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTgzMEYzMUYxNUM4MTE4MTAw
NUFCMjA2IC8qIER1bXBSZW5kZXJUcmVlQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMx
MTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQppbmRleCAyYmQ1NGJiNzBlNjg3Y2UxOTdkNWEwZTM3MTU0NTNlOWIyYWRiNjg1Li4yN2MyZjQz
ZjBiOGU3ZGM4ODMwNzExNDhjNTdiYmE5NjY2MTY2N2Y1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJKYXZh
U2NyaXB0VGhyZWFkaW5nLmgiCiAjaW1wb3J0ICJUZXN0UnVubmVyLmgiCiAjaW1wb3J0ICJNb2Nr
R2VvbG9jYXRpb25Qcm92aWRlci5oIgorI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uQ29udHJvbGxlci5oIgogI2ltcG9ydCAiT2JqQ1Bs
dWdpbi5oIgogI2ltcG9ydCAiT2JqQ1BsdWdpbkZ1bmN0aW9uLmgiCkBAIC01MTksNiArNTIwLDcg
QEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAgICAgW3dlYlZp
ZXcgc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3VyY2VMb2FkRGVsZWdhdGVdOwogICAgIFt3
ZWJWaWV3IF9zZXRHZW9sb2NhdGlvblByb3ZpZGVyOltNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBz
aGFyZWRdXTsKICAgICBbd2ViVmlldyBfc2V0RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjpbV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgc2hhcmVkXV07CisgICAgW3dlYlZpZXcgX3Nl
dE5vdGlmaWNhdGlvblByb3ZpZGVyOltNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVk
XV07CiAKICAgICAvLyBSZWdpc3RlciB0aGUgc2FtZSBzY2hlbWVzIHRoYXQgU2FmYXJpIGRvZXMK
ICAgICBbV2ViVmlldyByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkIl07CkBAIC0xMjY5
LDYgKzEyNzEsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJl
Zm9yZVRlc3RpbmcoKQogICAgIFtXZWJWaWV3IF9zZXRBbGxvd3NSb3VuZGluZ0hhY2tzOk5PXTsK
IAogICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzdG9wVGltZXJdOworICAg
IFtbTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyIHNoYXJlZF0gcmVzZXRdOwogICAgIAogICAg
IC8vIENsZWFyIHRoZSBjb250ZW50cyBvZiB0aGUgZ2VuZXJhbCBwYXN0ZWJvYXJkCiAgICAgW1tO
U1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6TlNTdHJpbmdQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ0MDYzYjgxYTY1NjVhNzM0ZDY5ZGEyN2VhZjdhN2ZlY2QyZWZlZDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2NrV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXJfaAorI2RlZmluZSBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJfaAorCisjaW1w
b3J0IDxXZWJLaXQvV2ViTm90aWZpY2F0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1By
aXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvSGFzaFNldC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit0eXBlZGVmIEhhc2hNYXA8dWludDY0X3Qs
IFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+ID4gTm90aWZpY2F0aW9uSURNYXA7Cit0eXBlZGVm
IEhhc2hNYXA8dWludDY0X3QsIFdlYlZpZXcgKj4gTm90aWZpY2F0aW9uVmlld01hcDsKKworQGlu
dGVyZmFjZSBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgOiBOU09iamVjdCA8V2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI+IHsKKyAgICBIYXNoU2V0PFdlYlZpZXcgKj4gX3JlZ2lzdGVyZWRXZWJW
aWV3czsKKyAgICBOb3RpZmljYXRpb25JRE1hcCBfbm90aWZpY2F0aW9uczsKKyAgICBOb3RpZmlj
YXRpb25WaWV3TWFwIF9ub3RpZmljYXRpb25WaWV3TWFwOworICAgIFJldGFpblB0cjxOU011dGFi
bGVEaWN0aW9uYXJ5PiBfcGVybWlzc2lvbnM7Cit9CisKKysgKE1vY2tXZWJOb3RpZmljYXRpb25Q
cm92aWRlciAqKXNoYXJlZDsKKworLSAodm9pZClzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNr
Oih1aW50NjRfdClub3RpZmljYXRpb25JRDsKKy0gKHZvaWQpc2V0V2ViTm90aWZpY2F0aW9uT3Jp
Z2luOihOU1N0cmluZyopb3JpZ2luIHBlcm1pc3Npb246KEJPT0wpYWxsb3dlZDsKKy0gKHZvaWQp
cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnM7CisKKy0gKHZvaWQpcmVzZXQ7CitA
ZW5kCisKKyNlbmRpZiAvLyBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJfaApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmI2OTNmZGEyZWI5YjE3ODYzODM2ODk2MmI3MGM0MmJhODc3OWI4Ygot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIubW0KQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIk1vY2tXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYlNlY3VyaXR5T3JpZ2luUHJp
dmF0ZS5oPgorCitAaW1wbGVtZW50YXRpb24gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyCisK
KysgKE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciAqKXNoYXJlZAoreworICAgIHN0YXRpYyBN
b2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgKnByb3ZpZGVyID0gW1tNb2NrV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBwcm92aWRlcjsKK30KKworLSAo
aWQpaW5pdAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIF9wZXJtaXNzaW9ucy5hZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXJlZ2lzdGVyV2Vi
VmlldzooV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBBU1NFUlQoIV9yZWdpc3RlcmVkV2ViVmll
d3MuY29udGFpbnMod2ViVmlldykpOworICAgIF9yZWdpc3RlcmVkV2ViVmlld3MuYWRkKHdlYlZp
ZXcpOworfQorCistICh2b2lkKXVucmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldwor
eworICAgIEFTU0VSVChfcmVnaXN0ZXJlZFdlYlZpZXdzLmNvbnRhaW5zKHdlYlZpZXcpKTsKKyAg
ICBfcmVnaXN0ZXJlZFdlYlZpZXdzLnJlbW92ZSh3ZWJWaWV3KTsKK30KKworLSAodm9pZClzaG93
Tm90aWZpY2F0aW9uOihXZWJOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24gZnJvbVdlYlZpZXc6
KFdlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgQVNTRVJUKF9yZWdpc3RlcmVkV2ViVmlld3MuY29u
dGFpbnMod2ViVmlldykpOworCisgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBbbm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbklEXTsKKyAgICBfbm90aWZpY2F0aW9ucy5hZGQobm90aWZpY2F0
aW9uSUQsIG5vdGlmaWNhdGlvbik7CisgICAgX25vdGlmaWNhdGlvblZpZXdNYXAuYWRkKG5vdGlm
aWNhdGlvbklELCB3ZWJWaWV3KTsKKworICAgIFt3ZWJWaWV3IF9ub3RpZmljYXRpb25EaWRTaG93
Om5vdGlmaWNhdGlvbklEXTsKK30KKworLSAodm9pZCljYW5jZWxOb3RpZmljYXRpb246KFdlYk5v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
ID0gW25vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF07CisgICAgQVNTRVJUKF9ub3RpZmljYXRp
b25zLmNvbnRhaW5zKG5vdGlmaWNhdGlvbklEKSk7CisKKyAgICBbX25vdGlmaWNhdGlvblZpZXdN
YXAuZ2V0KG5vdGlmaWNhdGlvbklEKSBfbm90aWZpY2F0aW9uc0RpZENsb3NlOltOU0FycmF5IGFy
cmF5V2l0aE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6bm90aWZp
Y2F0aW9uSURdXV07Cit9CisKKy0gKHZvaWQpbm90aWZpY2F0aW9uRGVzdHJveWVkOihXZWJOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBfbm90aWZpY2F0aW9ucy5yZW1vdmUoW25v
dGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF0pOworICAgIF9ub3RpZmljYXRpb25WaWV3TWFwLnJl
bW92ZShbbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEXSk7Cit9CisKKy0gKHZvaWQpY2xlYXJO
b3RpZmljYXRpb25zOihOU0FycmF5ICopbm90aWZpY2F0aW9uSURzCit7CisgICAgZm9yIChOU051
bWJlciAqbm90aWZpY2F0aW9uSUQgaW4gbm90aWZpY2F0aW9uSURzKSB7CisgICAgICAgIHVpbnQ2
NF90IGlkID0gW25vdGlmaWNhdGlvbklEIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV07CisgICAgICAg
IFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IF9ub3RpZmljYXRpb25z
LnRha2UoaWQpOworICAgICAgICBfbm90aWZpY2F0aW9uVmlld01hcC5yZW1vdmUoaWQpOworICAg
IH0KK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRTaG93Tm90aWZp
Y2F0aW9uOih1aW50NjRfdClub3RpZmljYXRpb25JRAoreworICAgIFtfbm90aWZpY2F0aW9ucy5n
ZXQobm90aWZpY2F0aW9uSUQpLmdldCgpIGRpc3BhdGNoU2hvd0V2ZW50XTsKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRDbGlja05vdGlmaWNhdGlvbjoodWludDY0
X3Qpbm90aWZpY2F0aW9uSUQKK3sKKyAgICBbX25vdGlmaWNhdGlvbnMuZ2V0KG5vdGlmaWNhdGlv
bklEKS5nZXQoKSBkaXNwYXRjaENsaWNrRXZlbnRdOworfQorCistICh2b2lkKXdlYlZpZXc6KFdl
YlZpZXcgKil3ZWJWaWV3IGRpZENsb3NlTm90aWZpY2F0aW9uczooTlNBcnJheSAqKW5vdGlmaWNh
dGlvbklEcworeworICAgIGZvciAoTlNOdW1iZXIgKm5vdGlmaWNhdGlvbklEIGluIG5vdGlmaWNh
dGlvbklEcykgeworICAgICAgICB1aW50NjRfdCBpZCA9IFtub3RpZmljYXRpb25JRCB1bnNpZ25l
ZExvbmdMb25nVmFsdWVdOworICAgICAgICBOb3RpZmljYXRpb25JRE1hcDo6aXRlcmF0b3IgaXQg
PSBfbm90aWZpY2F0aW9ucy5maW5kKGlkKTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IF9ub3RpZmlj
YXRpb25zLmVuZCgpKTsKKyAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkgZGlzcGF0Y2hDbG9zZUV2
ZW50XTsKKyAgICAgICAgX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0KTsKKyAgICAgICAgX25vdGlm
aWNhdGlvblZpZXdNYXAucmVtb3ZlKGlkKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpc2ltdWxhdGVX
ZWJOb3RpZmljYXRpb25DbGljazoodWludDY0X3Qpbm90aWZpY2F0aW9uSUQKK3sKKyAgICBBU1NF
UlQoX25vdGlmaWNhdGlvbnMuY29udGFpbnMobm90aWZpY2F0aW9uSUQpKTsKKyAgICBbX25vdGlm
aWNhdGlvblZpZXdNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKSBfbm90aWZpY2F0aW9uRGlkQ2xpY2s6
bm90aWZpY2F0aW9uSURdOworfQorCistIChXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKXBvbGlj
eUZvck9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KK3sKKyAgICBOU051bWJlciAq
cGVybWlzc2lvbiA9IFtfcGVybWlzc2lvbnMuZ2V0KCkgb2JqZWN0Rm9yS2V5OltvcmlnaW4gc3Ry
aW5nVmFsdWVdXTsKKyAgICBpZiAoIXBlcm1pc3Npb24pCisgICAgICAgIHJldHVybiBXZWJOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uTm90QWxsb3dlZDsKKyAgICBpZiAoW3Blcm1pc3Npb24gYm9vbFZh
bHVlXSkKKyAgICAgICAgcmV0dXJuIFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25BbGxvd2VkOwor
ICAgIHJldHVybiBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVuaWVkOworfQorCistICh2b2lk
KXNldFdlYk5vdGlmaWNhdGlvbk9yaWdpbjooTlNTdHJpbmcqKW9yaWdpbiBwZXJtaXNzaW9uOihC
T09MKWFsbG93ZWQKK3sKKyAgICBbX3Blcm1pc3Npb25zLmdldCgpIHNldE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6YWxsb3dlZF0gZm9yS2V5Om9yaWdpbl07Cit9CisKKy0gKHZvaWQp
cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMKK3sKKyAgICBbX3Blcm1pc3Npb25z
LmdldCgpIHJlbW92ZUFsbE9iamVjdHNdOworfQorCistICh2b2lkKXJlc2V0Cit7CisgICAgX25v
dGlmaWNhdGlvbnMuY2xlYXIoKTsKKyAgICBfbm90aWZpY2F0aW9uVmlld01hcC5jbGVhcigpOwor
ICAgIFtzZWxmIHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zXTsKK30KKworQGVu
ZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0g
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBiMzZhOGFj
M2JiZDA2YjExNjEzMTg1N2U0OWZmMjVlMDMxYjU2NmIxLi42YzY1MTY2MmJmNzBhNmJkNzM1Zjlk
Y2MxOWU0NDg2OTlmNTI3NTI1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW1wb3J0ICJFZGl0aW5nRGVsZWdhdGUuaCIK
ICNpbXBvcnQgIk1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmgiCisjaW1wb3J0ICJNb2NrV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIlBvbGljeURlbGVnYXRlLmgiCiAjaW1wb3J0
ICJTdG9yYWdlVHJhY2tlckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJVSURlbGVnYXRlLmgiCkBAIC0x
MTYzLDEwICsxMTY0LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRCYWNraW5nU2NhbGVGYWN0b3Io
ZG91YmxlIGJhY2tpbmdTY2FsZUZhY3RvcikKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBfc2V0
Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yOmJhY2tpbmdTY2FsZUZhY3Rvcl07CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayhKU1N0cmluZ1Jl
ZiBqc1RpdGxlKQotewotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0UGFnZVZpc2liaWxpdHko
KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCkBAIC0xMTg3LDIwICsxMTg0LDMyIEBAIHZv
aWQgVGVzdFJ1bm5lcjo6ZGVsaXZlcldlYkludGVudChKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYs
IEpTU3RyaW5nUmVmKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CiAKLQogdm9pZCBUZXN0
UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYganNPcmln
aW4pCiB7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk9yaWdpbihBZG9wdENGLCBKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc09yaWdpbikpOworICAgIEFT
U0VSVChbW21haW5GcmFtZSB3ZWJWaWV3XSBfbm90aWZpY2F0aW9uUHJvdmlkZXJdID09IFtNb2Nr
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSk7CisgICAgW1tNb2NrV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRXZWJOb3RpZmljYXRpb25PcmlnaW46KE5TU3RyaW5nICop
Y2ZPcmlnaW4uZ2V0KCkgcGVybWlzc2lvbjpUUlVFXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpk
ZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBqc09yaWdpbikKIHsKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmT3JpZ2luKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzT3JpZ2luKSk7CisgICAgQVNTRVJUKFtbbWFp
bkZyYW1lIHdlYlZpZXddIF9ub3RpZmljYXRpb25Qcm92aWRlcl0gPT0gW01vY2tXZWJOb3RpZmlj
YXRpb25Qcm92aWRlciBzaGFyZWRdKTsKKyAgICBbW01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRl
ciBzaGFyZWRdIHNldFdlYk5vdGlmaWNhdGlvbk9yaWdpbjooTlNTdHJpbmcgKiljZk9yaWdpbi5n
ZXQoKSBwZXJtaXNzaW9uOkZBTFNFXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB7CisgICAgW1tNb2NrV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIgc2hhcmVkXSByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uc107CiB9
CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhKU1ZhbHVl
UmVmIGpzTm90aWZpY2F0aW9uKQogeworICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gW1tt
YWluRnJhbWUgd2ViVmlld10gX25vdGlmaWNhdGlvbklERm9yVGVzdGluZzpqc05vdGlmaWNhdGlv
bl07CisgICAgW1tNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzaW11bGF0ZVdl
Yk5vdGlmaWNhdGlvbkNsaWNrOm5vdGlmaWNhdGlvbklEXTsKK30KKwordm9pZCBUZXN0UnVubmVy
OjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKEpTU3RyaW5nUmVmIGpzVGl0bGUp
Cit7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KaW5kZXggZGRkZWM3
YWYxYTk0ZTBmMDA2MjIwY2I5OTE2OWMzYzFjOTAxMWM4Ny4uNTgwYjBkNjQ5MjE4Y2Q4N2JjODY3
MWJlYWEyOGE2NjljMTg4OTI5OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUu
bW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1wb3J0
ICJEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5oIgogI2ltcG9ydCAiRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5oIgorI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCiAjaW1w
b3J0ICJUZXN0UnVubmVyLmgiCiAjaW1wb3J0IDxXZWJLaXQvV2ViQXBwbGljYXRpb25DYWNoZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgpAQCAtMjg4LDYgKzI4OSwxMiBA
QCBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dpbmdJbmZvID0gbmlsOwogICAgIHJl
dHVybiBUUlVFOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lk
ZVBvbGljeUZvck5vdGlmaWNhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJTZWN1cml0eU9yaWdp
biAqKW9yaWdpbiBsaXN0ZW5lcjooaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+KWxpc3Rl
bmVyCit7CisgICAgWyhNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgKilbd2ViVmlldyBfbm90
aWZpY2F0aW9uUHJvdmlkZXJdIHNldFdlYk5vdGlmaWNhdGlvbk9yaWdpbjpbb3JpZ2luIHN0cmlu
Z1ZhbHVlXSBwZXJtaXNzaW9uOllFU107CisgICAgW2xpc3RlbmVyIGFsbG93XTsKK30KKwogLSAo
dm9pZClkZWFsbG9jCiB7CiAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsK
</data>
<flag name="review"
          id="172014"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>