<?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>236811</bug_id>
          
          <creation_ts>2022-02-17 16:43:05 -0800</creation_ts>
          <short_desc>[iOS] Safari can sometimes hang while printing due to sync IPC</short_desc>
          <delta_ts>2022-02-18 16:45:35 -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>Printing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1843173</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-17 16:43:05 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843176</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-17 16:46:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/56425783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843197</commentid>
    <comment_count>2</comment_count>
      <attachid>452450</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-17 17:17:11 -0800</bug_when>
    <thetext>Created attachment 452450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843214</commentid>
    <comment_count>3</comment_count>
      <attachid>452450</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-17 17:49:09 -0800</bug_when>
    <thetext>Comment on attachment 452450
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.h:1418
&gt; +    uint64_t drawToPDFiOS(WebCore::FrameIdentifier, const PrintInfo&amp;, size_t pageCount, CompletionHandler&lt;void(const IPC::SharedBufferCopy&amp;)&gt;&amp;&amp;);

This name is not great (should be about printing, ideally, and not mention a platform). But you&apos;re just propagating it.

&gt; Source/WebKit/UIProcess/_WKWebViewPrintFormatter.h:39
&gt; +@property (nonatomic, readonly) BOOL requiresMainThread WK_API_AVAILABLE(ios(WK_IOS_TBA));

I don&apos;t think you need this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843217</commentid>
    <comment_count>4</comment_count>
      <attachid>452450</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-17 17:51:15 -0800</bug_when>
    <thetext>Comment on attachment 452450
Patch

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

&gt; Source/WebKit/UIProcess/_WKWebViewPrintFormatter.h:39
&gt; +@property (nonatomic, readonly) BOOL requiresMainThread WK_API_AVAILABLE(ios(WK_IOS_TBA));

@Tim Horton pointed out that we don&apos;t need to do this to override the method.  I think I was in &quot;C++ mode&quot; when I wrote this part 😅  I will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843222</commentid>
    <comment_count>5</comment_count>
      <attachid>452462</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-17 18:16:05 -0800</bug_when>
    <thetext>Created attachment 452462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843231</commentid>
    <comment_count>6</comment_count>
      <attachid>452462</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-02-17 18:44:11 -0800</bug_when>
    <thetext>Comment on attachment 452462
Patch

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

&gt; Source/WebKit/ChangeLog:18
&gt; +        When `requiresMainThread` is `NO`, use `WTF::BinarySemaphore` (and a wapper helper method)

&quot;wapper&quot;

