<?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>222296</bug_id>
          
          <creation_ts>2021-02-22 16:50:53 -0800</creation_ts>
          <short_desc>[Cocoa] Web Inspector: Add support for reloading the inspected page via _WKInspectorExtension</short_desc>
          <delta_ts>2021-02-23 17:11:10 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Patrick Angle">pangle</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732383</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-02-22 16:50:53 -0800</bug_when>
    <thetext>&lt;rdar://71208668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732385</commentid>
    <comment_count>1</comment_count>
      <attachid>421268</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-02-22 16:57:46 -0800</bug_when>
    <thetext>Created attachment 421268
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732596</commentid>
    <comment_count>2</comment_count>
      <attachid>421268</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-23 10:40:15 -0800</bug_when>
    <thetext>Comment on attachment 421268
Patch v1.0

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

r-, need to remove unnecessary argument from API method&apos;s completion handler.

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:149
&gt; +        for (let target of WI.targets) {

I&apos;m pretty sure it would be enough to reload the main target only? Devin?

If you keep this code, please remove unnecessary braces.

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:151
&gt; +        }

This should return a promise in the happy path so that the originating call to -[WKInspectorExtension reloadWithOptions:] does not complete prior to the command being handled (i.e., it could return an error that should be propagated).

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.h:67
&gt; + * @param userAgent If specified, sets a custom user agent for the page to be sent in the `User-Agent` header and returned by calls to `navigator.userAgent` made by scripts running in the page.

I think these options are applicable to the next navigation only, right? I would mention that in the @discussion.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.h:72
&gt; +- (void)reloadIgnoringCache:(BOOL)ignoreCache userAgent:(NSString *)userAgent injectedScript:(NSString *)injectedScript completionHandler:(void(^)(NSError * _Nullable, NSDictionary * _Nullable result))completionHandler;

There is no return value for this operation, you can drop the 2nd parameter of the completion handler and associated comments/code (throughout).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732633</commentid>
    <comment_count>3</comment_count>
      <attachid>421268</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-23 11:41:13 -0800</bug_when>
    <thetext>Comment on attachment 421268
Patch v1.0

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:138
&gt; +        // FIXME: &lt;rdar://problem/74180355&gt; implement execution context selection options

NIT: i usually prefer to create and include a bugzilla bug so that if an open source contributor comes along they can get the details and try to implement it themselves :)

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:149
&gt;&gt; +        for (let target of WI.targets) {
&gt; 
&gt; I&apos;m pretty sure it would be enough to reload the main target only? Devin?
&gt; 
&gt; If you keep this code, please remove unnecessary braces.

In the case of `Page.reload`, yeah I think this needs to be `WI.mainTarget` only since we want to reload the entire page (i.e. if we&apos;re already reloading the main frame, there&apos;s no point in _also_ reloading subframes), but I applaud you for trying to do future-proof multi-target support :)

For future reference, you&apos;ll almost always want a `target.hasCommand(&quot;Page.reload&quot;)` check before almost all commands because not all targets are the same (e.g. a JS `Worker` target doesn&apos;t have a `Page` domain/agent).  You can verify this for yourself by looking at the value of `targetTypes` in the protocol JSON files (if there isn&apos;t one then it&apos;s assumed that the domain/command/event is supported on all targets).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732649</commentid>
    <comment_count>4</comment_count>
      <attachid>421340</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-02-23 12:19:14 -0800</bug_when>
    <thetext>Created attachment 421340
Patch v1.1 - Review notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732700</commentid>
    <comment_count>5</comment_count>
      <attachid>421340</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-23 15:04:54 -0800</bug_when>
    <thetext>Comment on attachment 421340
Patch v1.1 - Review notes

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

r=me with removal of unnecessary ExceptionDetails parameter.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.h:68
&gt; + * @param injectedScript If specified, injects the given JavaScript experssion into all frames on the page before any other scripts.

Nit: expression

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.h:70
&gt; + * @discussion The completionHandler is passed an NSJSONSerialization-compatible NSObject representing an error or null.

Nit: I would just remove the @discussion

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:284
&gt; +void WebInspectorUIExtensionController::reloadForExtension(const InspectorExtensionID&amp; extensionID, const Optional&lt;bool&gt;&amp; ignoreCache, const Optional&lt;String&gt;&amp; userAgent, const Optional&lt;String&gt;&amp; injectedScript, CompletionHandler&lt;void(const Optional&lt;WebCore::ExceptionDetails&gt;&amp;, const Optional&lt;InspectorExtensionError&gt;&amp;)&gt;&amp;&amp; completionHandler)

The WebCore::ExceptionDetails return parameter is never filled in or used. So, it can be removed here and from the .messages.in file. We only need to return Optional&lt;InspectorExtensionError&gt; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732709</commentid>
    <comment_count>6</comment_count>
      <attachid>421359</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-02-23 15:44:45 -0800</bug_when>
    <thetext>Created attachment 421359
Patch v1.2 - Review notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732711</commentid>
    <comment_count>7</comment_count>
      <attachid>421359</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-23 15:47:54 -0800</bug_when>
    <thetext>Comment on attachment 421359
Patch v1.2 - Review notes

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:150
&gt; +        if (target.hasCommand(&quot;Page.reload&quot;))

Style: i&apos;d flip this around and have it early-return with `WI.WebInspectorExtension.ErrorCode.InvalidRequest` to match the pattern above

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.mm:93
&gt; +            capturedBlock([NSError errorWithDomain:WKErrorDomain code:WKErrorUnknown userInfo:@{ NSLocalizedFailureReasonErrorKey: WebKit::inspectorExtensionErrorToString(result.error())}]);

Style: there should either be spaces before both `{`  and `}` or neither</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732718</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-23 16:05:02 -0800</bug_when>
    <thetext>ChangeLog entry in Source/WebInspectorUI/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732721</commentid>
    <comment_count>9</comment_count>
      <attachid>421365</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-02-23 16:14:10 -0800</bug_when>
    <thetext>Created attachment 421365
Patch v1.2.1 - Review notes, now with reviewer in both changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732729</commentid>
    <comment_count>10</comment_count>
      <attachid>421368</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-02-23 16:39:48 -0800</bug_when>
    <thetext>Created attachment 421368
Patch v1.3 - Review notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732741</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-23 17:11:09 -0800</bug_when>
    <thetext>Committed r273365: &lt;https://commits.webkit.org/r273365&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421368.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421268</attachid>
            <date>2021-02-22 16:57:46 -0800</date>
            <delta_ts>2021-02-23 12:19:12 -0800</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-222296-20210222165745.patch</filename>
            <type>text/plain</type>
            <size>21148</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
