<?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>210653</bug_id>
          
          <creation_ts>2020-04-17 05:31:53 -0700</creation_ts>
          <short_desc>Allow the UserStyleLevel to be set through _WKUserStyleSheet</short_desc>
          <delta_ts>2020-04-17 12:04:44 -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>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>beidson</cc>
    
    <cc>graouts</cc>
    
    <cc>koivisto</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1642642</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-17 05:31:53 -0700</bug_when>
    <thetext>Allow the UserStyleLevel to be set through _WKUserStyleSheet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642643</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-17 05:37:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/60506645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642652</commentid>
    <comment_count>2</comment_count>
      <attachid>396762</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-17 06:27:19 -0700</bug_when>
    <thetext>Created attachment 396762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642653</commentid>
    <comment_count>3</comment_count>
      <attachid>396762</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-17 06:34:33 -0700</bug_when>
    <thetext>Comment on attachment 396762
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h:-47
&gt; -- (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly userContentWorld:(_WKUserContentWorld *)userContentWorld;

Huh? Are there no clients of this SPI? (And, how sure are you?)

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:98
&gt; +    // FIXME: In the API test, we can use generateUniqueURL below before the API::Object constructor has done this... where should this really be?

I think there is precedent for this (maybe look at WKWebViewConfiguration, which is most people’s first WK object).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642655</commentid>
    <comment_count>4</comment_count>
      <attachid>396762</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-17 06:38:38 -0700</bug_when>
    <thetext>Comment on attachment 396762
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h:52
&gt; +- (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly level:(_WKUserStyleLevel)level userContentWorld:(_WKUserContentWorld *)userContentWorld;

This needs availability

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h:55
&gt; +- (instancetype)initWithSource:(NSString *)source forMainFrameOnly:(BOOL)forMainFrameOnly legacyWhitelist:(NSArray&lt;NSString *&gt; *)legacyWhitelist legacyBlacklist:(NSArray&lt;NSString *&gt; *)legacyBlacklist baseURL:(NSURL *)baseURL level:(_WKUserStyleLevel)level userContentWorld:(_WKUserContentWorld *)userContentWorld;

This needs availability

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/UserContentController.mm:733
&gt; +// Add two tests, where we set the default explicitly, and where we set to author level.

What is this, a fixme? Or just stale?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642656</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-17 06:44:39 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #4)
&gt; Comment on attachment 396762 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396762&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h:52
&gt; &gt; +- (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly level:(_WKUserStyleLevel)level userContentWorld:(_WKUserContentWorld *)userContentWorld;
&gt; 
&gt; This needs availability
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h:55
&gt; &gt; +- (instancetype)initWithSource:(NSString *)source forMainFrameOnly:(BOOL)forMainFrameOnly legacyWhitelist:(NSArray&lt;NSString *&gt; *)legacyWhitelist legacyBlacklist:(NSArray&lt;NSString *&gt; *)legacyBlacklist baseURL:(NSURL *)baseURL level:(_WKUserStyleLevel)level userContentWorld:(_WKUserContentWorld *)userContentWorld;
&gt; 
&gt; This needs availability

Will add TBA in both cases.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/UserContentController.mm:733
&gt; &gt; +// Add two tests, where we set the default explicitly, and where we set to author level.
&gt; 
&gt; What is this, a fixme? Or just stale?

Stale, will remove!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642657</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-17 06:46:40 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #3)
&gt; Comment on attachment 396762 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396762&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h:-47
&gt; &gt; -- (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly userContentWorld:(_WKUserContentWorld *)userContentWorld;
&gt; 
&gt; Huh? Are there no clients of this SPI? (And, how sure are you?)

This was added just over a month ago in r257870. I&apos;ve looked and haven&apos;t found any use for this SPI that I&apos;m not also changing in some Internal patch.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:98
&gt; &gt; +    // FIXME: In the API test, we can use generateUniqueURL below before the API::Object constructor has done this... where should this really be?
&gt; 
&gt; I think there is precedent for this (maybe look at WKWebViewConfiguration,
&gt; which is most people’s first WK object).

I stupidly copy-paster the other _WKUserStyleSheet initializers which had this line. Emphasis on &quot;stupidly&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642697</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-17 08:47:49 -0700</bug_when>
    <thetext>Committed r260254: &lt;https://trac.webkit.org/changeset/260254&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642757</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-17 12:00:10 -0700</bug_when>
    <thetext>Build fix in r260269.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642760</commentid>
    <comment_count>9</comment_count>
      <attachid>396762</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-04-17 12:04:44 -0700</bug_when>
    <thetext>Comment on attachment 396762
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        Add a new _WKUserStyleLevel enum such that we may provide the specificity level of the backing UserStyleSheet, represented by the UserStyleLevel enum in WebCore.

cascade level!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396762</attachid>
            <date>2020-04-17 06:27:19 -0700</date>
            <delta_ts>2020-04-17 06:40:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210653-20200417152718.patch</filename>
            <type>text/plain</type>
            <size>20485</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNiZTUyYzMyM2U1NTM1MGZk
YjI5ODdhNDI0YTQ5MTNiZmI5ODE3YzYuLmU3OGFiMDZjOTEzNTYwNzA5ZWUzZmQzODE5NGY3MWQ2
N2U5OWI2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDQtMTcgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGUgVXNlclN0eWxl
TGV2ZWwgdG8gYmUgc2V0IHRocm91Z2ggX1dLVXNlclN0eWxlU2hlZXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY1MworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjA1MDY2NDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbmV3IF9XS1VzZXJTdHlsZUxldmVsIGVudW0gc3VjaCB0aGF0IHdl
IG1heSBwcm92aWRlIHRoZSBzcGVjaWZpY2l0eSBsZXZlbCBvZiB0aGUgYmFja2luZyBVc2VyU3R5
bGVTaGVldCwgcmVwcmVzZW50ZWQgYnkgdGhlIFVzZXJTdHlsZUxldmVsIGVudW0gaW4gV2ViQ29y
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAg
ICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JXS1dlYlZpZXc6Zm9y
TWFpbkZyYW1lT25seTpsZXZlbDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tV
c2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRl
bGlzdDpsZWdhY3lCbGFja2xpc3Q6YmFzZVVSTDpsZXZlbDp1c2VyQ29udGVudFdvcmxkOl0pOgor
ICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JXS1dlYlZpZXc6
Zm9yTWFpbkZyYW1lT25seTp1c2VyQ29udGVudFdvcmxkOl0pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oOgorICAgICAg
ICAoQVBJOjp0b1dlYkNvcmVVc2VyU3R5bGVMZXZlbCk6CisKIDIwMjAtMDQtMTYgIFBlbmcgTGl1
ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbnVwIHRoZSB1c2FnZSBvZiBF
TkFCTEVfRlVMTFNDUkVFTl9BUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggZjY4Nzk0YjU3NDhkZjFhNTJkMzBj
MTIzNjU4ZTZiYzhiZDJmOTJkNy4uZGM4NTZiZDI5NzYzMGJmYTNlMzZmMDhjNjQ4ZjhiMWNlZmYx
OWQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0LmgKQEAgLTMyLDYgKzMyLDExIEBAIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCiBAY2xhc3MgX1dLVXNlckNvbnRlbnRXb3JsZDsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKK3R5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1VzZXJTdHlsZUxldmVsKSB7CisgICAgX1dLVXNl
clN0eWxlVXNlckxldmVsLAorICAgIF9XS1VzZXJTdHlsZUF1dGhvckxldmVsCit9IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIFdLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSkKIEBpbnRlcmZhY2UgX1dLVXNlclN0
eWxlU2hlZXQgOiBOU09iamVjdCA8TlNDb3B5aW5nPgogCkBAIC00NCw5ICs0OSwxMCBAQCBXS19D
TEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpCiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wp
Zm9yTWFpbkZyYW1lT25seTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yV0tXZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZy
YW1lT25seSB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRl
bnRXb3JsZDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3Vy
Y2UgZm9yV0tXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZvck1haW5GcmFtZU9ubHk6KEJP
T0wpZm9yTWFpbkZyYW1lT25seSBsZXZlbDooX1dLVXNlclN0eWxlTGV2ZWwpbGV2ZWwgdXNlckNv
bnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQ7CiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFt
ZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0FycmF5PE5TU3Ry
aW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50
V29ybGQgKil1c2VyQ29udGVudFdvcmxkOwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNl
OihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9u
bHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0
IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCBi
YXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRX
b3JsZCAqKXVzZXJDb250ZW50V29ybGQ7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6
KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25s
eSBsZWdhY3lXaGl0ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3Qg
bGVnYWN5QmxhY2tsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGJh
c2VVUkw6KE5TVVJMICopYmFzZVVSTCBsZXZlbDooX1dLVXNlclN0eWxlTGV2ZWwpbGV2ZWwgdXNl
ckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQ7CiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCA0NmFm
OGFkMmJjNDkyNmZhZTgxMjk0YWU2YmEyODkzMTdhODQ3MGMwLi40NDA1OWI5ZThiMmY5NTkyNDI4
NmMwMmY4NTk0Njk4ODZjZGFkN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCkBAIC01MSw3ICs1MSw3IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yTWFpbkZy
YW1lT25seTooQk9PTClmb3JNYWluCiB9CiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNl
IGZvcldLV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBmb3JNYWluRnJhbWVPbmx5OihCT09M
KWZvck1haW5GcmFtZU9ubHkgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAq
KXVzZXJDb250ZW50V29ybGQKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJp
bmcgKilzb3VyY2UgZm9yV0tXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZvck1haW5GcmFt
ZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZXZlbDooX1dLVXNlclN0eWxlTGV2ZWwpbGV2
ZWwgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29y
bGQKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKQEAgLTU5LDcgKzU5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0
cmluZyAqKXNvdXJjZSBmb3JXS1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlYKICAgICAvLyBGSVhN
RTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJl
Zm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBz
aG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwog
Ci0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0
PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQ
STo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFp
bkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdElu
VG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3BhZ2Vd
LT53ZWJQYWdlSUQoKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRl
bnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
dHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsg
fSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5BbGxGcmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNlclN0eWxlTGV2ZWwobGV2ZWwp
LCBbd2ViVmlldyBfcGFnZV0tPndlYlBhZ2VJRCgpIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtODks
NiArODksMTkgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNv
dXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4KIAogICAgIHJldHVybiBzZWxmOwog
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZv
ck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0Fy
cmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGJhc2VVUkw6KE5TVVJMICopYmFzZVVS
TCBsZXZlbDooX1dLVXNlclN0eWxlTGV2ZWwpbGV2ZWwgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNl
ckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIC8vIEZJWE1FOiBJbiB0aGUg
QVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBB
UEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlz
IHJlYWxseSBiZT8KKyAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CisKKyAgICBBUEk6
Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdU
Rjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBtYWtl
VmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2Fj
eUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBBUEk6OnRvV2ViQ29yZVVzZXJTdHlsZUxl
dmVsKGxldmVsKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZCk7CisKKyAgICByZXR1cm4gc2VsZjsKK30KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAtICh2b2lkKWRlYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oCmluZGV4
IDc3ZWVkMmM3NTIyZjkxOGMzYTA5ZDI5ODhkMDhjM2ZkZjU0ODIyYmEuLmFmMTM3Y2IyNjY2Zjg2
ODE4ZGZjOTcyODllNTY4OWIwYmU5NTc2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaApA
QCAtMzUsNiArMzUsMjMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OlVz
ZXJTdHlsZVNoZWV0PiB7CiAKIH0KIAorbmFtZXNwYWNlIEFQSSB7CisKK2lubGluZSBXZWJDb3Jl
OjpVc2VyU3R5bGVMZXZlbCB0b1dlYkNvcmVVc2VyU3R5bGVMZXZlbChfV0tVc2VyU3R5bGVMZXZl
bCBsZXZlbCkKK3sKKyAgICBzd2l0Y2ggKGxldmVsKSB7CisgICAgY2FzZSBfV0tVc2VyU3R5bGVV
c2VyTGV2ZWw6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWw7Cisg
ICAgY2FzZSBfV0tVc2VyU3R5bGVBdXRob3JMZXZlbDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlVzZXJTdHlsZUF1dGhvckxldmVsOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWw7Cit9CisKK30KKwogQGlu
dGVyZmFjZSBfV0tVc2VyU3R5bGVTaGVldCAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAg
QVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6VXNlclN0eWxlU2hlZXQ+IF91c2VyU3R5bGVTaGVldDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZjFi
ZjNjODVlNDU3ODJkMjFjMWUzMTczNjY1MDY4YzE4MjA4MGQ3Li5iNWRjZTY4ZmFmYzhjY2FiMGIx
MDljYzA2Mzc5YWEzN2M4ODUyODNiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDQtMTcgIEFudG9pbmUgUXVp
bnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGUgVXNlclN0eWxlTGV2
ZWwgdG8gYmUgc2V0IHRocm91Z2ggX1dLVXNlclN0eWxlU2hlZXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDY1MworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjA1MDY2NDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIG5ldyB0ZXN0cyBmb3IgdGhlICJsZXZlbCIgcGFyYW1ldGVyIHdoZW4gY3Jl
YXRpbmcgYSBfV0tVc2VyU3R5bGVTaGVldC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoVEVTVCk6
CisKIDIwMjAtMDQtMTYgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gQSBjb3VwbGUgb2YgQVBJIHRlc3RzIGFyZSBmbGFreSBmYWlsaW5nIG9uIFgxMS4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXggODFiNmZkODNiYjRmMWQyODAzOTg3Y2Y2
NTI0NTJjZDQ2NzM2YTgyNi4uNDc2YmUzNDY3NTZjZjg4MzlhNjI5MzcxZTBiMTdlNzFjNTg0OGU5
YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTMyOCw2ICszMjgsNyBAQCBURVNU
KFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlclJlcGxhY2VXaXRo
U2FtZU5hbWUpCiBzdGF0aWMgTlNTdHJpbmcgKnN0eWxlU2hlZXRTb3VyY2UgPSBAImJvZHkgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbiAhaW1wb3J0YW50OyB9IjsKIHN0YXRpYyBOU1N0cmluZyAq
YmFja2dyb3VuZENvbG9yU2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykiOwogc3Rh
dGljIE5TU3RyaW5nICpmcmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCA9IEAid2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdLmNv
bnRlbnREb2N1bWVudC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNv
bG9yJykiOworc3RhdGljIE5TU3RyaW5nICpzdHlsZVNoZWV0U291cmNlRm9yU3BlY2lmaWNpdHlM
ZXZlbFRlc3RzID0gQCIjYm9keSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9IjsKIHN0YXRp
YyBjb25zdCBjaGFyKiBncmVlbkluUkdCID0gInJnYigwLCAxMjgsIDApIjsKIHN0YXRpYyBjb25z
dCBjaGFyKiByZWRJblJHQiA9ICJyZ2IoMjU1LCAwLCAwKSI7CiBzdGF0aWMgY29uc3QgY2hhciog
d2hpdGVJblJHQiA9ICJyZ2JhKDAsIDAsIDAsIDApIjsKQEAgLTUyMiw3ICs1MjMsNyBAQCBURVNU
KFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU3R5bGVTaGVldEFmZmVjdGluZ09ubHlTcGVj
aWZpY1dlYlZpZXcpCiAgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcihvdGhlcldlYlZp
ZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOwogCiAgICAgUmV0YWlu
UHRyPF9XS1VzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gW19XS1VzZXJDb250ZW50V29ybGQgd29y
bGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJdOwotICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVl
dD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdp
dGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSBmb3JXS1dlYlZpZXc6dGFyZ2V0V2ViVmlldy5nZXQo
KSBmb3JNYWluRnJhbWVPbmx5OllFUyB1c2VyQ29udGVudFdvcmxkOndvcmxkLmdldCgpXSk7Cisg
ICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19X
S1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZv
cldLV2ViVmlldzp0YXJnZXRXZWJWaWV3LmdldCgpIGZvck1haW5GcmFtZU9ubHk6WUVTIGxldmVs
Ol9XS1VzZXJTdHlsZUF1dGhvckxldmVsIHVzZXJDb250ZW50V29ybGQ6d29ybGQuZ2V0KCldKTsK
ICAgICBbW3RhcmdldFdlYlZpZXcgY29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVy
IF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKIAogICAgIGV4cGVjdFNjcmlw
dEV2YWx1YXRlc1RvQ29sb3IodGFyZ2V0V2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2Ny
aXB0LCBncmVlbkluUkdCKTsKQEAgLTUzNSw3ICs1MzYsNyBAQCBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBVc2VyU3R5bGVTaGVldEFmZmVjdGluZ1NwZWNpZmljV2ViVmlld0luamVjdGlv
bkltbQogICAgIFt0YXJnZXRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2Jh
Y2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJhc2VVUkw6bmlsXTsKIAogICAgIFJldGFp
blB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IFtfV0tVc2VyQ29udGVudFdvcmxkIHdv
cmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKLSAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hl
ZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRX
aXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3OnRhcmdldFdlYlZpZXcuZ2V0
KCkgZm9yTWFpbkZyYW1lT25seTpZRVMgdXNlckNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKV0pOwor
ICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tf
V0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSBm
b3JXS1dlYlZpZXc6dGFyZ2V0V2ViVmlldy5nZXQoKSBmb3JNYWluRnJhbWVPbmx5OllFUyBsZXZl
bDpfV0tVc2VyU3R5bGVBdXRob3JMZXZlbCB1c2VyQ29udGVudFdvcmxkOndvcmxkLmdldCgpXSk7
CiAgICAgW1t0YXJnZXRXZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxl
ciBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CiAKICAgICBbdGFyZ2V0V2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CkBAIC01NDksNyArNTUwLDcg
QEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRBZmZlY3RpbmdT
cGVjaWZpY1dlYlZpZXdJbmplY3Rpb25BbmQKICAgICBbdGFyZ2V0V2ViVmlldyBsb2FkSFRNTFN0
cmluZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2JvZHk+IiBiYXNl
VVJMOm5pbF07CiAKICAgICBSZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSBb
X1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07Ci0gICAgUmV0
YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJT
dHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZvcldLV2Vi
Vmlldzp0YXJnZXRXZWJWaWV3LmdldCgpIGZvck1haW5GcmFtZU9ubHk6WUVTIHVzZXJDb250ZW50
V29ybGQ6d29ybGQuZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0
eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291
cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3OnRhcmdldFdlYlZpZXcuZ2V0KCkgZm9y
TWFpbkZyYW1lT25seTpZRVMgbGV2ZWw6X1dLVXNlclN0eWxlQXV0aG9yTGV2ZWwgdXNlckNvbnRl
bnRXb3JsZDp3b3JsZC5nZXQoKV0pOwogICAgIFtbdGFyZ2V0V2ViVmlldyBjb25maWd1cmF0aW9u
XS51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0
KCldOwogICAgIFtbdGFyZ2V0V2ViVmlldyBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRy
b2xsZXIgX3JlbW92ZVVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOwogCkBAIC01NzUs
NyArNTc2LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRB
ZmZlY3RpbmdPbmx5U3BlY2lmaWNXZWJWaWV3U2hhcmVkQ28KICAgICBleHBlY3RTY3JpcHRFdmFs
dWF0ZXNUb0NvbG9yKG90aGVyV2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBy
ZWRJblJHQik7CiAKICAgICBSZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSBb
X1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07Ci0gICAgUmV0
YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJT
dHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZvcldLV2Vi
Vmlldzp0YXJnZXRXZWJWaWV3LmdldCgpIGZvck1haW5GcmFtZU9ubHk6WUVTIHVzZXJDb250ZW50
V29ybGQ6d29ybGQuZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0
eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291
cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3OnRhcmdldFdlYlZpZXcuZ2V0KCkgZm9y
TWFpbkZyYW1lT25seTpZRVMgbGV2ZWw6X1dLVXNlclN0eWxlQXV0aG9yTGV2ZWwgdXNlckNvbnRl
bnRXb3JsZDp3b3JsZC5nZXQoKV0pOwogICAgIFtbdGFyZ2V0V2ViVmlldyBjb25maWd1cmF0aW9u
XS51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0
KCldOwogCiAgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih0YXJnZXRXZWJWaWV3Lmdl
dCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGdyZWVuSW5SR0IpOwpAQCAtNTkyLDcgKzU5Myw3
IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5n
T25seVNwZWNpZmljV2ViVmlld1JlbW92YWwpCiAgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9D
b2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKIAog
ICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IFtfV0tVc2VyQ29udGVu
dFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKLSAgICBSZXRhaW5QdHI8X1dLVXNl
clN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxs
b2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3OndlYlZpZXcu
Z2V0KCkgZm9yTWFpbkZyYW1lT25seTpZRVMgdXNlckNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKV0p
OworICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMo
W1tfV0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJj
ZSBmb3JXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmb3JNYWluRnJhbWVPbmx5OllFUyBsZXZlbDpf
V0tVc2VyU3R5bGVBdXRob3JMZXZlbCB1c2VyQ29udGVudFdvcmxkOndvcmxkLmdldCgpXSk7CiAg
ICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNl
clN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CiAKICAgICBleHBlY3RTY3JpcHRFdmFsdWF0
ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJH
Qik7CkBAIC02MTIsNyArNjEzLDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNl
clN0eWxlU2hlZXRBZmZlY3RpbmdPbmx5U3BlY2lmaWNXZWJWaWV3UmVtb3ZhbEEKICAgICBleHBl
Y3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNj
cmlwdCwgcmVkSW5SR0IpOwogCiAgICAgUmV0YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+IHdv
cmxkID0gW19XS1VzZXJDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJdOwot
ICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tf
V0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSBm
b3JXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmb3JNYWluRnJhbWVPbmx5OllFUyB1c2VyQ29udGVu
dFdvcmxkOndvcmxkLmdldCgpXSk7CisgICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBz
dHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNv
dXJjZTpzdHlsZVNoZWV0U291cmNlIGZvcldLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZvck1haW5G
cmFtZU9ubHk6WUVTIGxldmVsOl9XS1VzZXJTdHlsZUF1dGhvckxldmVsIHVzZXJDb250ZW50V29y
bGQ6d29ybGQuZ2V0KCldKTsKICAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0udXNlckNvbnRl
bnRDb250cm9sbGVyIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKIAogICAg
IGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENv
bG9yU2NyaXB0LCBncmVlbkluUkdCKTsKQEAgLTYzNiw3ICs2MzcsNyBAQCBURVNUKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyLCBVc2VyU3R5bGVTaGVldEFmZmVjdGluZ09ubHlTcGVjaWZpY1dlYlZp
ZXdSZW1vdmFsQQogICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQo
KSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CiAKICAgICBSZXRhaW5QdHI8X1dL
VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSBbX1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhO
YW1lOkAiVGVzdFdvcmxkIl07Ci0gICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHls
ZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJj
ZTpzdHlsZVNoZWV0U291cmNlIGZvcldLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZvck1haW5GcmFt
ZU9ubHk6WUVTIHVzZXJDb250ZW50V29ybGQ6d29ybGQuZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8
X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hl
ZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3Ondl
YlZpZXcuZ2V0KCkgZm9yTWFpbkZyYW1lT25seTpZRVMgbGV2ZWw6X1dLVXNlclN0eWxlQXV0aG9y
TGV2ZWwgdXNlckNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKV0pOwogICAgIFtbd2ViVmlldyBjb25m
aWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxl
U2hlZXQuZ2V0KCldOwogCiAgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3
LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGdyZWVuSW5SR0IpOwpAQCAtNjcyLDcgKzY3
Myw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0QWZmZWN0
aW5nT25seVNwZWNpZmljV2ViVmlld1JlbW92YWxBCiAgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVz
VG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsK
IAogICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IFtfV0tVc2VyQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKLSAgICBSZXRhaW5QdHI8X1dL
VXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQg
YWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3OndlYlZp
ZXcuZ2V0KCkgZm9yTWFpbkZyYW1lT25seTpZRVMgdXNlckNvbnRlbnRXb3JsZDp3b3JsZC5nZXQo
KV0pOworICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0
TlMoW1tfV0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNv
dXJjZSBmb3JXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmb3JNYWluRnJhbWVPbmx5OllFUyBsZXZl
bDpfV0tVc2VyU3R5bGVBdXRob3JMZXZlbCB1c2VyQ29udGVudFdvcmxkOndvcmxkLmdldCgpXSk7
CiAgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxlciBfYWRk
VXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CiAKICAgICBleHBlY3RTY3JpcHRFdmFs
dWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5J
blJHQik7CkBAIC02ODMsNiArNjg0LDU0IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIs
IFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nT25seVNwZWNpZmljV2ViVmlld1JlbW92YWxBCiAgICAg
ZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29s
b3JTY3JpcHQsIGJsdWVJblJHQik7CiB9CiAKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIs
IFVzZXJTdHlsZVNoZWV0U3BlY2lmaWNpdHlMZXZlbE5vdFNwZWNpZmllZCkKK3sKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPF9XS1Vz
ZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFs
bG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlRm9yU3BlY2lmaWNpdHlMZXZlbFRl
c3RzIGZvck1haW5GcmFtZU9ubHk6WUVTXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOworCisg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8
c3R5bGU+Ym9keSB7IGJhY2tncm91bmQtY29sb3I6IHJlZCB9PC9zdHlsZT48Ym9keSBpZD0nYm9k
eSc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIC8vIEJ5IGRlZmF1bHQsIHRoZSBpbmplY3RlZCBzdHls
ZSBzaGVldCB3aWxsIG5vdCBiZSBhYmxlIHRvIG92ZXJyaWRlIGR1ZSB0byB0aGUgInVzZXIiIGxl
dmVsIGJlaW5nIHVzZWQuCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3
LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKK30KKworVEVTVChXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRTcGVjaWZpY2l0eUxldmVsVXNlcikK
K3sKKyAgICBSZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSBbX1dLVXNlckNv
bnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07CisKKyAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPF9XS1VzZXJTdHls
ZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBp
bml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlRm9yU3BlY2lmaWNpdHlMZXZlbFRlc3RzIGZv
ck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRlbGlzdDpAW10gbGVnYWN5QmxhY2tsaXN0OkBb
XSBiYXNlVVJMOltbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUu
Y29tLyJdIGxldmVsOl9XS1VzZXJTdHlsZVVzZXJMZXZlbCB1c2VyQ29udGVudFdvcmxkOndvcmxk
LmdldCgpXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2Fk
ZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOworCisgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8c3R5bGU+Ym9keSB7IGJhY2tn
cm91bmQtY29sb3I6IHJlZCB9PC9zdHlsZT48Ym9keSBpZD0nYm9keSc+PC9ib2R5PiIgYmFzZVVS
TDpuaWxdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
KworICAgIC8vIFRoZSBpbmplY3RlZCBzdHlsZSBzaGVldCB3aWxsIG5vdCBiZSBhYmxlIHRvIG92
ZXJyaWRlIGR1ZSB0byB0aGUgInVzZXIiIGxldmVsIGJlaW5nIHVzZWQuCisgICAgZXhwZWN0U2Ny
aXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQs
IHJlZEluUkdCKTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxl
U2hlZXRTcGVjaWZpY2l0eUxldmVsQXV0aG9yKQoreworICAgIFJldGFpblB0cjxfV0tVc2VyQ29u
dGVudFdvcmxkPiB3b3JsZCA9IFtfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJU
ZXN0V29ybGQiXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5T
KFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3Vy
Y2VGb3JTcGVjaWZpY2l0eUxldmVsVGVzdHMgZm9yTWFpbkZyYW1lT25seTpZRVMgbGVnYWN5V2hp
dGVsaXN0OkBbXSBsZWdhY3lCbGFja2xpc3Q6QFtdIGJhc2VVUkw6W1tOU1VSTCBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vIl0gbGV2ZWw6X1dLVXNlclN0eWxlQXV0
aG9yTGV2ZWwgdXNlckNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKV0pOworICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0
LmdldCgpXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOkAiPHN0eWxlPmJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQgfTwvc3R5bGU+
PGJvZHkgaWQ9J2JvZHknPjwvYm9keT4iIGJhc2VVUkw6bmlsXTsKKyAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAvLyBUaGUgaW5qZWN0ZWQgc3R5
bGUgc2hlZXQgKndpbGwqIGJlIGFibGUgdG8gb3ZlcnJpZGUgZHVlIHRvIHRoZSAiYXV0aG9yIiBs
ZXZlbCBiZWluZyB1c2VkLgorICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmll
dy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdCKTsKK30KKworLy8gQWRk
IHR3byB0ZXN0cywgd2hlcmUgd2Ugc2V0IHRoZSBkZWZhdWx0IGV4cGxpY2l0bHksIGFuZCB3aGVy
ZSB3ZSBzZXQgdG8gYXV0aG9yIGxldmVsLgorCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVy
LCBVc2VyU2NyaXB0UmVtb3ZlKQogewogICAgIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29udHJv
bGxlcj4gdXNlckNvbnRlbnRDb250cm9sbGVyID0gYWRvcHROUyhbW1dLVXNlckNvbnRlbnRDb250
cm9sbGVyIGFsbG9jXSBpbml0XSk7Cg==
</data>
<flag name="review"
          id="412180"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>