&gt; Source/WebKit/UIProcess/_WKWebViewPrintFormatter.mm:92
&gt; +    [self._webView._printProvider _wk_calculatePageCountForPrintFormatter:self completionHandler:makeBlockPtr([&amp;] (NSUInteger pageCount) {

Maybe we should move the synchronization (semaphore usage) into `_wk_calculatePageCountForPrintFormatter` in `WKContentView` and rename to make it clear the method is synchronous.

The completion handler here makes things a little confusing.

&gt; Source/WebKit/UIProcess/_WKWebViewPrintFormatter.mm:93
&gt; +        result = pageCount;

I think we should add an `ASSERT(isMainRunLoop());` here.

&gt; Source/WebKit/UIProcess/_WKWebViewPrintFormatter.mm:126
&gt; +        callOnMainRunLoopAndWait([&amp;] {

This looks incorrect.

If we have a background thread, we also want to draw on the background thread. This is because `_printedDocument = self._webView._printProvider._wk_printedDocument;` can cause a hang as we wait for the PDF to be returned from the WebProcess, under `_waitForDrawToPDFCallback`.

We should call _internalDrawInRect:forPageAtIndex: on a background thread, but will need additional synchronization as the reply to `drawToPDFiOS` (which sets the printed document) would be received on the main thread.

&gt; Source/WebKit/UIProcess/_WKWebViewPrintFormatterInternal.h:40
&gt; +@property (nonatomic, readonly) BOOL _wk_requiresMainThread;

Maybe `_wk_printFormatterRequiresMainThread`? It&apos;s a little unclear in classes that implement, that the method is about printing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843282</commentid>
    <comment_count>7</comment_count>
      <attachid>452481</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-17 22:22:54 -0800</bug_when>
    <thetext>Created attachment 452481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843619</commentid>
    <comment_count>8</comment_count>
      <attachid>452574</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-18 13:32:06 -0800</bug_when>
    <thetext>Created attachment 452574
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843719</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-18 16:45:29 -0800</bug_when>
    <thetext>Committed r290186 (247514@main): &lt;https://commits.webkit.org/247514@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452574.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452450</attachid>
            <date>2022-02-17 17:17:11 -0800</date>
            <delta_ts>2022-02-17 18:24:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236811-20220217181710.patch</filename>
            <type>text/plain</type>
            <size>25284</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzQ4MmYzZDA0ODAxNDk5NmZjOGU5ZjE1ZWI1ZjNjOTA4NDdiOGU5NC4uOTFkMzc0Nzcw
YzFmMDZhYzU1MGE1NmQ1OGRiZWZhYjVmMjFhYjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
Mi0wMi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lP
U10gU2FmYXJpIGNhbiBzb21ldGltZXMgaGFuZyB3aGlsZSBwcmludGluZyBkdWUgdG8gc3luYyBJ
UEMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjgx
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY0MjU3ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgbmV3IFVJS2l0IFNQSSBmb3IgYWxs
b3dpbmcgYFVJUHJpbnRGb3JtYXR0ZXJgIHRvIGJlIGNhbGxlZCBvZmYgdGhlIG1haW4gdGhyZWFk
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorICAgICAgICBBZGQgYSBgSEFWRV9V
SUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElOR2AgdG8gZ3VhcmQgdGhpcyBuZXcgYmVoYXZp
b3IuCisKIDIwMjItMDItMTcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg5OTc0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4
NTAxYTkwMWFmOGJkNzVkY2Q2MDc3YjI1M2Q4NjYzMzBjODgxNmMzLi45MmY2MTJlNTNlMmFlOGI0
YzBkNTNlZTliZjA3MzU4NjJiY2VmYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIy
LTAyLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBTYWZhcmkgY2FuIHNvbWV0aW1lcyBoYW5nIHdoaWxlIHByaW50aW5nIGR1ZSB0byBzeW5jIElQ
QworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODEx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjQyNTc4Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZG9wdCBuZXcgVUlLaXQgU1BJIGZvciBhbGxv
d2luZyBgVUlQcmludEZvcm1hdHRlcmAgdG8gYmUgY2FsbGVkIG9mZiB0aGUgbWFpbiB0aHJlYWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbToKKyAgICAgICAgKC1b
X1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIHJlcXVpcmVzTWFpblRocmVhZF0pOiBBZGRlZC4KKyAg
ICAgICAgKC1bX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIF9yZWNhbGNQYWdlQ291bnRdKToKKyAg
ICAgICAgKC1bX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIGRyYXdJblJlY3Q6Zm9yUGFnZUF0SW5k
ZXg6XSk6CisgICAgICAgICgtW19XS1dlYlZpZXdQcmludEZvcm1hdHRlciBfaW50ZXJuYWxEcmF3
SW5SZWN0OmZvclBhZ2VBdEluZGV4Ol0pOiBBZGRlZC4KKyAgICAgICAgV2hlbiBgcmVxdWlyZXNN
YWluVGhyZWFkYCBpcyBgTk9gLCB1c2UgYFdURjo6QmluYXJ5U2VtYXBob3JlYCAoYW5kIGEgd2Fw
cGVyIGhlbHBlciBtZXRob2QpCisgICAgICAgIHRvIGJsb2NrIHRoZSBiYWNrZ3JvdW5kIHRocmVh
ZCB3aGlsZSB3YWl0aW5nIGZvciB0aGUgYXN5bmMgSVBDIHRvIGNvbXBsZXRlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF93a19yZXF1aXJlc01haW5UaHJlYWRdKTogQWRkZWQuCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3drX2NhbGN1bGF0ZVBhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOmNvbXBsZXRpb25I
YW5kbGVyOl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50
Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgIFJlb3JnYW5pemUgdGhpcyBj
b2RlIHRvIHN1cHBvcnQgYm90aCBzeW5jIGFuZCBhc3luYyBmbG93cy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TKTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGaU9TKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICBTcGxpdCBgV2ViUGFnZVBy
b3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERmAgaW50byB0d28gbWV0aG9k
cywgYXMgdGhlIGZpcnN0CisgICAgICAgICJwYXJ0IiAoaS5lLiBgY29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdpT1NgKSBpcyBubyBsb25nZXIgbmVlZGVkIHdpdGggdGhpcyBuZXcgVUlLaXQgU1BJLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cDoKKyAgICAgICAgKFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS1ByaW50aW5nVmll
dyBfYXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICBIYXZlIGBXZWJQYWdlUHJv
eHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nYCB0YWtlIGEgYFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllcmAgaW5zdGVhZCBvZiBhCisgICAgICAgIGBXZWJGcmFtZVByb3h5KmAgc28gdGhhdCBtb3Jl
IGNhbGxlcnMgKGUuZy4gYEFQSTo6RnJhbWVIYW5kbGVgKSBjYW4gdXNlIGl0LgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERGVmlldyBfd2tf
cmVxdWlyZXNNYWluVGhyZWFkXSk6IEFkZGVkLgorICAgICAgICAoLVtXS1BERlZpZXcgX3drX2Nh
bGN1bGF0ZVBhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBB
ZGRlZC4KKyAgICAgICAgKC1bV0tQREZWaWV3IF93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRl
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSBtaW5vciB0d2Vha3MgdG8gZXhpc3RpbmcgY29k
ZSB0byBjb25mb3JtIHRvIGFkanVzdGVkIG1ldGhvZCBzaWduYXR1cmVzIG9mIGBfV0tXZWJWaWV3
UHJpbnRQcm92aWRlcmAuCisgICAgICAgIEJ5IHRoZSB0aW1lIGBXS1BERlZpZXdgIGlzIGFza2Vk
IHRvIHByaW50LCBpdCBzaG91bGQgYWxyZWFkeSBoYXZlIGFsbCB0aGUgZGF0YSBuZWNlc3Nhcnkg
dG8KKyAgICAgICAgZG8gc28sIHNvIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIG5vdCB1c2UgdGhlIG1h
aW4gdGhyZWFkIChzaW5jZSB0aGVyZSdzIG5vIHN5bmMgSVBDKS4KKwogMjAyMi0wMi0xNyAgRGll
Z28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFttYWNPU10gTm9u
LXVuaWZpZWQgYnVpbGQgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMjIyYTdlNzAzYmM4
MzgxMDdiZTkyMjQzOWNkYTFjNjgwMzllZTAyNi4uOTBmMTkyMjhjMzVmNTZmZDZjMmYwMzg3OTBh
N2FhMTliOTQ3MjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTEyMTgsMyArMTIxOCw3IEBA
CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMzAwMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDE2MDAwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDApCiAjZGVmaW5lIEhBVkVfU0FGRV9CUk9XU0lOR19S
RVNVTFRfREVUQUlMUyAxCiAjZW5kaWYKKworI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9VSUtJVF9C
QUNLR1JPVU5EX1RIUkVBRF9QUklOVElORyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDI4MThiZDY3Yzk4YzE2ZTdiZmY4ODk2NTRiODE1Nzdh
MjExZDRlZDAuLjk5MDc3YjUwMzdkNWFjYmU3NjMwYzEwZTA1YjczY2E5MjdhZDIyZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjcyMSw3ICsyNzIxLDcg
QEAgc3RhdGljIFByaW50SW5mbyBwcmludEluZm9Gcm9tV0tQcmludEluZm8oY29uc3QgV0tQcmlu
dEluZm8mIHByaW50SW5mbykKIHZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywg
V0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29u
dGV4dCkKIHsKICAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5j
b21wdXRlUGFnZXNGb3JQcmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmlu
dEluZm8ocHJpbnRJbmZvKSwgW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIHJlY3RzLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4pIHsKKyAgICB0b0ltcGwocGFnZVJlZikt
PmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChmcmFtZSktPmZyYW1lSUQoKSwgcHJpbnRJ
bmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIFtjb250ZXh0LCBjYWxsYmFja10oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25z
dCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luKSB7CiAgICAgICAg
IFZlY3RvcjxXS1JlY3Q+IHdrUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIHdrUmVjdHNbaV0g
PSB0b0FQSShyZWN0c1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBhNzI0NjNiODViN2FmYmEzNWZkZDg3NjdiYTdhYjUzNWZmNmMxZTRhLi4wOGUwZjdh
YWNkYmNlNzQyY2EwMTJiOWMwMzhhYjRkNTljMzBkZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTkwNzEsMTAgKzkwNzEsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmVuZFByaW50aW5nKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmlu
dGluZygpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b24pKTsKIH0KIAotdWludDY0X3QgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
ZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91Ymxl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYpPiYmIGNhbGxiYWNrKQordWludDY0X3Qg
V2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdEJveEV4dGVudCYpPiYmIGNhbGxiYWNrKQogewogICAgIG1faXNJblByaW50aW5nTW9kZSA9
IHRydWU7Ci0gICAgcmV0dXJuIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvKSwgV1RG
TW92ZShjYWxsYmFjayksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Qcmlu
dE9wZXJhdGlvbikpOworICAgIHJldHVybiBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lSUQsIHByaW50SW5mbyksIFdURk1v
dmUoY2FsbGJhY2spLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24pKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCA4ZmViYWI0YjUxNDlhZjIxYWI4YmU4NDg4YjViMzk5YzNl
YjFjMTBmLi4xNDllNDNjNzg4YzhmMjU1ZTVjZmVmNzVjNGVjMWZkN2I5NDY1M2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTQwNSwxNCArMTQwNSwxNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFBy
aW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKLSAgICB1aW50NjRfdCBjb21wdXRl
UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBkb3VibGUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik+JiYpOworICAgIHVpbnQ2NF90IGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJ
bmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mLCBkb3VibGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik+JiYpOwogICAgIHZv
aWQgZ2V0UERGRmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RmxvYXRTaXplKT4mJik7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQ
cmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRfdCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5
KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGRyYXdUb1BERihX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5Jik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3RkOjpwYWlyPHNpemVf
dCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CisjaWYgIUhBVkUoVUlLSVRfQkFD
S0dST1VORF9USFJFQURfUFJJTlRJTkcpCisgICAgc2l6ZV90IGNvbXB1dGVQYWdlc0ZvclByaW50
aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJik7CisjZW5k
aWYKKyAgICB1aW50NjRfdCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBQcmludEluZm8mLCBzaXplX3QgcGFnZUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
LmgKaW5kZXggMTA4Y2RlMjYwZWE5YzhiYjE2M2MzN2M0ZGViZDljYTZiYzI1NDg5Yy4uNzRmNmEx
YTEzZDM3OTZiNTViZWM5NzI2MGE5ODM3NjVjM2FkZWQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmgKQEAgLTM2LDYgKzM2LDgg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKGlvcyg4LjApKQogQHByb3BlcnR5IChub25hdG9taWMsIHN0
cm9uZykgX1dLRnJhbWVIYW5kbGUgKmZyYW1lVG9QcmludDsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIHNuYXBzaG90Rmlyc3RQYWdlIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKIAor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHJlcXVpcmVzTWFpblRocmVhZCBX
S19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0K
aW5kZXggOThkOGRiYjk1MmEwNjFmODllNjBkMmVkN2YwM2IzYTJiM2RiMmFlOC4uMDdlY2U1ODg1
MDc3ZTJjN2VlMjBhODc1ZjIyZThmYTc5MTkzODdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbQpAQCAtMzIsNiArMzIsNyBA
QAogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGUuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2ltcG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5
U2VtYXBob3JlLmg+CiAKIEBpbnRlcmZhY2UgVUlQcmludFBhZ2VSZW5kZXJlciAoKQogQHByb3Bl
cnR5IChub25hdG9taWMpIENHUmVjdCBwYXBlclJlY3Q7CkBAIC01NCw2ICs1NSwxNSBAQCAtICh2
b2lkKXNldEZyYW1lVG9QcmludDooX1dLRnJhbWVIYW5kbGUgKilmcmFtZVRvUHJpbnQKICAgICBf
ZnJhbWVUb1ByaW50ID0gZnJhbWVUb1ByaW50OwogfQogCisjaWYgSEFWRShVSUtJVF9CQUNLR1JP
VU5EX1RIUkVBRF9QUklOVElORykKKworLSAoQk9PTClyZXF1aXJlc01haW5UaHJlYWQKK3sKKyAg
ICByZXR1cm4gc2VsZi5fd2ViVmlldy5fcHJpbnRQcm92aWRlci5fd2tfcmVxdWlyZXNNYWluVGhy
ZWFkOworfQorCisjZW5kaWYgLy8gSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElO
RykKKwogLSAoV0tXZWJWaWV3ICopX3dlYlZpZXcKIHsKICAgICBVSVZpZXcgKnZpZXcgPSBzZWxm
LnZpZXc7CkBAIC03Miw4ICs4MiwyOCBAQCAtICh2b2lkKV9zZXRTbmFwc2hvdFBhcGVyUmVjdDoo
Q0dSZWN0KXBhcGVyUmVjdAogLSAoTlNJbnRlZ2VyKV9yZWNhbGNQYWdlQ291bnQKIHsKICAgICBf
cHJpbnRlZERvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBOU1VJbnRlZ2VyIHBhZ2VDb3VudCA9IFtz
ZWxmLl93ZWJWaWV3Ll9wcmludFByb3ZpZGVyIF93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRl
cjpzZWxmXTsKLSAgICByZXR1cm4gc3RkOjptaW48TlNVSW50ZWdlcj4ocGFnZUNvdW50LCBOU0lu
dGVnZXJNYXgpOworCisjaWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykK
KyAgICBCT09MIHNob3VsZFdhaXQgPSAhc2VsZi5yZXF1aXJlc01haW5UaHJlYWQgJiYgIWlzTWFp
blJ1bkxvb3AoKTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOworI2VuZGlmCisKKyAg
ICBOU1VJbnRlZ2VyIHJlc3VsdDsKKyAgICBbc2VsZi5fd2ViVmlldy5fcHJpbnRQcm92aWRlciBf
d2tfY2FsY3VsYXRlUGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6c2VsZiBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoWyZdIChOU1VJbnRlZ2VyIHBhZ2VDb3VudCkgeworICAgICAgICBy
ZXN1bHQgPSBwYWdlQ291bnQ7CisKKyNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BS
SU5USU5HKQorICAgICAgICBpZiAoc2hvdWxkV2FpdCkKKyAgICAgICAgICAgIHNlbWFwaG9yZS5z
aWduYWwoKTsKKyNlbmRpZgorICAgIH0pLmdldCgpXTsKKworI2lmIEhBVkUoVUlLSVRfQkFDS0dS
T1VORF9USFJFQURfUFJJTlRJTkcpCisgICAgaWYgKHNob3VsZFdhaXQpCisgICAgICAgIHNlbWFw
aG9yZS53YWl0KCk7CisjZW5kaWYKKworICAgIHJldHVybiBzdGQ6Om1pbjxOU1VJbnRlZ2VyPihy
ZXN1bHQsIE5TSW50ZWdlck1heCk7CiB9CiAKIC0gKHZvaWQpX3NldE5lZWRzUmVjYWxjCkBAIC05
MSw2ICsxMjEsMjIgQEAgLSAoQ0dSZWN0KXJlY3RGb3JQYWdlQXRJbmRleDooTlNJbnRlZ2VyKXBh
Z2VJbmRleAogCiAtICh2b2lkKWRyYXdJblJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VBdEluZGV4
OihOU0ludGVnZXIpcGFnZUluZGV4CiB7CisjaWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVB
RF9QUklOVElORykKKyAgICBpZiAoIXNlbGYucmVxdWlyZXNNYWluVGhyZWFkKSB7CisgICAgICAg
IGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJl0geworICAgICAgICAgICAgW3NlbGYgX2ludGVy
bmFsRHJhd0luUmVjdDpyZWN0IGZvclBhZ2VBdEluZGV4OnBhZ2VJbmRleF07CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBbc2VsZiBfaW50ZXJuYWxE
cmF3SW5SZWN0OnJlY3QgZm9yUGFnZUF0SW5kZXg6cGFnZUluZGV4XTsKK30KKworLSAodm9pZClf
aW50ZXJuYWxEcmF3SW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlQXRJbmRleDooTlNJbnRlZ2Vy
KXBhZ2VJbmRleAoreworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworCiAgICAgaWYgKCFf
cHJpbnRlZERvY3VtZW50KSB7CiAgICAgICAgIF9wcmludGVkRG9jdW1lbnQgPSBzZWxmLl93ZWJW
aWV3Ll9wcmludFByb3ZpZGVyLl93a19wcmludGVkRG9jdW1lbnQ7CiAgICAgICAgIGlmICghX3By
aW50ZWREb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dl
YlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9f
V0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oCmluZGV4IDhjNjM0M2JhMWNmZTZmY2M1
YjMzYzI5YTAxNDYwMDc5NjdmODJjZTcuLmRmYjdiZTRkMjg1YzIzZGIzN2E2OTgzNzRhMjE1NzFj
NzYzNGQ0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQ
cmludEZvcm1hdHRlckludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dL
V2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaApAQCAtMzcsNyArMzcsOCBAQAogQGVuZAog
CiBAcHJvdG9jb2wgX1dLV2ViVmlld1ByaW50UHJvdmlkZXIgPE5TT2JqZWN0PgotLSAoTlNVSW50
ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlciAqKXByaW50Rm9ybWF0dGVyOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBC
T09MIF93a19yZXF1aXJlc01haW5UaHJlYWQ7CistICh2b2lkKV93a19jYWxjdWxhdGVQYWdlQ291
bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGb3Jt
YXR0ZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVUludGVnZXIpKWNvbXBsZXRpb25I
YW5kbGVyOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1BERkRvY3VtZW50UmVm
IF93a19wcmludGVkRG9jdW1lbnQ7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggYWJkMzRmOGNkMDY5NzFhMjIyZDMxMWJlYjRhOTMx
YzU0YjM2YzFmZC4uNjkxZmI4Nzg4ZGJiOWYwMTM2ZDM3NWM2ODYyNDU2Yzg0Y2UzMmNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTg2MSw3
ICs4NjEsMTYgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tDb250ZW50VmlldyAoX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyKQogCi0tIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmlu
dEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGb3JtYXR0ZXIKKyNp
ZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorCistIChCT09MKV93a19y
ZXF1aXJlc01haW5UaHJlYWQKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKyNlbmRpZiAvLyBIQVZF
KFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorCistICh2b2lkKV93a19jYWxjdWxh
dGVQYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICop
cHJpbnRGb3JtYXR0ZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVUludGVnZXIpKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAgICAgaWYgKF9wZGZQcmludENhbGxiYWNrSUQpCiAgICAgICAg
IFtzZWxmIF93YWl0Rm9yRHJhd1RvUERGQ2FsbGJhY2tdOwpAQCAtODcxLDE2ICs4ODAsMjAgQEAg
LSAoTlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQ
cmludEZvcm1hdHRlciAqKXByaW50Rm8KICAgICAgICAgZnJhbWVJRCA9IGhhbmRsZS0+X2ZyYW1l
SGFuZGxlLT5mcmFtZUlEKCk7CiAgICAgZWxzZSBpZiAoYXV0byBtYWluRnJhbWUgPSBfcGFnZS0+
bWFpbkZyYW1lKCkpCiAgICAgICAgIGZyYW1lSUQgPSBtYWluRnJhbWUtPmZyYW1lSUQoKTsKLSAg
ICBlbHNlCi0gICAgICAgIHJldHVybiAwOworICAgIGVsc2UgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIFRoZSBmaXJzdCBw
YWdlIGNhbiBoYXZlIGEgc21hbGxlciBjb250ZW50IHJlY3QgdGhhbiBzdWJzZXF1ZW50IHBhZ2Vz
IGlmIGEgdG9wIGNvbnRlbnQgaW5zZXQKICAgICAvLyBpcyBzcGVjaWZpZWQuIFNpbmNlIFdlYktp
dCByZXF1aXJlcyBhIHVuaWZvcm0gY29udGVudCByZWN0IGZvciBlYWNoIHBhZ2UgZHVyaW5nIGxh
eW91dCwgdXNlCiAgICAgLy8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgZmlyc3QgYW5kIG5vbi1m
aXJzdCBwYWdlIHJlY3RzLgogICAgIC8vIEZJWE1FOiBUZWFjaCBXZWJDb3JlOjpQcmludENvbnRl
eHQgdG8gYWNjZXB0IGFuIGluaXRpYWwgY29udGVudCBvZmZzZXQgd2hlbiBwYWdpbmF0aW5nLgog
ICAgIENHUmVjdCBwcmludGluZ1JlY3QgPSBDR1JlY3RJbnRlcnNlY3Rpb24oW3ByaW50Rm9ybWF0
dGVyIF9wYWdlQ29udGVudFJlY3Q6WUVTXSwgW3ByaW50Rm9ybWF0dGVyIF9wYWdlQ29udGVudFJl
Y3Q6Tk9dKTsKLSAgICBpZiAoQ0dSZWN0SXNFbXB0eShwcmludGluZ1JlY3QpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICBpZiAoQ0dSZWN0SXNFbXB0eShwcmludGluZ1JlY3QpKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgV2Vi
S2l0OjpQcmludEluZm8gcHJpbnRJbmZvOwogICAgIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZh
Y3RvciA9IDE7CkBAIC04OTYsMTggKzkwOSwzNCBAQCAtIChOU1VJbnRlZ2VyKV93a19wYWdlQ291
bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGbwog
ICAgIHByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoID0gQ0dSZWN0R2V0V2lkdGgocHJpbnRp
bmdSZWN0KTsKICAgICBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJIZWlnaHQgPSBDR1JlY3RHZXRI
ZWlnaHQocHJpbnRpbmdSZWN0KTsKIAotICAgIGF1dG8gcmV0YWluZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpOwotICAgIGF1dG8gcGFpciA9IF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZ0Fu
ZERyYXdUb1BERihmcmFtZUlELCBwcmludEluZm8sIFtyZXRhaW5lZFNlbGZdKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkgewotICAgICAgICByZXRhaW5lZFNlbGYtPl9wZGZQ
cmludENhbGxiYWNrSUQgPSAwOwotICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICByZXR1cm47CisgICAgYXV0byBkcmF3VG9QREYgPSBbcmV0YWluZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBmcmFtZUlELCBwcmludEluZm8sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKHNpemVfdCBwYWdlQ291bnQpIG11dGFibGUgeworICAg
ICAgICAvLyBCZWdpbiBnZW5lcmF0aW5nIHRoZSBQREYgaW4gZXhwZWN0YXRpb24gb2YgYSAoZXZl
bnR1YWwpIHJlcXVlc3QgZm9yIHRoZSBkcmF3biBkYXRhLgorICAgICAgICByZXRhaW5lZFNlbGYt
Pl9wZGZQcmludENhbGxiYWNrSUQgPSByZXRhaW5lZFNlbGYtPl9wYWdlLT5kcmF3VG9QREZpT1Mo
ZnJhbWVJRCwgcHJpbnRJbmZvLCBwYWdlQ291bnQsIFtyZXRhaW5lZFNlbGYgPSBXVEZNb3ZlKHJl
dGFpbmVkU2VsZildKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkgeworICAg
ICAgICAgICAgcmV0YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxsYmFja0lEID0gMDsKKyAgICAgICAg
ICAgIGlmIChwZGZEYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byBkYXRhID0gcGRmRGF0YS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7Ci0gICAg
ICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhD
RkRhdGEoZGF0YS5nZXQoKSkpOwotICAgICAgICByZXRhaW5lZFNlbGYtPl9wcmludGVkRG9jdW1l
bnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVy
LmdldCgpKSk7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmJ1ZmZlcigpLT5jcmVh
dGVDRkRhdGEoKTsKKyAgICAgICAgICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOworICAgICAgICAgICAgcmV0
YWluZWRTZWxmLT5fcHJpbnRlZERvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRl
V2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOworICAgICAgICB9KTsKKworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihwYWdlQ291bnQpOworICAgIH07CisKKyAgICBpZiAocHJpbnRJ
bmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7CisgICAgICAgIGRyYXdUb1BERigxKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJ
TkcpCisgICAgX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lSUQsIHByaW50SW5m
bywgW2RyYXdUb1BERiA9IFdURk1vdmUoZHJhd1RvUERGKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSAvKiB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRp
bmcgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiAvKiBjb21wdXRlZFBhZ2VNYXJn
aW4gKi8pIG11dGFibGUgeworICAgICAgICBBU1NFUlQocGFnZVJlY3RzLnNpemUoKSA+PSAxKTsK
KyAgICAgICAgZHJhd1RvUERGKHBhZ2VSZWN0cy5zaXplKCkpOwogICAgIH0pOwotICAgIF9wZGZQ
cmludENhbGxiYWNrSUQgPSBwYWlyLnNlY29uZDsKLSAgICByZXR1cm4gcGFpci5maXJzdDsKKyNl
bHNlCisgICAgZHJhd1RvUERGKF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhmcmFt
ZUlkLCBwcmludEluZm8pKTsKKyNlbmRpZgogfQogCiAtIChCT09MKV93YWl0Rm9yRHJhd1RvUERG
Q2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCmluZGV4IGI5
ZTUwYTljMzI4M2NlN2FmZDEzMTk1OGVmNmQwZGFjYzFhNDAzY2QuLmUzZGE3ZTgxNGY3YTU1YjI2
NzYzNTY0MjZiOTg1MTI5Mzk2NWYwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1BERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
UERGVmlldy5tbQpAQCAtNjI5LDE2ICs2MjksMjcgQEAgLSAoQ0dQREZEb2N1bWVudFJlZilfZW5z
dXJlRG9jdW1lbnRGb3JQcmludGluZwogICAgIHJldHVybiBfZG9jdW1lbnRGb3JQcmludGluZy5n
ZXQoKTsKIH0KIAotLSAoTlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6
KF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50Rm9ybWF0dGVyCisjaWYgSEFWRShVSUtJ
VF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKworLSAoQk9PTClfd2tfcmVxdWlyZXNNYWlu
VGhyZWFkCit7CisgICAgcmV0dXJuIFlFUzsKK30KKworI2VuZGlmIC8vIEhBVkUoVUlLSVRfQkFD
S0dST1VORF9USFJFQURfUFJJTlRJTkcpCisKKy0gKHZvaWQpX3drX2NhbGN1bGF0ZVBhZ2VDb3Vu
dEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvcm1h
dHRlciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVSW50ZWdlcikpY29tcGxldGlvbkhh
bmRsZXIKIHsKICAgICBDR1BERkRvY3VtZW50UmVmIGRvY3VtZW50Rm9yUHJpbnRpbmcgPSBbc2Vs
ZiBfZW5zdXJlRG9jdW1lbnRGb3JQcmludGluZ107Ci0gICAgaWYgKCFkb2N1bWVudEZvclByaW50
aW5nKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIWRvY3VtZW50Rm9yUHJpbnRpbmcpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBzaXplX3QgcGFnZUNvdW50ID0gQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMoZG9j
dW1lbnRGb3JQcmludGluZyk7CiAgICAgaWYgKHByaW50Rm9ybWF0dGVyLnNuYXBzaG90Rmlyc3RQ
YWdlKQotICAgICAgICByZXR1cm4gc3RkOjptaW48TlNVSW50ZWdlcj4ocGFnZUNvdW50LCAxKTsK
LSAgICByZXR1cm4gcGFnZUNvdW50OworICAgICAgICBwYWdlQ291bnQgPSBzdGQ6Om1pbjxOU1VJ
bnRlZ2VyPihwYWdlQ291bnQsIDEpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHBhZ2VDb3VudCk7
CiB9CiAKIC0gKENHUERGRG9jdW1lbnRSZWYpX3drX3ByaW50ZWREb2N1bWVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMjk2ODg1MTM2
MjZkMzdlMmNkN2JiNWFlNTUwNmI3ZGMzMmU2NjFjOC4uYTkxYzY3MWM3MTNkZGM4YzVjZWZlM2Q4
MzQwODczYjQ2OTdjNDAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC0xMDI4LDIyICsxMDI4LDMyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJL
aXQ6OlRhCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0
aW9uRm9yUG90ZW50aWFsVGFwKHJlcXVlc3RJRCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwg
dmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2
ZWwpOwogfQogCi1zdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21w
dXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Y29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCisjaWYgIUhBVkUoVUlLSVRfQkFD
S0dST1VORF9USFJFQURfUFJJTlRJTkcpCisKK3NpemVfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQ
YWdlc0ZvclByaW50aW5naU9TKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbykKIHsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwcmludEluZm8uc25h
cHNob3RGaXJzdFBhZ2UsICJJZiB3ZSBhcmUganVzdCBzbmFwc2hvdHRpbmcgdGhlIGZpcnN0IHBh
Z2UsIHdlIGRvbid0IG5lZWQgYSBzeW5jaHJvbm91cyBtZXNzYWdlIHRvIGRldGVybWluZSB0aGUg
cGFnZSBjb3VudCwgd2hpY2ggaXMgMS4iKTsKKwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgewotICAgICAgICBjYWxsYmFjayh7IH0pOwotICAgICAgICByZXR1cm4geyAwLCAwIH07Cisg
ICAgICAgIGNhbGxiYWNrKDApOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgc2l6ZV90
IHBhZ2VDb3VudCA9IDA7Ci0gICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkKLSAg
ICAgICAgcGFnZUNvdW50ID0gMTsKLSAgICBlbHNlCi0gICAgICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhmcmFtZUlELCBwcmludEluZm8p
LCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1M6OlJlcGx5KHBh
Z2VDb3VudCksIFNlY29uZHM6OmluZmluaXR5KCkpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhmcmFtZUlELCBwcmludEluZm8pLCBN
ZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1M6OlJlcGx5KHBhZ2VD
b3VudCksIFNlY29uZHM6OmluZmluaXR5KCkpOworICAgIHJldHVybiBwYWdlQ291bnQ7Cit9CiAK
LSAgICBhdXRvIGNhbGxiYWNrSUQgPSBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OkRyYXdUb1BERmlPUyhmcmFtZUlELCBwcmludEluZm8sIHBhZ2VDb3VudCksIFdURk1vdmUo
Y2FsbGJhY2spKTsKLSAgICAKLSAgICByZXR1cm4geyBwYWdlQ291bnQsIGNhbGxiYWNrSUQgfTsK
KyNlbmRpZiAvLyAhSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKwordWlu
dDY0X3QgV2ViUGFnZVByb3h5OjpkcmF3VG9QREZpT1MoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQor
eworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjYWxsYmFjayh7IH0p
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1MoZnJhbWVJRCwgcHJpbnRJbmZvLCBw
YWdlQ291bnQpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRl
Z29yeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5n
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpp
bmRleCA1ZmNmYjVjMGY0MWQzYzg4OWNhNjlmNDE5MWZjM2YxYThlZmUxMjBmLi4yMzI0MWJhMjMx
ZTA0MmFlYzQyZDhjNWI0OWRkNmE2ZGFkNmFlNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgLSAoQk9PTClf
YXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0cwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2Fs
bGJhY2tDb250ZXh0PiBjb250ZXh0RGVsZXRlcihjb250ZXh0KTsKICAgICAgICAgcGFnZURpZENv
bXB1dGVQYWdlUmVjdHMocGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNv
bXB1dGVkUGFnZU1hcmdpbiwgY29udGV4dCk7CiAgICAgfTsKLSAgICBfZXhwZWN0ZWRDb21wdXRl
ZFBhZ2VzQ2FsbGJhY2sgPSBfd2ViRnJhbWUtPnBhZ2UoKS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcoX3dlYkZyYW1lLmdldCgpLCBXZWJLaXQ6OlByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uLmdl
dCgpIHByaW50SW5mb10pLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX2V4cGVjdGVkQ29tcHV0
ZWRQYWdlc0NhbGxiYWNrID0gX3dlYkZyYW1lLT5wYWdlKCktPmNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKF93ZWJGcmFtZS0+ZnJhbWVJRCgpLCBXZWJLaXQ6OlByaW50SW5mbyhbX3ByaW50T3BlcmF0
aW9uLmdldCgpIHByaW50SW5mb10pLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29udGV4dC0+
dmlldyA9IHNlbGY7CiAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IF9leHBlY3RlZENvbXB1dGVk
UGFnZXNDYWxsYmFjazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDUxMGY3NWQ2M2FhMmEwNzkwZjQzZjMwYzA0NmRjODgzYzc2MWU5ZjMuLmIxZDAy
MWJjYjMzYTQzYTVkMDM2YzAzZmU4ZjlkMTEwMjY5YjM1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwMjksNyArMTAyOSw5IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiAhSEFWRShVSUtJVF9CQUNL
R1JPVU5EX1RIUkVBRF9QUklOVElORykKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5n
aU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TRGVsYXllZFJlcGx5JiYpOworI2Vu
ZGlmCiAgICAgdm9pZCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25z
dCBQcmludEluZm8mLCBzaXplX3QsIE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1NBc3lu
Y1JlcGx5JiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE4Y2FkMDI3MTNkYjAwOTc3OGNlNjk2
NTgxNmRlMjI0MmIzZDc0NzIuLmU4MDgxN2ZmOWJhYTVkMmJjMDBiOTkxMmY2MTk0MDdjMzJhZmQz
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNDI2LDcgKzQyNiw5IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAgICAgRHJhd1JlY3RUb0ltYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qs
IFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplKSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBpbWFnZSkgQXN5bmMKICAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWlu
dDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRh
dGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiAhSEFWRShVSUtJVF9CQUNL
R1JPVU5EX1RIUkVBRF9QUklOVElORykKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZv
IHByaW50SW5mbykgLT4gKHNpemVfdCBwYWdlQ291bnQpIFN5bmNocm9ub3VzCisjZW5kaWYKICAg
ICBEcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQpIC0+IChJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNlbmRpZgogICAgIERyYXdUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+IHJlY3QpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
ODU0NDNmYzZhOTcwNTk0ODIyMmYxMDc1MWIyYzEzOGNlZjA2YzFhZi4uNjM4MDU4YzIxNGRmNDkw
ZmJhZGQwYWI2MTY0MTg0NjVmNjM1MDA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQyODgsNiArNDI4OCw4IEBAIHZv
aWQgV2ViUGFnZTo6Y2FuY2VsQXN5bmNocm9ub3VzVG91Y2hFdmVudHMoVmVjdG9yPHN0ZDo6cGFp
cjxXZWJUb3VjaEV2ZW50LCBDb21wCiB9CiAjZW5kaWYKIAorI2lmICFIQVZFKFVJS0lUX0JBQ0tH
Uk9VTkRfVEhSRUFEX1BSSU5USU5HKQorCiB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5n
aU9TOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFw
cmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UsICJJZiB3ZSBhcmUganVzdCBzbmFwc2hvdHRpbmcg
dGhlIGZpcnN0IHBhZ2UsIHdlIGRvbid0IG5lZWQgYSBzeW5jaHJvbm91cyBtZXNzYWdlIHRvIGRl
dGVybWluZSB0aGUgcGFnZSBjb3VudCwgd2hpY2ggaXMgMS4iKTsKQEAgLTQzMDEsNiArNDMwMyw4
IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAgICAgcmVwbHkocGFnZVJlY3RzLnNpemUoKSk7
CiB9CiAKKyNlbmRpZiAvLyAhSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykK
Kwogdm9pZCBXZWJQYWdlOjpkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50LCBNZXNz
YWdlczo6V2ViUGFnZTo6RHJhd1RvUERGaU9TQXN5bmNSZXBseSYmIHJlcGx5KQogewogICAgIGlm
IChwcmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UpIHsK
</data>
<flag name="commit-queue"
          id="479500"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452462</attachid>
            <date>2022-02-17 18:16:05 -0800</date>
            <delta_ts>2022-02-17 22:22:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236811-20220217191604.patch</filename>
            <type>text/plain</type>
            <size>24700</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzQ4MmYzZDA0ODAxNDk5NmZjOGU5ZjE1ZWI1ZjNjOTA4NDdiOGU5NC4uOTFkMzc0Nzcw
YzFmMDZhYzU1MGE1NmQ1OGRiZWZhYjVmMjFhYjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
Mi0wMi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lP
U10gU2FmYXJpIGNhbiBzb21ldGltZXMgaGFuZyB3aGlsZSBwcmludGluZyBkdWUgdG8gc3luYyBJ
UEMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjgx
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY0MjU3ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgbmV3IFVJS2l0IFNQSSBmb3IgYWxs
b3dpbmcgYFVJUHJpbnRGb3JtYXR0ZXJgIHRvIGJlIGNhbGxlZCBvZmYgdGhlIG1haW4gdGhyZWFk
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorICAgICAgICBBZGQgYSBgSEFWRV9V
SUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElOR2AgdG8gZ3VhcmQgdGhpcyBuZXcgYmVoYXZp
b3IuCisKIDIwMjItMDItMTcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg5OTc0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4
NTAxYTkwMWFmOGJkNzVkY2Q2MDc3YjI1M2Q4NjYzMzBjODgxNmMzLi45MmY2MTJlNTNlMmFlOGI0
YzBkNTNlZTliZjA3MzU4NjJiY2VmYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIy
LTAyLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBTYWZhcmkgY2FuIHNvbWV0aW1lcyBoYW5nIHdoaWxlIHByaW50aW5nIGR1ZSB0byBzeW5jIElQ
QworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODEx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjQyNTc4Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZG9wdCBuZXcgVUlLaXQgU1BJIGZvciBhbGxv
d2luZyBgVUlQcmludEZvcm1hdHRlcmAgdG8gYmUgY2FsbGVkIG9mZiB0aGUgbWFpbiB0aHJlYWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbToKKyAgICAgICAgKC1b
X1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIHJlcXVpcmVzTWFpblRocmVhZF0pOiBBZGRlZC4KKyAg
ICAgICAgKC1bX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIF9yZWNhbGNQYWdlQ291bnRdKToKKyAg
ICAgICAgKC1bX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIGRyYXdJblJlY3Q6Zm9yUGFnZUF0SW5k
ZXg6XSk6CisgICAgICAgICgtW19XS1dlYlZpZXdQcmludEZvcm1hdHRlciBfaW50ZXJuYWxEcmF3
SW5SZWN0OmZvclBhZ2VBdEluZGV4Ol0pOiBBZGRlZC4KKyAgICAgICAgV2hlbiBgcmVxdWlyZXNN
YWluVGhyZWFkYCBpcyBgTk9gLCB1c2UgYFdURjo6QmluYXJ5U2VtYXBob3JlYCAoYW5kIGEgd2Fw
cGVyIGhlbHBlciBtZXRob2QpCisgICAgICAgIHRvIGJsb2NrIHRoZSBiYWNrZ3JvdW5kIHRocmVh
ZCB3aGlsZSB3YWl0aW5nIGZvciB0aGUgYXN5bmMgSVBDIHRvIGNvbXBsZXRlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF93a19yZXF1aXJlc01haW5UaHJlYWRdKTogQWRkZWQuCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3drX2NhbGN1bGF0ZVBhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOmNvbXBsZXRpb25I
YW5kbGVyOl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50
Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgIFJlb3JnYW5pemUgdGhpcyBj
b2RlIHRvIHN1cHBvcnQgYm90aCBzeW5jIGFuZCBhc3luYyBmbG93cy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TKTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGaU9TKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICBTcGxpdCBgV2ViUGFnZVBy
b3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERmAgaW50byB0d28gbWV0aG9k
cywgYXMgdGhlIGZpcnN0CisgICAgICAgICJwYXJ0IiAoaS5lLiBgY29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdpT1NgKSBpcyBubyBsb25nZXIgbmVlZGVkIHdpdGggdGhpcyBuZXcgVUlLaXQgU1BJLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cDoKKyAgICAgICAgKFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS1ByaW50aW5nVmll
dyBfYXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICBIYXZlIGBXZWJQYWdlUHJv
eHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nYCB0YWtlIGEgYFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllcmAgaW5zdGVhZCBvZiBhCisgICAgICAgIGBXZWJGcmFtZVByb3h5KmAgc28gdGhhdCBtb3Jl
IGNhbGxlcnMgKGUuZy4gYEFQSTo6RnJhbWVIYW5kbGVgKSBjYW4gdXNlIGl0LgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERGVmlldyBfd2tf
cmVxdWlyZXNNYWluVGhyZWFkXSk6IEFkZGVkLgorICAgICAgICAoLVtXS1BERlZpZXcgX3drX2Nh
bGN1bGF0ZVBhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBB
ZGRlZC4KKyAgICAgICAgKC1bV0tQREZWaWV3IF93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRl
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSBtaW5vciB0d2Vha3MgdG8gZXhpc3RpbmcgY29k
ZSB0byBjb25mb3JtIHRvIGFkanVzdGVkIG1ldGhvZCBzaWduYXR1cmVzIG9mIGBfV0tXZWJWaWV3
UHJpbnRQcm92aWRlcmAuCisgICAgICAgIEJ5IHRoZSB0aW1lIGBXS1BERlZpZXdgIGlzIGFza2Vk
IHRvIHByaW50LCBpdCBzaG91bGQgYWxyZWFkeSBoYXZlIGFsbCB0aGUgZGF0YSBuZWNlc3Nhcnkg
dG8KKyAgICAgICAgZG8gc28sIHNvIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIG5vdCB1c2UgdGhlIG1h
aW4gdGhyZWFkIChzaW5jZSB0aGVyZSdzIG5vIHN5bmMgSVBDKS4KKwogMjAyMi0wMi0xNyAgRGll
Z28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFttYWNPU10gTm9u
LXVuaWZpZWQgYnVpbGQgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMjIyYTdlNzAzYmM4
MzgxMDdiZTkyMjQzOWNkYTFjNjgwMzllZTAyNi4uOTBmMTkyMjhjMzVmNTZmZDZjMmYwMzg3OTBh
N2FhMTliOTQ3MjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTEyMTgsMyArMTIxOCw3IEBA
CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMzAwMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDE2MDAwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDApCiAjZGVmaW5lIEhBVkVfU0FGRV9CUk9XU0lOR19S
RVNVTFRfREVUQUlMUyAxCiAjZW5kaWYKKworI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE2MDAwMCkKKyNkZWZpbmUgSEFWRV9VSUtJVF9C
QUNLR1JPVU5EX1RIUkVBRF9QUklOVElORyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDI4MThiZDY3Yzk4YzE2ZTdiZmY4ODk2NTRiODE1Nzdh
MjExZDRlZDAuLjk5MDc3YjUwMzdkNWFjYmU3NjMwYzEwZTA1YjczY2E5MjdhZDIyZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjcyMSw3ICsyNzIxLDcg
QEAgc3RhdGljIFByaW50SW5mbyBwcmludEluZm9Gcm9tV0tQcmludEluZm8oY29uc3QgV0tQcmlu
dEluZm8mIHByaW50SW5mbykKIHZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywg
V0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29u
dGV4dCkKIHsKICAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5j
b21wdXRlUGFnZXNGb3JQcmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmlu
dEluZm8ocHJpbnRJbmZvKSwgW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIHJlY3RzLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4pIHsKKyAgICB0b0ltcGwocGFnZVJlZikt
PmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChmcmFtZSktPmZyYW1lSUQoKSwgcHJpbnRJ
bmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIFtjb250ZXh0LCBjYWxsYmFja10oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25z
dCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luKSB7CiAgICAgICAg
IFZlY3RvcjxXS1JlY3Q+IHdrUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIHdrUmVjdHNbaV0g
PSB0b0FQSShyZWN0c1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBhNzI0NjNiODViN2FmYmEzNWZkZDg3NjdiYTdhYjUzNWZmNmMxZTRhLi4wOGUwZjdh
YWNkYmNlNzQyY2EwMTJiOWMwMzhhYjRkNTljMzBkZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTkwNzEsMTAgKzkwNzEsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmVuZFByaW50aW5nKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmlu
dGluZygpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b24pKTsKIH0KIAotdWludDY0X3QgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
ZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91Ymxl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYpPiYmIGNhbGxiYWNrKQordWludDY0X3Qg
V2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdEJveEV4dGVudCYpPiYmIGNhbGxiYWNrKQogewogICAgIG1faXNJblByaW50aW5nTW9kZSA9
IHRydWU7Ci0gICAgcmV0dXJuIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvKSwgV1RG
TW92ZShjYWxsYmFjayksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Qcmlu
dE9wZXJhdGlvbikpOworICAgIHJldHVybiBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lSUQsIHByaW50SW5mbyksIFdURk1v
dmUoY2FsbGJhY2spLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24pKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCA4ZmViYWI0YjUxNDlhZjIxYWI4YmU4NDg4YjViMzk5YzNl
YjFjMTBmLi4xNDllNDNjNzg4YzhmMjU1ZTVjZmVmNzVjNGVjMWZkN2I5NDY1M2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTQwNSwxNCArMTQwNSwxNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFBy
aW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKLSAgICB1aW50NjRfdCBjb21wdXRl
UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBkb3VibGUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik+JiYpOworICAgIHVpbnQ2NF90IGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJ
bmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mLCBkb3VibGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik+JiYpOwogICAgIHZv
aWQgZ2V0UERGRmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RmxvYXRTaXplKT4mJik7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQ
cmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRfdCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5
KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGRyYXdUb1BERihX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5Jik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3RkOjpwYWlyPHNpemVf
dCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CisjaWYgIUhBVkUoVUlLSVRfQkFD
S0dST1VORF9USFJFQURfUFJJTlRJTkcpCisgICAgc2l6ZV90IGNvbXB1dGVQYWdlc0ZvclByaW50
aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJik7CisjZW5k
aWYKKyAgICB1aW50NjRfdCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBQcmludEluZm8mLCBzaXplX3QgcGFnZUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRl
ci5tbQppbmRleCA5OGQ4ZGJiOTUyYTA2MWY4OWU2MGQyZWQ3ZjAzYjNhMmIzZGIyYWU4Li45NTIx
NTBkMDY5N2RkM2YyZWIzYjBlMWVlZjZiNjRkMzczZTZlMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZS5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CisjaW1wb3J0IDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KIAogQGludGVyZmFjZSBVSVByaW50UGFnZVJlbmRlcmVyICgpCiBA
cHJvcGVydHkgKG5vbmF0b21pYykgQ0dSZWN0IHBhcGVyUmVjdDsKQEAgLTQ0LDYgKzQ1LDE1IEBA
IEBpbXBsZW1lbnRhdGlvbiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgewogICAgIEJPT0wgX3N1
cHByZXNzUGFnZUNvdW50UmVjYWxjOwogfQogCisjaWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RI
UkVBRF9QUklOVElORykKKworLSAoQk9PTClyZXF1aXJlc01haW5UaHJlYWQKK3sKKyAgICByZXR1
cm4gc2VsZi5fd2ViVmlldy5fcHJpbnRQcm92aWRlci5fd2tfcmVxdWlyZXNNYWluVGhyZWFkOwor
fQorCisjZW5kaWYgLy8gSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKwog
LSAoX1dLRnJhbWVIYW5kbGUgKilmcmFtZVRvUHJpbnQKIHsKICAgICByZXR1cm4gX2ZyYW1lVG9Q
cmludC5nZXQoKTsKQEAgLTcyLDggKzgyLDI4IEBAIC0gKHZvaWQpX3NldFNuYXBzaG90UGFwZXJS
ZWN0OihDR1JlY3QpcGFwZXJSZWN0CiAtIChOU0ludGVnZXIpX3JlY2FsY1BhZ2VDb3VudAogewog
ICAgIF9wcmludGVkRG9jdW1lbnQgPSBudWxscHRyOwotICAgIE5TVUludGVnZXIgcGFnZUNvdW50
ID0gW3NlbGYuX3dlYlZpZXcuX3ByaW50UHJvdmlkZXIgX3drX3BhZ2VDb3VudEZvclByaW50Rm9y
bWF0dGVyOnNlbGZdOwotICAgIHJldHVybiBzdGQ6Om1pbjxOU1VJbnRlZ2VyPihwYWdlQ291bnQs
IE5TSW50ZWdlck1heCk7CisKKyNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5U
SU5HKQorICAgIEJPT0wgc2hvdWxkV2FpdCA9ICFzZWxmLnJlcXVpcmVzTWFpblRocmVhZCAmJiAh
aXNNYWluUnVuTG9vcCgpOworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CisjZW5kaWYK
KworICAgIE5TVUludGVnZXIgcmVzdWx0OworICAgIFtzZWxmLl93ZWJWaWV3Ll9wcmludFByb3Zp
ZGVyIF93a19jYWxjdWxhdGVQYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjpzZWxmIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbJl0gKE5TVUludGVnZXIgcGFnZUNvdW50KSB7CisgICAg
ICAgIHJlc3VsdCA9IHBhZ2VDb3VudDsKKworI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJF
QURfUFJJTlRJTkcpCisgICAgICAgIGlmIChzaG91bGRXYWl0KQorICAgICAgICAgICAgc2VtYXBo
b3JlLnNpZ25hbCgpOworI2VuZGlmCisgICAgfSkuZ2V0KCldOworCisjaWYgSEFWRShVSUtJVF9C
QUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKyAgICBpZiAoc2hvdWxkV2FpdCkKKyAgICAgICAg
c2VtYXBob3JlLndhaXQoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHN0ZDo6bWluPE5TVUludGVn
ZXI+KHJlc3VsdCwgTlNJbnRlZ2VyTWF4KTsKIH0KIAogLSAodm9pZClfc2V0TmVlZHNSZWNhbGMK
QEAgLTkxLDYgKzEyMSwyMiBAQCAtIChDR1JlY3QpcmVjdEZvclBhZ2VBdEluZGV4OihOU0ludGVn
ZXIpcGFnZUluZGV4CiAKIC0gKHZvaWQpZHJhd0luUmVjdDooQ0dSZWN0KXJlY3QgZm9yUGFnZUF0
SW5kZXg6KE5TSW50ZWdlcilwYWdlSW5kZXgKIHsKKyNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRf
VEhSRUFEX1BSSU5USU5HKQorICAgIGlmICghc2VsZi5yZXF1aXJlc01haW5UaHJlYWQpIHsKKyAg
ICAgICAgY2FsbE9uTWFpblJ1bkxvb3BBbmRXYWl0KFsmXSB7CisgICAgICAgICAgICBbc2VsZiBf
aW50ZXJuYWxEcmF3SW5SZWN0OnJlY3QgZm9yUGFnZUF0SW5kZXg6cGFnZUluZGV4XTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIFtzZWxmIF9pbnRl
cm5hbERyYXdJblJlY3Q6cmVjdCBmb3JQYWdlQXRJbmRleDpwYWdlSW5kZXhdOworfQorCistICh2
b2lkKV9pbnRlcm5hbERyYXdJblJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VBdEluZGV4OihOU0lu
dGVnZXIpcGFnZUluZGV4Cit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisKICAgICBp
ZiAoIV9wcmludGVkRG9jdW1lbnQpIHsKICAgICAgICAgX3ByaW50ZWREb2N1bWVudCA9IHNlbGYu
X3dlYlZpZXcuX3ByaW50UHJvdmlkZXIuX3drX3ByaW50ZWREb2N1bWVudDsKICAgICAgICAgaWYg
KCFfcHJpbnRlZERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
X1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmgKaW5kZXggOGM2MzQzYmExY2Zl
NmZjYzViMzNjMjlhMDE0NjAwNzk2N2Y4MmNlNy4uZGZiN2JlNGQyODVjMjNkYjM3YTY5ODM3NGEy
MTU3MWM3NjM0ZDRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oCkBAIC0zNyw3ICszNyw4IEBACiBA
ZW5kCiAKIEBwcm90b2NvbCBfV0tXZWJWaWV3UHJpbnRQcm92aWRlciA8TlNPYmplY3Q+Ci0tIChO
U1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50
Rm9ybWF0dGVyICopcHJpbnRGb3JtYXR0ZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgX3drX3JlcXVpcmVzTWFpblRocmVhZDsKKy0gKHZvaWQpX3drX2NhbGN1bGF0ZVBh
Z2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmlu
dEZvcm1hdHRlciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVSW50ZWdlcikpY29tcGxl
dGlvbkhhbmRsZXI7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUERGRG9jdW1l
bnRSZWYgX3drX3ByaW50ZWREb2N1bWVudDsKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBhYmQzNGY4Y2QwNjk3MWEyMjJkMzExYmVi
NGE5MzFjNTRiMzZjMWZkLi42OTFmYjg3ODhkYmI5ZjAxMzZkMzc1YzY4NjI0NTZjODRjZTMyY2I4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAt
ODYxLDcgKzg2MSwxNiBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0NvbnRlbnRWaWV3IChf
V0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIpCiAKLS0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZv
clByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvcm1hdHRl
cgorI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCisKKy0gKEJPT0wp
X3drX3JlcXVpcmVzTWFpblRocmVhZAoreworICAgIHJldHVybiBOTzsKK30KKworI2VuZGlmIC8v
IEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCisKKy0gKHZvaWQpX3drX2Nh
bGN1bGF0ZVBhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0
ZXIgKilwcmludEZvcm1hdHRlciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVSW50ZWdl
cikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBpZiAoX3BkZlByaW50Q2FsbGJhY2tJRCkKICAg
ICAgICAgW3NlbGYgX3dhaXRGb3JEcmF3VG9QREZDYWxsYmFja107CkBAIC04NzEsMTYgKzg4MCwy
MCBAQCAtIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGbwogICAgICAgICBmcmFtZUlEID0gaGFuZGxlLT5f
ZnJhbWVIYW5kbGUtPmZyYW1lSUQoKTsKICAgICBlbHNlIGlmIChhdXRvIG1haW5GcmFtZSA9IF9w
YWdlLT5tYWluRnJhbWUoKSkKICAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJhbWVJRCgp
OwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7CisgICAgZWxzZSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gVGhlIGZp
cnN0IHBhZ2UgY2FuIGhhdmUgYSBzbWFsbGVyIGNvbnRlbnQgcmVjdCB0aGFuIHN1YnNlcXVlbnQg
cGFnZXMgaWYgYSB0b3AgY29udGVudCBpbnNldAogICAgIC8vIGlzIHNwZWNpZmllZC4gU2luY2Ug
V2ViS2l0IHJlcXVpcmVzIGEgdW5pZm9ybSBjb250ZW50IHJlY3QgZm9yIGVhY2ggcGFnZSBkdXJp
bmcgbGF5b3V0LCB1c2UKICAgICAvLyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBmaXJzdCBhbmQg
bm9uLWZpcnN0IHBhZ2UgcmVjdHMuCiAgICAgLy8gRklYTUU6IFRlYWNoIFdlYkNvcmU6OlByaW50
Q29udGV4dCB0byBhY2NlcHQgYW4gaW5pdGlhbCBjb250ZW50IG9mZnNldCB3aGVuIHBhZ2luYXRp
bmcuCiAgICAgQ0dSZWN0IHByaW50aW5nUmVjdCA9IENHUmVjdEludGVyc2VjdGlvbihbcHJpbnRG
b3JtYXR0ZXIgX3BhZ2VDb250ZW50UmVjdDpZRVNdLCBbcHJpbnRGb3JtYXR0ZXIgX3BhZ2VDb250
ZW50UmVjdDpOT10pOwotICAgIGlmIChDR1JlY3RJc0VtcHR5KHByaW50aW5nUmVjdCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgIGlmIChDR1JlY3RJc0VtcHR5KHByaW50aW5nUmVjdCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm87CiAgICAgcHJpbnRJbmZvLnBhZ2VTZXR1cFNj
YWxlRmFjdG9yID0gMTsKQEAgLTg5NiwxOCArOTA5LDM0IEBAIC0gKE5TVUludGVnZXIpX3drX3Bh
Z2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmlu
dEZvCiAgICAgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyV2lkdGggPSBDR1JlY3RHZXRXaWR0aChw
cmludGluZ1JlY3QpOwogICAgIHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCA9IENHUmVj
dEdldEhlaWdodChwcmludGluZ1JlY3QpOwogCi0gICAgYXV0byByZXRhaW5lZFNlbGYgPSByZXRh
aW5QdHIoc2VsZik7Ci0gICAgYXV0byBwYWlyID0gX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50
aW5nQW5kRHJhd1RvUERGKGZyYW1lSUQsIHByaW50SW5mbywgW3JldGFpbmVkU2VsZl0oY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBwZGZEYXRhKSB7Ci0gICAgICAgIHJldGFpbmVkU2VsZi0+
X3BkZlByaW50Q2FsbGJhY2tJRCA9IDA7Ci0gICAgICAgIGlmIChwZGZEYXRhLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRyYXdUb1BERiA9IFtyZXRhaW5lZFNlbGYg
PSByZXRhaW5QdHIoc2VsZiksIGZyYW1lSUQsIHByaW50SW5mbywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc2l6ZV90IHBhZ2VDb3VudCkgbXV0YWJsZSB7
CisgICAgICAgIC8vIEJlZ2luIGdlbmVyYXRpbmcgdGhlIFBERiBpbiBleHBlY3RhdGlvbiBvZiBh
IChldmVudHVhbCkgcmVxdWVzdCBmb3IgdGhlIGRyYXduIGRhdGEuCisgICAgICAgIHJldGFpbmVk
U2VsZi0+X3BkZlByaW50Q2FsbGJhY2tJRCA9IHJldGFpbmVkU2VsZi0+X3BhZ2UtPmRyYXdUb1BE
RmlPUyhmcmFtZUlELCBwcmludEluZm8sIHBhZ2VDb3VudCwgW3JldGFpbmVkU2VsZiA9IFdURk1v
dmUocmV0YWluZWRTZWxmKV0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBwZGZEYXRhKSB7
CisgICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9wZGZQcmludENhbGxiYWNrSUQgPSAwOworICAg
ICAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsK
LSAgICAgICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRl
V2l0aENGRGF0YShkYXRhLmdldCgpKSk7Ci0gICAgICAgIHJldGFpbmVkU2VsZi0+X3ByaW50ZWRE
b2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJv
dmlkZXIuZ2V0KCkpKTsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEuYnVmZmVyKCkt
PmNyZWF0ZUNGRGF0YSgpOworICAgICAgICAgICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7CisgICAgICAgICAg
ICByZXRhaW5lZFNlbGYtPl9wcmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRD
cmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBhZ2VDb3VudCk7CisgICAgfTsKKworICAgIGlmIChw
cmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UpIHsKKyAgICAgICAgZHJhd1RvUERGKDEpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9Q
UklOVElORykKKyAgICBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWVJRCwgcHJp
bnRJbmZvLCBbZHJhd1RvUERGID0gV1RGTW92ZShkcmF3VG9QREYpXShjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIC8qIHRvdGFsU2NhbGVGYWN0b3JGb3JQ
cmludGluZyAqLywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIC8qIGNvbXB1dGVkUGFn
ZU1hcmdpbiAqLykgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChwYWdlUmVjdHMuc2l6ZSgpID49
IDEpOworICAgICAgICBkcmF3VG9QREYocGFnZVJlY3RzLnNpemUoKSk7CiAgICAgfSk7Ci0gICAg
X3BkZlByaW50Q2FsbGJhY2tJRCA9IHBhaXIuc2Vjb25kOwotICAgIHJldHVybiBwYWlyLmZpcnN0
OworI2Vsc2UKKyAgICBkcmF3VG9QREYoX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9T
KGZyYW1lSWQsIHByaW50SW5mbykpOworI2VuZGlmCiB9CiAKIC0gKEJPT0wpX3dhaXRGb3JEcmF3
VG9QREZDYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
UERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5k
ZXggYjllNTBhOWMzMjgzY2U3YWZkMTMxOTU4ZWY2ZDBkYWNjMWE0MDNjZC4uZTNkYTdlODE0Zjdh
NTViMjY3NjM1NjQyNmI5ODUxMjkzOTY1ZjA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCkBAIC02MjksMTYgKzYyOSwyNyBAQCAtIChDR1BERkRvY3VtZW50UmVm
KV9lbnN1cmVEb2N1bWVudEZvclByaW50aW5nCiAgICAgcmV0dXJuIF9kb2N1bWVudEZvclByaW50
aW5nLmdldCgpOwogfQogCi0tIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1h
dHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGb3JtYXR0ZXIKKyNpZiBIQVZF
KFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorCistIChCT09MKV93a19yZXF1aXJl
c01haW5UaHJlYWQKK3sKKyAgICByZXR1cm4gWUVTOworfQorCisjZW5kaWYgLy8gSEFWRShVSUtJ
VF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKworLSAodm9pZClfd2tfY2FsY3VsYXRlUGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50
Rm9ybWF0dGVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VJbnRlZ2VyKSljb21wbGV0
aW9uSGFuZGxlcgogewogICAgIENHUERGRG9jdW1lbnRSZWYgZG9jdW1lbnRGb3JQcmludGluZyA9
IFtzZWxmIF9lbnN1cmVEb2N1bWVudEZvclByaW50aW5nXTsKLSAgICBpZiAoIWRvY3VtZW50Rm9y
UHJpbnRpbmcpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghZG9jdW1lbnRGb3JQcmludGlu
ZykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIHNpemVfdCBwYWdlQ291bnQgPSBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdl
cyhkb2N1bWVudEZvclByaW50aW5nKTsKICAgICBpZiAocHJpbnRGb3JtYXR0ZXIuc25hcHNob3RG
aXJzdFBhZ2UpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbjxOU1VJbnRlZ2VyPihwYWdlQ291bnQs
IDEpOwotICAgIHJldHVybiBwYWdlQ291bnQ7CisgICAgICAgIHBhZ2VDb3VudCA9IHN0ZDo6bWlu
PE5TVUludGVnZXI+KHBhZ2VDb3VudCwgMSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocGFnZUNv
dW50KTsKIH0KIAogLSAoQ0dQREZEb2N1bWVudFJlZilfd2tfcHJpbnRlZERvY3VtZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAyOTY4
ODUxMzYyNmQzN2UyY2Q3YmI1YWU1NTA2YjdkYzMyZTY2MWM4Li5kOGE1ZDI5NmIwNDU0ODQ5MjVm
Mzc4NDYyZGYzNDYxN2RiYTA1NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEwMjgsMjIgKzEwMjgsMzAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFw
KFdlYktpdDo6VGEKICAgICBwYWdlQ2xpZW50KCkuaGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5m
b3JtYXRpb25Gb3JQb3RlbnRpYWxUYXAocmVxdWVzdElELCByZW5kZXJSZWN0LCBmaXRFbnRpcmVS
ZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsIG5vZGVJc1Jv
b3RMZXZlbCk7CiB9CiAKLXN0ZDo6cGFpcjxzaXplX3QsIHVpbnQ2NF90PiBXZWJQYWdlUHJveHk6
OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKKyNpZiAhSEFWRShVSUtJ
VF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKworc2l6ZV90IFdlYlBhZ2VQcm94eTo6Y29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewot
ICAgICAgICBjYWxsYmFjayh7IH0pOwotICAgICAgICByZXR1cm4geyAwLCAwIH07Ci0gICAgfQor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSwgIklm
IHdlIGFyZSBqdXN0IHNuYXBzaG90dGluZyB0aGUgZmlyc3QgcGFnZSwgd2UgZG9uJ3QgbmVlZCBh
IHN5bmNocm9ub3VzIG1lc3NhZ2UgdG8gZGV0ZXJtaW5lIHRoZSBwYWdlIGNvdW50LCB3aGljaCBp
cyAxLiIpOworCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm4g
MDsKIAogICAgIHNpemVfdCBwYWdlQ291bnQgPSAwOwotICAgIGlmIChwcmludEluZm8uc25hcHNo
b3RGaXJzdFBhZ2UpCi0gICAgICAgIHBhZ2VDb3VudCA9IDE7Ci0gICAgZWxzZQotICAgICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoZnJh
bWVJRCwgcHJpbnRJbmZvKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5naU9TOjpSZXBseShwYWdlQ291bnQpLCBTZWNvbmRzOjppbmZpbml0eSgpKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoZnJhbWVJ
RCwgcHJpbnRJbmZvKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5n
aU9TOjpSZXBseShwYWdlQ291bnQpLCBTZWNvbmRzOjppbmZpbml0eSgpKTsKKyAgICByZXR1cm4g
cGFnZUNvdW50OworfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1MoZnJhbWVJRCwgcHJpbnRJbmZvLCBwYWdl
Q291bnQpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgCi0gICAgcmV0dXJuIHsgcGFnZUNvdW50
LCBjYWxsYmFja0lEIH07CisjZW5kaWYgLy8gIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURf
UFJJTlRJTkcpCisKK3VpbnQ2NF90IFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGaU9TKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgc2l6ZV90IHBhZ2VD
b3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgcmV0dXJuIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
RHJhd1RvUERGaU9TKGZyYW1lSUQsIHByaW50SW5mbywgcGFnZUNvdW50KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGVudFNpemVDYXRl
Z29yeURpZENoYW5nZShjb25zdCBTdHJpbmcmIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KaW5kZXggNWZjZmI1YzBm
NDFkM2M4ODljYTY5ZjQxOTFmYzNmMWE4ZWZlMTIwZi4uMjMyNDFiYTIzMWUwNDJhZWM0MmQ4YzVi
NDlkZDZhNmRhZDZhZTViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLUHJpbnRpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1By
aW50aW5nVmlldy5tbQpAQCAtMzYyLDcgKzM2Miw3IEBAIC0gKEJPT0wpX2Fza1BhZ2VUb0NvbXB1
dGVQYWdlUmVjdHMKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0NhbGxiYWNrQ29udGV4dD4g
Y29udGV4dERlbGV0ZXIoY29udGV4dCk7CiAgICAgICAgIHBhZ2VEaWRDb21wdXRlUGFnZVJlY3Rz
KHBhZ2VSZWN0cywgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb21wdXRlZFBhZ2VNYXJn
aW4sIGNvbnRleHQpOwogICAgIH07Ci0gICAgX2V4cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNr
ID0gX3dlYkZyYW1lLT5wYWdlKCktPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKF93ZWJGcmFtZS5n
ZXQoKSwgV2ViS2l0OjpQcmludEluZm8oW19wcmludE9wZXJhdGlvbi5nZXQoKSBwcmludEluZm9d
KSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIF9leHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFj
ayA9IF93ZWJGcmFtZS0+cGFnZSgpLT5jb21wdXRlUGFnZXNGb3JQcmludGluZyhfd2ViRnJhbWUt
PmZyYW1lSUQoKSwgV2ViS2l0OjpQcmludEluZm8oW19wcmludE9wZXJhdGlvbi5nZXQoKSBwcmlu
dEluZm9dKSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwog
ICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2s7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA1MTBm
NzVkNjNhYTJhMDc5MGY0M2YzMGMwNDZkYzg4M2M3NjFlOWYzLi5iMWQwMjFiY2IzM2E0M2E1ZDAz
NmMwM2ZlOGY5ZDExMDI2OWIzNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC0xMDI5LDcgKzEwMjksOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURf
UFJJTlRJTkcpCiAgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21w
dXRlUGFnZXNGb3JQcmludGluZ2lPU0RlbGF5ZWRSZXBseSYmKTsKKyNlbmRpZgogICAgIHZvaWQg
ZHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwg
c2l6ZV90LCBNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGaU9TQXN5bmNSZXBseSYmKTsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCAxOGNhZDAyNzEzZGIwMDk3NzhjZTY5NjU4MTZkZTIyNDJiM2Q3
NDcyLi5lODA4MTdmZjliYWE1ZDJiYzAwYjk5MTJmNjE5NDA3YzMyYWZkM2ZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTQyNiw3ICs0MjYsOSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIERyYXdSZWN0
VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRT
aXplIGltYWdlU2l6ZSkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2Up
IEFzeW5jCiAgICAgRHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1
aW50MzJfdCBjb3VudCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURf
UFJJTlRJTkcpCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+
IChzaXplX3QgcGFnZUNvdW50KSBTeW5jaHJvbm91cworI2VuZGlmCiAgICAgRHJhd1RvUERGaU9T
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludElu
Zm8gcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEpIEFzeW5jCiAjZW5kaWYKICAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAo
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDg1NDQzZmM2YTk3MDU5
NDgyMjJmMTA3NTFiMmMxMzhjZWYwNmMxYWYuLjYzODA1OGMyMTRkZjQ5MGZiYWRkMGFiNjE2NDE4
NDY1ZjYzNTAwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Mjg4LDYgKzQyODgsOCBAQCB2b2lkIFdlYlBhZ2U6OmNh
bmNlbEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzKFZlY3RvcjxzdGQ6OnBhaXI8V2ViVG91Y2hFdmVu
dCwgQ29tcAogfQogI2VuZGlmCiAKKyNpZiAhSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9Q
UklOVElORykKKwogdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUzo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcHJpbnRJbmZvLnNuYXBz
aG90Rmlyc3RQYWdlLCAiSWYgd2UgYXJlIGp1c3Qgc25hcHNob3R0aW5nIHRoZSBmaXJzdCBwYWdl
LCB3ZSBkb24ndCBuZWVkIGEgc3luY2hyb25vdXMgbWVzc2FnZSB0byBkZXRlcm1pbmUgdGhlIHBh
Z2UgY291bnQsIHdoaWNoIGlzIDEuIik7CkBAIC00MzAxLDYgKzQzMDMsOCBAQCB2b2lkIFdlYlBh
Z2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdAogICAgIHJlcGx5KHBhZ2VSZWN0cy5zaXplKCkpOwogfQogCisjZW5kaWYg
Ly8gIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCisKIHZvaWQgV2ViUGFn
ZTo6ZHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQ
cmludEluZm8mIHByaW50SW5mbywgc2l6ZV90IHBhZ2VDb3VudCwgTWVzc2FnZXM6OldlYlBhZ2U6
OkRyYXdUb1BERmlPU0FzeW5jUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAocHJpbnRJbmZvLnNu
YXBzaG90Rmlyc3RQYWdlKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452481</attachid>
            <date>2022-02-17 22:22:54 -0800</date>
            <delta_ts>2022-02-18 13:32:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236811-20220217232253.patch</filename>
            <type>text/plain</type>
            <size>21804</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODUwMWE5MDFhZjhiZDc1ZGNkNjA3N2IyNTNkODY2MzMwYzg4MTZjMy4uM2Zi
YzBlODVjZDg4NzM0NzJmMTQwNDkxMGQ5ZTExOTc2MTVkNjllZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MSBAQAorMjAyMi0wMi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU10gU2FmYXJpIGNhbiBzb21ldGltZXMgaGFuZyB3aGlsZSBwcmludGluZyBk
dWUgdG8gc3luYyBJUEMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNjgxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY0MjU3ODM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvX1dL
V2ViVmlld1ByaW50Rm9ybWF0dGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL19XS1dlYlZpZXdQ
cmludEZvcm1hdHRlckludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL19XS1dlYlZpZXdQ
cmludEZvcm1hdHRlci5tbToKKyAgICAgICAgKC1bX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIHJl
cXVpcmVzTWFpblRocmVhZF0pOiBBZGRlZC4KKyAgICAgICAgQWRvcHQgbmV3IFVJS2l0IFNQSSBm
b3IgYWxsb3dpbmcgYFVJUHJpbnRGb3JtYXR0ZXJgIHRvIGJlIGNhbGxlZCBvZmYgdGhlIG1haW4g
dGhyZWFkLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcm9jZXNzRGlkRXhpdF0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF93a19wcmludEZvcm1hdHRlclJlcXVpcmVzTWFpblRocmVhZF0pOiBBZGRlZC4K
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dhaXRGb3JEcmF3VG9QREZDYWxsYmFja0lm
TmVlZGVkOl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcHJpbnRlZERv
Y3VtZW50Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93YWl0Rm9yRHJhd1RvUERGQ2Fs
bGJhY2s6XSk6IERlbGV0ZWQuCisgICAgICAgIFJlb3JnYW5pemUgdGhpcyBjb2RlIHRvIHN1cHBv
cnQgYm90aCBzeW5jIGFuZCBhc3luYyBmbG93cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1
dGVQYWdlc0ZvclByaW50aW5naU9TKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZHJhd1RvUERGaU9TKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICBTcGxpdCBgV2ViUGFnZVByb3h5Ojpjb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERmAgaW50byB0d28gbWV0aG9kcywgYXMgdGhlIGZp
cnN0CisgICAgICAgICJwYXJ0IiAoaS5lLiBgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1NgKSBp
cyBubyBsb25nZXIgbmVlZGVkIHdpdGggdGhpcyBuZXcgVUlLaXQgU1BJLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAg
KFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRv
Q29tcHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICBIYXZlIGBXZWJQYWdlUHJveHk6OmNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nYCB0YWtlIGEgYFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcmAgaW5zdGVh
ZCBvZiBhCisgICAgICAgIGBXZWJGcmFtZVByb3h5KmAgc28gdGhhdCBtb3JlIGNhbGxlcnMgKGUu
Zy4gYEFQSTo6RnJhbWVIYW5kbGVgKSBjYW4gdXNlIGl0LgorCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERGVmlldyBfd2tfcHJpbnRGb3JtYXR0
ZXJSZXF1aXJlc01haW5UaHJlYWRdKTogQWRkZWQuCisgICAgICAgIEJ5IHRoZSB0aW1lIGBXS1BE
RlZpZXdgIGlzIGFza2VkIHRvIHByaW50LCBpdCBzaG91bGQgYWxyZWFkeSBoYXZlIGFsbCB0aGUg
ZGF0YSBuZWNlc3NhcnkgdG8KKyAgICAgICAgZG8gc28sIHNvIHRoZXJlJ3Mgbm8gcmVhc29uIHRv
IG5vdCB1c2UgdGhlIG1haW4gdGhyZWFkIChzaW5jZSB0aGVyZSdzIG5vIHN5bmMgSVBDKS4KKwog
MjAyMi0wMi0xNyAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFttYWNPU10gTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDI4MThiZDY3Yzk4YzE2ZTdiZmY4ODk2NTRiODE1Nzdh
MjExZDRlZDAuLjk5MDc3YjUwMzdkNWFjYmU3NjMwYzEwZTA1YjczY2E5MjdhZDIyZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjcyMSw3ICsyNzIxLDcg
QEAgc3RhdGljIFByaW50SW5mbyBwcmludEluZm9Gcm9tV0tQcmludEluZm8oY29uc3QgV0tQcmlu
dEluZm8mIHByaW50SW5mbykKIHZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywg
V0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29u
dGV4dCkKIHsKICAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5j
b21wdXRlUGFnZXNGb3JQcmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmlu
dEluZm8ocHJpbnRJbmZvKSwgW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIHJlY3RzLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4pIHsKKyAgICB0b0ltcGwocGFnZVJlZikt
PmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChmcmFtZSktPmZyYW1lSUQoKSwgcHJpbnRJ
bmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIFtjb250ZXh0LCBjYWxsYmFja10oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25z
dCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luKSB7CiAgICAgICAg
IFZlY3RvcjxXS1JlY3Q+IHdrUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIHdrUmVjdHNbaV0g
PSB0b0FQSShyZWN0c1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBhNzI0NjNiODViN2FmYmEzNWZkZDg3NjdiYTdhYjUzNWZmNmMxZTRhLi4wOGUwZjdh
YWNkYmNlNzQyY2EwMTJiOWMwMzhhYjRkNTljMzBkZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTkwNzEsMTAgKzkwNzEsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmVuZFByaW50aW5nKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmlu
dGluZygpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b24pKTsKIH0KIAotdWludDY0X3QgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
ZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91Ymxl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYpPiYmIGNhbGxiYWNrKQordWludDY0X3Qg
V2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdEJveEV4dGVudCYpPiYmIGNhbGxiYWNrKQogewogICAgIG1faXNJblByaW50aW5nTW9kZSA9
IHRydWU7Ci0gICAgcmV0dXJuIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvKSwgV1RG
TW92ZShjYWxsYmFjayksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Qcmlu
dE9wZXJhdGlvbikpOworICAgIHJldHVybiBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lSUQsIHByaW50SW5mbyksIFdURk1v
dmUoY2FsbGJhY2spLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24pKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCA4ZmViYWI0YjUxNDlhZjIxYWI4YmU4NDg4YjViMzk5YzNl
YjFjMTBmLi4xNDllNDNjNzg4YzhmMjU1ZTVjZmVmNzVjNGVjMWZkN2I5NDY1M2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTQwNSwxNCArMTQwNSwxNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFBy
aW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKLSAgICB1aW50NjRfdCBjb21wdXRl
UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBkb3VibGUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik+JiYpOworICAgIHVpbnQ2NF90IGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJ
bmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mLCBkb3VibGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik+JiYpOwogICAgIHZv
aWQgZ2V0UERGRmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RmxvYXRTaXplKT4mJik7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQ
cmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRfdCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5
KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2b2lkIGRyYXdUb1BERihX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5Jik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3RkOjpwYWlyPHNpemVf
dCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CisjaWYgIUhBVkUoVUlLSVRfQkFD
S0dST1VORF9USFJFQURfUFJJTlRJTkcpCisgICAgc2l6ZV90IGNvbXB1dGVQYWdlc0ZvclByaW50
aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJik7CisjZW5k
aWYKKyAgICB1aW50NjRfdCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBQcmludEluZm8mLCBzaXplX3QgcGFnZUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRl
ci5tbQppbmRleCA5OGQ4ZGJiOTUyYTA2MWY4OWU2MGQyZWQ3ZjAzYjNhMmIzZGIyYWU4Li41YzE0
NzVmZTMxYzJmMTk1YTljYjE0YTZjMjFlYjU4YmY3MjNmZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCkBAIC00NCw2ICs0
NCwxNSBAQCBAaW1wbGVtZW50YXRpb24gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIHsKICAgICBC
T09MIF9zdXBwcmVzc1BhZ2VDb3VudFJlY2FsYzsKIH0KIAorI2lmIEhBVkUoVUlLSVRfQkFDS0dS
T1VORF9USFJFQURfUFJJTlRJTkcpCisKKy0gKEJPT0wpcmVxdWlyZXNNYWluVGhyZWFkCit7Cisg
ICAgcmV0dXJuIHNlbGYuX3dlYlZpZXcuX3ByaW50UHJvdmlkZXIuX3drX3ByaW50Rm9ybWF0dGVy
UmVxdWlyZXNNYWluVGhyZWFkOworfQorCisjZW5kaWYgLy8gSEFWRShVSUtJVF9CQUNLR1JPVU5E
X1RIUkVBRF9QUklOVElORykKKwogLSAoX1dLRnJhbWVIYW5kbGUgKilmcmFtZVRvUHJpbnQKIHsK
ICAgICByZXR1cm4gX2ZyYW1lVG9QcmludC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oCmluZGV4
IDhjNjM0M2JhMWNmZTZmY2M1YjMzYzI5YTAxNDYwMDc5NjdmODJjZTcuLjdjZDM1YzBmZDg0Y2Nh
YzkzNjZkYWM0MzUwODA1ODc3ODRiMDJmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaApAQCAtMzcs
NiArMzcsOSBAQAogQGVuZAogCiBAcHJvdG9jb2wgX1dLV2ViVmlld1ByaW50UHJvdmlkZXIgPE5T
T2JqZWN0PgorI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3drX3ByaW50Rm9ybWF0dGVyUmVxdWly
ZXNNYWluVGhyZWFkOworI2VuZGlmCiAtIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmlu
dEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGb3JtYXR0ZXI7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUERGRG9jdW1lbnRSZWYgX3drX3ByaW50
ZWREb2N1bWVudDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcubW0KaW5kZXggYWJkMzRmOGNkMDY5NzFhMjIyZDMxMWJlYjRhOTMxYzU0YjM2YzFmZC4u
N2Q4OTE4NDcwZWFjOGJlYzZhMzUzZDBkYzNhMGZjNDJiOGZhZTIxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTcwLDYgKzcwLDcgQEAKICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3NDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorI2lt
cG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAjaW1wb3J0ICJBcHBLaXRTb2Z0
TGluay5oIgogCiAKQEAgLTE0Nyw2ICsxNDgsOSBAQCBAaW1wbGVtZW50YXRpb24gV0tDb250ZW50
VmlldyB7CiAgICAgUmV0YWluUHRyPE5TVW5kb01hbmFnZXI+IF91bmRvTWFuYWdlcjsKICAgICBS
ZXRhaW5QdHI8V0tRdWlya3lOU1VuZG9NYW5hZ2VyPiBfcXVpcmt5VW5kb01hbmFnZXI7CiAKKyNp
ZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorICAgIEJpbmFyeVNlbWFw
aG9yZSBfcGRmUHJpbnRDb21wbGV0aW9uU2VtYXBob3JlOworI2VuZGlmCiAgICAgdWludDY0X3Qg
X3BkZlByaW50Q2FsbGJhY2tJRDsKICAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4gX3By
aW50ZWREb2N1bWVudDsKICAgICBWZWN0b3I8UmV0YWluUHRyPE5TVVJMPj4gX3RlbXBvcmFyeVVS
THNUb0RlbGV0ZVdoZW5EZWFsbG9jYXRlZDsKQEAgLTY4Nyw2ICs2OTEsMTAgQEAgLSAodm9pZClf
cHJvY2Vzc0RpZEV4aXQKICAgICBbc2VsZiBfcmVtb3ZlVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmll
d0ZvcldlYlByb2Nlc3NdOwogI2VuZGlmCiAKKyNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhS
RUFEX1BSSU5USU5HKQorICAgIGlmIChfcGRmUHJpbnRDYWxsYmFja0lEKQorICAgICAgICBfcGRm
UHJpbnRDb21wbGV0aW9uU2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCiAgICAgX3BkZlByaW50
Q2FsbGJhY2tJRCA9IDA7CiB9CiAKQEAgLTg2MSwxMCArODY5LDIyIEBAIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIFdLQ29udGVudFZpZXcgKF9XS1dlYlZpZXdQcmludEZvcm1hdHRlcikKIAorI2lm
IEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCisKKy0gKEJPT0wpX3drX3By
aW50Rm9ybWF0dGVyUmVxdWlyZXNNYWluVGhyZWFkCit7CisgICAgcmV0dXJuIE5POworfQorCisj
ZW5kaWYgLy8gSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKwogLSAoTlNV
SW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZv
cm1hdHRlciAqKXByaW50Rm9ybWF0dGVyCiB7Ci0gICAgaWYgKF9wZGZQcmludENhbGxiYWNrSUQp
Ci0gICAgICAgIFtzZWxmIF93YWl0Rm9yRHJhd1RvUERGQ2FsbGJhY2tdOworI2lmIEhBVkUoVUlL
SVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCisgICAgQVNTRVJUKCFpc01haW5SdW5Mb29w
KCkpOworI2VuZGlmCisKKyAgICBbc2VsZiBfd2FpdEZvckRyYXdUb1BERkNhbGxiYWNrSWZOZWVk
ZWRdOwogCiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CiAgICAgaWYgKF9X
S0ZyYW1lSGFuZGxlICpoYW5kbGUgPSBwcmludEZvcm1hdHRlci5mcmFtZVRvUHJpbnQpCkBAIC04
OTYsMzUgKzkxNiw3MyBAQCAtIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1h
dHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGbwogICAgIHByaW50SW5mby5h
dmFpbGFibGVQYXBlcldpZHRoID0gQ0dSZWN0R2V0V2lkdGgocHJpbnRpbmdSZWN0KTsKICAgICBw
cmludEluZm8uYXZhaWxhYmxlUGFwZXJIZWlnaHQgPSBDR1JlY3RHZXRIZWlnaHQocHJpbnRpbmdS
ZWN0KTsKIAotICAgIGF1dG8gcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpOwotICAgIGF1
dG8gcGFpciA9IF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihmcmFt
ZUlELCBwcmludEluZm8sIFtyZXRhaW5lZFNlbGZdKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgcGRmRGF0YSkgewotICAgICAgICByZXRhaW5lZFNlbGYtPl9wZGZQcmludENhbGxiYWNrSUQg
PSAwOwotICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47
CisgICAgc2l6ZV90IHJlc3VsdDsKIAotICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmJ1ZmZl
cigpLT5jcmVhdGVDRkRhdGEoKTsKLSAgICAgICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7Ci0gICAgICAgIHJl
dGFpbmVkU2VsZi0+X3ByaW50ZWREb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0
ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKLSAgICB9KTsKLSAgICBfcGRmUHJp
bnRDYWxsYmFja0lEID0gcGFpci5zZWNvbmQ7Ci0gICAgcmV0dXJuIHBhaXIuZmlyc3Q7CisgICAg
YXV0byBkcmF3VG9QREYgPSBbZnJhbWVJRCwgcHJpbnRJbmZvLCAmcmVzdWx0LCByZXRhaW5lZFNl
bGYgPSByZXRhaW5QdHIoc2VsZildKHNpemVfdCBwYWdlQ291bnQpIG11dGFibGUgeworICAgICAg
ICAvLyBCZWdpbiBnZW5lcmF0aW5nIHRoZSBQREYgaW4gZXhwZWN0YXRpb24gb2YgYSAoZXZlbnR1
YWwpIHJlcXVlc3QgZm9yIHRoZSBkcmF3biBkYXRhLgorICAgICAgICByZXRhaW5lZFNlbGYtPl9w
ZGZQcmludENhbGxiYWNrSUQgPSByZXRhaW5lZFNlbGYtPl9wYWdlLT5kcmF3VG9QREZpT1MoZnJh
bWVJRCwgcHJpbnRJbmZvLCBwYWdlQ291bnQsIFtyZXRhaW5lZFNlbGYgPSBXVEZNb3ZlKHJldGFp
bmVkU2VsZildKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkgeworICAgICAg
ICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldGFpbmVkU2Vs
Zi0+X3ByaW50ZWREb2N1bWVudCA9IG51bGxwdHI7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICByZXRhaW5l
ZFNlbGYtPl9wcmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRo
UHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CisgICAgICAgICAgICB9CisKKyNpZiBIQVZF
KFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorICAgICAgICAgICAgcmV0YWluZWRT
ZWxmLT5fcGRmUHJpbnRDb21wbGV0aW9uU2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCisgICAg
ICAgICAgICByZXRhaW5lZFNlbGYtPl9wZGZQcmludENhbGxiYWNrSUQgPSAwOworICAgICAgICB9
KTsKKworICAgICAgICByZXN1bHQgPSBwYWdlQ291bnQ7CisgICAgfTsKKworICAgIGlmIChwcmlu
dEluZm8uc25hcHNob3RGaXJzdFBhZ2UpCisgICAgICAgIGRyYXdUb1BERigxKTsKKyAgICBlbHNl
IHsKKyNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorICAgICAgICBC
aW5hcnlTZW1hcGhvcmUgY29tcHV0ZVBhZ2VzU2VtYXBob3JlOworICAgICAgICBjYWxsT25NYWlu
UnVuTG9vcChbZnJhbWVJRCwgcHJpbnRJbmZvLCAmY29tcHV0ZVBhZ2VzU2VtYXBob3JlLCByZXRh
aW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGRyYXdUb1BERiA9IFdURk1vdmUoZHJhd1RvUERG
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJldGFpbmVkU2VsZi0+X3BhZ2UtPmNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nKGZyYW1lSUQsIHByaW50SW5mbywgWyZjb21wdXRlUGFnZXNTZW1hcGhv
cmUsIGRyYXdUb1BERiA9IFdURk1vdmUoZHJhd1RvUERGKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSAvKiB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRp
bmcgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiAvKiBjb21wdXRlZFBhZ2VNYXJn
aW4gKi8pIG11dGFibGUgeworICAgICAgICAgICAgICAgIEFTU0VSVChwYWdlUmVjdHMuc2l6ZSgp
ID49IDEpOworICAgICAgICAgICAgICAgIGRyYXdUb1BERihwYWdlUmVjdHMuc2l6ZSgpKTsKKwor
ICAgICAgICAgICAgICAgIGNvbXB1dGVQYWdlc1NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICAgICAgY29tcHV0ZVBhZ2VzU2VtYXBob3JlLndhaXQo
KTsKKyNlbHNlCisgICAgICAgIGRyYXdUb1BERihfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdpT1MoZnJhbWVJRCwgcHJpbnRJbmZvKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi0tIChCT09MKV93YWl0Rm9yRHJhd1RvUERGQ2FsbGJhY2sKKy0gKEJPT0wp
X3dhaXRGb3JEcmF3VG9QREZDYWxsYmFja0lmTmVlZGVkCiB7Ci0gICAgQVNTRVJUKF9wZGZQcmlu
dENhbGxiYWNrSUQpOwotICAgIGlmICghX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndh
aXRGb3JBc3luY0NhbGxiYWNrQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFn
ZTo6RHJhd1RvUERGaU9TPihzdGQ6OmV4Y2hhbmdlKF9wZGZQcmludENhbGxiYWNrSUQsIDApLCBT
ZWNvbmRzOjppbmZpbml0eSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhdXRv
IGNhbGxiYWNrSUQgPSBzdGQ6OmV4Y2hhbmdlKF9wZGZQcmludENhbGxiYWNrSUQsIDApKSB7Cisj
aWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKyAgICAgICAgQVNTRVJU
KCFpc01haW5SdW5Mb29wKCkpOworICAgICAgICBfcGRmUHJpbnRDb21wbGV0aW9uU2VtYXBob3Jl
LndhaXQoKTsKKyNlbHNlCisgICAgICAgIGlmICghX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9u
KCktPndhaXRGb3JBc3luY0NhbGxiYWNrQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6
V2ViUGFnZTo6RHJhd1RvUERGaU9TPihjYWxsYmFja0lELCBTZWNvbmRzOjppbmZpbml0eSgpKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KICAgICBBU1NFUlQoIV9w
ZGZQcmludENhbGxiYWNrSUQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiAtIChDR1BERkRvY3Vt
ZW50UmVmKV93a19wcmludGVkRG9jdW1lbnQKIHsKLSAgICBpZiAoX3BkZlByaW50Q2FsbGJhY2tJ
RCkgewotICAgICAgICBpZiAoIVtzZWxmIF93YWl0Rm9yRHJhd1RvUERGQ2FsbGJhY2tdKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VO
RF9USFJFQURfUFJJTlRJTkcpCisgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOworI2VuZGlm
CisKKyAgICBpZiAoIVtzZWxmIF93YWl0Rm9yRHJhd1RvUERGQ2FsbGJhY2tJZk5lZWRlZF0pCisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIF9wcmludGVkRG9jdW1lbnQuZ2V0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBiOWU1
MGE5YzMyODNjZTdhZmQxMzE5NThlZjZkMGRhY2MxYTQwM2NkLi4xNzIxMjcwZDAwNjZiNGI5ZTE5
OTExNGVlNzM3YzBlM2NlYTc5ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BE
RlZpZXcubW0KQEAgLTYyOSw2ICs2MjksMTUgQEAgLSAoQ0dQREZEb2N1bWVudFJlZilfZW5zdXJl
RG9jdW1lbnRGb3JQcmludGluZwogICAgIHJldHVybiBfZG9jdW1lbnRGb3JQcmludGluZy5nZXQo
KTsKIH0KIAorI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCisKKy0g
KEJPT0wpX3drX3ByaW50Rm9ybWF0dGVyUmVxdWlyZXNNYWluVGhyZWFkCit7CisgICAgcmV0dXJu
IFlFUzsKK30KKworI2VuZGlmIC8vIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJ
TkcpCisKIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tX
ZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvcm1hdHRlcgogewogICAgIENHUERGRG9jdW1l
bnRSZWYgZG9jdW1lbnRGb3JQcmludGluZyA9IFtzZWxmIF9lbnN1cmVEb2N1bWVudEZvclByaW50
aW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CmluZGV4IDI5Njg4NTEzNjI2ZDM3ZTJjZDdiYjVhZTU1MDZiN2RjMzJlNjYxYzguLmQ4YTVkMjk2
YjA0NTQ4NDkyNWYzNzg0NjJkZjM0NjE3ZGJhMDU0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTAyOCwyMiArMTAyOCwzMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQ
b3RlbnRpYWxUYXAoV2ViS2l0OjpUYQogICAgIHBhZ2VDbGllbnQoKS5oYW5kbGVTbWFydE1hZ25p
ZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChyZXF1ZXN0SUQsIHJlbmRlclJlY3Qs
IGZpdEVudGlyZVJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2Fs
ZSwgbm9kZUlzUm9vdExldmVsKTsKIH0KIAotc3RkOjpwYWlyPHNpemVfdCwgdWludDY0X3Q+IFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQorI2lm
ICFIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorCitzaXplX3QgV2ViUGFn
ZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrKHsgfSk7Ci0gICAgICAgIHJldHVybiB7IDAsIDAg
fTsKLSAgICB9CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcHJpbnRJbmZvLnNuYXBzaG90Rmly
c3RQYWdlLCAiSWYgd2UgYXJlIGp1c3Qgc25hcHNob3R0aW5nIHRoZSBmaXJzdCBwYWdlLCB3ZSBk
b24ndCBuZWVkIGEgc3luY2hyb25vdXMgbWVzc2FnZSB0byBkZXRlcm1pbmUgdGhlIHBhZ2UgY291
bnQsIHdoaWNoIGlzIDEuIik7CisKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAg
ICAgIHJldHVybiAwOwogCiAgICAgc2l6ZV90IHBhZ2VDb3VudCA9IDA7Ci0gICAgaWYgKHByaW50
SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkKLSAgICAgICAgcGFnZUNvdW50ID0gMTsKLSAgICBlbHNl
Ci0gICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmlu
dGluZ2lPUyhmcmFtZUlELCBwcmludEluZm8pLCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdpT1M6OlJlcGx5KHBhZ2VDb3VudCksIFNlY29uZHM6OmluZmluaXR5KCkp
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGlu
Z2lPUyhmcmFtZUlELCBwcmludEluZm8pLCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmdpT1M6OlJlcGx5KHBhZ2VDb3VudCksIFNlY29uZHM6OmluZmluaXR5KCkpOwor
ICAgIHJldHVybiBwYWdlQ291bnQ7Cit9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BERmlPUyhmcmFtZUlELCBwcmlu
dEluZm8sIHBhZ2VDb3VudCksIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICAKLSAgICByZXR1cm4g
eyBwYWdlQ291bnQsIGNhbGxiYWNrSUQgfTsKKyNlbmRpZiAvLyAhSEFWRShVSUtJVF9CQUNLR1JP
VU5EX1RIUkVBRF9QUklOVElORykKKwordWludDY0X3QgV2ViUGFnZVByb3h5OjpkcmF3VG9QREZp
T1MoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBz
aXplX3QgcGFnZUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEcmF3VG9QREZpT1MoZnJhbWVJRCwgcHJpbnRJbmZvLCBwYWdlQ291bnQpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250
ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29y
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRl
eCA1ZmNmYjVjMGY0MWQzYzg4OWNhNjlmNDE5MWZjM2YxYThlZmUxMjBmLi4yMzI0MWJhMjMxZTA0
MmFlYzQyZDhjNWI0OWRkNmE2ZGFkNmFlNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgLSAoQk9PTClfYXNr
UGFnZVRvQ29tcHV0ZVBhZ2VSZWN0cwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJh
Y2tDb250ZXh0PiBjb250ZXh0RGVsZXRlcihjb250ZXh0KTsKICAgICAgICAgcGFnZURpZENvbXB1
dGVQYWdlUmVjdHMocGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbXB1
dGVkUGFnZU1hcmdpbiwgY29udGV4dCk7CiAgICAgfTsKLSAgICBfZXhwZWN0ZWRDb21wdXRlZFBh
Z2VzQ2FsbGJhY2sgPSBfd2ViRnJhbWUtPnBhZ2UoKS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmco
X3dlYkZyYW1lLmdldCgpLCBXZWJLaXQ6OlByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uLmdldCgp
IHByaW50SW5mb10pLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX2V4cGVjdGVkQ29tcHV0ZWRQ
YWdlc0NhbGxiYWNrID0gX3dlYkZyYW1lLT5wYWdlKCktPmNvbXB1dGVQYWdlc0ZvclByaW50aW5n
KF93ZWJGcmFtZS0+ZnJhbWVJRCgpLCBXZWJLaXQ6OlByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9u
LmdldCgpIHByaW50SW5mb10pLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29udGV4dC0+dmll
dyA9IHNlbGY7CiAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IF9leHBlY3RlZENvbXB1dGVkUGFn
ZXNDYWxsYmFjazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDUxMGY3NWQ2M2FhMmEwNzkwZjQzZjMwYzA0NmRjODgzYzc2MWU5ZjMuLmIxZDAyMWJj
YjMzYTQzYTVkMDM2YzAzZmU4ZjlkMTEwMjY5YjM1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwMjksNyArMTAyOSw5IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiAhSEFWRShVSUtJVF9CQUNLR1JP
VU5EX1RIUkVBRF9QUklOVElORykKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9T
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TRGVsYXllZFJlcGx5JiYpOworI2VuZGlm
CiAgICAgdm9pZCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQ
cmludEluZm8mLCBzaXplX3QsIE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1NBc3luY1Jl
cGx5JiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE4Y2FkMDI3MTNkYjAwOTc3OGNlNjk2NTgx
NmRlMjI0MmIzZDc0NzIuLmU4MDgxN2ZmOWJhYTVkMmJjMDBiOTkxMmY2MTk0MDdjMzJhZmQzZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtNDI2LDcgKzQyNiw5IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAg
ICAgRHJhd1JlY3RUb0ltYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdl
YkNvcmU6OkludFNpemUgaW1hZ2VTaXplKSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBpbWFnZSkgQXN5bmMKICAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEp
IEFzeW5jCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiAhSEFWRShVSUtJVF9CQUNLR1JP
VU5EX1RIUkVBRF9QUklOVElORykKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbykgLT4gKHNpemVfdCBwYWdlQ291bnQpIFN5bmNocm9ub3VzCisjZW5kaWYKICAgICBE
cmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJL
aXQ6OlByaW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQpIC0+IChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNlbmRpZgogICAgIERyYXdUb1BERihXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+
IHJlY3QpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggODU0
NDNmYzZhOTcwNTk0ODIyMmYxMDc1MWIyYzEzOGNlZjA2YzFhZi4uNjM4MDU4YzIxNGRmNDkwZmJh
ZGQwYWI2MTY0MTg0NjVmNjM1MDA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQyODgsNiArNDI4OCw4IEBAIHZvaWQg
V2ViUGFnZTo6Y2FuY2VsQXN5bmNocm9ub3VzVG91Y2hFdmVudHMoVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJUb3VjaEV2ZW50LCBDb21wCiB9CiAjZW5kaWYKIAorI2lmICFIQVZFKFVJS0lUX0JBQ0tHUk9V
TkRfVEhSRUFEX1BSSU5USU5HKQorCiB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50
aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
IHByaW50SW5mbywgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9T
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwcmlu
dEluZm8uc25hcHNob3RGaXJzdFBhZ2UsICJJZiB3ZSBhcmUganVzdCBzbmFwc2hvdHRpbmcgdGhl
IGZpcnN0IHBhZ2UsIHdlIGRvbid0IG5lZWQgYSBzeW5jaHJvbm91cyBtZXNzYWdlIHRvIGRldGVy
bWluZSB0aGUgcGFnZSBjb3VudCwgd2hpY2ggaXMgMS4iKTsKQEAgLTQzMDEsNiArNDMwMyw4IEBA
IHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0CiAgICAgcmVwbHkocGFnZVJlY3RzLnNpemUoKSk7CiB9
CiAKKyNlbmRpZiAvLyAhSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKwog
dm9pZCBXZWJQYWdlOjpkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50LCBNZXNzYWdl
czo6V2ViUGFnZTo6RHJhd1RvUERGaU9TQXN5bmNSZXBseSYmIHJlcGx5KQogewogICAgIGlmIChw
cmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452574</attachid>
            <date>2022-02-18 13:32:06 -0800</date>
            <delta_ts>2022-02-18 16:45:33 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-236811-20220218143205.patch</filename>
            <type>text/plain</type>
            <size>22916</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzQ4MmYzZDA0ODAxNDk5NmZjOGU5ZjE1ZWI1ZjNjOTA4NDdiOGU5NC4uOTFkMzc0Nzcw
YzFmMDZhYzU1MGE1NmQ1OGRiZWZhYjVmMjFhYjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
Mi0wMi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lP
U10gU2FmYXJpIGNhbiBzb21ldGltZXMgaGFuZyB3aGlsZSBwcmludGluZyBkdWUgdG8gc3luYyBJ
UEMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjgx
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY0MjU3ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgbmV3IFVJS2l0IFNQSSBmb3IgYWxs
b3dpbmcgYFVJUHJpbnRGb3JtYXR0ZXJgIHRvIGJlIGNhbGxlZCBvZmYgdGhlIG1haW4gdGhyZWFk
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorICAgICAgICBBZGQgYSBgSEFWRV9V
SUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElOR2AgdG8gZ3VhcmQgdGhpcyBuZXcgYmVoYXZp
b3IuCisKIDIwMjItMDItMTcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg5OTc0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4
NTAxYTkwMWFmOGJkNzVkY2Q2MDc3YjI1M2Q4NjYzMzBjODgxNmMzLi4zZmJjMGU4NWNkODg3MzQ3
MmYxNDA0OTEwZDllMTE5NzYxNWQ2OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIy
LTAyLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBTYWZhcmkgY2FuIHNvbWV0aW1lcyBoYW5nIHdoaWxlIHByaW50aW5nIGR1ZSB0byBzeW5jIElQ
QworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODEx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjQyNTc4Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
Lm1tOgorICAgICAgICAoLVtfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgcmVxdWlyZXNNYWluVGhy
ZWFkXSk6IEFkZGVkLgorICAgICAgICBBZG9wdCBuZXcgVUlLaXQgU1BJIGZvciBhbGxvd2luZyBg
VUlQcmludEZvcm1hdHRlcmAgdG8gYmUgY2FsbGVkIG9mZiB0aGUgbWFpbiB0aHJlYWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3Byb2Nlc3NEaWRFeGl0XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dr
X3ByaW50Rm9ybWF0dGVyUmVxdWlyZXNNYWluVGhyZWFkXSk6IEFkZGVkLgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfd2FpdEZvckRyYXdUb1BERkNhbGxiYWNrSWZOZWVkZWQ6XSk6IEFk
ZGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93a19wcmludGVkRG9jdW1lbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dhaXRGb3JEcmF3VG9QREZDYWxsYmFjazpdKTogRGVs
ZXRlZC4KKyAgICAgICAgUmVvcmdhbml6ZSB0aGlzIGNvZGUgdG8gc3VwcG9ydCBib3RoIHN5bmMg
YW5kIGFzeW5jIGZsb3dzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdpT1MpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9Q
REZpT1MpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21wdXRlUGFn
ZXNGb3JQcmludGluZ0FuZERyYXdUb1BERik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIFNwbGl0IGBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50
aW5nQW5kRHJhd1RvUERGYCBpbnRvIHR3byBtZXRob2RzLCBhcyB0aGUgZmlyc3QKKyAgICAgICAg
InBhcnQiIChpLmUuIGBjb21wdXRlUGFnZXNGb3JQcmludGluZ2lPU2ApIGlzIG5vIGxvbmdlciBu
ZWVkZWQgd2l0aCB0aGlzIG5ldyBVSUtpdCBTUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlQ29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1Zp
ZXcubW06CisgICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9hc2tQYWdlVG9Db21wdXRlUGFnZVJl
Y3RzXSk6CisgICAgICAgIEhhdmUgYFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdgIHRha2UgYSBgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyYCBpbnN0ZWFkIG9mIGEKKyAgICAg
ICAgYFdlYkZyYW1lUHJveHkqYCBzbyB0aGF0IG1vcmUgY2FsbGVycyAoZS5nLiBgQVBJOjpGcmFt
ZUhhbmRsZWApIGNhbiB1c2UgaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmll
dy5tbToKKyAgICAgICAgKC1bV0tQREZWaWV3IF93a19wcmludEZvcm1hdHRlclJlcXVpcmVzTWFp
blRocmVhZF0pOiBBZGRlZC4KKyAgICAgICAgQnkgdGhlIHRpbWUgYFdLUERGVmlld2AgaXMgYXNr
ZWQgdG8gcHJpbnQsIGl0IHNob3VsZCBhbHJlYWR5IGhhdmUgYWxsIHRoZSBkYXRhIG5lY2Vzc2Fy
eSB0bworICAgICAgICBkbyBzbywgc28gdGhlcmUncyBubyByZWFzb24gdG8gbm90IHVzZSB0aGUg
bWFpbiB0aHJlYWQgKHNpbmNlIHRoZXJlJ3Mgbm8gc3luYyBJUEMpLgorCiAyMDIyLTAyLTE3ICBE
aWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW21hY09TXSBO
b24tdW5pZmllZCBidWlsZCBmaXhlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAyMjJhN2U3MDNi
YzgzODEwN2JlOTIyNDM5Y2RhMWM2ODAzOWVlMDI2Li45MGYxOTIyOGMzNWY1NmZkNmMyZjAzODc5
MGE3YWExOWI5NDcyMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtMTIxOCwzICsxMjE4LDcg
QEAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEzMDAwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTYwMDAwKSB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkKICNkZWZpbmUgSEFWRV9TQUZFX0JST1dTSU5H
X1JFU1VMVF9ERVRBSUxTIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAwKQorI2RlZmluZSBIQVZFX1VJS0lU
X0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMjgxOGJkNjdjOThjMTZlN2JmZjg4OTY1NGI4MTU3
N2EyMTFkNGVkMC4uOTkwNzdiNTAzN2Q1YWNiZTc2MzBjMTBlMDViNzNjYTkyN2FkMjJkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNzIxLDcgKzI3MjEs
NyBAQCBzdGF0aWMgUHJpbnRJbmZvIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhjb25zdCBXS1By
aW50SW5mbyYgcHJpbnRJbmZvKQogdm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZv
LCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBj
b250ZXh0KQogewogICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKLSAgICB0b0ltcGwocGFnZVJlZikt
PmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1By
aW50SW5mbyhwcmludEluZm8pLCBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6
RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbikgeworICAgIHRvSW1wbChwYWdlUmVm
KS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodG9JbXBsKGZyYW1lKS0+ZnJhbWVJRCgpLCBwcmlu
dEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSwgW2NvbnRleHQsIGNhbGxiYWNrXShjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHJlY3RzLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4pIHsKICAgICAg
ICAgVmVjdG9yPFdLUmVjdD4gd2tSZWN0cyhyZWN0cy5zaXplKCkpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgd2tSZWN0c1tp
XSA9IHRvQVBJKHJlY3RzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGE3MjQ2M2I4NWI3YWZiYTM1ZmRkODc2N2JhN2FiNTM1ZmY2YzFlNGEuLjA4ZTBm
N2FhY2RiY2U3NDJjYTAxMmI5YzAzOGFiNGQ1OWMzMGRkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTA3MSwxMCArOTA3MSwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZW5kUHJpbnRpbmcoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVuZFBy
aW50aW5nKCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJh
dGlvbikpOwogfQogCi11aW50NjRfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBkb3Vi
bGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik+JiYgY2FsbGJhY2spCit1aW50NjRf
dCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBkb3VibGUsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0Qm94RXh0ZW50Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9pc0luUHJpbnRpbmdNb2Rl
ID0gdHJ1ZTsKLSAgICByZXR1cm4gc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVBy
aW50T3BlcmF0aW9uKSk7CisgICAgcmV0dXJuIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWVJRCwgcHJpbnRJbmZvKSwgV1RG
TW92ZShjYWxsYmFjayksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Qcmlu
dE9wZXJhdGlvbikpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDhmZWJhYjRiNTE0OWFmMjFhYjhiZTg0ODhiNWIzOTlj
M2ViMWMxMGYuLjE0OWU0M2M3ODhjOGYyNTVlNWNmZWY3NWM0ZWMxZmQ3Yjk0NjUzZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDA1LDE0ICsxNDA1LDE3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3Qg
UHJpbnRJbmZvJik7CiAgICAgdm9pZCBlbmRQcmludGluZygpOwotICAgIHVpbnQ2NF90IGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIGRvdWJs
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmKT4mJik7CisgICAgdWludDY0X3QgY29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmlu
dEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRS
ZWN0PiYsIGRvdWJsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmKT4mJik7CiAgICAg
dm9pZCBnZXRQREZGaXJzdFBhZ2VTaXplKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFNpemUpPiYmKTsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB1aW50NjRfdCBkcmF3UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94eSosIGNvbnN0
IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJik+JiYpOwogICAgIHVpbnQ2NF90IGRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJv
eHkqLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKKyNpZiAhSEFWRShVSUtJVF9C
QUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKyAgICBzaXplX3QgY29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mKTsKKyNl
bmRpZgorICAgIHVpbnQ2NF90IGRyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFByaW50SW5mbyYsIHNpemVfdCBwYWdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogI2VuZGlmCiAjZWxpZiBQTEFU
Rk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5Kiwg
Y29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkVycm9yKik+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9y
bWF0dGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0
dGVyLm1tCmluZGV4IDk4ZDhkYmI5NTJhMDYxZjg5ZTYwZDJlZDdmMDNiM2EyYjNkYjJhZTguLjVj
MTQ3NWZlMzFjMmYxOTVhOWNiMTRhNmMyMWViNThiZjcyM2ZkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0KQEAgLTQ0LDYg
KzQ0LDE1IEBAIEBpbXBsZW1lbnRhdGlvbiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgewogICAg
IEJPT0wgX3N1cHByZXNzUGFnZUNvdW50UmVjYWxjOwogfQogCisjaWYgSEFWRShVSUtJVF9CQUNL
R1JPVU5EX1RIUkVBRF9QUklOVElORykKKworLSAoQk9PTClyZXF1aXJlc01haW5UaHJlYWQKK3sK
KyAgICByZXR1cm4gc2VsZi5fd2ViVmlldy5fcHJpbnRQcm92aWRlci5fd2tfcHJpbnRGb3JtYXR0
ZXJSZXF1aXJlc01haW5UaHJlYWQ7Cit9CisKKyNlbmRpZiAvLyBIQVZFKFVJS0lUX0JBQ0tHUk9V
TkRfVEhSRUFEX1BSSU5USU5HKQorCiAtIChfV0tGcmFtZUhhbmRsZSAqKWZyYW1lVG9QcmludAog
ewogICAgIHJldHVybiBfZnJhbWVUb1ByaW50LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmgKaW5k
ZXggOGM2MzQzYmExY2ZlNmZjYzViMzNjMjlhMDE0NjAwNzk2N2Y4MmNlNy4uN2NkMzVjMGZkODRj
Y2FjOTM2NmRhYzQzNTA4MDU4Nzc4NGIwMmY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oCkBAIC0z
Nyw2ICszNyw5IEBACiBAZW5kCiAKIEBwcm90b2NvbCBfV0tXZWJWaWV3UHJpbnRQcm92aWRlciA8
TlNPYmplY3Q+CisjaWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfd2tfcHJpbnRGb3JtYXR0ZXJSZXF1
aXJlc01haW5UaHJlYWQ7CisjZW5kaWYKIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclBy
aW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvcm1hdHRlcjsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ0dQREZEb2N1bWVudFJlZiBfd2tfcHJp
bnRlZERvY3VtZW50OwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbQppbmRleCBhYmQzNGY4Y2QwNjk3MWEyMjJkMzExYmViNGE5MzFjNTRiMzZjMWZk
Li5kOWE0NGM0YzJhMTM5OTBlMWQ5MGVhNWNmNDA0YmUwMjI0YjA5MDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNzAsNiArNzAsNyBAQAog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrc0NvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Cisj
aW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KICNpbXBvcnQgIkFwcEtpdFNv
ZnRMaW5rLmgiCiAKIApAQCAtMTQ3LDYgKzE0OCw5IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0NvbnRl
bnRWaWV3IHsKICAgICBSZXRhaW5QdHI8TlNVbmRvTWFuYWdlcj4gX3VuZG9NYW5hZ2VyOwogICAg
IFJldGFpblB0cjxXS1F1aXJreU5TVW5kb01hbmFnZXI+IF9xdWlya3lVbmRvTWFuYWdlcjsKIAor
I2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCisgICAgQmluYXJ5U2Vt
YXBob3JlIF9wZGZQcmludENvbXBsZXRpb25TZW1hcGhvcmU7CisjZW5kaWYKICAgICB1aW50NjRf
dCBfcGRmUHJpbnRDYWxsYmFja0lEOwogICAgIFJldGFpblB0cjxDR1BERkRvY3VtZW50UmVmPiBf
cHJpbnRlZERvY3VtZW50OwogICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNVUkw+PiBfdGVtcG9yYXJ5
VVJMc1RvRGVsZXRlV2hlbkRlYWxsb2NhdGVkOwpAQCAtNjg3LDYgKzY5MSwxMCBAQCAtICh2b2lk
KV9wcm9jZXNzRGlkRXhpdAogICAgIFtzZWxmIF9yZW1vdmVWaXNpYmlsaXR5UHJvcGFnYXRpb25W
aWV3Rm9yV2ViUHJvY2Vzc107CiAjZW5kaWYKIAorI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9U
SFJFQURfUFJJTlRJTkcpCisgICAgaWYgKF9wZGZQcmludENhbGxiYWNrSUQpCisgICAgICAgIF9w
ZGZQcmludENvbXBsZXRpb25TZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKICAgICBfcGRmUHJp
bnRDYWxsYmFja0lEID0gMDsKIH0KIApAQCAtODYxLDEwICs4NjksMjIgQEAgQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV0tDb250ZW50VmlldyAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyKQogCisj
aWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKworLSAoQk9PTClfd2tf
cHJpbnRGb3JtYXR0ZXJSZXF1aXJlc01haW5UaHJlYWQKK3sKKyAgICByZXR1cm4gTk87Cit9CisK
KyNlbmRpZiAvLyBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorCiAtIChO
U1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50
Rm9ybWF0dGVyICopcHJpbnRGb3JtYXR0ZXIKIHsKLSAgICBpZiAoX3BkZlByaW50Q2FsbGJhY2tJ
RCkKLSAgICAgICAgW3NlbGYgX3dhaXRGb3JEcmF3VG9QREZDYWxsYmFja107CisjaWYgSEFWRShV
SUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKyAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7CisjZW5kaWYKKworICAgIFtzZWxmIF93YWl0Rm9yRHJhd1RvUERGQ2FsbGJhY2tJZk5l
ZWRlZF07CiAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRDsKICAgICBpZiAo
X1dLRnJhbWVIYW5kbGUgKmhhbmRsZSA9IHByaW50Rm9ybWF0dGVyLmZyYW1lVG9QcmludCkKQEAg
LTg5NiwzNSArOTE2LDY4IEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9y
bWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAgcHJpbnRJbmZv
LmF2YWlsYWJsZVBhcGVyV2lkdGggPSBDR1JlY3RHZXRXaWR0aChwcmludGluZ1JlY3QpOwogICAg
IHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCA9IENHUmVjdEdldEhlaWdodChwcmludGlu
Z1JlY3QpOwogCi0gICAgYXV0byByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZik7Ci0gICAg
YXV0byBwYWlyID0gX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKGZy
YW1lSUQsIHByaW50SW5mbywgW3JldGFpbmVkU2VsZl0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiBwZGZEYXRhKSB7Ci0gICAgICAgIHJldGFpbmVkU2VsZi0+X3BkZlByaW50Q2FsbGJhY2tJ
RCA9IDA7Ci0gICAgICAgIGlmIChwZGZEYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICBzaXplX3QgcGFnZUNvdW50OworICAgIGlmIChwcmludEluZm8uc25hcHNob3RGaXJz
dFBhZ2UpCisgICAgICAgIHBhZ2VDb3VudCA9IDE7CisgICAgZWxzZSB7CisjaWYgSEFWRShVSUtJ
VF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKyAgICAgICAgQmluYXJ5U2VtYXBob3JlIGNv
bXB1dGVQYWdlc1NlbWFwaG9yZTsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3NlbGYsIGZy
YW1lSUQsIHByaW50SW5mbywgJnBhZ2VDb3VudCwgJmNvbXB1dGVQYWdlc1NlbWFwaG9yZV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFt
ZUlELCBwcmludEluZm8sIFsmcGFnZUNvdW50LCAmY29tcHV0ZVBhZ2VzU2VtYXBob3JlXShjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIC8qIHRvdGFsU2Nh
bGVGYWN0b3JGb3JQcmludGluZyAqLywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIC8q
IGNvbXB1dGVkUGFnZU1hcmdpbiAqLykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHBhZ2VSZWN0cy5zaXplKCkgPj0gMSk7CisgICAgICAgICAgICAgICAgcGFnZUNvdW50ID0gcGFn
ZVJlY3RzLnNpemUoKTsKIAotICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmJ1ZmZlcigpLT5j
cmVhdGVDRkRhdGEoKTsKLSAgICAgICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7Ci0gICAgICAgIHJldGFpbmVk
U2VsZi0+X3ByaW50ZWREb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQ
cm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBjb21wdXRlUGFn
ZXNTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
ICAgIGNvbXB1dGVQYWdlc1NlbWFwaG9yZS53YWl0KCk7CisjZWxzZQorICAgICAgICBwYWdlQ291
bnQgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoZnJhbWVJRCwgcHJpbnRJbmZv
KTsKKyNlbmRpZgorICAgIH0KKworICAgIC8vIEJlZ2luIGdlbmVyYXRpbmcgdGhlIFBERiBpbiBl
eHBlY3RhdGlvbiBvZiBhIChldmVudHVhbCkgcmVxdWVzdCBmb3IgdGhlIGRyYXduIGRhdGEuCisg
ICAgX3BkZlByaW50Q2FsbGJhY2tJRCA9IF9wYWdlLT5kcmF3VG9QREZpT1MoZnJhbWVJRCwgcHJp
bnRJbmZvLCBwYWdlQ291bnQsIFtyZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkgeworICAgICAgICBpZiAocGRmRGF0YS5p
c0VtcHR5KCkpCisgICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9wcmludGVkRG9jdW1lbnQgPSBu
dWxscHRyOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEu
YnVmZmVyKCktPmNyZWF0ZUNGRGF0YSgpOworICAgICAgICAgICAgYXV0byBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7Cisg
ICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9wcmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERG
RG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CisgICAgICAg
IH0KKworI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCisgICAgICAg
IHJldGFpbmVkU2VsZi0+X3BkZlByaW50Q29tcGxldGlvblNlbWFwaG9yZS5zaWduYWwoKTsKKyNl
bmRpZgorICAgICAgICByZXRhaW5lZFNlbGYtPl9wZGZQcmludENhbGxiYWNrSUQgPSAwOwogICAg
IH0pOwotICAgIF9wZGZQcmludENhbGxiYWNrSUQgPSBwYWlyLnNlY29uZDsKLSAgICByZXR1cm4g
cGFpci5maXJzdDsKKworICAgIHJldHVybiBwYWdlQ291bnQ7CiB9CiAKLS0gKEJPT0wpX3dhaXRG
b3JEcmF3VG9QREZDYWxsYmFjaworLSAoQk9PTClfd2FpdEZvckRyYXdUb1BERkNhbGxiYWNrSWZO
ZWVkZWQKIHsKLSAgICBBU1NFUlQoX3BkZlByaW50Q2FsbGJhY2tJRCk7Ci0gICAgaWYgKCFfcGFn
ZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFzeW5jQ2FsbGJhY2tBbmREaXNwYXRj
aEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1M+KHN0ZDo6ZXhjaGFu
Z2UoX3BkZlByaW50Q2FsbGJhY2tJRCwgMCksIFNlY29uZHM6OmluZmluaXR5KCkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGF1dG8gY2FsbGJhY2tJRCA9IHN0ZDo6ZXhjaGFuZ2Uo
X3BkZlByaW50Q2FsbGJhY2tJRCwgMCkpIHsKKyNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhS
RUFEX1BSSU5USU5HKQorICAgICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CisgICAgICAg
IF9wZGZQcmludENvbXBsZXRpb25TZW1hcGhvcmUud2FpdCgpOworI2Vsc2UKKyAgICAgICAgaWYg
KCFfcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFzeW5jQ2FsbGJhY2tBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1M+KGNhbGxi
YWNrSUQsIFNlY29uZHM6OmluZmluaXR5KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCisgICAgfQogICAgIEFTU0VSVCghX3BkZlByaW50Q2FsbGJhY2tJRCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIC0gKENHUERGRG9jdW1lbnRSZWYpX3drX3ByaW50ZWREb2N1bWVudAog
ewotICAgIGlmIChfcGRmUHJpbnRDYWxsYmFja0lEKSB7Ci0gICAgICAgIGlmICghW3NlbGYgX3dh
aXRGb3JEcmF3VG9QREZDYWxsYmFja10pCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9CisjaWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKyAgICBBU1NF
UlQoIWlzTWFpblJ1bkxvb3AoKSk7CisjZW5kaWYKKworICAgIGlmICghW3NlbGYgX3dhaXRGb3JE
cmF3VG9QREZDYWxsYmFja0lmTmVlZGVkXSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICByZXR1cm4gX3ByaW50ZWREb2N1bWVudC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tQREZWaWV3Lm1tCmluZGV4IGI5ZTUwYTljMzI4M2NlN2FmZDEzMTk1OGVmNmQwZGFj
YzFhNDAzY2QuLjE3MjEyNzBkMDA2NmI0YjllMTk5MTE0ZWU3MzdjMGUzY2VhNzlkMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpAQCAtNjI5LDYgKzYyOSwxNSBA
QCAtIChDR1BERkRvY3VtZW50UmVmKV9lbnN1cmVEb2N1bWVudEZvclByaW50aW5nCiAgICAgcmV0
dXJuIF9kb2N1bWVudEZvclByaW50aW5nLmdldCgpOwogfQogCisjaWYgSEFWRShVSUtJVF9CQUNL
R1JPVU5EX1RIUkVBRF9QUklOVElORykKKworLSAoQk9PTClfd2tfcHJpbnRGb3JtYXR0ZXJSZXF1
aXJlc01haW5UaHJlYWQKK3sKKyAgICByZXR1cm4gWUVTOworfQorCisjZW5kaWYgLy8gSEFWRShV
SUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKKwogLSAoTlNVSW50ZWdlcilfd2tfcGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50
Rm9ybWF0dGVyCiB7CiAgICAgQ0dQREZEb2N1bWVudFJlZiBkb2N1bWVudEZvclByaW50aW5nID0g
W3NlbGYgX2Vuc3VyZURvY3VtZW50Rm9yUHJpbnRpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMjk2ODg1MTM2MjZkMzdlMmNkN2Ji
NWFlNTUwNmI3ZGMzMmU2NjFjOC4uZDhhNWQyOTZiMDQ1NDg0OTI1ZjM3ODQ2MmRmMzQ2MTdkYmEw
NTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCkBAIC0xMDI4LDIyICsxMDI4LDMwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFy
dE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAg
cGFnZUNsaWVudCgpLmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50
aWFsVGFwKHJlcXVlc3RJRCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5p
bXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi1z
dGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQ
cmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCisjaWYgIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJF
QURfUFJJTlRJTkcpCisKK3NpemVfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50
aW5naU9TKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2so
eyB9KTsKLSAgICAgICAgcmV0dXJuIHsgMCwgMCB9OwotICAgIH0KKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFwcmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UsICJJZiB3ZSBhcmUganVzdCBzbmFw
c2hvdHRpbmcgdGhlIGZpcnN0IHBhZ2UsIHdlIGRvbid0IG5lZWQgYSBzeW5jaHJvbm91cyBtZXNz
YWdlIHRvIGRldGVybWluZSB0aGUgcGFnZSBjb3VudCwgd2hpY2ggaXMgMS4iKTsKKworICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBzaXplX3Qg
cGFnZUNvdW50ID0gMDsKLSAgICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKQotICAg
ICAgICBwYWdlQ291bnQgPSAxOwotICAgIGVsc2UKLSAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TKGZyYW1lSUQsIHByaW50SW5mbyks
IE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUzo6UmVwbHkocGFn
ZUNvdW50KSwgU2Vjb25kczo6aW5maW5pdHkoKSk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TKGZyYW1lSUQsIHByaW50SW5mbyksIE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUzo6UmVwbHkocGFnZUNv
dW50KSwgU2Vjb25kczo6aW5maW5pdHkoKSk7CisgICAgcmV0dXJuIHBhZ2VDb3VudDsKK30KIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6RHJhd1RvUERGaU9TKGZyYW1lSUQsIHByaW50SW5mbywgcGFnZUNvdW50KSwgV1RGTW92ZShj
YWxsYmFjaykpOwotICAgIAotICAgIHJldHVybiB7IHBhZ2VDb3VudCwgY2FsbGJhY2tJRCB9Owor
I2VuZGlmIC8vICFIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorCit1aW50
NjRfdCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERmlPUyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Y29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVy
biBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BERmlPUyhmcmFt
ZUlELCBwcmludEluZm8sIHBhZ2VDb3VudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29u
c3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCmluZGV4IDVmY2ZiNWMwZjQxZDNjODg5Y2E2OWY0MTkx
ZmMzZjFhOGVmZTEyMGYuLjIzMjQxYmEyMzFlMDQyYWVjNDJkOGM1YjQ5ZGQ2YTZkYWQ2YWU1YjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KQEAg
LTM2Miw3ICszNjIsNyBAQCAtIChCT09MKV9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzCiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNv
bnRleHQpOwogICAgICAgICBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRvdGFs
U2NhbGVGYWN0b3JGb3JQcmludGluZywgY29tcHV0ZWRQYWdlTWFyZ2luLCBjb250ZXh0KTsKICAg
ICB9OwotICAgIF9leHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjayA9IF93ZWJGcmFtZS0+cGFn
ZSgpLT5jb21wdXRlUGFnZXNGb3JQcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFdlYktpdDo6UHJp
bnRJbmZvKFtfcHJpbnRPcGVyYXRpb24uZ2V0KCkgcHJpbnRJbmZvXSksIFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgPSBfd2ViRnJhbWUtPnBh
Z2UoKS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoX3dlYkZyYW1lLT5mcmFtZUlEKCksIFdlYktp
dDo6UHJpbnRJbmZvKFtfcHJpbnRPcGVyYXRpb24uZ2V0KCkgcHJpbnRJbmZvXSksIFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKICAgICBjb250ZXh0LT5jYWxs
YmFja0lEID0gX2V4cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNTEwZjc1ZDYzYWEyYTA3OTBmNDNm
MzBjMDQ2ZGM4ODNjNzYxZTlmMy4uYjFkMDIxYmNiMzNhNDNhNWQwMzZjMDNmZThmOWQxMTAyNjli
MzU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MTAyOSw3ICsxMDI5LDkgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2lmICFIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQogICAgIHZv
aWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBQcmludEluZm8mLCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdpT1NEZWxheWVkUmVwbHkmJik7CisjZW5kaWYKICAgICB2b2lkIGRyYXdUb1BERmlPUyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHNpemVfdCwgTWVzc2FnZXM6
OldlYlBhZ2U6OkRyYXdUb1BERmlPU0FzeW5jUmVwbHkmJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggMThjYWQwMjcxM2RiMDA5Nzc4Y2U2OTY1ODE2ZGUyMjQyYjNkNzQ3Mi4uZTgwODE3ZmY5YmFh
NWQyYmMwMGI5OTEyZjYxOTQwN2MzMmFmZDNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MjYsNyArNDI2LDkg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBEcmF3UmVjdFRvSW1hZ2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludElu
Zm8sIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUpIC0+
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwogICAgIERyYXdQ
YWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0
OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+
IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorI2lmICFIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQogICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoc2l6ZV90IHBhZ2VDb3Vu
dCkgU3luY2hyb25vdXMKKyNlbmRpZgogICAgIERyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgc2l6
ZV90IHBhZ2VDb3VudCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2Vu
ZGlmCiAgICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCkgLT4gKElQQzo6U2hhcmVkQnVmZmVy
Q29weSBkYXRhKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4NTQ0M2ZjNmE5NzA1OTQ4MjIyZjEwNzUxYjJjMTM4
Y2VmMDZjMWFmLi42MzgwNThjMjE0ZGY0OTBmYmFkZDBhYjYxNjQxODQ2NWY2MzUwMDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtNDI4OCw2ICs0Mjg4LDggQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxBc3luY2hyb25vdXNU
b3VjaEV2ZW50cyhWZWN0b3I8c3RkOjpwYWlyPFdlYlRvdWNoRXZlbnQsIENvbXAKIH0KICNlbmRp
ZgogCisjaWYgIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCisKIHZvaWQg
V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBNZXNzYWdlczo6V2ViUGFn
ZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1M6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSwgIklm
IHdlIGFyZSBqdXN0IHNuYXBzaG90dGluZyB0aGUgZmlyc3QgcGFnZSwgd2UgZG9uJ3QgbmVlZCBh
IHN5bmNocm9ub3VzIG1lc3NhZ2UgdG8gZGV0ZXJtaW5lIHRoZSBwYWdlIGNvdW50LCB3aGljaCBp
cyAxLiIpOwpAQCAtNDMwMSw2ICs0MzAzLDggQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNG
b3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QKICAg
ICByZXBseShwYWdlUmVjdHMuc2l6ZSgpKTsKIH0KIAorI2VuZGlmIC8vICFIQVZFKFVJS0lUX0JB
Q0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQorCiB2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERmlPUyhX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIHNpemVfdCBwYWdlQ291bnQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1NBc3lu
Y1JlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkg
ewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>