ODUzNjVjMmYxMWJkZjY3ZThiZTVhNmQ4MDEyMGNkMDMwN2UzY2VjLi5hM2ZkMzI5MGZiYzdkNGE2
MTVhMjY1YTdlNjVmNjY3ZjgyZGFhODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMS0wMi0yMiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgcmVsb2Fk
aW5nIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyOTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZv
ciByZWxvYWRpbmcgdGhlIGluc3BlY3RlZCBwYWdlLCBpbmNsdWRpbmcgaWdub3JpbmcgdGhlIGNh
Y2hlIGlmIGRlc2lyZWQsIHZpYQorICAgICAgICBfV0tJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
LnByb3RvdHlwZS5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5yZWxvYWRGb3JFeHRlbnNpb24p
OgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAg
ICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKToKKyAg
ICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnJlbG9hZEZvckV4dGVuc2lvbik6CisKIDIwMjEt
MDItMTkgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogQ1NTIEdyaWQgSW5zcGVjdG9yOiB1c2UgYSBjb2xvciBwYWxldHRlIGZv
ciBkZWZhdWx0IGdyaWQgb3ZlcmxheSBjb2xvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDRiODc4NTdmNDkxZjEy
MDUwNTJiZDQyYTU5NTllODE3NWY5N2ZhZS4uOGIzOWEwY2M5OWZkZDhmODIxZmRmYTZlNjdlZmU5
MzQ2YWIyNTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMi0yMiAgUGF0cmlj
ayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVj
dG9yOiBBZGQgc3VwcG9ydCBmb3IgcmVsb2FkaW5nIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjIyOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBhIG5ldyBtZXRob2QgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIHdo
aWNoIGlzIHVzZWQgdG8gaW1wbGVtZW50IGBicm93c2VyLmRldnRvb2xzLmluc3BlY3RlZFdpbmRv
dy5yZWxvYWRgCisgICAgICAgIGluIHRoZSBXZWIgRXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHA6CisgICAgICAgIChBUEk6
Okluc3BlY3RvckV4dGVuc2lvbjo6cmVsb2FkSWdub3JpbmdDYWNoZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3JFeHRlbnNpb24gcmVsb2FkSWdub3JpbmdDYWNoZTp1c2VyQWdlbnQ6aW5qZWN0ZWRTY3JpcHQ6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWxvYWRGb3JFeHRlbnNp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlbG9hZEZvckV4dGVuc2lvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorCiAyMDIxLTAyLTIyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gQWRkIHN1cHBv
cnQgZm9yIGxpYnNvdXAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwppbmRleCBlMGE0NDI2Yzg2OGJkOWE0MWRlNDgxZDU5
NDkwYjA2ZTU5MGE3Y2QwLi40NWE4ZjBmNzk1ZGJlNDIyODliYTIxZjg4OTdlYTQxMTI0NzJkNmIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIuanMKQEAgLTEyNSw3ICsxMjUsMzEgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0
ZW4KICAgICAgICAgICAgIGxldCB7dHlwZSwgdmFsdWV9ID0gcmVzdWx0T3JFcnJvcjsKICAgICAg
ICAgICAgIHJldHVybiB3YXNUaHJvd24gPyB7ImVycm9yIjogcmVzdWx0T3JFcnJvci5kZXNjcmlw
dGlvbn0gOiB7InJlc3VsdCI6IHZhbHVlfTsKICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiBl
cnJvci5kZXNjcmlwdGlvbik7Ci0gICAgIH0KKyAgICB9CisgICAgCisgICAgcmVsb2FkRm9yRXh0
ZW5zaW9uKGV4dGVuc2lvbklELCB7aWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3Jp
cHR9ID0ge30pCisgICAgeworICAgICAgICBsZXQgZXh0ZW5zaW9uID0gdGhpcy5fZXh0ZW5zaW9u
Rm9yRXh0ZW5zaW9uSURNYXAuZ2V0KGV4dGVuc2lvbklEKTsKKyAgICAgICAgaWYgKCFleHRlbnNp
b24pIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJsZSB0byBldmFs
dWF0ZSBzY3JpcHQgZm9yIGV4dGVuc2lvbiB3aXRoIHVua25vd24gSUQ6ICIgKyBleHRlbnNpb25J
RCk7CisgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29k
ZS5JbnZhbGlkUmVxdWVzdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiA8cmRhcjov
L3Byb2JsZW0vNzQxODAzNTU+IGltcGxlbWVudCBleGVjdXRpb24gY29udGV4dCBzZWxlY3Rpb24g
b3B0aW9ucworICAgICAgICBpZiAodXNlckFnZW50KSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJ
bnRlcm5hbEVycm9yKCJyZWxvYWRGb3JFeHRlbnNpb246IHRoZSAndXNlckFnZW50JyBvcHRpb24g
aXMgbm90IHlldCBpbXBsZW1lbnRlZC4iKTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNw
ZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGluamVjdGVkU2NyaXB0KSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5h
bEVycm9yKCJyZWxvYWRGb3JFeHRlbnNpb246IHRoZSAnaW5qZWN0ZWRTY3JpcHQnIG9wdGlvbiBp
cyBub3QgeWV0IGltcGxlbWVudGVkLiIpOworICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbi5FcnJvckNvZGUuTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIH0KKworICAg
ICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAgICAgICAgdGFyZ2V0
LlBhZ2VBZ2VudC5yZWxvYWQuaW52b2tlKHtpZ25vcmVDYWNoZX0pOworICAgICAgICB9CisgICAg
fQogfTsKIAogV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudCA9IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0lu
c3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggNGViNGUxMmM0Y2E0OTlj
MzJiZWJiMmRlM2NmZmMyMzU0YTRmYTNhYi4uYWYyYzE4OWI5OThmM2RlNjVlZGNjYjE2MWQ4MWY2
M2I2N2NiNGI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAg
LTIyMyw1ICsyMjMsMTEgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgZXZhbHVhdGVT
Y3JpcHRGb3JFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJjZSwge2ZyYW1lVVJMLCBj
b250ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0fSA9IHt9KQogICAg
IHsKICAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVyLmV2YWx1
YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBzY3JpcHRTb3VyY2UsIHtmcmFtZVVS
TCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dH0pOwotICAg
IH0KKyAgICB9LAorICAgIAorICAgIC8vIFJldHVybnMgYSBzdHJpbmcgKFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvbi5FcnJvckNvZGUpIGlmIGFuIGVycm9yIG9jY3VycmVkIHRoYXQgcHJldmVudGVk
IHJlbG9hZGluZy4KKyAgICByZWxvYWRGb3JFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIHtpZ25vcmVD
YWNoZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdH0gPSB7fSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci5yZWxvYWRGb3JFeHRlbnNpb24o
ZXh0ZW5zaW9uSUQsIHtpZ25vcmVDYWNoZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdH0pOwor
ICAgIH0sCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5z
cGVjdG9yRXh0ZW5zaW9uLmNwcAppbmRleCAwN2JlODk0OGRjMmZkZGI2NWVlYjQxOGYxZjFlZWZl
OWVkNGM1MTlkLi44MzdmZDg1MGY4MGY1NTI4OGZhYjRkY2FmNDRkZjM4YjM5NTcyZDI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmNwcApAQCAtNjUsNiArNjUsMTYgQEAgdm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1
YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE8KICAgICBt
X2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS0+ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24obV9p
ZGVudGlmaWVyLCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBjb250ZXh0U2VjdXJpdHlPcmlnaW4s
IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpyZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpTdHJpbmc+JiB1
c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FdmFs
dWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LT5yZWxvYWRGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCBpZ25vcmVDYWNoZSwgdXNlckFn
ZW50LCBpbmplY3RlZFNjcmlwdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRl
bnNpb24uaAppbmRleCA5ZTg0NTY3N2QyZTc4ZTVkNjEzOTEwNWFlOGVhN2ZhZjllMGQ2Y2ZjLi5k
NTVmYTFhMDg3ZDg1N2E1NDU5MWMxZWJhODE1YzM4ZWEwY2RlYzAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBAIC00OCw2
ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdURjo6U3RyaW5n
JiB0YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3QgV1RGOjpVUkwmIHNv
dXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uVGFiSUQsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4m
Jik7CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291
cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxX
VEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVz
ZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWxv
YWRJZ25vcmluZ0NhY2hlKGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qg
T3B0aW9uYWw8V1RGOjpTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3Ry
aW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CiAKIHByaXZhdGU6CiAg
ICAgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLmgKaW5kZXggZDExMmEwYzRjMzNiYjYyYmY1YjM2ODMyZjgzMjBiMGYyZTYxZmZhOC4uZDFm
YzZlMDkzNTM0N2Y0OGFjZTliYzY3Mzc3N2U1YTQ1Yjg5MWUxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24u
aApAQCAtNjEsNiArNjEsMTYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
KQogICovCiAtICh2b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBm
cmFtZVVSTDooTlNVUkwgKilmcmFtZVVSTCBjb250ZXh0U2VjdXJpdHlPcmlnaW46KE5TVVJMICop
Y29udGV4dFNlY3VyaXR5T3JpZ2luIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OihCT09MKXVzZUNv
bnRlbnRTY3JpcHRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBf
TnVsbGFibGUsIE5TRGljdGlvbmFyeSAqIF9OdWxsYWJsZSByZXN1bHQpKWNvbXBsZXRpb25IYW5k
bGVyOwogCisvKioKKyAqIEBhYnN0cmFjdCBSZWxvYWRzIHRoZSBpbnNwZWN0ZWQgcGFnZSBvbiBi
ZWhhbGYgb2YgdGhlIF9XS0luc3BlY3RvckV4dGVuc2lvbi4KKyAqIEBwYXJhbSBpZ25vcmVDYWNo
ZSBJZiBZRVMsIHJlbG9hZHMgdGhlIHBhZ2Ugd2hpbGUgaWdub3JpbmcgdGhlIGNhY2hlLgorICog
QHBhcmFtIHVzZXJBZ2VudCBJZiBzcGVjaWZpZWQsIHNldHMgYSBjdXN0b20gdXNlciBhZ2VudCBm
b3IgdGhlIHBhZ2UgdG8gYmUgc2VudCBpbiB0aGUgYFVzZXItQWdlbnRgIGhlYWRlciBhbmQgcmV0
dXJuZWQgYnkgY2FsbHMgdG8gYG5hdmlnYXRvci51c2VyQWdlbnRgIG1hZGUgYnkgc2NyaXB0cyBy
dW5uaW5nIGluIHRoZSBwYWdlLgorICogQHBhcmFtIGluamVjdGVkU2NyaXB0IElmIHNwZWNpZmll
ZCwgaW5qZWN0cyB0aGUgZ2l2ZW4gSmF2YVNjcmlwdCBleHBlcnNzaW9uIGludG8gYWxsIGZyYW1l
cyBvbiB0aGUgcGFnZSBiZWZvcmUgYW55IG90aGVyIHNjcmlwdHMuCisgKiBAcGFyYW0gY29tcGxl
dGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiB0aGUgb3BlcmF0aW9uIGNvbXBsZXRl
cyBvciBmYWlscy4KKyAqIEBkaXNjdXNzaW9uIFRoZSBjb21wbGV0aW9uSGFuZGxlciBpcyBwYXNz
ZWQgYW4gTlNKU09OU2VyaWFsaXphdGlvbi1jb21wYXRpYmxlIE5TT2JqZWN0IHJlcHJlc2VudGlu
ZyBhbiBlcnJvciBvciBudWxsLgorICovCistICh2b2lkKXJlbG9hZElnbm9yaW5nQ2FjaGU6KEJP
T0wpaWdub3JlQ2FjaGUgdXNlckFnZW50OihOU1N0cmluZyAqKXVzZXJBZ2VudCBpbmplY3RlZFNj
cmlwdDooTlNTdHJpbmcgKilpbmplY3RlZFNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0Vycm9yICogX051bGxhYmxlLCBOU0RpY3Rpb25hcnkgKiBfTnVsbGFibGUgcmVzdWx0KSlj
b21wbGV0aW9uSGFuZGxlcjsKKwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU1N0
cmluZyAqZXh0ZW5zaW9uSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDI2N2Yw
ZWY5MzM4Mzk1ODQzNzg0MGYwMGMyYmFhNzZiZmQ3OWNmNWUuLmRkNmFiNTc4NTQ4YWVjODc5MDE2
ZDZkZjhlMDk2NzVjYWNkMGU0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtODQsNiArODQs
MjcgQEAgLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJh
bWVVUkw6KE5TVVJMICopZnJhbWVVUkwgY29udGUKICAgICB9KTsKIH0KIAorLSAodm9pZClyZWxv
YWRJZ25vcmluZ0NhY2hlOihCT09MKWlnbm9yZUNhY2hlIHVzZXJBZ2VudDooTlNTdHJpbmcgKil1
c2VyQWdlbnQgaW5qZWN0ZWRTY3JpcHQ6KE5TU3RyaW5nICopaW5qZWN0ZWRTY3JpcHQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBOU0RpY3Rpb25hcnkgKiByZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRpb25hbFVzZXJBZ2Vu
dCA9IHVzZXJBZ2VudCA/IG1ha2VPcHRpb25hbChTdHJpbmcodXNlckFnZW50KSkgOiBXVEY6Om51
bGxvcHQ7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRpb25hbEluamVjdGVkU2NyaXB0ID0gaW5q
ZWN0ZWRTY3JpcHQgPyBtYWtlT3B0aW9uYWwoU3RyaW5nKGluamVjdGVkU2NyaXB0KSkgOiBXVEY6
Om51bGxvcHQ7CisgICAgX2V4dGVuc2lvbi0+cmVsb2FkSWdub3JpbmdDYWNoZShpZ25vcmVDYWNo
ZSwgb3B0aW9uYWxVc2VyQWdlbnQsIG9wdGlvbmFsSW5qZWN0ZWRTY3JpcHQsIFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0KSB7Cisg
ICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJl
UmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhy
ZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9uID0gcmVzdWx0LnZhbHVlKCk7
CisgICAgICAgIGlmICghdmFsdWVPckV4Y2VwdGlvbikgeworICAgICAgICAgICAgY2FwdHVyZWRC
bG9jayhuc0Vycm9yRnJvbUV4Y2VwdGlvbkRldGFpbHModmFsdWVPckV4Y2VwdGlvbi5lcnJvcigp
KS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUodmFsdWVP
ckV4Y2VwdGlvbi52YWx1ZSgpLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCksIDApOworICAgICAg
ICBjYXB0dXJlZEJsb2NrKG5pbCwgYm9keSk7CisgICAgfSk7Cit9CisKIC8vIE1BUks6IFByb3Bl
cnRpZXMuCiAKIC0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGExZWFkMWQyMTM3NDI3MTIx
NjY5YzA0MTUyMjNiYjkxZjc4N2RhZWEuLmE5ZDE3M2IzODk3NGE1NzdiYzAxMGI1YmU1M2RhZTJk
MWQ2OWE4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LmNwcApAQCAtMTM3LDYgKzEzNywzMyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbgog
ICAgIH0pOwogfQogCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
OjpyZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lv
bklELCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0
cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9u
UmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3aGVuRnJvbnRlbmRIYXNMb2Fk
ZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBpZ25vcmVDYWNo
ZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMg
fHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFr
VGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVsb2FkRm9yRXh0ZW5zaW9uIHtleHRlbnNp
b25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9LCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiYgZGV0YWlscywgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+
IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChk
ZXRhaWxzKSB7CisgICAgICAgICAgICAgICAgRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gcmV0dXJuZWRWYWx1ZSA9
IG1ha2VVbmV4cGVjdGVkKGRldGFpbHMudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHsgcmV0dXJuZWRWYWx1ZSB9KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgICAgICAgICBkYXRhLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgICAgICAgICAgZGF0
YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCkgfSB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHkuaAppbmRleCA0ZDViMzVmZTQxMTZkZDU4ZmM2NjNlZDQxZjViOTI1NGMxNjIwOTFkLi45
ZTMwMjlhZDU0NDk4OTgzZGJmZjliMjllNzRmOWEyOGNmMWE2ZmNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaApAQCAtNTIsNiArNTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVu
c2lvbklEJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwogICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25z
dCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYpOwogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwg
Y29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRl
eHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRD
b250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXZh
bHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQgcmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IElu
c3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4m
IGluamVjdGVkU2NyaXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yRXh0
ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOwogCiAgICAgLy8gTm90aWZpY2F0aW9ucy4KICAg
ICB2b2lkIGluc3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKaW5kZXggM2I5YmQwMDBmMjlhMTk2ZjE4NjNiY2YyOTlm
MzE4OTdkZjcwN2NkMS4uOGVjNDdjMGY5MGFiOGUzMDJiYThjOGQzM2FiMzU1MTg3ZjJjNDA1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApAQCAtMjgx
LDYgKzI4MSw0OCBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZh
bHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdAogICAgIH0pOwogfQogCit2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNv
bnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgT3B0aW9uYWw8Ym9v
bD4mIGlnbm9yZUNhY2hlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIGluamVjdGVkU2NyaXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgUmVmPEpTT046Ok9iamVjdD4gb3B0aW9uYWxBcmd1bWVudHMgPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOworICAgIGlmIChpZ25vcmVDYWNoZSkKKyAgICAgICAgb3B0aW9uYWxBcmd1bWVudHMt
PnNldEJvb2xlYW4oImlnbm9yZUNhY2hlIl9zLCAqaWdub3JlQ2FjaGUpOworICAgIGlmICh1c2Vy
QWdlbnQpCisgICAgICAgIG9wdGlvbmFsQXJndW1lbnRzLT5zZXRTdHJpbmcoInVzZXJBZ2VudCJf
cywgKnVzZXJBZ2VudCk7CisgICAgaWYgKGluamVjdGVkU2NyaXB0KQorICAgICAgICBvcHRpb25h
bEFyZ3VtZW50cy0+c2V0U3RyaW5nKCJpbmplY3RlZFNjcmlwdCJfcywgKmluamVjdGVkU2NyaXB0
KTsKKworICAgIFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeworICAgICAgICBK
U09OOjpWYWx1ZTo6Y3JlYXRlKGV4dGVuc2lvbklEKSwKKyAgICAgICAgV1RGTW92ZShvcHRpb25h
bEFyZ3VtZW50cykKKyAgICB9OworCisgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElE
aXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJyZWxvYWRGb3JFeHRl
bnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBh
dXRvKiBmcm9udGVuZEdsb2JhbE9iamVjdCA9IHdlYWtUaGlzLT5tX2Zyb250ZW5kQ2xpZW50LT5m
cm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9iamVjdCgpOworICAgICAgICBp
ZiAoIWZyb250ZW5kR2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0
cm95ZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1
dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZy
b21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIExPRyhJbnNwZWN0b3Is
ICJJbnRlcm5hbCBlcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBldmFsdWF0aW5nIHVwb24gdGhlIGZy
b250ZW5kOiAlcyIsIGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoKnBhcnNlZEVycm9y
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RG
OjpudWxsb3B0LCBwYXJzZWRFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaAppbmRleCBmMTM0MWRjZDI3NmQwYzEwMWU0NGJkZGExN2NlNDBiOGEzY2Iz
NjE3Li5lODI3ZGFjM2UxNzU2OWRhZDM5N2VlY2E1MWU5ODdkY2YzZjQ0MmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNp
b25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYg
dGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
Pik+JiYpOwogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9u
YWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9y
aWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgcmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0
IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hl
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIGluamVjdGVkU2NyaXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jiwg
Y29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYpOwogCiBwcml2YXRl
OgogICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdl
cy5pbgppbmRleCBkMTc0MDYwMjhmYWYzN2I1MDY0MTQyNWZiNjBkOGZmMGUyM2M0NDU0Li5jYzQw
Mjk5MWRkZTZlNzZjZGNiZTliOTc3YTA3NWMxNzhjZmM2OGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjgsNiAr
MjgsNyBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90
UmVmQ291bnRlZCB7CiAKICAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lv
bklELCBTdHJpbmcgdGFiTmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChF
eHBlY3RlZDxTdHJpbmcsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkg
QXN5bmMKICAgICBFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQs
IFN0cmluZyBzY3JpcHRTb3VyY2UsIE9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVS
TD4gY29udGV4dFNlY3VyaXR5T3JpZ2luLCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0
Q29udGV4dCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBPcHRpb25hbDxXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPiBlcnJvcikgQXN5bmMKKyAgICBSZWxvYWRGb3JFeHRlbnNpb24oU3Ry
aW5nIGV4dGVuc2lvbklELCBPcHRpb25hbDxib29sPiBpZ25vcmVDYWNoZSwgT3B0aW9uYWw8U3Ry
aW5nPiB1c2VyQWdlbnQsIE9wdGlvbmFsPFN0cmluZz4gaW5qZWN0ZWRTY3JpcHQpIC0+IChJUEM6
OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlscywgT3B0aW9uYWw8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4g
ZXJyb3IpIEFzeW5jCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421340</attachid>
            <date>2021-02-23 12:19:14 -0800</date>
            <delta_ts>2021-02-23 15:44:43 -0800</delta_ts>
            <desc>Patch v1.1 - Review notes</desc>
            <filename>bug-222296-20210223121913.patch</filename>
            <type>text/plain</type>
            <size>20788</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
ODUzNjVjMmYxMWJkZjY3ZThiZTVhNmQ4MDEyMGNkMDMwN2UzY2VjLi42MjBkZDc3YTRhOTliOGM5
ODJkZGY4Y2Q2YWQxNzkxOTE5OGI1YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMS0wMi0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgcmVsb2Fk
aW5nIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyOTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZv
ciByZWxvYWRpbmcgdGhlIGluc3BlY3RlZCBwYWdlLCBpbmNsdWRpbmcgaWdub3JpbmcgdGhlIGNh
Y2hlIGlmIGRlc2lyZWQsIHZpYQorICAgICAgICBfV0tJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
LnByb3RvdHlwZS5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5yZWxvYWRGb3JFeHRlbnNpb24p
OgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAg
ICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKToKKyAg
ICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnJlbG9hZEZvckV4dGVuc2lvbik6CisKIDIwMjEt
MDItMTkgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogQ1NTIEdyaWQgSW5zcGVjdG9yOiB1c2UgYSBjb2xvciBwYWxldHRlIGZv
ciBkZWZhdWx0IGdyaWQgb3ZlcmxheSBjb2xvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDRiODc4NTdmNDkxZjEy
MDUwNTJiZDQyYTU5NTllODE3NWY5N2ZhZS4uMzMwMGUwMTI2ZmJmNjUwM2RkNTA5ZDg0MGRiOTk5
ZjYzMzI1ZmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMi0yMyAgUGF0cmlj
ayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVj
dG9yOiBBZGQgc3VwcG9ydCBmb3IgcmVsb2FkaW5nIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjIyOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBhIG5ldyBtZXRob2QgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIHdo
aWNoIGlzIHVzZWQgdG8gaW1wbGVtZW50IGBicm93c2VyLmRldnRvb2xzLmluc3BlY3RlZFdpbmRv
dy5yZWxvYWRgCisgICAgICAgIGluIHRoZSBXZWIgRXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHA6CisgICAgICAgIChBUEk6
Okluc3BlY3RvckV4dGVuc2lvbjo6cmVsb2FkSWdub3JpbmdDYWNoZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3JFeHRlbnNpb24gcmVsb2FkSWdub3JpbmdDYWNoZTp1c2VyQWdlbnQ6aW5qZWN0ZWRTY3JpcHQ6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWxvYWRGb3JFeHRlbnNp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlbG9hZEZvckV4dGVuc2lvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorCiAyMDIxLTAyLTIyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gQWRkIHN1cHBv
cnQgZm9yIGxpYnNvdXAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwppbmRleCBlMGE0NDI2Yzg2OGJkOWE0MWRlNDgxZDU5
NDkwYjA2ZTU5MGE3Y2QwLi42MGIyNWUxNTlmYjQ0Mzc2NGUwNDI1NjU0Zjg4NWU4YzM1NGY5Mjdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIuanMKQEAgLTEyNSw3ICsxMjUsMzMgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0
ZW4KICAgICAgICAgICAgIGxldCB7dHlwZSwgdmFsdWV9ID0gcmVzdWx0T3JFcnJvcjsKICAgICAg
ICAgICAgIHJldHVybiB3YXNUaHJvd24gPyB7ImVycm9yIjogcmVzdWx0T3JFcnJvci5kZXNjcmlw
dGlvbn0gOiB7InJlc3VsdCI6IHZhbHVlfTsKICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiBl
cnJvci5kZXNjcmlwdGlvbik7Ci0gICAgIH0KKyAgICB9CisgICAgCisgICAgcmVsb2FkRm9yRXh0
ZW5zaW9uKGV4dGVuc2lvbklELCB7aWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3Jp
cHR9ID0ge30pCisgICAgeworICAgICAgICBsZXQgZXh0ZW5zaW9uID0gdGhpcy5fZXh0ZW5zaW9u
Rm9yRXh0ZW5zaW9uSURNYXAuZ2V0KGV4dGVuc2lvbklEKTsKKyAgICAgICAgaWYgKCFleHRlbnNp
b24pIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJsZSB0byBldmFs
dWF0ZSBzY3JpcHQgZm9yIGV4dGVuc2lvbiB3aXRoIHVua25vd24gSUQ6ICIgKyBleHRlbnNpb25J
RCk7CisgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29k
ZS5JbnZhbGlkUmVxdWVzdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiA8d2Via2l0
Lm9yZy9iLzIyMjMyOD4gSW1wbGVtZW50IGB1c2VyQWdlbnRgIGFuZCBgaW5qZWN0ZWRTY3JpcHRg
IG9wdGlvbnMgZm9yIGBkZXZ0b29scy5pbnNwZWN0ZWRXaW5kb3cucmVsb2FkYCBjb21tYW5kCisg
ICAgICAgIGlmICh1c2VyQWdlbnQpIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJy
b3IoInJlbG9hZEZvckV4dGVuc2lvbjogdGhlICd1c2VyQWdlbnQnIG9wdGlvbiBpcyBub3QgeWV0
IGltcGxlbWVudGVkLiIpOworICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbi5FcnJvckNvZGUuTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
aW5qZWN0ZWRTY3JpcHQpIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoInJl
bG9hZEZvckV4dGVuc2lvbjogdGhlICdpbmplY3RlZFNjcmlwdCcgb3B0aW9uIGlzIG5vdCB5ZXQg
aW1wbGVtZW50ZWQuIik7CisgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uLkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICBpZiAodGFy
Z2V0Lmhhc0NvbW1hbmQoIlBhZ2UucmVsb2FkIikpCisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0
LlBhZ2VBZ2VudC5yZWxvYWQuaW52b2tlKHtpZ25vcmVDYWNoZX0pOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVl
c3Q7CisgICAgfQogfTsKIAogV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVu
dCA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggNGViNGUx
MmM0Y2E0OTljMzJiZWJiMmRlM2NmZmMyMzU0YTRmYTNhYi4uYWYyYzE4OWI5OThmM2RlNjVlZGNj
YjE2MWQ4MWY2M2I2N2NiNGI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanMKQEAgLTIyMyw1ICsyMjMsMTEgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAg
ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJjZSwge2Zy
YW1lVVJMLCBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0fSA9
IHt9KQogICAgIHsKICAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9s
bGVyLmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBzY3JpcHRTb3VyY2Us
IHtmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4
dH0pOwotICAgIH0KKyAgICB9LAorICAgIAorICAgIC8vIFJldHVybnMgYSBzdHJpbmcgKFdJLldl
Ykluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUpIGlmIGFuIGVycm9yIG9jY3VycmVkIHRoYXQg
cHJldmVudGVkIHJlbG9hZGluZy4KKyAgICByZWxvYWRGb3JFeHRlbnNpb24oZXh0ZW5zaW9uSUQs
IHtpZ25vcmVDYWNoZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdH0gPSB7fSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci5yZWxvYWRGb3JF
eHRlbnNpb24oZXh0ZW5zaW9uSUQsIHtpZ25vcmVDYWNoZSwgdXNlckFnZW50LCBpbmplY3RlZFNj
cmlwdH0pOworICAgIH0sCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcAppbmRleCAwN2JlODk0OGRjMmZkZGI2NWVlYjQx
OGYxZjFlZWZlOWVkNGM1MTlkLi44MzdmZDg1MGY4MGY1NTI4OGZhYjRkY2FmNDRkZjM4YjM5NTcy
ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmNwcApAQCAtNjUsNiArNjUsMTYgQEAgdm9pZCBJbnNwZWN0b3JFeHRlbnNp
b246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0
IE8KICAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS0+ZXZhbHVhdGVTY3JpcHRGb3JFeHRl
bnNpb24obV9pZGVudGlmaWVyLCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBjb250ZXh0U2VjdXJp
dHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpyZWxvYWRJZ25vcmluZ0NhY2hl
KGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpT
dHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRT
Y3JpcHQsICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRl
bnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
IW1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmV4cGVjdGVkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHRE
ZXN0cm95ZWQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LT5yZWxvYWRGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCBpZ25vcmVDYWNo
ZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb24uaAppbmRleCA5ZTg0NTY3N2QyZTc4ZTVkNjEzOTEwNWFlOGVhN2ZhZjll
MGQ2Y2ZjLi5kNTVmYTFhMDg3ZDg1N2E1NDU5MWMxZWJhODE1YzM4ZWEwY2RlYzAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5o
CkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdU
Rjo6U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3QgV1RG
OjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+KT4mJik7CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYg
c2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBP
cHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8
Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAg
dm9pZCByZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNo
ZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFs
PFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CiAKIHBy
aXZhdGU6CiAgICAgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLmgKaW5kZXggZDExMmEwYzRjMzNiYjYyYmY1YjM2ODMyZjgzMjBiMGYyZTYx
ZmZhOC4uZGUwNTdmZDJmNjhjNzYwMzAzMGIyMjk0Mjc3N2VkMTY1OWI3ODkyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb24uaApAQCAtNjEsNiArNjEsMTYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpKQogICovCiAtICh2b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlw
dFNvdXJjZSBmcmFtZVVSTDooTlNVUkwgKilmcmFtZVVSTCBjb250ZXh0U2VjdXJpdHlPcmlnaW46
KE5TVVJMICopY29udGV4dFNlY3VyaXR5T3JpZ2luIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OihC
T09MKXVzZUNvbnRlbnRTY3JpcHRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKiBfTnVsbGFibGUsIE5TRGljdGlvbmFyeSAqIF9OdWxsYWJsZSByZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyOwogCisvKioKKyAqIEBhYnN0cmFjdCBSZWxvYWRzIHRoZSBpbnNwZWN0ZWQg
cGFnZSBvbiBiZWhhbGYgb2YgdGhlIF9XS0luc3BlY3RvckV4dGVuc2lvbi4KKyAqIEBwYXJhbSBp
Z25vcmVDYWNoZSBJZiBZRVMsIHJlbG9hZHMgdGhlIHBhZ2Ugd2hpbGUgaWdub3JpbmcgdGhlIGNh
Y2hlLgorICogQHBhcmFtIHVzZXJBZ2VudCBJZiBzcGVjaWZpZWQsIG92ZXJyaWRlcyB0aGUgdXNl
ciBhZ2VudCB0byBiZSBzZW50IGluIHRoZSBgVXNlci1BZ2VudGAgaGVhZGVyIGFuZCByZXR1cm5l
ZCBieSBjYWxscyB0byBgbmF2aWdhdG9yLnVzZXJBZ2VudGAgbWFkZSBieSBzY3JpcHRzIHJ1bm5p
bmcgaW4gdGhlIHBhZ2UuIFRoaXMgb25seSBhZmZlY3RzIHRoZSBuZXh0IG5hdmlnYXRpb24uCisg
KiBAcGFyYW0gaW5qZWN0ZWRTY3JpcHQgSWYgc3BlY2lmaWVkLCBpbmplY3RzIHRoZSBnaXZlbiBK
YXZhU2NyaXB0IGV4cGVyc3Npb24gaW50byBhbGwgZnJhbWVzIG9uIHRoZSBwYWdlIGJlZm9yZSBh
bnkgb3RoZXIgc2NyaXB0cy4KKyAqIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRv
IGludm9rZSB3aGVuIHRoZSBvcGVyYXRpb24gY29tcGxldGVzIG9yIGZhaWxzLgorICogQGRpc2N1
c3Npb24gVGhlIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBhc3NlZCBhbiBOU0pTT05TZXJpYWxpemF0
aW9uLWNvbXBhdGlibGUgTlNPYmplY3QgcmVwcmVzZW50aW5nIGFuIGVycm9yIG9yIG51bGwuCisg
Ki8KKy0gKHZvaWQpcmVsb2FkSWdub3JpbmdDYWNoZTooQk9PTClpZ25vcmVDYWNoZSB1c2VyQWdl
bnQ6KE5TU3RyaW5nICopdXNlckFnZW50IGluamVjdGVkU2NyaXB0OihOU1N0cmluZyAqKWluamVj
dGVkU2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUp
KWNvbXBsZXRpb25IYW5kbGVyOworCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5T
U3RyaW5nICpleHRlbnNpb25JRDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KaW5kZXggMjY3
ZjBlZjkzMzgzOTU4NDM3ODQwZjAwYzJiYWE3NmJmZDc5Y2Y1ZS4uYjc3MzZmYzUyN2U4MDQ1ZjIz
NzljOTA5Y2RhNTk0NWU3YTExYTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC04NCw2ICs4
NCwyNiBAQCAtICh2b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBm
cmFtZVVSTDooTlNVUkwgKilmcmFtZVVSTCBjb250ZQogICAgIH0pOwogfQogCistICh2b2lkKXJl
bG9hZElnbm9yaW5nQ2FjaGU6KEJPT0wpaWdub3JlQ2FjaGUgdXNlckFnZW50OihOU1N0cmluZyAq
KXVzZXJBZ2VudCBpbmplY3RlZFNjcmlwdDooTlNTdHJpbmcgKilpbmplY3RlZFNjcmlwdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRpb25hbFVzZXJBZ2VudCA9IHVzZXJBZ2VudCA/IG1ha2VP
cHRpb25hbChTdHJpbmcodXNlckFnZW50KSkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8
U3RyaW5nPiBvcHRpb25hbEluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHQgPyBtYWtlT3B0
aW9uYWwoU3RyaW5nKGluamVjdGVkU2NyaXB0KSkgOiBXVEY6Om51bGxvcHQ7CisgICAgX2V4dGVu
c2lvbi0+cmVsb2FkSWdub3JpbmdDYWNoZShpZ25vcmVDYWNoZSwgb3B0aW9uYWxVc2VyQWdlbnQs
IG9wdGlvbmFsSW5qZWN0ZWRTY3JpcHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KV0gKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBjYXB0dXJlZEJs
b2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktp
dDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGF1dG8gdmFs
dWVPckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1ZSgpOworICAgICAgICBpZiAoIXZhbHVlT3JFeGNl
cHRpb24pIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2sobnNFcnJvckZyb21FeGNlcHRpb25E
ZXRhaWxzKHZhbHVlT3JFeGNlcHRpb24uZXJyb3IoKSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgIH0pOwor
fQorCiAvLyBNQVJLOiBQcm9wZXJ0aWVzLgogCiAtIChOU1N0cmluZyAqKWV4dGVuc2lvbklECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRl
eCBhMWVhZDFkMjEzNzQyNzEyMTY2OWMwNDE1MjIzYmI5MWY3ODdkYWVhLi4wOTA5ZWExNTgzZjUz
NGVhZjRiYzQyMzU5M2UyZDU3YmYzYjQ1NTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTEzNyw2ICsxMzcsMzAgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JF
eHRlbnNpb24oY29uc3QgSW4KICAgICB9KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4
dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hl
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIGluamVjdGVkU2NyaXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9y
RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
d2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRl
bnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHQsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlbG9hZEZv
ckV4dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIGlnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVk
U2NyaXB0fSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBkZXRhaWxzLCBjb25z
dCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAg
ICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRldGFpbHMpIHsKKyAgICAgICAgICAg
ICAgICBFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiByZXR1cm5lZFZhbHVlID0gbWFrZVVuZXhwZWN0ZWQoZGV0YWls
cy52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyBy
ZXR1cm5lZFZhbHVlIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDRkNWIzNWZl
NDExNmRkNThmYzY2M2VkNDFmNWI5MjU0YzE2MjA5MWQuLjllMzAyOWFkNTQ0OTg5ODNkYmZmOWIy
OWU3NGY5YTI4Y2YxYTZmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4m
Jik7CiAgICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5z
aW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJ
bnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAg
ICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNp
b25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBm
cmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25z
dCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Cisg
ICAgdm9pZCByZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBj
b25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4m
IHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0
KT4mJik7CiAKICAgICAvLyBOb3RpZmljYXRpb25zLgogICAgIHZvaWQgaW5zcGVjdG9yRnJvbnRl
bmRMb2FkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNw
cAppbmRleCAzYjliZDAwMGYyOWExOTZmMTg2M2JjZjI5OWYzMTg5N2RmNzA3Y2QxLi4yYWNjNTEy
ZTE1ZjhkZTVhMGJiMjI3NjZkNWRiM2JkMTU5M2JmYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0yODEsNiArMjgxLDQ4IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpyZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9u
SUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5q
ZWN0ZWRTY3JpcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRDbGll
bnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUmVmPEpTT046Ok9iamVjdD4gb3B0aW9uYWxBcmd1bWVudHMgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOworICAgIGlmIChpZ25vcmVDYWNoZSkKKyAgICAgICAgb3B0aW9uYWxBcmd1bWVu
dHMtPnNldEJvb2xlYW4oImlnbm9yZUNhY2hlIl9zLCAqaWdub3JlQ2FjaGUpOworICAgIGlmICh1
c2VyQWdlbnQpCisgICAgICAgIG9wdGlvbmFsQXJndW1lbnRzLT5zZXRTdHJpbmcoInVzZXJBZ2Vu
dCJfcywgKnVzZXJBZ2VudCk7CisgICAgaWYgKGluamVjdGVkU2NyaXB0KQorICAgICAgICBvcHRp
b25hbEFyZ3VtZW50cy0+c2V0U3RyaW5nKCJpbmplY3RlZFNjcmlwdCJfcywgKmluamVjdGVkU2Ny
aXB0KTsKKworICAgIFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeworICAgICAg
ICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGV4dGVuc2lvbklEKSwKKyAgICAgICAgV1RGTW92ZShvcHRp
b25hbEFyZ3VtZW50cykKKyAgICB9OworCisgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRB
UElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJyZWxvYWRGb3JF
eHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKElu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHRE
ZXN0cm95ZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0
byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJv
bnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYg
KCFmcm9udGVuZEdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byBwYXJz
ZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1
YXRpb25SZXN1bHQocmVzdWx0KSkgeworICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIkludGVy
bmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6
ICVzIiwgaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZygqcGFyc2VkRXJyb3IpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBw
YXJzZWRFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgfSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5k
ZXggZjEzNDFkY2QyNzZkMGMxMDFlNDRiZGRhMTdjZTQwYjhhM2NiMzYxNy4uNDEwZDRkZTZlMDQ5
ZTcyNWI4NDE2ZWYyZGRkMjVhNmFhMjAzNTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVu
cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYp
OwogICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lv
bklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0
IFVSTCYgc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rv
ckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lk
IGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJM
LCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlv
bmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiYp
PiYmKTsKKyAgICB2b2lkIHJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNp
b25JRCYsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8
U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlw
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiYpPiYm
KTsKIAogcHJpdmF0ZToKICAgICBKU0M6OkpTT2JqZWN0KiB1bndyYXBFdmFsdWF0aW9uUmVzdWx0
QXNPYmplY3QoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0
aW9uUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KaW5kZXggZDE3NDA2MDI4ZmFmMzdiNTA2NDE0MjVmYjYwZDhmZjBl
MjNjNDQ1NC4uNjg4N2QyNzRiMmVjYmU2OGNjYjZiZTRmYjI5NjFmODM4ZGY2MDhkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMu
aW4KQEAgLTI4LDYgKzI4LDcgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyIE5vdFJlZkNvdW50ZWQgewogCiAgICAgQ3JlYXRlVGFiRm9yRXh0ZW5zaW9uKFN0
cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIHRhYk5hbWUsIFVSTCB0YWJJY29uVVJMLCBVUkwgc291
cmNlVVJMKSAtPiAoRXhwZWN0ZWQ8U3RyaW5nLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVy
cm9yPiByZXN1bHQpIEFzeW5jCiAgICAgRXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oU3RyaW5n
IGV4dGVuc2lvbklELCBTdHJpbmcgc2NyaXB0U291cmNlLCBPcHRpb25hbDxVUkw+IGZyYW1lVVJM
LCBPcHRpb25hbDxVUkw+IGNvbnRleHRTZWN1cml0eU9yaWdpbiwgT3B0aW9uYWw8Ym9vbD4gdXNl
Q29udGVudFNjcmlwdENvbnRleHQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgT3B0aW9uYWw8V2Vi
S2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gZXJyb3IpIEFzeW5jCisgICAgUmVsb2FkRm9y
RXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgT3B0aW9uYWw8Ym9vbD4gaWdub3JlQ2FjaGUs
IE9wdGlvbmFsPFN0cmluZz4gdXNlckFnZW50LCBPcHRpb25hbDxTdHJpbmc+IGluamVjdGVkU2Ny
aXB0KSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgT3B0
aW9uYWw8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gZXJyb3IpIEFzeW5jCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421359</attachid>
            <date>2021-02-23 15:44:45 -0800</date>
            <delta_ts>2021-02-23 16:14:08 -0800</delta_ts>
            <desc>Patch v1.2 - Review notes</desc>
            <filename>bug-222296-20210223154444.patch</filename>
            <type>text/plain</type>
            <size>20159</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
ODUzNjVjMmYxMWJkZjY3ZThiZTVhNmQ4MDEyMGNkMDMwN2UzY2VjLi42MjBkZDc3YTRhOTliOGM5
ODJkZGY4Y2Q2YWQxNzkxOTE5OGI1YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMS0wMi0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgcmVsb2Fk
aW5nIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyOTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZv
ciByZWxvYWRpbmcgdGhlIGluc3BlY3RlZCBwYWdlLCBpbmNsdWRpbmcgaWdub3JpbmcgdGhlIGNh
Y2hlIGlmIGRlc2lyZWQsIHZpYQorICAgICAgICBfV0tJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
LnByb3RvdHlwZS5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5yZWxvYWRGb3JFeHRlbnNpb24p
OgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAg
ICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKToKKyAg
ICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnJlbG9hZEZvckV4dGVuc2lvbik6CisKIDIwMjEt
MDItMTkgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogQ1NTIEdyaWQgSW5zcGVjdG9yOiB1c2UgYSBjb2xvciBwYWxldHRlIGZv
ciBkZWZhdWx0IGdyaWQgb3ZlcmxheSBjb2xvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDRiODc4NTdmNDkxZjEy
MDUwNTJiZDQyYTU5NTllODE3NWY5N2ZhZS4uOTg3NDMxODJmNzg3MDQ2ZTNhNmY3ZDExNTMyMWU4
MWY1NDE1OGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMi0yMyAgUGF0cmlj
ayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVj
dG9yOiBBZGQgc3VwcG9ydCBmb3IgcmVsb2FkaW5nIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjIyOTYKKworICAgICAgICBSZXZpZXdlZCBieSBCSiBCdXJnLgorCisgICAg
ICAgIEFkZGVkIGEgbmV3IG1ldGhvZCB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb24gd2hpY2ggaXMg
dXNlZCB0byBpbXBsZW1lbnQgYGJyb3dzZXIuZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LnJlbG9h
ZGAKKyAgICAgICAgaW4gdGhlIFdlYiBFeHRlbnNpb25zIEFQSS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEFQSTo6SW5zcGVj
dG9yRXh0ZW5zaW9uOjpyZWxvYWRJZ25vcmluZ0NhY2hlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVu
c2lvbiByZWxvYWRJZ25vcmluZ0NhY2hlOnVzZXJBZ2VudDppbmplY3RlZFNjcmlwdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlbG9hZEZvckV4dGVuc2lvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVsb2FkRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMDItMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBBZGQgc3VwcG9ydCBmb3Ig
bGlic291cDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRl
bnNpb25Db250cm9sbGVyLmpzCmluZGV4IGUwYTQ0MjZjODY4YmQ5YTQxZGU0ODFkNTk0OTBiMDZl
NTkwYTdjZDAuLjYwYjI1ZTE1OWZiNDQzNzY0ZTA0MjU2NTRmODg1ZThjMzU0ZjkyN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dl
Ykluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJv
bGxlci5qcwpAQCAtMTI1LDcgKzEyNSwzMyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAg
ICAgICAgICAgbGV0IHt0eXBlLCB2YWx1ZX0gPSByZXN1bHRPckVycm9yOwogICAgICAgICAgICAg
cmV0dXJuIHdhc1Rocm93biA/IHsiZXJyb3IiOiByZXN1bHRPckVycm9yLmRlc2NyaXB0aW9ufSA6
IHsicmVzdWx0IjogdmFsdWV9OwogICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IGVycm9yLmRl
c2NyaXB0aW9uKTsKLSAgICAgfQorICAgIH0KKyAgICAKKyAgICByZWxvYWRGb3JFeHRlbnNpb24o
ZXh0ZW5zaW9uSUQsIHtpZ25vcmVDYWNoZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdH0gPSB7
fSkKKyAgICB7CisgICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLl9leHRlbnNpb25Gb3JFeHRl
bnNpb25JRE1hcC5nZXQoZXh0ZW5zaW9uSUQpOworICAgICAgICBpZiAoIWV4dGVuc2lvbikgewor
ICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIGV2YWx1YXRlIHNj
cmlwdCBmb3IgZXh0ZW5zaW9uIHdpdGggdW5rbm93biBJRDogIiArIGV4dGVuc2lvbklEKTsKKyAg
ICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFs
aWRSZXF1ZXN0OworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2Iv
MjIyMzI4PiBJbXBsZW1lbnQgYHVzZXJBZ2VudGAgYW5kIGBpbmplY3RlZFNjcmlwdGAgb3B0aW9u
cyBmb3IgYGRldnRvb2xzLmluc3BlY3RlZFdpbmRvdy5yZWxvYWRgIGNvbW1hbmQKKyAgICAgICAg
aWYgKHVzZXJBZ2VudCkgeworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigicmVs
b2FkRm9yRXh0ZW5zaW9uOiB0aGUgJ3VzZXJBZ2VudCcgb3B0aW9uIGlzIG5vdCB5ZXQgaW1wbGVt
ZW50ZWQuIik7CisgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVy
cm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbmplY3Rl
ZFNjcmlwdCkgeworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigicmVsb2FkRm9y
RXh0ZW5zaW9uOiB0aGUgJ2luamVjdGVkU2NyaXB0JyBvcHRpb24gaXMgbm90IHlldCBpbXBsZW1l
bnRlZC4iKTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJy
b3JDb2RlLk5vdEltcGxlbWVudGVkOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsZXQg
dGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgIGlmICh0YXJnZXQuaGFz
Q29tbWFuZCgiUGFnZS5yZWxvYWQiKSkKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXQuUGFnZUFn
ZW50LnJlbG9hZC5pbnZva2Uoe2lnbm9yZUNhY2hlfSk7CisgICAgICAgIAorICAgICAgICByZXR1
cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVzdDsKKyAg
ICB9CiB9OwogCiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50ID0gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
SW5zcGVjdG9yRnJvbnRlbmRBUEkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRleCA0ZWI0ZTEyYzRjYTQ5
OWMzMmJlYmIyZGUzY2ZmYzIzNTRhNGZhM2FiLi5hZjJjMTg5Yjk5OGYzZGU2NWVkY2NiMTYxZDgx
ZjYzYjY3Y2I0YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpA
QCAtMjIzLDUgKzIyMywxMSBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBldmFsdWF0
ZVNjcmlwdEZvckV4dGVuc2lvbihleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCB7ZnJhbWVVUkws
IGNvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHR9ID0ge30pCiAg
ICAgewogICAgICAgICByZXR1cm4gV0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIuZXZh
bHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJjZSwge2ZyYW1l
VVJMLCBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0fSk7Ci0g
ICAgfQorICAgIH0sCisgICAgCisgICAgLy8gUmV0dXJucyBhIHN0cmluZyAoV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLkVycm9yQ29kZSkgaWYgYW4gZXJyb3Igb2NjdXJyZWQgdGhhdCBwcmV2ZW50
ZWQgcmVsb2FkaW5nLgorICAgIHJlbG9hZEZvckV4dGVuc2lvbihleHRlbnNpb25JRCwge2lnbm9y
ZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0fSA9IHt9KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVyLnJlbG9hZEZvckV4dGVuc2lv
bihleHRlbnNpb25JRCwge2lnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0fSk7
CisgICAgfSwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb24uY3BwCmluZGV4IDA3YmU4OTQ4ZGMyZmRkYjY1ZWViNDE4ZjFmMWVl
ZmU5ZWQ0YzUxOWQuLjgzN2ZkODUwZjgwZjU1Mjg4ZmFiNGRjYWY0NGRmMzhiMzk1NzJkMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRl
bnNpb24uY3BwCkBAIC02NSw2ICs2NSwxNiBAQCB2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6ZXZh
bHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgTwogICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbiht
X2lkZW50aWZpZXIsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9yaWdp
biwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OnJlbG9hZElnbm9yaW5nQ2FjaGUoY29uc3Qg
T3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4m
IHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8V1RGOjpTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwg
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2
YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9leHRl
bnNpb25Db250cm9sbGVyUHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9leHRlbnNpb25Db250cm9sbGVy
UHJveHktPnJlbG9hZEZvckV4dGVuc2lvbihtX2lkZW50aWZpZXIsIGlnbm9yZUNhY2hlLCB1c2Vy
QWdlbnQsIGluamVjdGVkU2NyaXB0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3Rv
ckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4
dGVuc2lvbi5oCmluZGV4IDllODQ1Njc3ZDJlNzhlNWQ2MTM5MTA1YWU4ZWE3ZmFmOWUwZDZjZmMu
LmQ1NWZhMWEwODdkODU3YTU0NTkxYzFlYmE4MTVjMzhlYTBjZGVjMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJp
bmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYg
c291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJ
bnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4p
PiYmKTsKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRT
b3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFs
PFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYg
dXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJL
aXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIHJl
bG9hZElnbm9yaW5nQ2FjaGUoY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25z
dCBPcHRpb25hbDxXVEY6OlN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8V1RGOjpT
dHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJL
aXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmKTsKIAogcHJpdmF0ZToK
ICAgICBJbnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb24uaAppbmRleCBkMTEyYTBjNGMzM2JiNjJiZjViMzY4MzJmODMyMGIwZjJlNjFmZmE4Li41
ZTg3YjI3MzU3ZWNiN2Y2MGIwZjE4MzEwNzhmYjZmZjFkYzg3NzU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
bi5oCkBAIC02MSw2ICs2MSwxNSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSkpCiAgKi8KIC0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNl
IGZyYW1lVVJMOihOU1VSTCAqKWZyYW1lVVJMIGNvbnRleHRTZWN1cml0eU9yaWdpbjooTlNVUkwg
Kiljb250ZXh0U2VjdXJpdHlPcmlnaW4gdXNlQ29udGVudFNjcmlwdENvbnRleHQ6KEJPT0wpdXNl
Q29udGVudFNjcmlwdENvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAq
IF9OdWxsYWJsZSwgTlNEaWN0aW9uYXJ5ICogX051bGxhYmxlIHJlc3VsdCkpY29tcGxldGlvbkhh
bmRsZXI7CiAKKy8qKgorICogQGFic3RyYWN0IFJlbG9hZHMgdGhlIGluc3BlY3RlZCBwYWdlIG9u
IGJlaGFsZiBvZiB0aGUgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLgorICogQHBhcmFtIGlnbm9yZUNh
Y2hlIElmIFlFUywgcmVsb2FkcyB0aGUgcGFnZSB3aGlsZSBpZ25vcmluZyB0aGUgY2FjaGUuCisg
KiBAcGFyYW0gdXNlckFnZW50IElmIHNwZWNpZmllZCwgb3ZlcnJpZGVzIHRoZSB1c2VyIGFnZW50
IHRvIGJlIHNlbnQgaW4gdGhlIGBVc2VyLUFnZW50YCBoZWFkZXIgYW5kIHJldHVybmVkIGJ5IGNh
bGxzIHRvIGBuYXZpZ2F0b3IudXNlckFnZW50YCBtYWRlIGJ5IHNjcmlwdHMgcnVubmluZyBpbiB0
aGUgcGFnZS4gVGhpcyBvbmx5IGFmZmVjdHMgdGhlIG5leHQgbmF2aWdhdGlvbi4KKyAqIEBwYXJh
bSBpbmplY3RlZFNjcmlwdCBJZiBzcGVjaWZpZWQsIGluamVjdHMgdGhlIGdpdmVuIEphdmFTY3Jp
cHQgZXhwcmVzc2lvbiBpbnRvIGFsbCBmcmFtZXMgb24gdGhlIHBhZ2UgYmVmb3JlIGFueSBvdGhl
ciBzY3JpcHRzLgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tl
IHdoZW4gdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMgb3IgZmFpbHMuCisgKi8KKy0gKHZvaWQpcmVs
b2FkSWdub3JpbmdDYWNoZTooQk9PTClpZ25vcmVDYWNoZSB1c2VyQWdlbnQ6KE5TU3RyaW5nICop
dXNlckFnZW50IGluamVjdGVkU2NyaXB0OihOU1N0cmluZyAqKWluamVjdGVkU2NyaXB0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5k
bGVyOworCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TU3RyaW5nICpleHRlbnNp
b25JRDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KaW5kZXggMjY3ZjBlZjkzMzgzOTU4NDM3
ODQwZjAwYzJiYWE3NmJmZDc5Y2Y1ZS4uYjc3MzZmYzUyN2U4MDQ1ZjIzNzljOTA5Y2RhNTk0NWU3
YTExYTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC04NCw2ICs4NCwyNiBAQCAtICh2b2lk
KWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBmcmFtZVVSTDooTlNVUkwg
KilmcmFtZVVSTCBjb250ZQogICAgIH0pOwogfQogCistICh2b2lkKXJlbG9hZElnbm9yaW5nQ2Fj
aGU6KEJPT0wpaWdub3JlQ2FjaGUgdXNlckFnZW50OihOU1N0cmluZyAqKXVzZXJBZ2VudCBpbmpl
Y3RlZFNjcmlwdDooTlNTdHJpbmcgKilpbmplY3RlZFNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgT3B0aW9uYWw8U3Ry
aW5nPiBvcHRpb25hbFVzZXJBZ2VudCA9IHVzZXJBZ2VudCA/IG1ha2VPcHRpb25hbChTdHJpbmco
dXNlckFnZW50KSkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRpb25h
bEluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHQgPyBtYWtlT3B0aW9uYWwoU3RyaW5nKGlu
amVjdGVkU2NyaXB0KSkgOiBXVEY6Om51bGxvcHQ7CisgICAgX2V4dGVuc2lvbi0+cmVsb2FkSWdu
b3JpbmdDYWNoZShpZ25vcmVDYWNoZSwgb3B0aW9uYWxVc2VyQWdlbnQsIG9wdGlvbmFsSW5qZWN0
ZWRTY3JpcHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2Nr
ID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGF1dG8gdmFsdWVPckV4Y2VwdGlvbiA9
IHJlc3VsdC52YWx1ZSgpOworICAgICAgICBpZiAoIXZhbHVlT3JFeGNlcHRpb24pIHsKKyAgICAg
ICAgICAgIGNhcHR1cmVkQmxvY2sobnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKHZhbHVlT3JF
eGNlcHRpb24uZXJyb3IoKSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgIH0pOworfQorCiAvLyBNQVJLOiBQ
cm9wZXJ0aWVzLgogCiAtIChOU1N0cmluZyAqKWV4dGVuc2lvbklECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBhMWVhZDFkMjEzNzQy
NzEyMTY2OWMwNDE1MjIzYmI5MWY3ODdkYWVhLi41NGE5MjBmY2JlZmZiNGI3YzM0MTI2YzkwMDMz
ZGJjZjM0NTVhYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5jcHAKQEAgLTEzNyw2ICsxMzcsMjUgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3Qg
SW4KICAgICB9KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRl
bnNpb25JRCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBPcHRpb25h
bDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGluamVjdGVkU2Ny
aXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgd2hlbkZyb250ZW5kSGFz
TG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgaWdub3Jl
Q2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
d2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlbG9hZEZvckV4dGVuc2lvbiB7ZXh0
ZW5zaW9uSUQsIGlnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0fSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IE9wdGlvbmFs
PEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChlcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICB9KTsK
KyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eS5oCmluZGV4IDRkNWIzNWZlNDExNmRkNThmYzY2M2VkNDFmNWI5MjU0YzE2
MjA5MWQuLjllMzAyOWFkNTQ0OTg5ODNkYmZmOWIyOWU3NGY5YTI4Y2YxYTZmY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCkBAIC01Miw2ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9v
bCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCBjcmVhdGVUYWJGb3JF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5h
bWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJM
PiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVu
dFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRl
bnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWxvYWRGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3Jl
Q2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8
U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNw
ZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CiAKICAgICAvLyBOb3RpZmljYXRp
b25zLgogICAgIHZvaWQgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAppbmRleCAzYjliZDAwMGYyOWExOTZmMTg2
M2JjZjI5OWYzMTg5N2RmNzA3Y2QxLi40N2ViNTI3MmE2MDQ0NWQ5MDBlODgzZDVlNjViNDlkZGFi
M2Y3ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3Bw
CkBAIC0yODEsNiArMjgxLDQ4IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9
CiAKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWxvYWRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRp
b25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2Vu
dCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVz
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWY8SlNPTjo6T2JqZWN0PiBvcHRp
b25hbEFyZ3VtZW50cyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgaWYgKGlnbm9yZUNh
Y2hlKQorICAgICAgICBvcHRpb25hbEFyZ3VtZW50cy0+c2V0Qm9vbGVhbigiaWdub3JlQ2FjaGUi
X3MsICppZ25vcmVDYWNoZSk7CisgICAgaWYgKHVzZXJBZ2VudCkKKyAgICAgICAgb3B0aW9uYWxB
cmd1bWVudHMtPnNldFN0cmluZygidXNlckFnZW50Il9zLCAqdXNlckFnZW50KTsKKyAgICBpZiAo
aW5qZWN0ZWRTY3JpcHQpCisgICAgICAgIG9wdGlvbmFsQXJndW1lbnRzLT5zZXRTdHJpbmcoImlu
amVjdGVkU2NyaXB0Il9zLCAqaW5qZWN0ZWRTY3JpcHQpOworCisgICAgVmVjdG9yPFJlZjxKU09O
OjpWYWx1ZT4+IGFyZ3VtZW50cyB7CisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5z
aW9uSUQpLAorICAgICAgICBXVEZNb3ZlKG9wdGlvbmFsQXJndW1lbnRzKQorICAgIH07CisKKyAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1h
bmRXaXRoUmVzdWx0QXN5bmMoInJlbG9hZEZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVu
dHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9u
dGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3Qo
KTsKKyAgICAgICAgaWYgKCFmcm9udGVuZEdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG8gcGFy
c2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFs
dWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIExPRyhJbnNwZWN0b3IsICJJbnRl
cm5hbCBlcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBldmFsdWF0aW5nIHVwb24gdGhlIGZyb250ZW5k
OiAlcyIsIGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoKnBhcnNlZEVycm9yKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBhcnNlZEVycm9yKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggZjEzNDFkY2QyNzZkMGMxMDFlNDRiZGRh
MTdjZTQwYjhhM2NiMzYxNy4uZjMzMzkyMzVlMGNhMjcxNmE0NmFmZWQ5ODcxNzg4NmU2NTJhNzRk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC02Nyw2
ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yRXh0ZW5zaW9uSUQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2ws
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwogICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1l
LCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2Us
IGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250
ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0
Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IE9wdGlv
bmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiYpPiYmKTsKKyAgICB2b2lkIHJlbG9hZEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IE9wdGlvbmFsPGJvb2w+
JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4mJik7CiAKIHByaXZhdGU6
CiAgICAgSlNDOjpKU09iamVjdCogdW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluCmluZGV4IGQxNzQwNjAyOGZhZjM3YjUwNjQxNDI1ZmI2MGQ4ZmYwZTIzYzQ0NTQuLjBiNjVl
NWNhY2Y0OTA4YWMyMzdlNDVmZjk3ZjA1YmExM2UxZGViNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yOCw2ICsy
OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBOb3RS
ZWZDb3VudGVkIHsKIAogICAgIENyZWF0ZVRhYkZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9u
SUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVSTCwgVVJMIHNvdXJjZVVSTCkgLT4gKEV4
cGVjdGVkPFN0cmluZywgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBB
c3luYwogICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwg
U3RyaW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVSTCwgT3B0aW9uYWw8VVJM
PiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRD
b250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYworICAgIFJlbG9hZEZvckV4dGVuc2lvbihTdHJp
bmcgZXh0ZW5zaW9uSUQsIE9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hlLCBPcHRpb25hbDxTdHJp
bmc+IHVzZXJBZ2VudCwgT3B0aW9uYWw8U3RyaW5nPiBpbmplY3RlZFNjcmlwdCkgLT4gKE9wdGlv
bmFsPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421365</attachid>
            <date>2021-02-23 16:14:10 -0800</date>
            <delta_ts>2021-02-23 16:39:46 -0800</delta_ts>
            <desc>Patch v1.2.1 - Review notes, now with reviewer in both changelogs</desc>
            <filename>bug-222296-20210223161409.patch</filename>
            <type>text/plain</type>
            <size>20152</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
ODUzNjVjMmYxMWJkZjY3ZThiZTVhNmQ4MDEyMGNkMDMwN2UzY2VjLi42YmQwZTY4NTBmNTkzMjJi
NDc0ZjY2Y2QzOWY1NDhlMzgxZmFmMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMS0wMi0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgcmVsb2Fk
aW5nIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyOTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBCSiBCdXJnLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHJlbG9h
ZGluZyB0aGUgaW5zcGVjdGVkIHBhZ2UsIGluY2x1ZGluZyBpZ25vcmluZyB0aGUgY2FjaGUgaWYg
ZGVzaXJlZCwgdmlhCisgICAgICAgIF9XS0luc3BlY3RvckV4dGVuc2lvbi4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ci5qczoKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90
eXBlLmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbG9hZEZvckV4dGVuc2lvbik6CisgICAg
ICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgorICAgICAgICAoSW5z
cGVjdG9yRnJvbnRlbmRBUEkuZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOgorICAgICAgICAo
SW5zcGVjdG9yRnJvbnRlbmRBUEkucmVsb2FkRm9yRXh0ZW5zaW9uKToKKwogMjAyMS0wMi0xOSAg
TmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBDU1MgR3JpZCBJbnNwZWN0b3I6IHVzZSBhIGNvbG9yIHBhbGV0dGUgZm9yIGRlZmF1
bHQgZ3JpZCBvdmVybGF5IGNvbG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NGI4Nzg1N2Y0OTFmMTIwNTA1MmJk
NDJhNTk1OWU4MTc1Zjk3ZmFlLi45ODc0MzE4MmY3ODcwNDZlM2E2ZjdkMTE1MzIxZTgxZjU0MTU4
ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAyLTIzICBQYXRyaWNrIEFuZ2xl
ICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IEFk
ZCBzdXBwb3J0IGZvciByZWxvYWRpbmcgdGhlIGluc3BlY3RlZCBwYWdlIHZpYSBfV0tJbnNwZWN0
b3JFeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjI5NgorCisgICAgICAgIFJldmlld2VkIGJ5IEJKIEJ1cmcuCisKKyAgICAgICAgQWRk
ZWQgYSBuZXcgbWV0aG9kIHRvIF9XS0luc3BlY3RvckV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIHRv
IGltcGxlbWVudCBgYnJvd3Nlci5kZXZ0b29scy5pbnNwZWN0ZWRXaW5kb3cucmVsb2FkYAorICAg
ICAgICBpbiB0aGUgV2ViIEV4dGVuc2lvbnMgQVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRl
bnNpb246OnJlbG9hZElnbm9yaW5nQ2FjaGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
SW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIHJl
bG9hZElnbm9yaW5nQ2FjaGU6dXNlckFnZW50OmluamVjdGVkU2NyaXB0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpyZWxvYWRGb3JFeHRlbnNpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIEFkZCBzdXBwb3J0IGZvciBsaWJzb3Vw
MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuanMKaW5kZXggZTBhNDQyNmM4NjhiZDlhNDFkZTQ4MWQ1OTQ5MGIwNmU1OTBhN2Nk
MC4uNjBiMjVlMTU5ZmI0NDM3NjRlMDQyNTY1NGY4ODVlOGMzNTRmOTI3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpz
CkBAIC0xMjUsNyArMTI1LDMzIEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIg
PSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgICAg
ICBsZXQge3R5cGUsIHZhbHVlfSA9IHJlc3VsdE9yRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4g
d2FzVGhyb3duID8geyJlcnJvciI6IHJlc3VsdE9yRXJyb3IuZGVzY3JpcHRpb259IDogeyJyZXN1
bHQiOiB2YWx1ZX07CiAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gZXJyb3IuZGVzY3JpcHRp
b24pOwotICAgICB9CisgICAgfQorICAgIAorICAgIHJlbG9hZEZvckV4dGVuc2lvbihleHRlbnNp
b25JRCwge2lnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0fSA9IHt9KQorICAg
IHsKKyAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRoaXMuX2V4dGVuc2lvbkZvckV4dGVuc2lvbklE
TWFwLmdldChleHRlbnNpb25JRCk7CisgICAgICAgIGlmICghZXh0ZW5zaW9uKSB7CisgICAgICAg
ICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJVbmFibGUgdG8gZXZhbHVhdGUgc2NyaXB0IGZv
ciBleHRlbnNpb24gd2l0aCB1bmtub3duIElEOiAiICsgZXh0ZW5zaW9uSUQpOworICAgICAgICAg
ICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVl
c3Q7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMjIzMjg+
IEltcGxlbWVudCBgdXNlckFnZW50YCBhbmQgYGluamVjdGVkU2NyaXB0YCBvcHRpb25zIGZvciBg
ZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LnJlbG9hZGAgY29tbWFuZAorICAgICAgICBpZiAodXNl
ckFnZW50KSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJyZWxvYWRGb3JF
eHRlbnNpb246IHRoZSAndXNlckFnZW50JyBvcHRpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4i
KTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2Rl
Lk5vdEltcGxlbWVudGVkOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluamVjdGVkU2NyaXB0
KSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJyZWxvYWRGb3JFeHRlbnNp
b246IHRoZSAnaW5qZWN0ZWRTY3JpcHQnIG9wdGlvbiBpcyBub3QgeWV0IGltcGxlbWVudGVkLiIp
OworICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUu
Tm90SW1wbGVtZW50ZWQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGxldCB0YXJnZXQg
PSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgaWYgKHRhcmdldC5oYXNDb21tYW5k
KCJQYWdlLnJlbG9hZCIpKQorICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5QYWdlQWdlbnQucmVs
b2FkLmludm9rZSh7aWdub3JlQ2FjaGV9KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OworICAgIH0KIH07
CiAKIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuRXZlbnQgPSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0
b3JGcm9udGVuZEFQSS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCmluZGV4IDRlYjRlMTJjNGNhNDk5YzMyYmVi
YjJkZTNjZmZjMjM1NGE0ZmEzYWIuLmFmMmMxODliOTk4ZjNkZTY1ZWRjY2IxNjFkODFmNjNiNjdj
YjRiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCkBAIC0yMjMs
NSArMjIzLDExIEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgIGV2YWx1YXRlU2NyaXB0
Rm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBzY3JpcHRTb3VyY2UsIHtmcmFtZVVSTCwgY29udGV4
dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dH0gPSB7fSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci5ldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbihleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCB7ZnJhbWVVUkwsIGNv
bnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHR9KTsKLSAgICB9Cisg
ICAgfSwKKyAgICAKKyAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIChXSS5XZWJJbnNwZWN0b3JFeHRl
bnNpb24uRXJyb3JDb2RlKSBpZiBhbiBlcnJvciBvY2N1cnJlZCB0aGF0IHByZXZlbnRlZCByZWxv
YWRpbmcuCisgICAgcmVsb2FkRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCB7aWdub3JlQ2FjaGUs
IHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9ID0ge30pCisgICAgeworICAgICAgICByZXR1cm4g
V0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIucmVsb2FkRm9yRXh0ZW5zaW9uKGV4dGVu
c2lvbklELCB7aWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9KTsKKyAgICB9
LAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3Rv
ckV4dGVuc2lvbi5jcHAKaW5kZXggMDdiZTg5NDhkYzJmZGRiNjVlZWI0MThmMWYxZWVmZTllZDRj
NTE5ZC4uODM3ZmQ4NTBmODBmNTUyODhmYWI0ZGNhZjQ0ZGYzOGIzOTU3MmQyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5j
cHAKQEAgLTY1LDYgKzY1LDE2IEBAIHZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpldmFsdWF0ZVNj
cmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPCiAgICAgbV9leHRl
bnNpb25Db250cm9sbGVyUHJveHktPmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKG1faWRlbnRp
Zmllciwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VD
b250ZW50U2NyaXB0Q29udGV4dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2
b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6cmVsb2FkSWdub3JpbmdDYWNoZShjb25zdCBPcHRpb25h
bDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYgdXNlckFn
ZW50LCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2NyaXB0LCAgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlv
blJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3Rl
ZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS0+
cmVsb2FkRm9yRXh0ZW5zaW9uKG1faWRlbnRpZmllciwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwg
aW5qZWN0ZWRTY3JpcHQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgQVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmgKaW5kZXggOWU4NDU2NzdkMmU3OGU1ZDYxMzkxMDVhZThlYTdmYWY5ZTBkNmNmYy4uZDU1ZmEx
YTA4N2Q4NTdhNTQ1OTFjMWViYTgxNWMzOGVhMGNkZWMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtNDgsNiArNDgs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFi
TmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VV
UkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwog
ICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwg
Y29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpV
Ukw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250
ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQgcmVsb2FkSWdu
b3JpbmdDYWNoZShjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlv
bmFsPFdURjo6U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4m
IGluamVjdGVkU2NyaXB0LCAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOwogCiBwcml2YXRlOgogICAgIElu
c3BlY3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5o
CmluZGV4IGQxMTJhMGM0YzMzYmI2MmJmNWIzNjgzMmY4MzIwYjBmMmU2MWZmYTguLjVlODdiMjcz
NTdlY2I3ZjYwYjBmMTgzMTA3OGZiNmZmMWRjODc3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAg
LTYxLDYgKzYxLDE1IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSkKICAq
LwogLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVV
Ukw6KE5TVVJMICopZnJhbWVVUkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOihOU1VSTCAqKWNvbnRl
eHRTZWN1cml0eU9yaWdpbiB1c2VDb250ZW50U2NyaXB0Q29udGV4dDooQk9PTCl1c2VDb250ZW50
U2NyaXB0Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICogX051bGxh
YmxlLCBOU0RpY3Rpb25hcnkgKiBfTnVsbGFibGUgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsK
IAorLyoqCisgKiBAYWJzdHJhY3QgUmVsb2FkcyB0aGUgaW5zcGVjdGVkIHBhZ2Ugb24gYmVoYWxm
IG9mIHRoZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uCisgKiBAcGFyYW0gaWdub3JlQ2FjaGUgSWYg
WUVTLCByZWxvYWRzIHRoZSBwYWdlIHdoaWxlIGlnbm9yaW5nIHRoZSBjYWNoZS4KKyAqIEBwYXJh
bSB1c2VyQWdlbnQgSWYgc3BlY2lmaWVkLCBvdmVycmlkZXMgdGhlIHVzZXIgYWdlbnQgdG8gYmUg
c2VudCBpbiB0aGUgYFVzZXItQWdlbnRgIGhlYWRlciBhbmQgcmV0dXJuZWQgYnkgY2FsbHMgdG8g
YG5hdmlnYXRvci51c2VyQWdlbnRgIG1hZGUgYnkgc2NyaXB0cyBydW5uaW5nIGluIHRoZSBwYWdl
LiBUaGlzIG9ubHkgYWZmZWN0cyB0aGUgbmV4dCBuYXZpZ2F0aW9uLgorICogQHBhcmFtIGluamVj
dGVkU2NyaXB0IElmIHNwZWNpZmllZCwgaW5qZWN0cyB0aGUgZ2l2ZW4gSmF2YVNjcmlwdCBleHBy
ZXNzaW9uIGludG8gYWxsIGZyYW1lcyBvbiB0aGUgcGFnZSBiZWZvcmUgYW55IG90aGVyIHNjcmlw
dHMuCisgKiBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiB0
aGUgb3BlcmF0aW9uIGNvbXBsZXRlcyBvciBmYWlscy4KKyAqLworLSAodm9pZClyZWxvYWRJZ25v
cmluZ0NhY2hlOihCT09MKWlnbm9yZUNhY2hlIHVzZXJBZ2VudDooTlNTdHJpbmcgKil1c2VyQWdl
bnQgaW5qZWN0ZWRTY3JpcHQ6KE5TU3RyaW5nICopaW5qZWN0ZWRTY3JpcHQgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisK
IEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVuc2lvbklEOwog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQppbmRleCAyNjdmMGVmOTMzODM5NTg0Mzc4NDBmMDBj
MmJhYTc2YmZkNzljZjVlLi5iNzczNmZjNTI3ZTgwNDVmMjM3OWM5MDljZGE1OTQ1ZTdhMTFhNjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KQEAgLTg0LDYgKzg0LDI2IEBAIC0gKHZvaWQpZXZhbHVh
dGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNlIGZyYW1lVVJMOihOU1VSTCAqKWZyYW1l
VVJMIGNvbnRlCiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpcmVsb2FkSWdub3JpbmdDYWNoZTooQk9P
TClpZ25vcmVDYWNoZSB1c2VyQWdlbnQ6KE5TU3RyaW5nICopdXNlckFnZW50IGluamVjdGVkU2Ny
aXB0OihOU1N0cmluZyAqKWluamVjdGVkU2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IG9w
dGlvbmFsVXNlckFnZW50ID0gdXNlckFnZW50ID8gbWFrZU9wdGlvbmFsKFN0cmluZyh1c2VyQWdl
bnQpKSA6IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsSW5qZWN0
ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdCA/IG1ha2VPcHRpb25hbChTdHJpbmcoaW5qZWN0ZWRT
Y3JpcHQpKSA6IFdURjo6bnVsbG9wdDsKKyAgICBfZXh0ZW5zaW9uLT5yZWxvYWRJZ25vcmluZ0Nh
Y2hlKGlnbm9yZUNhY2hlLCBvcHRpb25hbFVzZXJBZ2VudCwgb3B0aW9uYWxJbmplY3RlZFNjcmlw
dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtl
QmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xv
Y2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25F
cnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9uID0gcmVzdWx0
LnZhbHVlKCk7CisgICAgICAgIGlmICghdmFsdWVPckV4Y2VwdGlvbikgeworICAgICAgICAgICAg
Y2FwdHVyZWRCbG9jayhuc0Vycm9yRnJvbUV4Y2VwdGlvbkRldGFpbHModmFsdWVPckV4Y2VwdGlv
bi5lcnJvcigpKS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBjYXB0dXJlZEJsb2NrKG5pbCk7CisgICAgfSk7Cit9CisKIC8vIE1BUks6IFByb3BlcnRp
ZXMuCiAKIC0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGExZWFkMWQyMTM3NDI3MTIxNjY5
YzA0MTUyMjNiYjkxZjc4N2RhZWEuLjU0YTkyMGZjYmVmZmI0YjdjMzQxMjZjOTAwMzNkYmNmMzQ1
NWFhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LmNwcApAQCAtMTM3LDYgKzEzNywyNSBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbgogICAg
IH0pOwogfQogCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojpy
ZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklE
LCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVz
dWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQo
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBpZ25vcmVDYWNoZSwg
dXNlckFnZW50LCBpbmplY3RlZFNjcmlwdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwg
IXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJv
eWVkKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhp
cy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVsb2FkRm9yRXh0ZW5zaW9uIHtleHRlbnNpb25J
RCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9LCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8SW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChlcnJv
cikgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVy
cm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIH0pOworICAgIH0p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LmgKaW5kZXggNGQ1YjM1ZmU0MTE2ZGQ1OGZjNjYzZWQ0MWY1YjkyNTRjMTYyMDkxZC4u
OWUzMDI5YWQ1NDQ5ODk4M2RiZmY5YjI5ZTc0ZjlhMjhjZjFhNmZjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRl
bnNpb25JRCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29u
c3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2Us
IGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250
ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0
Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4dGVuc2lvbkV2
YWx1YXRpb25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIHJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+
JiBpbmplY3RlZFNjcmlwdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmKTsKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMuCiAg
ICAgdm9pZCBpbnNwZWN0b3JGcm9udGVuZExvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDNiOWJkMDAwZjI5YTE5NmYxODYzYmNmMjk5
ZjMxODk3ZGY3MDdjZDEuLjQ3ZWI1MjcyYTYwNDQ1ZDkwMGU4ODNkNWU2NWI0OWRkYWIzZjdlZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKQEAgLTI4
MSw2ICsyODEsNDggQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICB9KTsKIH0KIAordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlbG9hZEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IE9wdGlvbmFsPGJv
b2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25z
dCBPcHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZjxKU09OOjpPYmplY3Q+IG9wdGlvbmFsQXJn
dW1lbnRzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAgICBpZiAoaWdub3JlQ2FjaGUpCisg
ICAgICAgIG9wdGlvbmFsQXJndW1lbnRzLT5zZXRCb29sZWFuKCJpZ25vcmVDYWNoZSJfcywgKmln
bm9yZUNhY2hlKTsKKyAgICBpZiAodXNlckFnZW50KQorICAgICAgICBvcHRpb25hbEFyZ3VtZW50
cy0+c2V0U3RyaW5nKCJ1c2VyQWdlbnQiX3MsICp1c2VyQWdlbnQpOworICAgIGlmIChpbmplY3Rl
ZFNjcmlwdCkKKyAgICAgICAgb3B0aW9uYWxBcmd1bWVudHMtPnNldFN0cmluZygiaW5qZWN0ZWRT
Y3JpcHQiX3MsICppbmplY3RlZFNjcmlwdCk7CisKKyAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVl
Pj4gYXJndW1lbnRzIHsKKyAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCks
CisgICAgICAgIFdURk1vdmUob3B0aW9uYWxBcmd1bWVudHMpCisgICAgfTsKKworICAgIG1fZnJv
bnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhS
ZXN1bHRBc3luYygicmVsb2FkRm9yRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1
YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBhdXRvKiBmcm9udGVuZEdsb2JhbE9iamVjdCA9IHdlYWtUaGlzLT5tX2Zyb250ZW5kQ2xp
ZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9iamVjdCgpOworICAg
ICAgICBpZiAoIWZyb250ZW5kR2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJv
ciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25S
ZXN1bHQocmVzdWx0KSkgeworICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIkludGVybmFsIGVy
cm9yIGVuY291bnRlcmVkIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6ICVzIiwg
aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZygqcGFyc2VkRXJyb3IpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocGFyc2VkRXJyb3IpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
OjpudWxsb3B0KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaAppbmRleCBmMTM0MWRjZDI3NmQwYzEwMWU0NGJkZGExN2NlNDBi
OGEzY2IzNjE3Li5mMzMzOTIzNWUwY2EyNzE2YTQ2YWZlZDk4NzE3ODg2ZTY1MmE3NGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKQEAgLTY3LDYgKzY3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JF
eHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0
IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYpOwogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qg
T3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1
cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgcmVsb2FkRm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9y
ZUNhY2hlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFs
PFN0cmluZz4mIGluamVjdGVkU2NyaXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiYpPiYmKTsKIAogcHJpdmF0ZToKICAgICBK
U0M6OkpTT2JqZWN0KiB1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KaW5k
ZXggZDE3NDA2MDI4ZmFmMzdiNTA2NDE0MjVmYjYwZDhmZjBlMjNjNDQ1NC4uMGI2NWU1Y2FjZjQ5
MDhhYzIzN2U0NWZmOTdmMDViYTEzZTFkZWI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTI4LDYgKzI4LDcgQEAg
bWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIE5vdFJlZkNvdW50
ZWQgewogCiAgICAgQ3JlYXRlVGFiRm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3Ry
aW5nIHRhYk5hbWUsIFVSTCB0YWJJY29uVVJMLCBVUkwgc291cmNlVVJMKSAtPiAoRXhwZWN0ZWQ8
U3RyaW5nLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCiAg
ICAgRXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcg
c2NyaXB0U291cmNlLCBPcHRpb25hbDxVUkw+IGZyYW1lVVJMLCBPcHRpb25hbDxVUkw+IGNvbnRl
eHRTZWN1cml0eU9yaWdpbiwgT3B0aW9uYWw8Ym9vbD4gdXNlQ29udGVudFNjcmlwdENvbnRleHQp
IC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlscywgT3B0aW9uYWw8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4gZXJyb3IpIEFzeW5jCisgICAgUmVsb2FkRm9yRXh0ZW5zaW9uKFN0cmluZyBleHRl
bnNpb25JRCwgT3B0aW9uYWw8Ym9vbD4gaWdub3JlQ2FjaGUsIE9wdGlvbmFsPFN0cmluZz4gdXNl
ckFnZW50LCBPcHRpb25hbDxTdHJpbmc+IGluamVjdGVkU2NyaXB0KSAtPiAoT3B0aW9uYWw8V2Vi
S2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gZXJyb3IpIEFzeW5jCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421368</attachid>
            <date>2021-02-23 16:39:48 -0800</date>
            <delta_ts>2021-02-23 17:11:10 -0800</delta_ts>
            <desc>Patch v1.3 - Review notes</desc>
            <filename>bug-222296-20210223163947.patch</filename>
            <type>text/plain</type>
            <size>20174</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
ODUzNjVjMmYxMWJkZjY3ZThiZTVhNmQ4MDEyMGNkMDMwN2UzY2VjLi42YmQwZTY4NTBmNTkzMjJi
NDc0ZjY2Y2QzOWY1NDhlMzgxZmFmMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMS0wMi0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgcmVsb2Fk
aW5nIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyOTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBCSiBCdXJnLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHJlbG9h
ZGluZyB0aGUgaW5zcGVjdGVkIHBhZ2UsIGluY2x1ZGluZyBpZ25vcmluZyB0aGUgY2FjaGUgaWYg
ZGVzaXJlZCwgdmlhCisgICAgICAgIF9XS0luc3BlY3RvckV4dGVuc2lvbi4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ci5qczoKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90
eXBlLmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbG9hZEZvckV4dGVuc2lvbik6CisgICAg
ICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgorICAgICAgICAoSW5z
cGVjdG9yRnJvbnRlbmRBUEkuZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOgorICAgICAgICAo
SW5zcGVjdG9yRnJvbnRlbmRBUEkucmVsb2FkRm9yRXh0ZW5zaW9uKToKKwogMjAyMS0wMi0xOSAg
TmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBDU1MgR3JpZCBJbnNwZWN0b3I6IHVzZSBhIGNvbG9yIHBhbGV0dGUgZm9yIGRlZmF1
bHQgZ3JpZCBvdmVybGF5IGNvbG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NGI4Nzg1N2Y0OTFmMTIwNTA1MmJk
NDJhNTk1OWU4MTc1Zjk3ZmFlLi45ODc0MzE4MmY3ODcwNDZlM2E2ZjdkMTE1MzIxZTgxZjU0MTU4
ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAyLTIzICBQYXRyaWNrIEFuZ2xl
ICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IEFk
ZCBzdXBwb3J0IGZvciByZWxvYWRpbmcgdGhlIGluc3BlY3RlZCBwYWdlIHZpYSBfV0tJbnNwZWN0
b3JFeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjI5NgorCisgICAgICAgIFJldmlld2VkIGJ5IEJKIEJ1cmcuCisKKyAgICAgICAgQWRk
ZWQgYSBuZXcgbWV0aG9kIHRvIF9XS0luc3BlY3RvckV4dGVuc2lvbiB3aGljaCBpcyB1c2VkIHRv
IGltcGxlbWVudCBgYnJvd3Nlci5kZXZ0b29scy5pbnNwZWN0ZWRXaW5kb3cucmVsb2FkYAorICAg
ICAgICBpbiB0aGUgV2ViIEV4dGVuc2lvbnMgQVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRl
bnNpb246OnJlbG9hZElnbm9yaW5nQ2FjaGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
SW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIHJl
bG9hZElnbm9yaW5nQ2FjaGU6dXNlckFnZW50OmluamVjdGVkU2NyaXB0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpyZWxvYWRGb3JFeHRlbnNpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIEFkZCBzdXBwb3J0IGZvciBsaWJzb3Vw
MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuanMKaW5kZXggZTBhNDQyNmM4NjhiZDlhNDFkZTQ4MWQ1OTQ5MGIwNmU1OTBhN2Nk
MC4uNDZlMzc3NGQwNWRiZGVhNDA0ZjY3NGY4ODM2ODQ1MWI2NDc0OGY5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpz
CkBAIC0xMjUsNyArMTI1LDM1IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIg
PSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgICAg
ICBsZXQge3R5cGUsIHZhbHVlfSA9IHJlc3VsdE9yRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4g
d2FzVGhyb3duID8geyJlcnJvciI6IHJlc3VsdE9yRXJyb3IuZGVzY3JpcHRpb259IDogeyJyZXN1
bHQiOiB2YWx1ZX07CiAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gZXJyb3IuZGVzY3JpcHRp
b24pOwotICAgICB9CisgICAgfQorICAgIAorICAgIHJlbG9hZEZvckV4dGVuc2lvbihleHRlbnNp
b25JRCwge2lnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0fSA9IHt9KQorICAg
IHsKKyAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRoaXMuX2V4dGVuc2lvbkZvckV4dGVuc2lvbklE
TWFwLmdldChleHRlbnNpb25JRCk7CisgICAgICAgIGlmICghZXh0ZW5zaW9uKSB7CisgICAgICAg
ICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJVbmFibGUgdG8gZXZhbHVhdGUgc2NyaXB0IGZv
ciBleHRlbnNpb24gd2l0aCB1bmtub3duIElEOiAiICsgZXh0ZW5zaW9uSUQpOworICAgICAgICAg
ICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVl
c3Q7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMjIzMjg+
IEltcGxlbWVudCBgdXNlckFnZW50YCBhbmQgYGluamVjdGVkU2NyaXB0YCBvcHRpb25zIGZvciBg
ZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LnJlbG9hZGAgY29tbWFuZAorICAgICAgICBpZiAodXNl
ckFnZW50KSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJyZWxvYWRGb3JF
eHRlbnNpb246IHRoZSAndXNlckFnZW50JyBvcHRpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4i
KTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2Rl
Lk5vdEltcGxlbWVudGVkOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluamVjdGVkU2NyaXB0
KSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJyZWxvYWRGb3JFeHRlbnNp
b246IHRoZSAnaW5qZWN0ZWRTY3JpcHQnIG9wdGlvbiBpcyBub3QgeWV0IGltcGxlbWVudGVkLiIp
OworICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUu
Tm90SW1wbGVtZW50ZWQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGxldCB0YXJnZXQg
PSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgaWYgKCF0YXJnZXQuaGFzQ29tbWFu
ZCgiUGFnZS5yZWxvYWQiKSkKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRl
bnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OworICAgICAgICAKKyAgICAgICAgcmV0dXJu
IHRhcmdldC5QYWdlQWdlbnQucmVsb2FkLmludm9rZSh7aWdub3JlQ2FjaGV9KTsKKyAgICAgICAg
CisgICAgICAgIAorICAgIH0KIH07CiAKIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIuRXZlbnQgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCmluZGV4
IDRlYjRlMTJjNGNhNDk5YzMyYmViYjJkZTNjZmZjMjM1NGE0ZmEzYWIuLmFmMmMxODliOTk4ZjNk
ZTY1ZWRjY2IxNjFkODFmNjNiNjdjYjRiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzCkBAIC0yMjMsNSArMjIzLDExIEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0g
ewogICAgIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBzY3JpcHRTb3Vy
Y2UsIHtmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dH0gPSB7fSkKICAgICB7CiAgICAgICAgIHJldHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9u
Q29udHJvbGxlci5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihleHRlbnNpb25JRCwgc2NyaXB0
U291cmNlLCB7ZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlw
dENvbnRleHR9KTsKLSAgICB9CisgICAgfSwKKyAgICAKKyAgICAvLyBSZXR1cm5zIGEgc3RyaW5n
IChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlKSBpZiBhbiBlcnJvciBvY2N1cnJl
ZCB0aGF0IHByZXZlbnRlZCByZWxvYWRpbmcuCisgICAgcmVsb2FkRm9yRXh0ZW5zaW9uKGV4dGVu
c2lvbklELCB7aWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9ID0ge30pCisg
ICAgeworICAgICAgICByZXR1cm4gV0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIucmVs
b2FkRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCB7aWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5q
ZWN0ZWRTY3JpcHR9KTsKKyAgICB9LAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKaW5kZXggMDdiZTg5NDhkYzJmZGRi
NjVlZWI0MThmMWYxZWVmZTllZDRjNTE5ZC4uODM3ZmQ4NTBmODBmNTUyODhmYWI0ZGNhZjQ0ZGYz
OGIzOTU3MmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUluc3BlY3RvckV4dGVuc2lvbi5jcHAKQEAgLTY1LDYgKzY1LDE2IEBAIHZvaWQgSW5zcGVjdG9y
RXh0ZW5zaW9uOjpldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNl
LCBjb25zdCBPCiAgICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPmV2YWx1YXRlU2NyaXB0
Rm9yRXh0ZW5zaW9uKG1faWRlbnRpZmllciwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4
dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6cmVsb2FkSWdub3Jp
bmdDYWNoZShjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFs
PFdURjo6U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4mIGlu
amVjdGVkU2NyaXB0LCAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVj
dG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpD
b250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2V4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS0+cmVsb2FkRm9yRXh0ZW5zaW9uKG1faWRlbnRpZmllciwgaWdu
b3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHQsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKaW5kZXggOWU4NDU2NzdkMmU3OGU1ZDYxMzkxMDVhZThl
YTdmYWY5ZTBkNmNmYy4uZDU1ZmExYTA4N2Q4NTdhNTQ1OTFjMWViYTgxNWMzOGVhMGNkZWMwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVu
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRl
bnNpb24uaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNyZWF0ZVRhYihj
b25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNv
bnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYpOwogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpT
dHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwg
Y29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYp
OworICAgIHZvaWQgcmVsb2FkSWdub3JpbmdDYWNoZShjb25zdCBPcHRpb25hbDxib29sPiYgaWdu
b3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBP
cHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2NyaXB0LCAgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYp
OwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllciwgV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbi5oCmluZGV4IGQxMTJhMGM0YzMzYmI2MmJmNWIzNjgzMmY4MzIw
YjBmMmU2MWZmYTguLjVlODdiMjczNTdlY2I3ZjYwYjBmMTgzMTA3OGZiNmZmMWRjODc3NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTYxLDYgKzYxLDE1IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSkKICAqLwogLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcg
KilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICopZnJhbWVVUkwgY29udGV4dFNlY3VyaXR5
T3JpZ2luOihOU1VSTCAqKWNvbnRleHRTZWN1cml0eU9yaWdpbiB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dDooQk9PTCl1c2VDb250ZW50U2NyaXB0Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShOU0Vycm9yICogX051bGxhYmxlLCBOU0RpY3Rpb25hcnkgKiBfTnVsbGFibGUgcmVzdWx0
KSljb21wbGV0aW9uSGFuZGxlcjsKIAorLyoqCisgKiBAYWJzdHJhY3QgUmVsb2FkcyB0aGUgaW5z
cGVjdGVkIHBhZ2Ugb24gYmVoYWxmIG9mIHRoZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uCisgKiBA
cGFyYW0gaWdub3JlQ2FjaGUgSWYgWUVTLCByZWxvYWRzIHRoZSBwYWdlIHdoaWxlIGlnbm9yaW5n
IHRoZSBjYWNoZS4KKyAqIEBwYXJhbSB1c2VyQWdlbnQgSWYgc3BlY2lmaWVkLCBvdmVycmlkZXMg
dGhlIHVzZXIgYWdlbnQgdG8gYmUgc2VudCBpbiB0aGUgYFVzZXItQWdlbnRgIGhlYWRlciBhbmQg
cmV0dXJuZWQgYnkgY2FsbHMgdG8gYG5hdmlnYXRvci51c2VyQWdlbnRgIG1hZGUgYnkgc2NyaXB0
cyBydW5uaW5nIGluIHRoZSBwYWdlLiBUaGlzIG9ubHkgYWZmZWN0cyB0aGUgbmV4dCBuYXZpZ2F0
aW9uLgorICogQHBhcmFtIGluamVjdGVkU2NyaXB0IElmIHNwZWNpZmllZCwgaW5qZWN0cyB0aGUg
Z2l2ZW4gSmF2YVNjcmlwdCBleHByZXNzaW9uIGludG8gYWxsIGZyYW1lcyBvbiB0aGUgcGFnZSBi
ZWZvcmUgYW55IG90aGVyIHNjcmlwdHMuCisgKiBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBi
bG9jayB0byBpbnZva2Ugd2hlbiB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlcyBvciBmYWlscy4KKyAq
LworLSAodm9pZClyZWxvYWRJZ25vcmluZ0NhY2hlOihCT09MKWlnbm9yZUNhY2hlIHVzZXJBZ2Vu
dDooTlNTdHJpbmcgKil1c2VyQWdlbnQgaW5qZWN0ZWRTY3JpcHQ6KE5TU3RyaW5nICopaW5qZWN0
ZWRTY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkp
Y29tcGxldGlvbkhhbmRsZXI7CisKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNT
dHJpbmcgKmV4dGVuc2lvbklEOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQppbmRleCAyNjdm
MGVmOTMzODM5NTg0Mzc4NDBmMDBjMmJhYTc2YmZkNzljZjVlLi40MzJiOTg4MGIyMjQzNjc0NWM2
NzQ0NmVkMmFmZTYxNjliZWNkOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KQEAgLTg0LDYgKzg0
LDI2IEBAIC0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNlIGZy
YW1lVVJMOihOU1VSTCAqKWZyYW1lVVJMIGNvbnRlCiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpcmVs
b2FkSWdub3JpbmdDYWNoZTooQk9PTClpZ25vcmVDYWNoZSB1c2VyQWdlbnQ6KE5TU3RyaW5nICop
dXNlckFnZW50IGluamVjdGVkU2NyaXB0OihOU1N0cmluZyAqKWluamVjdGVkU2NyaXB0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsVXNlckFnZW50ID0gdXNlckFnZW50ID8gbWFrZU9w
dGlvbmFsKFN0cmluZyh1c2VyQWdlbnQpKSA6IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxT
dHJpbmc+IG9wdGlvbmFsSW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdCA/IG1ha2VPcHRp
b25hbChTdHJpbmcoaW5qZWN0ZWRTY3JpcHQpKSA6IFdURjo6bnVsbG9wdDsKKyAgICBfZXh0ZW5z
aW9uLT5yZWxvYWRJZ25vcmluZ0NhY2hlKGlnbm9yZUNhY2hlLCBvcHRpb25hbFVzZXJBZ2VudCwg
b3B0aW9uYWxJbmplY3RlZFNjcmlwdCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiks
IGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
XSAoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxv
Y2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogV2ViS2l0
OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKSB9XSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGF1dG8gdmFs
dWVPckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1ZSgpOworICAgICAgICBpZiAoIXZhbHVlT3JFeGNl
cHRpb24pIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2sobnNFcnJvckZyb21FeGNlcHRpb25E
ZXRhaWxzKHZhbHVlT3JFeGNlcHRpb24uZXJyb3IoKSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgIH0pOwor
fQorCiAvLyBNQVJLOiBQcm9wZXJ0aWVzLgogCiAtIChOU1N0cmluZyAqKWV4dGVuc2lvbklECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRl
eCBhMWVhZDFkMjEzNzQyNzEyMTY2OWMwNDE1MjIzYmI5MWY3ODdkYWVhLi41NGE5MjBmY2JlZmZi
NGI3YzM0MTI2YzkwMDMzZGJjZjM0NTVhYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTEzNyw2ICsxMzcsMjUgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JF
eHRlbnNpb24oY29uc3QgSW4KICAgICB9KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4
dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hl
LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIGluamVjdGVkU2NyaXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9y
RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
d2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRl
bnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHQsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlbG9hZEZv
ckV4dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIGlnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVk
U2NyaXB0fSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDRkNWIzNWZlNDExNmRkNThmYzY2
M2VkNDFmNWI5MjU0YzE2MjA5MWQuLjllMzAyOWFkNTQ0OTg5ODNkYmZmOWIyOWU3NGY5YTI4Y2Yx
YTZmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9p
ZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25z
dCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3Vy
Y2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRl
bnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCBldmFs
dWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29u
c3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxi
b29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWxv
YWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBPcHRpb25h
bDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CiAKICAg
ICAvLyBOb3RpZmljYXRpb25zLgogICAgIHZvaWQgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAppbmRleCAzYjli
ZDAwMGYyOWExOTZmMTg2M2JjZjI5OWYzMTg5N2RmNzA3Y2QxLi40N2ViNTI3MmE2MDQ0NWQ5MDBl
ODgzZDVlNjViNDlkZGFiM2Y3ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuY3BwCkBAIC0yODEsNiArMjgxLDQ4IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNw
ZWN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
OjpyZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lv
bklELCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0
cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kQ2xp
ZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpJbnZhbGlkUmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWY8SlNP
Tjo6T2JqZWN0PiBvcHRpb25hbEFyZ3VtZW50cyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAgaWYgKGlnbm9yZUNhY2hlKQorICAgICAgICBvcHRpb25hbEFyZ3VtZW50cy0+c2V0Qm9vbGVh
bigiaWdub3JlQ2FjaGUiX3MsICppZ25vcmVDYWNoZSk7CisgICAgaWYgKHVzZXJBZ2VudCkKKyAg
ICAgICAgb3B0aW9uYWxBcmd1bWVudHMtPnNldFN0cmluZygidXNlckFnZW50Il9zLCAqdXNlckFn
ZW50KTsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQpCisgICAgICAgIG9wdGlvbmFsQXJndW1lbnRz
LT5zZXRTdHJpbmcoImluamVjdGVkU2NyaXB0Il9zLCAqaW5qZWN0ZWRTY3JpcHQpOworCisgICAg
VmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7CisgICAgICAgIEpTT046OlZhbHVl
OjpjcmVhdGUoZXh0ZW5zaW9uSUQpLAorICAgICAgICBXVEZNb3ZlKG9wdGlvbmFsQXJndW1lbnRz
KQorICAgIH07CisKKyAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIo
KS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInJlbG9hZEZvckV4dGVuc2lvbiJfcywg
V1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3
ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRl
bmRHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFmcm9udGVuZEdsb2JhbE9iamVjdCkgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNv
bnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNp
b25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIExPRyhJ
bnNwZWN0b3IsICJJbnRlcm5hbCBlcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBldmFsdWF0aW5nIHVw
b24gdGhlIGZyb250ZW5kOiAlcyIsIGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoKnBh
cnNlZEVycm9yKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHBhcnNlZEVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggZjEzNDFkY2Qy
NzZkMGMxMDFlNDRiZGRhMTdjZTQwYjhhM2NiMzYxNy4uZjMzMzkyMzVlMGNhMjcxNmE0NmFmZWQ5
ODcxNzg4NmU2NTJhNzRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwogICAgIHZvaWQg
Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3Qg
U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNl
VVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRh
YklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIGV2YWx1YXRlU2Ny
aXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRp
b25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1
c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiYpPiYmKTsKKyAgICB2
b2lkIHJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0
IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNl
ckFnZW50LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4m
Jik7CiAKIHByaXZhdGU6CiAgICAgSlNDOjpKU09iamVjdCogdW53cmFwRXZhbHVhdGlvblJlc3Vs
dEFzT2JqZWN0KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvblJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IGQxNzQwNjAyOGZhZjM3YjUwNjQxNDI1ZmI2MGQ4ZmYw
ZTIzYzQ0NTQuLjBiNjVlNWNhY2Y0OTA4YWMyMzdlNDVmZjk3ZjA1YmExM2UxZGViNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluCkBAIC0yOCw2ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlciBOb3RSZWZDb3VudGVkIHsKIAogICAgIENyZWF0ZVRhYkZvckV4dGVuc2lvbihT
dHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVSTCwgVVJMIHNv
dXJjZVVSTCkgLT4gKEV4cGVjdGVkPFN0cmluZywgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmlu
ZyBleHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVS
TCwgT3B0aW9uYWw8VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVz
ZUNvbnRlbnRTY3JpcHRDb250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEs
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYworICAgIFJlbG9hZEZv
ckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIE9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hl
LCBPcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudCwgT3B0aW9uYWw8U3RyaW5nPiBpbmplY3RlZFNj
cmlwdCkgLT4gKE9wdGlvbmFsPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9y
KSBBc3luYwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>