<?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>126606</bug_id>
          
          <creation_ts>2014-01-07 16:52:33 -0800</creation_ts>
          <short_desc>ASSERT(!m_textCheckingRequest) on editing/spelling/spellcheck-async-remove-frame.html</short_desc>
          <delta_ts>2020-03-09 19:37:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=158401</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>965254</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-07 16:52:33 -0800</bug_when>
    <thetext>I&apos;ve hit this assertion when running tests locally.

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000103a59b2a WTFCrash + 42 (Assertions.cpp:341)
1   com.apple.WebKit              	0x0000000104b9929e WebEditorClient::requestCheckingOfString(WTF::PassRefPtr&lt;WebCore::TextCheckingRequest&gt;) + 94 (WebEditorClient.mm:1156)
2   com.apple.WebKit              	0x0000000104b9970c non-virtual thunk to WebEditorClient::requestCheckingOfString(WTF::PassRefPtr&lt;WebCore::TextCheckingRequest&gt;) + 28 (WebEditorClient.mm:1169)
3   com.apple.WebCore             	0x0000000106ad9252 WebCore::SpellChecker::invokeRequest(WTF::PassRefPtr&lt;WebCore::SpellCheckRequest&gt;) + 210 (SpellChecker.cpp:185)
4   com.apple.WebCore             	0x0000000106ad9592 WebCore::SpellChecker::requestCheckingFor(WTF::PassRefPtr&lt;WebCore::SpellCheckRequest&gt;) + 434 (SpellChecker.cpp:176)
5   com.apple.WebCore             	0x0000000105884fc0 WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges(unsigned int, WebCore::Range*, WebCore::Range*) + 960 (Editor.cpp:2164)
6   com.apple.WebCore             	0x00000001058846f8 WebCore::Editor::markMisspellingsAfterTypingToWord(WebCore::VisiblePosition const&amp;, WebCore::VisibleSelection const&amp;, bool) + 648 (Editor.cpp:2015)
7   com.apple.WebCore             	0x0000000106d908d5 WebCore::TypingCommand::markMisspellingsAfterTyping(WebCore::TypingCommand::ETypingCommand) + 693 (TypingCommand.cpp:309)
8   com.apple.WebCore             	0x0000000106d909d2 WebCore::TypingCommand::typingAddedToOpenCommand(WebCore::TypingCommand::ETypingCommand) + 130 (TypingCommand.cpp:331)
9   com.apple.WebCore             	0x0000000106d90ab6 WebCore::TypingCommand::insertTextRunWithoutNewlines(WTF::String const&amp;, bool) + 214 (TypingCommand.cpp:351)
10  com.apple.WebCore             	0x0000000106d91472 WebCore::TypingCommandLineOperation::operator()(unsigned long, unsigned long, bool) const + 146 (TypingCommand.cpp:60)
11  com.apple.WebCore             	0x0000000106d911b5 void WebCore::forEachLineInString&lt;WebCore::TypingCommandLineOperation&gt;(WTF::String const&amp;, WebCore::TypingCommandLineOperation const&amp;) + 165 (TextInsertionBaseCommand.h:61)
12  com.apple.WebCore             	0x0000000106d8fe18 WebCore::TypingCommand::insertText(WTF::String const&amp;, bool) + 72 (TypingCommand.cpp:342)
13  com.apple.WebCore             	0x0000000106d905bc WebCore::TypingCommand::doApply() + 348 (TypingCommand.cpp:269)
14  com.apple.WebCore             	0x00000001054525e1 WebCore::CompositeEditCommand::apply() + 257 (CompositeEditCommand.cpp:212)
15  com.apple.WebCore             	0x00000001054524d1 WebCore::applyCommand(WTF::PassRefPtr&lt;WebCore::CompositeEditCommand&gt;) + 17 (CompositeEditCommand.cpp:171)
16  com.apple.WebCore             	0x0000000106d2f007 WebCore::TextInsertionBaseCommand::applyTextInsertionCommand(WebCore::Frame*, WTF::PassRefPtr&lt;WebCore::TextInsertionBaseCommand&gt;, WebCore::VisibleSelection const&amp;, WebCore::VisibleSelection const&amp;) + 119 (TextInsertionBaseCommand.cpp:50)
17  com.apple.WebCore             	0x0000000106d8fd6b WebCore::TypingCommand::insertText(WebCore::Document&amp;, WTF::String const&amp;, WebCore::VisibleSelection const&amp;, unsigned int, WebCore::TypingCommand::TextCompositionType) + 747 (TypingCommand.cpp:187)
18  com.apple.WebCore             	0x0000000106d8fa0c WebCore::TypingCommand::insertText(WebCore::Document&amp;, WTF::String const&amp;, unsigned int, WebCore::TypingCommand::TextCompositionType) + 220 (TypingCommand.cpp:158)
19  com.apple.WebCore             	0x0000000105891587 WebCore::executeInsertText(WebCore::Frame&amp;, WebCore::Event*, WebCore::EditorCommandSource, WTF::String const&amp;) + 55 (EditorCommand.cpp:560)
20  com.apple.WebCore             	0x000000010588f2a5 WebCore::Editor::Command::execute(WTF::String const&amp;, WebCore::Event*) const + 213 (EditorCommand.cpp:1713)
21  com.apple.WebCore             	0x000000010572006e WebCore::Document::execCommand(WTF::String const&amp;, bool, WTF::String const&amp;) + 78 (Document.cpp:4222)
22  com.apple.WebCore             	0x0000000105f476d9 WebCore::jsDocumentPrototypeFunctionExecCommand(JSC::ExecState*) + 793 (JSDocument.cpp:3364)
23  ???                           	0x00002e321c601045 0 + 50792759300165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627989</commentid>
    <comment_count>1</comment_count>
      <attachid>393083</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-09 15:19:41 -0700</bug_when>
    <thetext>Created attachment 393083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627995</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-09 15:28:20 -0700</bug_when>
    <thetext>We could also fix this by making requestCheckingOfString/didCheckSucceed robust in the case where a request comes in before the previous one has finished, but the null check is okay for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628002</commentid>
    <comment_count>3</comment_count>
      <attachid>393083</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-09 15:33:50 -0700</bug_when>
    <thetext>Comment on attachment 393083
Patch

Actually we just hit an assertion later with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628005</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-03-09 15:40:38 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #2)
&gt; We could also fix this by making requestCheckingOfString/didCheckSucceed
&gt; robust in the case where a request comes in before the previous one has
&gt; finished, but the null check is okay for now.

Would the test be flakily failing with a null check? That&apos;s not much better than crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628043</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-09 17:24:20 -0700</bug_when>
    <thetext>There&apos;s more to this than meets the eye.

First, WebEditorClient can only handle on in-flight request at a time, but it&apos;s quite possible to call WebEditorClient::requestCheckingOfString() twice in a row before NSSpellChecker is done.

Second, the sequence numbers are per-SpellChecker, so there is one per frame, yet WebEditorClient is a singleton so sees requests from different frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628053</commentid>
    <comment_count>6</comment_count>
      <attachid>393100</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-09 17:44:50 -0700</bug_when>
    <thetext>Created attachment 393100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628056</commentid>
    <comment_count>7</comment_count>
      <attachid>393100</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-09 17:53:37 -0700</bug_when>
    <thetext>Comment on attachment 393100
Patch

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

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm:1263
&gt; +    m_requestsInFlight.add(sequence, request.makeRef());

Pretty sure you meant makeRef(request)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628057</commentid>
    <comment_count>8</comment_count>
      <attachid>393100</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-09 17:54:35 -0700</bug_when>
    <thetext>Comment on attachment 393100
Patch

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

&gt; Source/WebCore/platform/text/TextChecking.h:80
&gt; +using TextCheckingSequence = int;

Can we use ObjectIdentifier instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628058</commentid>
    <comment_count>9</comment_count>
      <attachid>393101</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-09 17:55:21 -0700</bug_when>
    <thetext>Created attachment 393101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628059</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-09 17:59:42 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #8)
&gt; Comment on attachment 393100 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393100&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/text/TextChecking.h:80
&gt; &gt; +using TextCheckingSequence = int;
&gt; 
&gt; Can we use ObjectIdentifier instead?

We could.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628073</commentid>
    <comment_count>11</comment_count>
      <attachid>393108</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-09 19:02:36 -0700</bug_when>
    <thetext>Created attachment 393108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628084</commentid>
    <comment_count>12</comment_count>
      <attachid>393108</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-09 19:37:05 -0700</bug_when>
    <thetext>Comment on attachment 393108
Patch

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

r=mews

&gt; Source/WebKitLegacy/mac/ChangeLog:37
&gt; +2020-03-09  Simon Fraser  &lt;simon.fraser@apple.com&gt;
&gt; +
&gt; +        ASSERT(!m_textCheckingRequest) on editing/spelling/spellcheck-async-remove-frame.html
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=126606
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Make WebEditorClient able to handle multiple in-flight spell check requests by storing
&gt; +        a HashMap of sequence numbers to TextCheckingRequests.
&gt; +
&gt; +        * WebCoreSupport/WebEditorClient.h:
&gt; +        * WebCoreSupport/WebEditorClient.mm:
&gt; +        (-[WebEditorSpellCheckResponder initWithClient:sequence:results:]):
&gt; +        (WebEditorClient::didCheckSucceed):
&gt; +        (WebEditorClient::requestCheckingOfString):

Double changelog!

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm:1242
&gt; +void WebEditorClient::didCheckSucceed(TextCheckingRequestIdentifier identifier, NSArray* results)

Nit - * on the other side.

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm:1269
&gt; +    [[NSSpellChecker sharedSpellChecker] requestCheckingOfString:request.data().text() range:range types:NSTextCheckingAllSystemTypes options:options inSpellDocumentWithTag:0 completionHandler:^(NSInteger, NSArray* results, NSOrthography*, NSInteger) {

Nit - not new in this patch, but there are some *s on the wrong side here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393083</attachid>
            <date>2020-03-09 15:19:41 -0700</date>
            <delta_ts>2020-03-09 17:44:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126606-20200309151940.patch</filename>
            <type>text/plain</type>
            <size>1582</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5k
ZXggODk3YmE3ZWM3ODRhM2IyN2RmOWZmZjM4MDc2YjNmMTQyNDhmNmU2Ny4uMDYyYjMwOTNlNzA5
NzQ5OWNkMTU3OWExYmM2Njk3ZDA2YThhMGI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAzLTA5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVCghbV90ZXh0Q2hlY2tpbmdSZXF1ZXN0KSBv
biBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtcmVtb3ZlLWZyYW1lLmh0bWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjYwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG1fdGV4dENoZWNr
aW5nUmVxdWVzdCBtaWdodCBiZSBudWxsIGluIHRoZSBkaWRDaGVja1N1Y2NlZWQgY2FsbGJhY2ss
IHNvIG51bGwtY2hlY2sgaXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpZENoZWNrU3VjY2VlZCk6CisK
IDIwMjAtMDMtMDkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgdGhlIGNvbXBpbGUtdGltZSBmbGFnIGZvciBQb2ludGVyIEV2ZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCmluZGV4IGVhNzZjZDc4ZDcwMTZmMWMyM2RjNWI3ZjA2ZDBlMmYxMzIwYTE1MzIu
LmQ5MGVjMjNlODlkMzM3ZmZhNjJlYzA3ZjFlNTdiMTBkYThiYzU1MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KQEAgLTEyNDEsNiArMTI0MSw5IEBAIEBlbmQKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmRpZENoZWNrU3VjY2VlZChpbnQgc2VxdWVuY2UsIE5TQXJyYXkqIHJlc3VsdHMpCiB7CisgICAg
aWYgKCFtX3RleHRDaGVja2luZ1JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKwogICAgIEFTU0VS
VF9VTlVTRUQoc2VxdWVuY2UsIHNlcXVlbmNlID09IG1fdGV4dENoZWNraW5nUmVxdWVzdC0+ZGF0
YSgpLnNlcXVlbmNlKCkpOwogICAgIG1fdGV4dENoZWNraW5nUmVxdWVzdC0+ZGlkU3VjY2VlZChj
b3JlKHJlc3VsdHMsIG1fdGV4dENoZWNraW5nUmVxdWVzdC0+ZGF0YSgpLmNoZWNraW5nVHlwZXMo
KSkpOwogICAgIG1fdGV4dENoZWNraW5nUmVxdWVzdCA9IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393100</attachid>
            <date>2020-03-09 17:44:50 -0700</date>
            <delta_ts>2020-03-09 17:55:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126606-20200309174449.patch</filename>
            <type>text/plain</type>
            <size>15678</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlkMmFlNjcwZDI3ZWI0
ZmYyODVmZDBlNzM1MWRjZDRjMzQyMzQ2My4uOWNmZTdhZGFiNmI5YzQ2MzFlYjBiNDI0YWEwYTlm
OTc4ZDFiOWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAzLTA5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVCghbV90
ZXh0Q2hlY2tpbmdSZXF1ZXN0KSBvbiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMt
cmVtb3ZlLWZyYW1lLmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNwZWxsQ2hlY2tlcidzIHNlcXVlbmNlIG51bWJlcnMgbmVlZCB0byBiZSB1bmlx
dWUgYmV0d2VlbiBmcmFtZXMsIGJlY2F1c2UgdGhleSBhcmUgc2VudCBvdXQKKyAgICAgICAgdG8g
RWRpdG9yQ2xpZW50IHdoaWNoIG1heSBiZSBvbmUgcGVyIHdlYiB2aWV3LCBzbyB1c2UgYSBzdGF0
aWMgdG8gaG9sZCB0aGUgY3VycmVudAorICAgICAgICBzZXF1ZW5jZSBudW1iZXIuCisKKyAgICAg
ICAgQWxzbyBjb252ZXJ0IGZyb20gaW50IHRvIFRleHRDaGVja2luZ1NlcXVlbmNlIHRvIG1ha2Ug
dGhlbSBlYXNpZXIgdG8gZmluZCwgYW5kIHVzZQorICAgICAgICBNYXJrYWJsZSBhbmQgT3B0aW9u
YWwgaW4gVGV4dENoZWNraW5nUmVxdWVzdERhdGEgdG8gcmVwcmVzZW50IHRoZSB1bnNldCBzdGF0
ZS4KKworICAgICAgICBUZXN0ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0
aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVz
dDo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6ZGlk
Q2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0OjpzZXRDaGVja2Vy
QW5kU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpTcGVsbENoZWNr
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNraW5nRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlcjo6ZGlkQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpk
aWRDaGVja1N1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRDaGVj
a0NhbmNlbCk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlcjo6bGFzdFJlcXVlc3RTZXF1ZW5jZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVsbENoZWNrZXI6Omxhc3RQcm9jZXNzZWRTZXF1ZW5jZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ1JlcXVlc3REYXRhOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YTo6c2VxdWVuY2UgY29uc3QpOgor
CiAyMDIwLTAzLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QWxpZ24gZ2FyYmFnZSBjb2xsZWN0aW9uIGZvciBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHdpdGgg
dGhlIHNwZWNpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4OTdiYTdl
Yzc4NGEzYjI3ZGY5ZmZmMzgwNzZiM2YxNDI0OGY2ZTY3Li4wODFiYjgyZDZmYmM0Y2ZhNjc5YWI0
ZDJiODMyYzZlNWZkY2M1MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjAtMDMtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CisKKyAgICAgICAgQVNTRVJUKCFtX3RleHRDaGVja2luZ1JlcXVlc3QpIG9uIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NjA2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJFZGl0b3JDbGllbnQg
YWJsZSB0byBoYW5kbGUgbXVsdGlwbGUgaW4tZmxpZ2h0IHNwZWxsIGNoZWNrIHJlcXVlc3RzIGJ5
IHN0b3JpbmcKKyAgICAgICAgYSBIYXNoTWFwIG9mIHNlcXVlbmNlIG51bWJlcnMgdG8gVGV4dENo
ZWNraW5nUmVxdWVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAg
ICAgICgtW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgaW5pdFdpdGhDbGllbnQ6c2VxdWVu
Y2U6cmVzdWx0czpdKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVk
KToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgor
CiAyMDIwLTAzLTA5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHRoZSBjb21waWxlLXRpbWUgZmxhZyBmb3IgUG9pbnRlciBFdmVudHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAppbmRleCAzZWQ0ODBhZWE5YTBlMjRjNjEy
NTFkMjk3NGUyM2NiYzEyOWUyYmRkLi4wMDkyM2JhNDJkNzg4MzVhMTgwMTYxMGNhYjdkNjQ0ZDg4
ZmM1OWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCkBAIC03MSw3
ICs3MSw3IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OmRpZFN1Y2NlZWQoY29uc3QgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZjxTcGVsbENoZWNrUmVxdWVzdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0gICAgbV9jaGVja2Vy
LT5kaWRDaGVja1N1Y2NlZWQobV9yZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpLCByZXN1bHRzKTsKKyAg
ICBtX2NoZWNrZXItPmRpZENoZWNrU3VjY2VlZChtX3JlcXVlc3REYXRhLnNlcXVlbmNlKCkudmFs
dWUoKSwgcmVzdWx0cyk7CiAgICAgbV9jaGVja2VyID0gbnVsbHB0cjsKIH0KIApAQCAtODEsMTQg
KzgxLDE0IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OmRpZENhbmNlbCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFJlZjxTcGVsbENoZWNrUmVxdWVzdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
Ci0gICAgbV9jaGVja2VyLT5kaWRDaGVja0NhbmNlbChtX3JlcXVlc3REYXRhLnNlcXVlbmNlKCkp
OworICAgIG1fY2hlY2tlci0+ZGlkQ2hlY2tDYW5jZWwobV9yZXF1ZXN0RGF0YS5zZXF1ZW5jZSgp
LnZhbHVlKCkpOwogICAgIG1fY2hlY2tlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQgU3BlbGxDaGVj
a1JlcXVlc3Q6OnNldENoZWNrZXJBbmRTZXF1ZW5jZShTcGVsbENoZWNrZXIqIHJlcXVlc3Rlciwg
aW50IHNlcXVlbmNlKQordm9pZCBTcGVsbENoZWNrUmVxdWVzdDo6c2V0Q2hlY2tlckFuZFNlcXVl
bmNlKFNwZWxsQ2hlY2tlciogcmVxdWVzdGVyLCBUZXh0Q2hlY2tpbmdTZXF1ZW5jZSBzZXF1ZW5j
ZSkKIHsKICAgICBBU1NFUlQoIW1fY2hlY2tlcik7Ci0gICAgQVNTRVJUKG1fcmVxdWVzdERhdGEu
c2VxdWVuY2UoKSA9PSB1bnJlcXVlc3RlZFRleHRDaGVja2luZ1NlcXVlbmNlKTsKKyAgICBBU1NF
UlQoIW1fcmVxdWVzdERhdGEuc2VxdWVuY2UoKSk7CiAgICAgbV9jaGVja2VyID0gcmVxdWVzdGVy
OwogICAgIG1fcmVxdWVzdERhdGEubV9zZXF1ZW5jZSA9IHNlcXVlbmNlOwogfQpAQCAtMTAwLDgg
KzEwMCw2IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OnJlcXVlc3RlckRlc3Ryb3llZCgpCiAK
IFNwZWxsQ2hlY2tlcjo6U3BlbGxDaGVja2VyKEZyYW1lJiBmcmFtZSkKICAgICA6IG1fZnJhbWUo
ZnJhbWUpCi0gICAgLCBtX2xhc3RSZXF1ZXN0U2VxdWVuY2UoMCkKLSAgICAsIG1fbGFzdFByb2Nl
c3NlZFNlcXVlbmNlKDApCiAgICAgLCBtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdCgqdGhp
cywgJlNwZWxsQ2hlY2tlcjo6dGltZXJGaXJlZFRvUHJvY2Vzc1F1ZXVlZFJlcXVlc3QpCiB7CiB9
CkBAIC0xNTEsMTYgKzE0OSwyMyBAQCBib29sIFNwZWxsQ2hlY2tlcjo6aXNDaGVja2FibGUoUmFu
Z2UmIHJhbmdlKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgVGV4dENoZWNr
aW5nU2VxdWVuY2UgbmV4dFNlcXVlbmNlKCkKK3sKKyAgICBzdGF0aWMgVGV4dENoZWNraW5nU2Vx
dWVuY2Ugc2VxdWVuY2U7CisgICAgcmV0dXJuICsrc2VxdWVuY2U7Cit9CisKIHZvaWQgU3BlbGxD
aGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoUmVmPFNwZWxsQ2hlY2tSZXF1ZXN0PiYmIHJlcXVl
c3QpCiB7CiAgICAgaWYgKCFjYW5DaGVja0FzeW5jaHJvbm91c2x5KHJlcXVlc3QtPnBhcmFncmFw
aFJhbmdlKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQocmVxdWVzdC0+ZGF0YSgp
LnNlcXVlbmNlKCkgPT0gdW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSk7Ci0gICAgaW50
IHNlcXVlbmNlID0gKyttX2xhc3RSZXF1ZXN0U2VxdWVuY2U7CisgICAgQVNTRVJUKCFyZXF1ZXN0
LT5kYXRhKCkuc2VxdWVuY2UoKSk7CisgICAgYXV0byBzZXF1ZW5jZSA9IG5leHRTZXF1ZW5jZSgp
OwogICAgIGlmIChzZXF1ZW5jZSA9PSB1bnJlcXVlc3RlZFRleHRDaGVja2luZ1NlcXVlbmNlKQot
ICAgICAgICBzZXF1ZW5jZSA9ICsrbV9sYXN0UmVxdWVzdFNlcXVlbmNlOworICAgICAgICBzZXF1
ZW5jZSA9IG5leHRTZXF1ZW5jZSgpOwogCisgICAgbV9sYXN0UmVxdWVzdFNlcXVlbmNlID0gc2Vx
dWVuY2U7CiAgICAgcmVxdWVzdC0+c2V0Q2hlY2tlckFuZFNlcXVlbmNlKHRoaXMsIHNlcXVlbmNl
KTsKIAogICAgIGlmIChtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdC5pc0FjdGl2ZSgpIHx8
IG1fcHJvY2Vzc2luZ1JlcXVlc3QpIHsKQEAgLTE5Myw3ICsxOTgsNyBAQCB2b2lkIFNwZWxsQ2hl
Y2tlcjo6ZW5xdWV1ZVJlcXVlc3QoUmVmPFNwZWxsQ2hlY2tSZXF1ZXN0PiYmIHJlcXVlc3QpCiAg
ICAgbV9yZXF1ZXN0UXVldWUuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOwogfQogCi12b2lkIFNw
ZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhUZXh0Q2hl
Y2tpbmdTZXF1ZW5jZSBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc2luZ1JlcXVlc3QpOwogICAgIEFTU0VS
VChtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5kYXRhKCkuc2VxdWVuY2UoKSA9PSBzZXF1ZW5jZSk7CkBA
IC0yMTIsNyArMjE3LDcgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5j
ZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3UKICAgICAgICAgbV90aW1l
clRvUHJvY2Vzc1F1ZXVlZFJlcXVlc3Quc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgU3Bl
bGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWQoaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1
Y2NlZWQoVGV4dENoZWNraW5nU2VxdWVuY2Ugc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogICAgIFRleHRDaGVja2luZ1JlcXVlc3REYXRhIHJl
cXVlc3REYXRhID0gbV9wcm9jZXNzaW5nUmVxdWVzdC0+ZGF0YSgpOwogICAgIGlmIChyZXF1ZXN0
RGF0YS5zZXF1ZW5jZSgpID09IHNlcXVlbmNlKSB7CkBAIC0yMjcsNyArMjMyLDcgQEAgdm9pZCBT
cGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZChpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQKICAgICBkaWRDaGVjayhzZXF1ZW5jZSwgcmVzdWx0cyk7CiB9CiAK
LXZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbChpbnQgc2VxdWVuY2UpCit2b2lkIFNw
ZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWwoVGV4dENoZWNraW5nU2VxdWVuY2Ugc2VxdWVuY2Up
CiB7CiAgICAgZGlkQ2hlY2soc2VxdWVuY2UsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKaW5kZXggMDUxNWM1YjNlYmJk
NDA3NzE5ZjU4MzMwYTYyOTQwMTM2N2NjN2M3OS4uZGIyOGY0N2IxMWVjYjM2ZWI1OWFjYjQ3OGQz
NDQ4MTFkOTI1MDI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSYW5nZSYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZS5nZXQoKTsgfQog
ICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RF
ZGl0YWJsZUVsZW1lbnQuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0Q2hlY2tlckFuZFNlcXVlbmNl
KFNwZWxsQ2hlY2tlciosIGludCBzZXF1ZW5jZSk7CisgICAgdm9pZCBzZXRDaGVja2VyQW5kU2Vx
dWVuY2UoU3BlbGxDaGVja2VyKiwgVGV4dENoZWNraW5nU2VxdWVuY2UpOwogICAgIHZvaWQgcmVx
dWVzdGVyRGVzdHJveWVkKCk7CiAgICAgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdCB7IHJldHVybiBt
X2NoZWNrZXI7IH0KIApAQCAtODQsMTIgKzg0LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVx
dWVzdENoZWNraW5nRm9yKFJlZjxTcGVsbENoZWNrUmVxdWVzdD4mJik7CiAKLSAgICBpbnQgbGFz
dFJlcXVlc3RTZXF1ZW5jZSgpIGNvbnN0CisgICAgVGV4dENoZWNraW5nU2VxdWVuY2UgbGFzdFJl
cXVlc3RTZXF1ZW5jZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9sYXN0UmVxdWVz
dFNlcXVlbmNlOwogICAgIH0KIAotICAgIGludCBsYXN0UHJvY2Vzc2VkU2VxdWVuY2UoKSBjb25z
dAorICAgIFRleHRDaGVja2luZ1NlcXVlbmNlIGxhc3RQcm9jZXNzZWRTZXF1ZW5jZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2U7CiAgICAgfQpA
QCAtMTAyLDEzICsxMDIsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWRUb1Byb2Nl
c3NRdWV1ZWRSZXF1ZXN0KCk7CiAgICAgdm9pZCBpbnZva2VSZXF1ZXN0KFJlZjxTcGVsbENoZWNr
UmVxdWVzdD4mJik7CiAgICAgdm9pZCBlbnF1ZXVlUmVxdWVzdChSZWY8U3BlbGxDaGVja1JlcXVl
c3Q+JiYpOwotICAgIHZvaWQgZGlkQ2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgY29uc3QgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKLSAgICB2b2lkIGRpZENoZWNrQ2FuY2VsKGludCBz
ZXF1ZW5jZSk7Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CisgICAgdm9pZCBkaWRDaGVja1N1Y2NlZWQoVGV4dENoZWNr
aW5nU2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CisgICAgdm9p
ZCBkaWRDaGVja0NhbmNlbChUZXh0Q2hlY2tpbmdTZXF1ZW5jZSk7CisgICAgdm9pZCBkaWRDaGVj
ayhUZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
KTsKIAogICAgIEZyYW1lJiBtX2ZyYW1lOwotICAgIGludCBtX2xhc3RSZXF1ZXN0U2VxdWVuY2U7
Ci0gICAgaW50IG1fbGFzdFByb2Nlc3NlZFNlcXVlbmNlOworICAgIFRleHRDaGVja2luZ1NlcXVl
bmNlIG1fbGFzdFJlcXVlc3RTZXF1ZW5jZSB7IDAgfTsKKyAgICBUZXh0Q2hlY2tpbmdTZXF1ZW5j
ZSBtX2xhc3RQcm9jZXNzZWRTZXF1ZW5jZSB7IDAgfTsKIAogICAgIFRpbWVyIG1fdGltZXJUb1By
b2Nlc3NRdWV1ZWRSZXF1ZXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q2hlY2tpbmcuaAppbmRleCAwODRlN2YwNWRiNDM2MjdjMTBmZmM2OWM2ODY5OGFiYjI0ZWExOWVi
Li5iNTY5NWMwMmRmNjdmZmQ4ZDE1ZmJmZWQ2NDhlZGNmNTdhMzZlMjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC03NiwxMiArNzcsMTMgQEAgc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7
CiB9OwogCiBjb25zdCBpbnQgdW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSA9IC0xOwor
dXNpbmcgVGV4dENoZWNraW5nU2VxdWVuY2UgPSBpbnQ7CiAKIGNsYXNzIFRleHRDaGVja2luZ1Jl
cXVlc3REYXRhIHsKICAgICBmcmllbmQgY2xhc3MgU3BlbGxDaGVja1JlcXVlc3Q7IC8vIEZvciBh
Y2Nlc3MgdG8gbV9zZXF1ZW5jZS4KIHB1YmxpYzoKICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0
YSgpID0gZGVmYXVsdDsKLSAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YShpbnQgc2VxdWVuY2Us
IGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5n
VHlwZXMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQorICAgIFRleHRDaGVj
a2luZ1JlcXVlc3REYXRhKFRleHRDaGVja2luZ1NlcXVlbmNlIHNlcXVlbmNlLCBjb25zdCBTdHJp
bmcmIHRleHQsIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBjaGVja2luZ1R5cGVzLCBUZXh0
Q2hlY2tpbmdQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSkKICAgICAgICAgOiBtX3RleHQgeyB0ZXh0
IH0KICAgICAgICAgLCBtX3NlcXVlbmNlIHsgc2VxdWVuY2UgfQogICAgICAgICAsIG1fcHJvY2Vz
c1R5cGUgeyBwcm9jZXNzVHlwZSB9CkBAIC04OSwxNCArOTEsMTQgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICBpbnQgc2VxdWVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcXVlbmNlOyB9
CisgICAgT3B0aW9uYWw8VGV4dENoZWNraW5nU2VxdWVuY2U+IHNlcXVlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXF1ZW5jZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dDsgfQogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBjaGVja2luZ1R5
cGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGVja2luZ1R5cGVzOyB9CiAgICAgVGV4dENoZWNraW5n
UHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NUeXBlOyB9
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGV4dDsKLSAgICBpbnQgbV9zZXF1ZW5jZSB7IHVu
cmVxdWVzdGVkVGV4dENoZWNraW5nU2VxdWVuY2UgfTsKKyAgICBNYXJrYWJsZTxUZXh0Q2hlY2tp
bmdTZXF1ZW5jZSwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxUZXh0Q2hlY2tpbmdTZXF1ZW5jZSwg
dW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZT4+IG1fc2VxdWVuY2U7CiAgICAgVGV4dENo
ZWNraW5nUHJvY2Vzc1R5cGUgbV9wcm9jZXNzVHlwZSB7IFRleHRDaGVja2luZ1Byb2Nlc3NJbmNy
ZW1lbnRhbCB9OwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBtX2NoZWNraW5nVHlw
ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBlMjI4ZjNlZmUzNTQxNmJlMmYwYTc2NDNiNTg0
MDIzNGE2YjU0MjY4Li5hZTU0MWU2YmM4MTY3N2Q4OWZlODRlZTk3MTkxMWEwZjhkOWE4ZWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0
Q2hlY2tlckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAj
aW1wb3J0IDx3dGYvRm9yd2FyZC5oPgorI2ltcG9ydCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL1dlYWtQ
dHIuaD4KQEAgLTUwLDcgKzUxLDcgQEAgcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVudChXZWJW
aWV3ICopOwogICAgIHZpcnR1YWwgfldlYkVkaXRvckNsaWVudCgpOwogCi0gICAgdm9pZCBkaWRD
aGVja1N1Y2NlZWQoaW50IHNlcXVlbmNlLCBOU0FycmF5ICpyZXN1bHRzKTsKKyAgICB2b2lkIGRp
ZENoZWNrU3VjY2VlZChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgTlNBcnJheSAqcmVz
dWx0cyk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSBm
aW5hbDsKQEAgLTE5NSw3ICsxOTYsOCBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmll
dzsKICAgICBSZXRhaW5QdHI8V2ViRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFyZ2V0OwogICAg
IGJvb2wgbV9oYXZlVW5kb1JlZG9PcGVyYXRpb25zIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4gbV90ZXh0Q2hlY2tpbmdSZXF1ZXN0OworICAgIAor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6VGV4dENoZWNraW5nU2VxdWVuY2UsIFJlZjxXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdSZXF1ZXN0Pj4gbV9yZXF1ZXN0c0luRmxpZ2h0OwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIG1fZGVsYXlpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9u
cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggZWE3NmNkNzhkNzAxNmYxYzIzZGM1
YjdmMDZkMGUyZjEzMjBhMTUzMi4uYTM0NTM2NWYyN2QwYmY4YjM2NTU5YmNhZWZlYzEwNmZjZTY5
Yjg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMTIxMiwxNSArMTIxMiwxNSBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0
Q2hlY2tpbmdSZXN1bHQgYQogQGludGVyZmFjZSBXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVy
IDogTlNPYmplY3QKIHsKICAgICBXZWFrUHRyPFdlYkVkaXRvckNsaWVudD4gX2NsaWVudDsKLSAg
ICBpbnQgX3NlcXVlbmNlOworICAgIFRleHRDaGVja2luZ1NlcXVlbmNlIF9zZXF1ZW5jZTsKICAg
ICBSZXRhaW5QdHI8TlNBcnJheT4gX3Jlc3VsdHM7CiB9Ci0tIChpZClpbml0V2l0aENsaWVudDoo
V2Vha1B0cjxXZWJFZGl0b3JDbGllbnQ+KWNsaWVudCBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJl
c3VsdHM6KE5TQXJyYXkqKXJlc3VsdHM7CistIChpZClpbml0V2l0aENsaWVudDooV2Vha1B0cjxX
ZWJFZGl0b3JDbGllbnQ+KWNsaWVudCBzZXF1ZW5jZTooVGV4dENoZWNraW5nU2VxdWVuY2Upc2Vx
dWVuY2UgcmVzdWx0czooTlNBcnJheSopcmVzdWx0czsKIC0gKHZvaWQpcGVyZm9ybTsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIKLS0gKGlkKWlu
aXRXaXRoQ2xpZW50OihXZWFrUHRyPFdlYkVkaXRvckNsaWVudD4pY2xpZW50IHNlcXVlbmNlOihp
bnQpc2VxdWVuY2UgcmVzdWx0czooTlNBcnJheSopcmVzdWx0cworLSAoaWQpaW5pdFdpdGhDbGll
bnQ6KFdlYWtQdHI8V2ViRWRpdG9yQ2xpZW50PiljbGllbnQgc2VxdWVuY2U6KFRleHRDaGVja2lu
Z1NlcXVlbmNlKXNlcXVlbmNlIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHMKIHsKICAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKQEAgLTEyMzksMjcgKzEyMzksMzQgQEAg
LSAodm9pZClwZXJmb3JtCiAKIEBlbmQKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZENoZWNr
U3VjY2VlZChpbnQgc2VxdWVuY2UsIE5TQXJyYXkqIHJlc3VsdHMpCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6ZGlkQ2hlY2tTdWNjZWVkKFRleHRDaGVja2luZ1NlcXVlbmNlIHNlcXVlbmNlLCBOU0Fy
cmF5KiByZXN1bHRzKQogewotICAgIEFTU0VSVF9VTlVTRUQoc2VxdWVuY2UsIHNlcXVlbmNlID09
IG1fdGV4dENoZWNraW5nUmVxdWVzdC0+ZGF0YSgpLnNlcXVlbmNlKCkpOwotICAgIG1fdGV4dENo
ZWNraW5nUmVxdWVzdC0+ZGlkU3VjY2VlZChjb3JlKHJlc3VsdHMsIG1fdGV4dENoZWNraW5nUmVx
dWVzdC0+ZGF0YSgpLmNoZWNraW5nVHlwZXMoKSkpOwotICAgIG1fdGV4dENoZWNraW5nUmVxdWVz
dCA9IG51bGxwdHI7CisgICAgYXV0byByZXF1ZXN0T3B0aW9uYWwgPSBtX3JlcXVlc3RzSW5GbGln
aHQudGFrZShzZXF1ZW5jZSk7CisgICAgQVNTRVJUKHJlcXVlc3RPcHRpb25hbCk7CisgICAgaWYg
KCFyZXF1ZXN0T3B0aW9uYWwpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhdXRvIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3RPcHRpb25hbC52YWx1ZSgpKTsKKyAgICBBU1NFUlQoc2VxdWVu
Y2UgPT0gcmVxdWVzdC0+ZGF0YSgpLnNlcXVlbmNlKCkudmFsdWUoKSk7CisgICAgcmVxdWVzdC0+
ZGlkU3VjY2VlZChjb3JlKHJlc3VsdHMsIHJlcXVlc3QtPmRhdGEoKS5jaGVja2luZ1R5cGVzKCkp
KTsKIH0KIAogI2VuZGlmCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFRleHRDaGVja2luZ1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24pCiB7CiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgQVNTRVJUKCFtX3RleHRDaGVja2luZ1JlcXVlc3QpOwotICAgIG1fdGV4
dENoZWNraW5nUmVxdWVzdCA9ICZyZXF1ZXN0OworICAgIEFTU0VSVChyZXF1ZXN0LmRhdGEoKS5z
ZXF1ZW5jZSgpKTsKKyAgICBhdXRvIHNlcXVlbmNlID0gcmVxdWVzdC5kYXRhKCkuc2VxdWVuY2Uo
KS52YWx1ZSgpOwogCi0gICAgaW50IHNlcXVlbmNlID0gbV90ZXh0Q2hlY2tpbmdSZXF1ZXN0LT5k
YXRhKCkuc2VxdWVuY2UoKTsKLSAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgbV90
ZXh0Q2hlY2tpbmdSZXF1ZXN0LT5kYXRhKCkudGV4dCgpLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQo
IW1fcmVxdWVzdHNJbkZsaWdodC5jb250YWlucyhzZXF1ZW5jZSkpOworICAgIG1fcmVxdWVzdHNJ
bkZsaWdodC5hZGQoc2VxdWVuY2UsIHJlcXVlc3QubWFrZVJlZigpKTsKKworICAgIE5TUmFuZ2Ug
cmFuZ2UgPSBOU01ha2VSYW5nZSgwLCByZXF1ZXN0LmRhdGEoKS50ZXh0KCkubGVuZ3RoKCkpOwog
ICAgIE5TUnVuTG9vcCogY3VycmVudExvb3AgPSBbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXTsK
ICAgICBXZWFrUHRyPFdlYkVkaXRvckNsaWVudD4gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyk7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsgTlNUZXh0Q2hlY2tpbmdJbnNlcnRp
b25Qb2ludEtleSA6ICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50ZWdlcjppbnNlcnRp
b25Qb2ludEZyb21DdXJyZW50U2VsZWN0aW9uKGN1cnJlbnRTZWxlY3Rpb24pXSB9OwotICAgIFtb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZzptX3RleHRDaGVja2luZ1JlcXVlc3QtPmRhdGEoKS50ZXh0KCkgcmFuZ2U6cmFuZ2UgdHlwZXM6
TlNUZXh0Q2hlY2tpbmdBbGxTeXN0ZW1UeXBlcyBvcHRpb25zOm9wdGlvbnMgaW5TcGVsbERvY3Vt
ZW50V2l0aFRhZzowIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyLCBOU0FycmF5KiByZXN1
bHRzLCBOU09ydGhvZ3JhcGh5KiwgTlNJbnRlZ2VyKSB7CisgICAgTlNEaWN0aW9uYXJ5ICpvcHRp
b25zID0gQHsgTlNUZXh0Q2hlY2tpbmdJbnNlcnRpb25Qb2ludEtleSA6IFtOU051bWJlciBudW1i
ZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluc2VydGlvblBvaW50RnJvbUN1cnJlbnRTZWxlY3Rpb24o
Y3VycmVudFNlbGVjdGlvbildIH07CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENo
ZWNrZXJdIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nOnJlcXVlc3QuZGF0YSgpLnRleHQoKSByYW5n
ZTpyYW5nZSB0eXBlczpOU1RleHRDaGVja2luZ0FsbFN5c3RlbVR5cGVzIG9wdGlvbnM6b3B0aW9u
cyBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOjAgY29tcGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIs
IE5TQXJyYXkqIHJlc3VsdHMsIE5TT3J0aG9ncmFwaHkqLCBOU0ludGVnZXIpIHsKICAgICAgICAg
UmV0YWluUHRyPFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXI+IHJlc3BvbmRlciA9IGFkb3B0
TlMoW1tXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aENsaWVudDp3
ZWFrVGhpcyBzZXF1ZW5jZTpzZXF1ZW5jZSByZXN1bHRzOnJlc3VsdHNdKTsKICAgICAgICAgW2N1
cnJlbnRMb29wIHBlcmZvcm1CbG9jazpeewogICAgICAgICAgICAgW3Jlc3BvbmRlciBwZXJmb3Jt
XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393101</attachid>
            <date>2020-03-09 17:55:21 -0700</date>
            <delta_ts>2020-03-09 19:02:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126606-20200309175520.patch</filename>
            <type>text/plain</type>
            <size>15677</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlkMmFlNjcwZDI3ZWI0
ZmYyODVmZDBlNzM1MWRjZDRjMzQyMzQ2My4uOWNmZTdhZGFiNmI5YzQ2MzFlYjBiNDI0YWEwYTlm
OTc4ZDFiOWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAzLTA5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVCghbV90
ZXh0Q2hlY2tpbmdSZXF1ZXN0KSBvbiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMt
cmVtb3ZlLWZyYW1lLmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNwZWxsQ2hlY2tlcidzIHNlcXVlbmNlIG51bWJlcnMgbmVlZCB0byBiZSB1bmlx
dWUgYmV0d2VlbiBmcmFtZXMsIGJlY2F1c2UgdGhleSBhcmUgc2VudCBvdXQKKyAgICAgICAgdG8g
RWRpdG9yQ2xpZW50IHdoaWNoIG1heSBiZSBvbmUgcGVyIHdlYiB2aWV3LCBzbyB1c2UgYSBzdGF0
aWMgdG8gaG9sZCB0aGUgY3VycmVudAorICAgICAgICBzZXF1ZW5jZSBudW1iZXIuCisKKyAgICAg
ICAgQWxzbyBjb252ZXJ0IGZyb20gaW50IHRvIFRleHRDaGVja2luZ1NlcXVlbmNlIHRvIG1ha2Ug
dGhlbSBlYXNpZXIgdG8gZmluZCwgYW5kIHVzZQorICAgICAgICBNYXJrYWJsZSBhbmQgT3B0aW9u
YWwgaW4gVGV4dENoZWNraW5nUmVxdWVzdERhdGEgdG8gcmVwcmVzZW50IHRoZSB1bnNldCBzdGF0
ZS4KKworICAgICAgICBUZXN0ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0
aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVz
dDo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6ZGlk
Q2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0OjpzZXRDaGVja2Vy
QW5kU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpTcGVsbENoZWNr
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNraW5nRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlcjo6ZGlkQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpk
aWRDaGVja1N1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRDaGVj
a0NhbmNlbCk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlcjo6bGFzdFJlcXVlc3RTZXF1ZW5jZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVsbENoZWNrZXI6Omxhc3RQcm9jZXNzZWRTZXF1ZW5jZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2luZ1JlcXVlc3REYXRhOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YTo6c2VxdWVuY2UgY29uc3QpOgor
CiAyMDIwLTAzLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QWxpZ24gZ2FyYmFnZSBjb2xsZWN0aW9uIGZvciBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHdpdGgg
dGhlIHNwZWNpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4OTdiYTdl
Yzc4NGEzYjI3ZGY5ZmZmMzgwNzZiM2YxNDI0OGY2ZTY3Li4wODFiYjgyZDZmYmM0Y2ZhNjc5YWI0
ZDJiODMyYzZlNWZkY2M1MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjAtMDMtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CisKKyAgICAgICAgQVNTRVJUKCFtX3RleHRDaGVja2luZ1JlcXVlc3QpIG9uIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NjA2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJFZGl0b3JDbGllbnQg
YWJsZSB0byBoYW5kbGUgbXVsdGlwbGUgaW4tZmxpZ2h0IHNwZWxsIGNoZWNrIHJlcXVlc3RzIGJ5
IHN0b3JpbmcKKyAgICAgICAgYSBIYXNoTWFwIG9mIHNlcXVlbmNlIG51bWJlcnMgdG8gVGV4dENo
ZWNraW5nUmVxdWVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAg
ICAgICgtW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgaW5pdFdpdGhDbGllbnQ6c2VxdWVu
Y2U6cmVzdWx0czpdKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVk
KToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgor
CiAyMDIwLTAzLTA5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHRoZSBjb21waWxlLXRpbWUgZmxhZyBmb3IgUG9pbnRlciBFdmVudHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAppbmRleCAzZWQ0ODBhZWE5YTBlMjRjNjEy
NTFkMjk3NGUyM2NiYzEyOWUyYmRkLi4wMDkyM2JhNDJkNzg4MzVhMTgwMTYxMGNhYjdkNjQ0ZDg4
ZmM1OWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCkBAIC03MSw3
ICs3MSw3IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OmRpZFN1Y2NlZWQoY29uc3QgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZjxTcGVsbENoZWNrUmVxdWVzdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0gICAgbV9jaGVja2Vy
LT5kaWRDaGVja1N1Y2NlZWQobV9yZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpLCByZXN1bHRzKTsKKyAg
ICBtX2NoZWNrZXItPmRpZENoZWNrU3VjY2VlZChtX3JlcXVlc3REYXRhLnNlcXVlbmNlKCkudmFs
dWUoKSwgcmVzdWx0cyk7CiAgICAgbV9jaGVja2VyID0gbnVsbHB0cjsKIH0KIApAQCAtODEsMTQg
KzgxLDE0IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OmRpZENhbmNlbCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFJlZjxTcGVsbENoZWNrUmVxdWVzdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
Ci0gICAgbV9jaGVja2VyLT5kaWRDaGVja0NhbmNlbChtX3JlcXVlc3REYXRhLnNlcXVlbmNlKCkp
OworICAgIG1fY2hlY2tlci0+ZGlkQ2hlY2tDYW5jZWwobV9yZXF1ZXN0RGF0YS5zZXF1ZW5jZSgp
LnZhbHVlKCkpOwogICAgIG1fY2hlY2tlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQgU3BlbGxDaGVj
a1JlcXVlc3Q6OnNldENoZWNrZXJBbmRTZXF1ZW5jZShTcGVsbENoZWNrZXIqIHJlcXVlc3Rlciwg
aW50IHNlcXVlbmNlKQordm9pZCBTcGVsbENoZWNrUmVxdWVzdDo6c2V0Q2hlY2tlckFuZFNlcXVl
bmNlKFNwZWxsQ2hlY2tlciogcmVxdWVzdGVyLCBUZXh0Q2hlY2tpbmdTZXF1ZW5jZSBzZXF1ZW5j
ZSkKIHsKICAgICBBU1NFUlQoIW1fY2hlY2tlcik7Ci0gICAgQVNTRVJUKG1fcmVxdWVzdERhdGEu
c2VxdWVuY2UoKSA9PSB1bnJlcXVlc3RlZFRleHRDaGVja2luZ1NlcXVlbmNlKTsKKyAgICBBU1NF
UlQoIW1fcmVxdWVzdERhdGEuc2VxdWVuY2UoKSk7CiAgICAgbV9jaGVja2VyID0gcmVxdWVzdGVy
OwogICAgIG1fcmVxdWVzdERhdGEubV9zZXF1ZW5jZSA9IHNlcXVlbmNlOwogfQpAQCAtMTAwLDgg
KzEwMCw2IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OnJlcXVlc3RlckRlc3Ryb3llZCgpCiAK
IFNwZWxsQ2hlY2tlcjo6U3BlbGxDaGVja2VyKEZyYW1lJiBmcmFtZSkKICAgICA6IG1fZnJhbWUo
ZnJhbWUpCi0gICAgLCBtX2xhc3RSZXF1ZXN0U2VxdWVuY2UoMCkKLSAgICAsIG1fbGFzdFByb2Nl
c3NlZFNlcXVlbmNlKDApCiAgICAgLCBtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdCgqdGhp
cywgJlNwZWxsQ2hlY2tlcjo6dGltZXJGaXJlZFRvUHJvY2Vzc1F1ZXVlZFJlcXVlc3QpCiB7CiB9
CkBAIC0xNTEsMTYgKzE0OSwyMyBAQCBib29sIFNwZWxsQ2hlY2tlcjo6aXNDaGVja2FibGUoUmFu
Z2UmIHJhbmdlKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgVGV4dENoZWNr
aW5nU2VxdWVuY2UgbmV4dFNlcXVlbmNlKCkKK3sKKyAgICBzdGF0aWMgVGV4dENoZWNraW5nU2Vx
dWVuY2Ugc2VxdWVuY2U7CisgICAgcmV0dXJuICsrc2VxdWVuY2U7Cit9CisKIHZvaWQgU3BlbGxD
aGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoUmVmPFNwZWxsQ2hlY2tSZXF1ZXN0PiYmIHJlcXVl
c3QpCiB7CiAgICAgaWYgKCFjYW5DaGVja0FzeW5jaHJvbm91c2x5KHJlcXVlc3QtPnBhcmFncmFw
aFJhbmdlKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQocmVxdWVzdC0+ZGF0YSgp
LnNlcXVlbmNlKCkgPT0gdW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSk7Ci0gICAgaW50
IHNlcXVlbmNlID0gKyttX2xhc3RSZXF1ZXN0U2VxdWVuY2U7CisgICAgQVNTRVJUKCFyZXF1ZXN0
LT5kYXRhKCkuc2VxdWVuY2UoKSk7CisgICAgYXV0byBzZXF1ZW5jZSA9IG5leHRTZXF1ZW5jZSgp
OwogICAgIGlmIChzZXF1ZW5jZSA9PSB1bnJlcXVlc3RlZFRleHRDaGVja2luZ1NlcXVlbmNlKQot
ICAgICAgICBzZXF1ZW5jZSA9ICsrbV9sYXN0UmVxdWVzdFNlcXVlbmNlOworICAgICAgICBzZXF1
ZW5jZSA9IG5leHRTZXF1ZW5jZSgpOwogCisgICAgbV9sYXN0UmVxdWVzdFNlcXVlbmNlID0gc2Vx
dWVuY2U7CiAgICAgcmVxdWVzdC0+c2V0Q2hlY2tlckFuZFNlcXVlbmNlKHRoaXMsIHNlcXVlbmNl
KTsKIAogICAgIGlmIChtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdC5pc0FjdGl2ZSgpIHx8
IG1fcHJvY2Vzc2luZ1JlcXVlc3QpIHsKQEAgLTE5Myw3ICsxOTgsNyBAQCB2b2lkIFNwZWxsQ2hl
Y2tlcjo6ZW5xdWV1ZVJlcXVlc3QoUmVmPFNwZWxsQ2hlY2tSZXF1ZXN0PiYmIHJlcXVlc3QpCiAg
ICAgbV9yZXF1ZXN0UXVldWUuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOwogfQogCi12b2lkIFNw
ZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhUZXh0Q2hl
Y2tpbmdTZXF1ZW5jZSBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc2luZ1JlcXVlc3QpOwogICAgIEFTU0VS
VChtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5kYXRhKCkuc2VxdWVuY2UoKSA9PSBzZXF1ZW5jZSk7CkBA
IC0yMTIsNyArMjE3LDcgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5j
ZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3UKICAgICAgICAgbV90aW1l
clRvUHJvY2Vzc1F1ZXVlZFJlcXVlc3Quc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgU3Bl
bGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWQoaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1
Y2NlZWQoVGV4dENoZWNraW5nU2VxdWVuY2Ugc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogICAgIFRleHRDaGVja2luZ1JlcXVlc3REYXRhIHJl
cXVlc3REYXRhID0gbV9wcm9jZXNzaW5nUmVxdWVzdC0+ZGF0YSgpOwogICAgIGlmIChyZXF1ZXN0
RGF0YS5zZXF1ZW5jZSgpID09IHNlcXVlbmNlKSB7CkBAIC0yMjcsNyArMjMyLDcgQEAgdm9pZCBT
cGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZChpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQKICAgICBkaWRDaGVjayhzZXF1ZW5jZSwgcmVzdWx0cyk7CiB9CiAK
LXZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbChpbnQgc2VxdWVuY2UpCit2b2lkIFNw
ZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWwoVGV4dENoZWNraW5nU2VxdWVuY2Ugc2VxdWVuY2Up
CiB7CiAgICAgZGlkQ2hlY2soc2VxdWVuY2UsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKaW5kZXggMDUxNWM1YjNlYmJk
NDA3NzE5ZjU4MzMwYTYyOTQwMTM2N2NjN2M3OS4uZGIyOGY0N2IxMWVjYjM2ZWI1OWFjYjQ3OGQz
NDQ4MTFkOTI1MDI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSYW5nZSYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZS5nZXQoKTsgfQog
ICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RF
ZGl0YWJsZUVsZW1lbnQuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0Q2hlY2tlckFuZFNlcXVlbmNl
KFNwZWxsQ2hlY2tlciosIGludCBzZXF1ZW5jZSk7CisgICAgdm9pZCBzZXRDaGVja2VyQW5kU2Vx
dWVuY2UoU3BlbGxDaGVja2VyKiwgVGV4dENoZWNraW5nU2VxdWVuY2UpOwogICAgIHZvaWQgcmVx
dWVzdGVyRGVzdHJveWVkKCk7CiAgICAgYm9vbCBpc1N0YXJ0ZWQoKSBjb25zdCB7IHJldHVybiBt
X2NoZWNrZXI7IH0KIApAQCAtODQsMTIgKzg0LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVx
dWVzdENoZWNraW5nRm9yKFJlZjxTcGVsbENoZWNrUmVxdWVzdD4mJik7CiAKLSAgICBpbnQgbGFz
dFJlcXVlc3RTZXF1ZW5jZSgpIGNvbnN0CisgICAgVGV4dENoZWNraW5nU2VxdWVuY2UgbGFzdFJl
cXVlc3RTZXF1ZW5jZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9sYXN0UmVxdWVz
dFNlcXVlbmNlOwogICAgIH0KIAotICAgIGludCBsYXN0UHJvY2Vzc2VkU2VxdWVuY2UoKSBjb25z
dAorICAgIFRleHRDaGVja2luZ1NlcXVlbmNlIGxhc3RQcm9jZXNzZWRTZXF1ZW5jZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2U7CiAgICAgfQpA
QCAtMTAyLDEzICsxMDIsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWRUb1Byb2Nl
c3NRdWV1ZWRSZXF1ZXN0KCk7CiAgICAgdm9pZCBpbnZva2VSZXF1ZXN0KFJlZjxTcGVsbENoZWNr
UmVxdWVzdD4mJik7CiAgICAgdm9pZCBlbnF1ZXVlUmVxdWVzdChSZWY8U3BlbGxDaGVja1JlcXVl
c3Q+JiYpOwotICAgIHZvaWQgZGlkQ2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgY29uc3QgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKLSAgICB2b2lkIGRpZENoZWNrQ2FuY2VsKGludCBz
ZXF1ZW5jZSk7Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CisgICAgdm9pZCBkaWRDaGVja1N1Y2NlZWQoVGV4dENoZWNr
aW5nU2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CisgICAgdm9p
ZCBkaWRDaGVja0NhbmNlbChUZXh0Q2hlY2tpbmdTZXF1ZW5jZSk7CisgICAgdm9pZCBkaWRDaGVj
ayhUZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
KTsKIAogICAgIEZyYW1lJiBtX2ZyYW1lOwotICAgIGludCBtX2xhc3RSZXF1ZXN0U2VxdWVuY2U7
Ci0gICAgaW50IG1fbGFzdFByb2Nlc3NlZFNlcXVlbmNlOworICAgIFRleHRDaGVja2luZ1NlcXVl
bmNlIG1fbGFzdFJlcXVlc3RTZXF1ZW5jZSB7IDAgfTsKKyAgICBUZXh0Q2hlY2tpbmdTZXF1ZW5j
ZSBtX2xhc3RQcm9jZXNzZWRTZXF1ZW5jZSB7IDAgfTsKIAogICAgIFRpbWVyIG1fdGltZXJUb1By
b2Nlc3NRdWV1ZWRSZXF1ZXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q2hlY2tpbmcuaAppbmRleCAwODRlN2YwNWRiNDM2MjdjMTBmZmM2OWM2ODY5OGFiYjI0ZWExOWVi
Li5iNTY5NWMwMmRmNjdmZmQ4ZDE1ZmJmZWQ2NDhlZGNmNTdhMzZlMjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC03NiwxMiArNzcsMTMgQEAgc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7
CiB9OwogCiBjb25zdCBpbnQgdW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSA9IC0xOwor
dXNpbmcgVGV4dENoZWNraW5nU2VxdWVuY2UgPSBpbnQ7CiAKIGNsYXNzIFRleHRDaGVja2luZ1Jl
cXVlc3REYXRhIHsKICAgICBmcmllbmQgY2xhc3MgU3BlbGxDaGVja1JlcXVlc3Q7IC8vIEZvciBh
Y2Nlc3MgdG8gbV9zZXF1ZW5jZS4KIHB1YmxpYzoKICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0
YSgpID0gZGVmYXVsdDsKLSAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YShpbnQgc2VxdWVuY2Us
IGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5n
VHlwZXMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQorICAgIFRleHRDaGVj
a2luZ1JlcXVlc3REYXRhKFRleHRDaGVja2luZ1NlcXVlbmNlIHNlcXVlbmNlLCBjb25zdCBTdHJp
bmcmIHRleHQsIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBjaGVja2luZ1R5cGVzLCBUZXh0
Q2hlY2tpbmdQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSkKICAgICAgICAgOiBtX3RleHQgeyB0ZXh0
IH0KICAgICAgICAgLCBtX3NlcXVlbmNlIHsgc2VxdWVuY2UgfQogICAgICAgICAsIG1fcHJvY2Vz
c1R5cGUgeyBwcm9jZXNzVHlwZSB9CkBAIC04OSwxNCArOTEsMTQgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICBpbnQgc2VxdWVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcXVlbmNlOyB9
CisgICAgT3B0aW9uYWw8VGV4dENoZWNraW5nU2VxdWVuY2U+IHNlcXVlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXF1ZW5jZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dDsgfQogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBjaGVja2luZ1R5
cGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGVja2luZ1R5cGVzOyB9CiAgICAgVGV4dENoZWNraW5n
UHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NUeXBlOyB9
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGV4dDsKLSAgICBpbnQgbV9zZXF1ZW5jZSB7IHVu
cmVxdWVzdGVkVGV4dENoZWNraW5nU2VxdWVuY2UgfTsKKyAgICBNYXJrYWJsZTxUZXh0Q2hlY2tp
bmdTZXF1ZW5jZSwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxUZXh0Q2hlY2tpbmdTZXF1ZW5jZSwg
dW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZT4+IG1fc2VxdWVuY2U7CiAgICAgVGV4dENo
ZWNraW5nUHJvY2Vzc1R5cGUgbV9wcm9jZXNzVHlwZSB7IFRleHRDaGVja2luZ1Byb2Nlc3NJbmNy
ZW1lbnRhbCB9OwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBtX2NoZWNraW5nVHlw
ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBlMjI4ZjNlZmUzNTQxNmJlMmYwYTc2NDNiNTg0
MDIzNGE2YjU0MjY4Li5hZTU0MWU2YmM4MTY3N2Q4OWZlODRlZTk3MTkxMWEwZjhkOWE4ZWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0
Q2hlY2tlckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAj
aW1wb3J0IDx3dGYvRm9yd2FyZC5oPgorI2ltcG9ydCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL1dlYWtQ
dHIuaD4KQEAgLTUwLDcgKzUxLDcgQEAgcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVudChXZWJW
aWV3ICopOwogICAgIHZpcnR1YWwgfldlYkVkaXRvckNsaWVudCgpOwogCi0gICAgdm9pZCBkaWRD
aGVja1N1Y2NlZWQoaW50IHNlcXVlbmNlLCBOU0FycmF5ICpyZXN1bHRzKTsKKyAgICB2b2lkIGRp
ZENoZWNrU3VjY2VlZChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgTlNBcnJheSAqcmVz
dWx0cyk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSBm
aW5hbDsKQEAgLTE5NSw3ICsxOTYsOCBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmll
dzsKICAgICBSZXRhaW5QdHI8V2ViRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFyZ2V0OwogICAg
IGJvb2wgbV9oYXZlVW5kb1JlZG9PcGVyYXRpb25zIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4gbV90ZXh0Q2hlY2tpbmdSZXF1ZXN0OworICAgIAor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6VGV4dENoZWNraW5nU2VxdWVuY2UsIFJlZjxXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdSZXF1ZXN0Pj4gbV9yZXF1ZXN0c0luRmxpZ2h0OwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIG1fZGVsYXlpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9u
cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggZWE3NmNkNzhkNzAxNmYxYzIzZGM1
YjdmMDZkMGUyZjEzMjBhMTUzMi4uM2ZkZTQ3OTQwZmU3N2M1MjY4ZTgzMDFiNjQ3ZDkzYTRmZWVj
OTMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMTIxMiwxNSArMTIxMiwxNSBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0
Q2hlY2tpbmdSZXN1bHQgYQogQGludGVyZmFjZSBXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVy
IDogTlNPYmplY3QKIHsKICAgICBXZWFrUHRyPFdlYkVkaXRvckNsaWVudD4gX2NsaWVudDsKLSAg
ICBpbnQgX3NlcXVlbmNlOworICAgIFRleHRDaGVja2luZ1NlcXVlbmNlIF9zZXF1ZW5jZTsKICAg
ICBSZXRhaW5QdHI8TlNBcnJheT4gX3Jlc3VsdHM7CiB9Ci0tIChpZClpbml0V2l0aENsaWVudDoo
V2Vha1B0cjxXZWJFZGl0b3JDbGllbnQ+KWNsaWVudCBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJl
c3VsdHM6KE5TQXJyYXkqKXJlc3VsdHM7CistIChpZClpbml0V2l0aENsaWVudDooV2Vha1B0cjxX
ZWJFZGl0b3JDbGllbnQ+KWNsaWVudCBzZXF1ZW5jZTooVGV4dENoZWNraW5nU2VxdWVuY2Upc2Vx
dWVuY2UgcmVzdWx0czooTlNBcnJheSopcmVzdWx0czsKIC0gKHZvaWQpcGVyZm9ybTsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIKLS0gKGlkKWlu
aXRXaXRoQ2xpZW50OihXZWFrUHRyPFdlYkVkaXRvckNsaWVudD4pY2xpZW50IHNlcXVlbmNlOihp
bnQpc2VxdWVuY2UgcmVzdWx0czooTlNBcnJheSopcmVzdWx0cworLSAoaWQpaW5pdFdpdGhDbGll
bnQ6KFdlYWtQdHI8V2ViRWRpdG9yQ2xpZW50PiljbGllbnQgc2VxdWVuY2U6KFRleHRDaGVja2lu
Z1NlcXVlbmNlKXNlcXVlbmNlIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHMKIHsKICAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKQEAgLTEyMzksMjcgKzEyMzksMzQgQEAg
LSAodm9pZClwZXJmb3JtCiAKIEBlbmQKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZENoZWNr
U3VjY2VlZChpbnQgc2VxdWVuY2UsIE5TQXJyYXkqIHJlc3VsdHMpCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6ZGlkQ2hlY2tTdWNjZWVkKFRleHRDaGVja2luZ1NlcXVlbmNlIHNlcXVlbmNlLCBOU0Fy
cmF5KiByZXN1bHRzKQogewotICAgIEFTU0VSVF9VTlVTRUQoc2VxdWVuY2UsIHNlcXVlbmNlID09
IG1fdGV4dENoZWNraW5nUmVxdWVzdC0+ZGF0YSgpLnNlcXVlbmNlKCkpOwotICAgIG1fdGV4dENo
ZWNraW5nUmVxdWVzdC0+ZGlkU3VjY2VlZChjb3JlKHJlc3VsdHMsIG1fdGV4dENoZWNraW5nUmVx
dWVzdC0+ZGF0YSgpLmNoZWNraW5nVHlwZXMoKSkpOwotICAgIG1fdGV4dENoZWNraW5nUmVxdWVz
dCA9IG51bGxwdHI7CisgICAgYXV0byByZXF1ZXN0T3B0aW9uYWwgPSBtX3JlcXVlc3RzSW5GbGln
aHQudGFrZShzZXF1ZW5jZSk7CisgICAgQVNTRVJUKHJlcXVlc3RPcHRpb25hbCk7CisgICAgaWYg
KCFyZXF1ZXN0T3B0aW9uYWwpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhdXRvIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3RPcHRpb25hbC52YWx1ZSgpKTsKKyAgICBBU1NFUlQoc2VxdWVu
Y2UgPT0gcmVxdWVzdC0+ZGF0YSgpLnNlcXVlbmNlKCkudmFsdWUoKSk7CisgICAgcmVxdWVzdC0+
ZGlkU3VjY2VlZChjb3JlKHJlc3VsdHMsIHJlcXVlc3QtPmRhdGEoKS5jaGVja2luZ1R5cGVzKCkp
KTsKIH0KIAogI2VuZGlmCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFRleHRDaGVja2luZ1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24pCiB7CiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgQVNTRVJUKCFtX3RleHRDaGVja2luZ1JlcXVlc3QpOwotICAgIG1fdGV4
dENoZWNraW5nUmVxdWVzdCA9ICZyZXF1ZXN0OworICAgIEFTU0VSVChyZXF1ZXN0LmRhdGEoKS5z
ZXF1ZW5jZSgpKTsKKyAgICBhdXRvIHNlcXVlbmNlID0gcmVxdWVzdC5kYXRhKCkuc2VxdWVuY2Uo
KS52YWx1ZSgpOwogCi0gICAgaW50IHNlcXVlbmNlID0gbV90ZXh0Q2hlY2tpbmdSZXF1ZXN0LT5k
YXRhKCkuc2VxdWVuY2UoKTsKLSAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgbV90
ZXh0Q2hlY2tpbmdSZXF1ZXN0LT5kYXRhKCkudGV4dCgpLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQo
IW1fcmVxdWVzdHNJbkZsaWdodC5jb250YWlucyhzZXF1ZW5jZSkpOworICAgIG1fcmVxdWVzdHNJ
bkZsaWdodC5hZGQoc2VxdWVuY2UsIG1ha2VSZWYocmVxdWVzdCkpOworCisgICAgTlNSYW5nZSBy
YW5nZSA9IE5TTWFrZVJhbmdlKDAsIHJlcXVlc3QuZGF0YSgpLnRleHQoKS5sZW5ndGgoKSk7CiAg
ICAgTlNSdW5Mb29wKiBjdXJyZW50TG9vcCA9IFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwog
ICAgIFdlYWtQdHI8V2ViRWRpdG9yQ2xpZW50PiB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KTsKLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAeyBOU1RleHRDaGVja2luZ0luc2VydGlv
blBvaW50S2V5IDogIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluc2VydGlv
blBvaW50RnJvbUN1cnJlbnRTZWxlY3Rpb24oY3VycmVudFNlbGVjdGlvbildIH07Ci0gICAgW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
Om1fdGV4dENoZWNraW5nUmVxdWVzdC0+ZGF0YSgpLnRleHQoKSByYW5nZTpyYW5nZSB0eXBlczpO
U1RleHRDaGVja2luZ0FsbFN5c3RlbVR5cGVzIG9wdGlvbnM6b3B0aW9ucyBpblNwZWxsRG9jdW1l
bnRXaXRoVGFnOjAgY29tcGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIsIE5TQXJyYXkqIHJlc3Vs
dHMsIE5TT3J0aG9ncmFwaHkqLCBOU0ludGVnZXIpIHsKKyAgICBOU0RpY3Rpb25hcnkgKm9wdGlv
bnMgPSBAeyBOU1RleHRDaGVja2luZ0luc2VydGlvblBvaW50S2V5IDogW05TTnVtYmVyIG51bWJl
cldpdGhVbnNpZ25lZEludGVnZXI6aW5zZXJ0aW9uUG9pbnRGcm9tQ3VycmVudFNlbGVjdGlvbihj
dXJyZW50U2VsZWN0aW9uKV0gfTsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gcmVxdWVzdENoZWNraW5nT2ZTdHJpbmc6cmVxdWVzdC5kYXRhKCkudGV4dCgpIHJhbmdl
OnJhbmdlIHR5cGVzOk5TVGV4dENoZWNraW5nQWxsU3lzdGVtVHlwZXMgb3B0aW9uczpvcHRpb25z
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6MCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdlciwg
TlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dyYXBoeSosIE5TSW50ZWdlcikgewogICAgICAgICBS
ZXRhaW5QdHI8V2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlcj4gcmVzcG9uZGVyID0gYWRvcHRO
UyhbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoQ2xpZW50Ondl
YWtUaGlzIHNlcXVlbmNlOnNlcXVlbmNlIHJlc3VsdHM6cmVzdWx0c10pOwogICAgICAgICBbY3Vy
cmVudExvb3AgcGVyZm9ybUJsb2NrOl57CiAgICAgICAgICAgICBbcmVzcG9uZGVyIHBlcmZvcm1d
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393108</attachid>
            <date>2020-03-09 19:02:36 -0700</date>
            <delta_ts>2020-03-09 19:37:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126606-20200309190235.patch</filename>
            <type>text/plain</type>
            <size>26052</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlkMmFlNjcwZDI3ZWI0
ZmYyODVmZDBlNzM1MWRjZDRjMzQyMzQ2My4uZjAyNTU5YjYxMDIzMDQ5Zjg5MWVkY2I4Mzg3MTMx
ZTljNzUzZjA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAzLTA5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVCghbV90
ZXh0Q2hlY2tpbmdSZXF1ZXN0KSBvbiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMt
cmVtb3ZlLWZyYW1lLmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNwZWxsQ2hlY2tlcidzIHNlcXVlbmNlIG51bWJlcnMgbmVlZCB0byBiZSB1bmlx
dWUgYmV0d2VlbiBmcmFtZXMsIGJlY2F1c2UgdGhleSBhcmUgc2VudCBvdXQKKyAgICAgICAgdG8g
RWRpdG9yQ2xpZW50IHdoaWNoIG1heSBiZSBvbmUgcGVyIHdlYiB2aWV3LCBtb3ZlIGZyb20gYSBw
ZXItU3BlbGxDaGVja2VyIGludCB0bworICAgICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRlbnRp
Zmllci4KKworICAgICAgICBDaGFuZ2UgdGVybWlub2xvZ3kgZnJvbSAic2VxdWVuY2UiIHRvICJp
ZGVudGlmaWVyIiBhbmQgdXNlIE9wdGlvbmFsIGluCisgICAgICAgIFRleHRDaGVja2luZ1JlcXVl
c3REYXRhIHRvIHJlcHJlc2VudCB0aGUgdW5zZXQgc3RhdGUuCisKKyAgICAgICAgVGVzdGVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0OjpkaWRTdWNjZWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0OjpkaWRDYW5jZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlbGxDaGVja1JlcXVlc3Q6OnNldENoZWNrZXJBbmRJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6U3BlbGxDaGVja2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNraW5nRm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
OjpkaWRDaGVja1N1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRD
aGVja0NhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6c2V0Q2hl
Y2tlckFuZFNlcXVlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpsYXN0UmVxdWVzdElkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpsYXN0UHJvY2Vzc2Vk
SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6Omxhc3RS
ZXF1ZXN0U2VxdWVuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxD
aGVja2VyOjpsYXN0UHJvY2Vzc2VkU2VxdWVuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdSZXF1ZXN0RGF0YTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGE6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGE6OnNlcXVlbmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6Omxhc3RTcGVsbENoZWNrUmVxdWVzdFNlcXVlbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6bGFzdFNwZWxsQ2hlY2tQcm9jZXNzZWRTZXF1ZW5jZSk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjAtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBbGlnbiBnYXJiYWdlIGNvbGxlY3Rpb24gZm9yIFhNTEh0dHBSZXF1ZXN0IG9iamVjdHMg
d2l0aCB0aGUgc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjOTQ0ZGI0ZWZkMWJjYjdiZjY1MDNj
ZDNmMGI4NDViMDdlNDk5ZTEzLi41ZDZhMTFkNzljNTQ5ZTA2MjQyZDJkNDdmMTg0YTlmNDFhNTAy
ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAzLTA5ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVCghbV90ZXh0Q2hlY2tp
bmdSZXF1ZXN0KSBvbiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtcmVtb3ZlLWZy
YW1lLmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNjYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwZWxsQ2hlY2tlcidzIHNlcXVlbmNlIG51bWJlcnMgbmVlZCB0byBiZSB1bmlxdWUgYmV0d2Vl
biBmcmFtZXMsIGJlY2F1c2UgdGhleSBhcmUgc2VudCBvdXQKKyAgICAgICAgdG8gRWRpdG9yQ2xp
ZW50IHdoaWNoIG1heSBiZSBvbmUgcGVyIHdlYiB2aWV3LCBzbyB1c2UgYSBzdGF0aWMgdG8gaG9s
ZCB0aGUgY3VycmVudAorICAgICAgICBzZXF1ZW5jZSBudW1iZXIuCisKKyAgICAgICAgQWxzbyBj
b252ZXJ0IGZyb20gaW50IHRvIFRleHRDaGVja2luZ1NlcXVlbmNlIHRvIG1ha2UgdGhlbSBlYXNp
ZXIgdG8gZmluZCwgYW5kIHVzZQorICAgICAgICBNYXJrYWJsZSBhbmQgT3B0aW9uYWwgaW4gVGV4
dENoZWNraW5nUmVxdWVzdERhdGEgdG8gcmVwcmVzZW50IHRoZSB1bnNldCBzdGF0ZS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmRlY29kZSk6CisK
IDIwMjAtMDMtMDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVVBdIEltcGxlbWVudCBMZWdhY3kgRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4OTdiYTdlYzc4NGEzYjI3ZGY5ZmZmMzgwNzZiM2Yx
NDI0OGY2ZTY3Li41NGM3MDE1NWIzNmRlNzlkYWE0MTcyYjE5NTM4NzE4YThmNjdmYWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMDkgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQVNTRVJUKCFt
X3RleHRDaGVja2luZ1JlcXVlc3QpIG9uIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3lu
Yy1yZW1vdmUtZnJhbWUuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2NjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3BlbGxDaGVja2VyJ3Mgc2VxdWVuY2UgbnVtYmVycyBuZWVkIHRvIGJlIHVu
aXF1ZSBiZXR3ZWVuIGZyYW1lcywgYmVjYXVzZSB0aGV5IGFyZSBzZW50IG91dAorICAgICAgICB0
byBFZGl0b3JDbGllbnQgd2hpY2ggbWF5IGJlIG9uZSBwZXIgd2ViIHZpZXcsIHNvIHVzZSBhIHN0
YXRpYyB0byBob2xkIHRoZSBjdXJyZW50CisgICAgICAgIHNlcXVlbmNlIG51bWJlci4KKworICAg
ICAgICBBbHNvIGNvbnZlcnQgZnJvbSBpbnQgdG8gVGV4dENoZWNraW5nU2VxdWVuY2UgdG8gbWFr
ZSB0aGVtIGVhc2llciB0byBmaW5kLCBhbmQgdXNlCisgICAgICAgIE1hcmthYmxlIGFuZCBPcHRp
b25hbCBpbiBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSB0byByZXByZXNlbnQgdGhlIHVuc2V0IHN0
YXRlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJF
ZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGluaXRXaXRoQ2xpZW50OmlkZW50aWZpZXI6cmVzdWx0
czpdKToKKyAgICAgICAgKC1bV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlciBwZXJmb3JtXSk6
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpZENoZWNrU3VjY2VlZCk6CisgICAgICAgIChX
ZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKC1bV2Vi
RWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlciBpbml0V2l0aENsaWVudDpzZXF1ZW5jZTpyZXN1bHRz
Ol0pOiBEZWxldGVkLgorCisyMDIwLTAzLTA5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVCghbV90ZXh0Q2hlY2tpbmdSZXF1ZXN0KSBvbiBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtcmVtb3ZlLWZyYW1lLmh0bWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjYwNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgV2ViRWRpdG9y
Q2xpZW50IGFibGUgdG8gaGFuZGxlIG11bHRpcGxlIGluLWZsaWdodCBzcGVsbCBjaGVjayByZXF1
ZXN0cyBieSBzdG9yaW5nCisgICAgICAgIGEgSGFzaE1hcCBvZiBzZXF1ZW5jZSBudW1iZXJzIHRv
IFRleHRDaGVja2luZ1JlcXVlc3RzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
OgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGluaXRXaXRoQ2xpZW50
OnNlcXVlbmNlOnJlc3VsdHM6XSk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpZENoZWNr
U3VjY2VlZCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKToKKwogMjAyMC0wMy0wOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSB0aGUgY29tcGlsZS10aW1lIGZsYWcgZm9yIFBvaW50ZXIgRXZlbnRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5kZXggM2VkNDgwYWVhOWEw
ZTI0YzYxMjUxZDI5NzRlMjNjYmMxMjllMmJkZC4uMTcyZDg1ZmQ0NjZmMjgzNjZiNTU4MDZkMDli
ZjYwMWZlMWM1ZjgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVlc3QoUmVm
PFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdQogICAgICwgbV9hdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlKFdURk1vdmUoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSkpCiAg
ICAgLCBtX3BhcmFncmFwaFJhbmdlKFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpKQogICAgICwgbV9y
b290RWRpdGFibGVFbGVtZW50KG1fY2hlY2tpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoKS5yb290
RWRpdGFibGVFbGVtZW50KCkpCi0gICAgLCBtX3JlcXVlc3REYXRhKHVucmVxdWVzdGVkVGV4dENo
ZWNraW5nU2VxdWVuY2UsIHRleHQsIG1hc2ssIHByb2Nlc3NUeXBlKQorICAgICwgbV9yZXF1ZXN0
RGF0YShXVEY6Om51bGxvcHQsIHRleHQsIG1hc2ssIHByb2Nlc3NUeXBlKQogewogfQogCkBAIC03
MSw3ICs3MSw3IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OmRpZFN1Y2NlZWQoY29uc3QgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJlZjxTcGVsbENoZWNrUmVxdWVzdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0gICAgbV9jaGVj
a2VyLT5kaWRDaGVja1N1Y2NlZWQobV9yZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpLCByZXN1bHRzKTsK
KyAgICBtX2NoZWNrZXItPmRpZENoZWNrU3VjY2VlZChtX3JlcXVlc3REYXRhLmlkZW50aWZpZXIo
KS52YWx1ZSgpLCByZXN1bHRzKTsKICAgICBtX2NoZWNrZXIgPSBudWxscHRyOwogfQogCkBAIC04
MSwxNiArODEsMTYgQEAgdm9pZCBTcGVsbENoZWNrUmVxdWVzdDo6ZGlkQ2FuY2VsKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVmPFNwZWxsQ2hlY2tSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKLSAgICBtX2NoZWNrZXItPmRpZENoZWNrQ2FuY2VsKG1fcmVxdWVzdERhdGEuc2VxdWVu
Y2UoKSk7CisgICAgbV9jaGVja2VyLT5kaWRDaGVja0NhbmNlbChtX3JlcXVlc3REYXRhLmlkZW50
aWZpZXIoKS52YWx1ZSgpKTsKICAgICBtX2NoZWNrZXIgPSBudWxscHRyOwogfQogCi12b2lkIFNw
ZWxsQ2hlY2tSZXF1ZXN0OjpzZXRDaGVja2VyQW5kU2VxdWVuY2UoU3BlbGxDaGVja2VyKiByZXF1
ZXN0ZXIsIGludCBzZXF1ZW5jZSkKK3ZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OnNldENoZWNrZXJB
bmRJZGVudGlmaWVyKFNwZWxsQ2hlY2tlciogcmVxdWVzdGVyLCBUZXh0Q2hlY2tpbmdSZXF1ZXN0
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghbV9jaGVja2VyKTsKLSAgICBB
U1NFUlQobV9yZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpID09IHVucmVxdWVzdGVkVGV4dENoZWNraW5n
U2VxdWVuY2UpOworICAgIEFTU0VSVCghbV9yZXF1ZXN0RGF0YS5pZGVudGlmaWVyKCkpOwogICAg
IG1fY2hlY2tlciA9IHJlcXVlc3RlcjsKLSAgICBtX3JlcXVlc3REYXRhLm1fc2VxdWVuY2UgPSBz
ZXF1ZW5jZTsKKyAgICBtX3JlcXVlc3REYXRhLm1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiB9
CiAKIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OnJlcXVlc3RlckRlc3Ryb3llZCgpCkBAIC0xMDAs
OCArMTAwLDYgQEAgdm9pZCBTcGVsbENoZWNrUmVxdWVzdDo6cmVxdWVzdGVyRGVzdHJveWVkKCkK
IAogU3BlbGxDaGVja2VyOjpTcGVsbENoZWNrZXIoRnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFt
ZShmcmFtZSkKLSAgICAsIG1fbGFzdFJlcXVlc3RTZXF1ZW5jZSgwKQotICAgICwgbV9sYXN0UHJv
Y2Vzc2VkU2VxdWVuY2UoMCkKICAgICAsIG1fdGltZXJUb1Byb2Nlc3NRdWV1ZWRSZXF1ZXN0KCp0
aGlzLCAmU3BlbGxDaGVja2VyOjp0aW1lckZpcmVkVG9Qcm9jZXNzUXVldWVkUmVxdWVzdCkKIHsK
IH0KQEAgLTE1NiwxMiArMTU0LDExIEBAIHZvaWQgU3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tp
bmdGb3IoUmVmPFNwZWxsQ2hlY2tSZXF1ZXN0PiYmIHJlcXVlc3QpCiAgICAgaWYgKCFjYW5DaGVj
a0FzeW5jaHJvbm91c2x5KHJlcXVlc3QtPnBhcmFncmFwaFJhbmdlKCkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBBU1NFUlQocmVxdWVzdC0+ZGF0YSgpLnNlcXVlbmNlKCkgPT0gdW5yZXF1ZXN0
ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSk7Ci0gICAgaW50IHNlcXVlbmNlID0gKyttX2xhc3RSZXF1
ZXN0U2VxdWVuY2U7Ci0gICAgaWYgKHNlcXVlbmNlID09IHVucmVxdWVzdGVkVGV4dENoZWNraW5n
U2VxdWVuY2UpCi0gICAgICAgIHNlcXVlbmNlID0gKyttX2xhc3RSZXF1ZXN0U2VxdWVuY2U7Cisg
ICAgQVNTRVJUKCFyZXF1ZXN0LT5kYXRhKCkuaWRlbnRpZmllcigpKTsKKyAgICBhdXRvIGlkZW50
aWZpZXIgPSBUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIAotICAg
IHJlcXVlc3QtPnNldENoZWNrZXJBbmRTZXF1ZW5jZSh0aGlzLCBzZXF1ZW5jZSk7CisgICAgbV9s
YXN0UmVxdWVzdElkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIHJlcXVlc3QtPnNldENoZWNr
ZXJBbmRJZGVudGlmaWVyKHRoaXMsIGlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fdGltZXJUb1By
b2Nlc3NRdWV1ZWRSZXF1ZXN0LmlzQWN0aXZlKCkgfHwgbV9wcm9jZXNzaW5nUmVxdWVzdCkgewog
ICAgICAgICBlbnF1ZXVlUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKQEAgLTE5MywyOSArMTkw
LDI5IEBAIHZvaWQgU3BlbGxDaGVja2VyOjplbnF1ZXVlUmVxdWVzdChSZWY8U3BlbGxDaGVja1Jl
cXVlc3Q+JiYgcmVxdWVzdCkKICAgICBtX3JlcXVlc3RRdWV1ZS5hcHBlbmQoV1RGTW92ZShyZXF1
ZXN0KSk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNv
bnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQordm9pZCBTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKFRleHRDaGVja2luZ1JlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogICAgIEFTU0VSVCht
X3Byb2Nlc3NpbmdSZXF1ZXN0KTsKLSAgICBBU1NFUlQobV9wcm9jZXNzaW5nUmVxdWVzdC0+ZGF0
YSgpLnNlcXVlbmNlKCkgPT0gc2VxdWVuY2UpOwotICAgIGlmIChtX3Byb2Nlc3NpbmdSZXF1ZXN0
LT5kYXRhKCkuc2VxdWVuY2UoKSAhPSBzZXF1ZW5jZSkgeworICAgIEFTU0VSVChtX3Byb2Nlc3Np
bmdSZXF1ZXN0LT5kYXRhKCkuaWRlbnRpZmllcigpID09IGlkZW50aWZpZXIpOworICAgIGlmICht
X3Byb2Nlc3NpbmdSZXF1ZXN0LT5kYXRhKCkuaWRlbnRpZmllcigpICE9IGlkZW50aWZpZXIpIHsK
ICAgICAgICAgbV9yZXF1ZXN0UXVldWUuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIG1fZnJhbWUuZWRpdG9yKCkubWFya0FuZFJlcGxhY2VGb3IoKm1fcHJvY2Vzc2luZ1Jl
cXVlc3QsIHJlc3VsdHMpOwogCi0gICAgaWYgKG1fbGFzdFByb2Nlc3NlZFNlcXVlbmNlIDwgc2Vx
dWVuY2UpCi0gICAgICAgIG1fbGFzdFByb2Nlc3NlZFNlcXVlbmNlID0gc2VxdWVuY2U7CisgICAg
aWYgKG1fbGFzdFByb2Nlc3NlZElkZW50aWZpZXIudG9VSW50NjQoKSA8IGlkZW50aWZpZXIudG9V
SW50NjQoKSkKKyAgICAgICAgbV9sYXN0UHJvY2Vzc2VkSWRlbnRpZmllciA9IGlkZW50aWZpZXI7
CiAKICAgICBtX3Byb2Nlc3NpbmdSZXF1ZXN0ID0gbnVsbHB0cjsKICAgICBpZiAoIW1fcmVxdWVz
dFF1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAgbV90aW1lclRvUHJvY2Vzc1F1ZXVlZFJlcXVlc3Qu
c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2Nl
ZWQoaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0
cykKK3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWQoVGV4dENoZWNraW5nUmVxdWVz
dElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpCiB7CiAgICAgVGV4dENoZWNraW5nUmVxdWVzdERhdGEgcmVxdWVzdERhdGEgPSBt
X3Byb2Nlc3NpbmdSZXF1ZXN0LT5kYXRhKCk7Ci0gICAgaWYgKHJlcXVlc3REYXRhLnNlcXVlbmNl
KCkgPT0gc2VxdWVuY2UpIHsKKyAgICBpZiAocmVxdWVzdERhdGEuaWRlbnRpZmllcigpID09IGlk
ZW50aWZpZXIpIHsKICAgICAgICAgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
PiBtYXJrZXJUeXBlczsKICAgICAgICAgaWYgKHJlcXVlc3REYXRhLmNoZWNraW5nVHlwZXMoKS5j
b250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZykpCiAgICAgICAgICAgICBtYXJrZXJU
eXBlcy5hZGQoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKQEAgLTIyNCwxMiArMjIxLDEyIEBA
IHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWQoaW50IHNlcXVlbmNlLCBjb25zdCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0CiAgICAgICAgIGlmICghbWFya2VyVHlwZXMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkucmVtb3ZlTWFy
a2VycyhtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5jaGVja2luZ1JhbmdlKCksIG1hcmtlclR5cGVzKTsK
ICAgICB9Ci0gICAgZGlkQ2hlY2soc2VxdWVuY2UsIHJlc3VsdHMpOworICAgIGRpZENoZWNrKGlk
ZW50aWZpZXIsIHJlc3VsdHMpOwogfQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5j
ZWwoaW50IHNlcXVlbmNlKQordm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrQ2FuY2VsKFRleHRD
aGVja2luZ1JlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZGlkQ2hlY2soc2Vx
dWVuY2UsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCkpOworICAgIGRpZENoZWNrKGlkZW50
aWZpZXIsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCAwNTE1YzVi
M2ViYmQ0MDc3MTlmNTgzMzBhNjI5NDAxMzY3Y2M3Yzc5Li5jMzZhZTJjMzBmZTlmYjViZWY2NzA3
MzIyMmVjNDNlNDRhZDdmMmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFJhbmdlJiBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLmdldCgp
OyB9CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdEVkaXRhYmxlRWxlbWVudC5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRDaGVja2VyQW5kU2Vx
dWVuY2UoU3BlbGxDaGVja2VyKiwgaW50IHNlcXVlbmNlKTsKKyAgICB2b2lkIHNldENoZWNrZXJB
bmRJZGVudGlmaWVyKFNwZWxsQ2hlY2tlciosIFRleHRDaGVja2luZ1JlcXVlc3RJZGVudGlmaWVy
KTsKICAgICB2b2lkIHJlcXVlc3RlckRlc3Ryb3llZCgpOwogICAgIGJvb2wgaXNTdGFydGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGVja2VyOyB9CiAKQEAgLTg0LDE0ICs4NCwxNCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJlcXVlc3RDaGVja2luZ0ZvcihSZWY8U3BlbGxDaGVja1JlcXVlc3Q+JiYp
OwogCi0gICAgaW50IGxhc3RSZXF1ZXN0U2VxdWVuY2UoKSBjb25zdAorICAgIFRleHRDaGVja2lu
Z1JlcXVlc3RJZGVudGlmaWVyIGxhc3RSZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gbV9sYXN0UmVxdWVzdFNlcXVlbmNlOworICAgICAgICByZXR1cm4gbV9s
YXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgfQogCi0gICAgaW50IGxhc3RQcm9jZXNzZWRTZXF1
ZW5jZSgpIGNvbnN0CisgICAgVGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXIgbGFzdFByb2Nl
c3NlZElkZW50aWZpZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGFzdFByb2Nl
c3NlZFNlcXVlbmNlOworICAgICAgICByZXR1cm4gbV9sYXN0UHJvY2Vzc2VkSWRlbnRpZmllcjsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdGltZXJGaXJlZFRvUHJvY2Vzc1F1ZXVlZFJlcXVlc3QoKTsKICAgICB2b2lkIGludm9rZVJl
cXVlc3QoUmVmPFNwZWxsQ2hlY2tSZXF1ZXN0PiYmKTsKICAgICB2b2lkIGVucXVldWVSZXF1ZXN0
KFJlZjxTcGVsbENoZWNrUmVxdWVzdD4mJik7Ci0gICAgdm9pZCBkaWRDaGVja1N1Y2NlZWQoaW50
IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpOwotICAgIHZvaWQg
ZGlkQ2hlY2tDYW5jZWwoaW50IHNlcXVlbmNlKTsKLSAgICB2b2lkIGRpZENoZWNrKGludCBzZXF1
ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKKyAgICB2b2lkIGRpZENo
ZWNrU3VjY2VlZChUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mKTsKKyAgICB2b2lkIGRpZENoZWNrQ2FuY2VsKFRleHRDaGVja2lu
Z1JlcXVlc3RJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZENoZWNrKFRleHRDaGVja2luZ1JlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpOwogCiAgICAg
RnJhbWUmIG1fZnJhbWU7Ci0gICAgaW50IG1fbGFzdFJlcXVlc3RTZXF1ZW5jZTsKLSAgICBpbnQg
bV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2U7CisgICAgVGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZp
ZXIgbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgVGV4dENoZWNraW5nUmVxdWVzdElkZW50
aWZpZXIgbV9sYXN0UHJvY2Vzc2VkSWRlbnRpZmllcjsKIAogICAgIFRpbWVyIG1fdGltZXJUb1By
b2Nlc3NRdWV1ZWRSZXF1ZXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q2hlY2tpbmcuaAppbmRleCAwODRlN2YwNWRiNDM2MjdjMTBmZmM2OWM2ODY5OGFiYjI0ZWExOWVi
Li5kMGQwMGM2YmQ1NzMyNzczYzBhMzdlOGJiNTM2NTdlYjM0NzdkZWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTMxLDcgKzMxLDkgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM5LDE1ICs0MSwxNSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBlbnVtIGNsYXNzIFRleHRDaGVja2luZ1R5cGUgOiB1aW50OF90IHsKLSAgICBOb25l
ID0gMCwKLSAgICBTcGVsbGluZyA9IDEgPDwgMCwKLSAgICBHcmFtbWFyID0gMSA8PCAxLAotICAg
IExpbmsgPSAxIDw8IDIsCi0gICAgUXVvdGUgPSAxIDw8IDMsCi0gICAgRGFzaCA9IDEgPDwgNCwK
LSAgICBSZXBsYWNlbWVudCA9IDEgPDwgNSwKLSAgICBDb3JyZWN0aW9uID0gMSA8PCA2LAotICAg
IFNob3dDb3JyZWN0aW9uUGFuZWwgPSAxIDw8IDcsCisgICAgTm9uZSAgICAgICAgICAgICAgICAg
ICAgPSAwLAorICAgIFNwZWxsaW5nICAgICAgICAgICAgICAgID0gMSA8PCAwLAorICAgIEdyYW1t
YXIgICAgICAgICAgICAgICAgID0gMSA8PCAxLAorICAgIExpbmsgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCAyLAorICAgIFF1b3RlICAgICAgICAgICAgICAgICAgID0gMSA8PCAzLAorICAgIERh
c2ggICAgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorICAgIFJlcGxhY2VtZW50ICAgICAgICAg
ICAgID0gMSA8PCA1LAorICAgIENvcnJlY3Rpb24gICAgICAgICAgICAgID0gMSA8PCA2LAorICAg
IFNob3dDb3JyZWN0aW9uUGFuZWwgICAgID0gMSA8PCA3LAogfTsKIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTc1LDI4ICs3NywyOSBAQCBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0IHsKICAgICBT
dHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwogCi1jb25zdCBpbnQgdW5yZXF1ZXN0ZWRUZXh0Q2hlY2tp
bmdTZXF1ZW5jZSA9IC0xOworZW51bSBUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgVGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlm
aWVyPFRleHRDaGVja2luZ1JlcXVlc3RJZGVudGlmaWVyVHlwZT47CiAKIGNsYXNzIFRleHRDaGVj
a2luZ1JlcXVlc3REYXRhIHsKLSAgICBmcmllbmQgY2xhc3MgU3BlbGxDaGVja1JlcXVlc3Q7IC8v
IEZvciBhY2Nlc3MgdG8gbV9zZXF1ZW5jZS4KKyAgICBmcmllbmQgY2xhc3MgU3BlbGxDaGVja1Jl
cXVlc3Q7IC8vIEZvciBhY2Nlc3MgdG8gbV9pZGVudGlmaWVyLgogcHVibGljOgogICAgIFRleHRD
aGVja2luZ1JlcXVlc3REYXRhKCkgPSBkZWZhdWx0OwotICAgIFRleHRDaGVja2luZ1JlcXVlc3RE
YXRhKGludCBzZXF1ZW5jZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRpb25TZXQ8VGV4dENoZWNr
aW5nVHlwZT4gY2hlY2tpbmdUeXBlcywgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5
cGUpCisgICAgVGV4dENoZWNraW5nUmVxdWVzdERhdGEoT3B0aW9uYWw8VGV4dENoZWNraW5nUmVx
dWVzdElkZW50aWZpZXI+IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0
PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBl
IHByb2Nlc3NUeXBlKQogICAgICAgICA6IG1fdGV4dCB7IHRleHQgfQotICAgICAgICAsIG1fc2Vx
dWVuY2UgeyBzZXF1ZW5jZSB9CisgICAgICAgICwgbV9pZGVudGlmaWVyIHsgaWRlbnRpZmllciB9
CiAgICAgICAgICwgbV9wcm9jZXNzVHlwZSB7IHByb2Nlc3NUeXBlIH0KICAgICAgICAgLCBtX2No
ZWNraW5nVHlwZXMgeyBjaGVja2luZ1R5cGVzIH0KICAgICB7CiAgICAgfQogCi0gICAgaW50IHNl
cXVlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zZXF1ZW5jZTsgfQorICAgIE9wdGlvbmFsPFRleHRD
aGVja2luZ1JlcXVlc3RJZGVudGlmaWVyPiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0OyB9CiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMoKSBj
b25zdCB7IHJldHVybiBtX2NoZWNraW5nVHlwZXM7IH0KICAgICBUZXh0Q2hlY2tpbmdQcm9jZXNz
VHlwZSBwcm9jZXNzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1R5cGU7IH0KIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV90ZXh0OwotICAgIGludCBtX3NlcXVlbmNlIHsgdW5yZXF1ZXN0
ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSB9OworICAgIE9wdGlvbmFsPFRleHRDaGVja2luZ1JlcXVl
c3RJZGVudGlmaWVyPiBtX2lkZW50aWZpZXI7CiAgICAgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUg
bV9wcm9jZXNzVHlwZSB7IFRleHRDaGVja2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCB9OwogICAgIE9w
dGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBtX2NoZWNraW5nVHlwZXM7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDNkZDY3NWE5MWU1NTYxYmNiNDNjNGQyYWM2OGIw
Yzc1YTcwMTAxZjQuLmU4ZDg0YzQxODVkZTA0MmUyZGQ5ZmQ2N2MxNDhkN2ZmOTdhN2E4OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIwNzQsMjIgKzIwNzQsMjIgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXREZWxlZ2F0ZXNTY3JvbGxpbmcoYm9vbCBl
bmFibGVkKQogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gSW50ZXJuYWxz
OjpsYXN0U3BlbGxDaGVja1JlcXVlc3RTZXF1ZW5jZSgpCitFeGNlcHRpb25Pcjx1aW50NjRfdD4g
SW50ZXJuYWxzOjpsYXN0U3BlbGxDaGVja1JlcXVlc3RTZXF1ZW5jZSgpCiB7CiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNj
ZXNzRXJyb3IgfTsKIAotICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc3Bl
bGxDaGVja2VyKCkubGFzdFJlcXVlc3RTZXF1ZW5jZSgpOworICAgIHJldHVybiBkb2N1bWVudC0+
ZnJhbWUoKS0+ZWRpdG9yKCkuc3BlbGxDaGVja2VyKCkubGFzdFJlcXVlc3RJZGVudGlmaWVyKCku
dG9VSW50NjQoKTsKIH0KIAotRXhjZXB0aW9uT3I8aW50PiBJbnRlcm5hbHM6Omxhc3RTcGVsbENo
ZWNrUHJvY2Vzc2VkU2VxdWVuY2UoKQorRXhjZXB0aW9uT3I8dWludDY0X3Q+IEludGVybmFsczo6
bGFzdFNwZWxsQ2hlY2tQcm9jZXNzZWRTZXF1ZW5jZSgpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3Ig
fTsKIAotICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc3BlbGxDaGVja2Vy
KCkubGFzdFByb2Nlc3NlZFNlcXVlbmNlKCk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgp
LT5lZGl0b3IoKS5zcGVsbENoZWNrZXIoKS5sYXN0UHJvY2Vzc2VkSWRlbnRpZmllcigpLnRvVUlu
dDY0KCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1
YWdlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA3Yjk3NzVhYzQ1
ZWY4MjkwNGJjZTZlMzMzZWY2Y2M4NDMxNGQxY2ZhLi40NDJhN2ZmNTUyZDVjNWYxNmY4ZjEzN2M5
N2NjNzY0YThiZjY4NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTMwNCw4
ICszMDQsOCBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXREZWxlZ2F0ZXNT
Y3JvbGxpbmcoYm9vbCBlbmFibGVkKTsKIAotICAgIEV4Y2VwdGlvbk9yPGludD4gbGFzdFNwZWxs
Q2hlY2tSZXF1ZXN0U2VxdWVuY2UoKTsKLSAgICBFeGNlcHRpb25PcjxpbnQ+IGxhc3RTcGVsbENo
ZWNrUHJvY2Vzc2VkU2VxdWVuY2UoKTsKKyAgICBFeGNlcHRpb25Pcjx1aW50NjRfdD4gbGFzdFNw
ZWxsQ2hlY2tSZXF1ZXN0U2VxdWVuY2UoKTsKKyAgICBFeGNlcHRpb25Pcjx1aW50NjRfdD4gbGFz
dFNwZWxsQ2hlY2tQcm9jZXNzZWRTZXF1ZW5jZSgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdXNl
clByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0OwogICAgIHZvaWQgc2V0VXNlclByZWZlcnJlZExh
bmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCmluZGV4IDUwODYwNTRiYjMxNWI2ZTQwMGRkM2QwZGYxNzQ4ZmExYjgxM2E5ZTMuLmNl
NzhmZjQ5NzVjYTY4ODc4MTY4OTE1Njc5NDg0ZmUwMTI2MDg4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKQEAgLTMzMyw4ICszMzMsOCBAQCBlbnVtIENvbXBvc2l0aW5nUG9s
aWN5IHsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXREZWxlZ2F0ZXNTY3JvbGxp
bmcoYm9vbGVhbiBlbmFibGVkKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBsYXN0
U3BlbGxDaGVja1JlcXVlc3RTZXF1ZW5jZSgpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gbG9u
ZyBsYXN0U3BlbGxDaGVja1Byb2Nlc3NlZFNlcXVlbmNlKCk7CisgICAgW01heVRocm93RXhjZXB0
aW9uXSB1bnNpZ25lZCBsb25nIGxvbmcgbGFzdFNwZWxsQ2hlY2tSZXF1ZXN0U2VxdWVuY2UoKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgbG9uZyBsYXN0U3BlbGxDaGVj
a1Byb2Nlc3NlZFNlcXVlbmNlKCk7CiAKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKTsKICAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoc2Vx
dWVuY2U8RE9NU3RyaW5nPiBsYW5ndWFnZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYWE2MTUxZDZiMDljMjJjNzRlYWFlNzNiNjVh
ZGRjMDQ4NDQ0ZGMxMi4uM2NlYjRjNzdlNTkwODQyMjlhNDA1OTM5ODZkYjNlY2UwYTFhNzhkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0yMDc2LDcgKzIwNzYsNyBAQCBPcHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVy
PEdyYW1tYXJEZXRhaWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogdm9pZCBBcmd1bWVu
dENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiByZXF1ZXN0KQogewotICAgIGVuY29kZXIg
PDwgcmVxdWVzdC5zZXF1ZW5jZSgpOworICAgIGVuY29kZXIgPDwgcmVxdWVzdC5pZGVudGlmaWVy
KCk7CiAgICAgZW5jb2RlciA8PCByZXF1ZXN0LnRleHQoKTsKICAgICBlbmNvZGVyIDw8IHJlcXVl
c3QuY2hlY2tpbmdUeXBlcygpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXF1ZXN0LnByb2Nl
c3NUeXBlKCkpOwpAQCAtMjA4NCw4ICsyMDg0LDggQEAgdm9pZCBBcmd1bWVudENvZGVyPFRleHRD
aGVja2luZ1JlcXVlc3REYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHQK
IAogYm9vbCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiByZXF1ZXN0KQogewotICAg
IGludCBzZXF1ZW5jZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNlcXVlbmNlKSkKKyAgICBP
cHRpb25hbDxUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRlbnRpZmllcj4gaWRlbnRpZmllcjsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBTdHJpbmcgdGV4dDsKQEAgLTIxMDAsNyArMjEwMCw3IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0
Q2hlY2tpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocHJvY2Vzc1R5cGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXF1ZXN0ID0gVGV4dENoZWNraW5nUmVxdWVzdERhdGEg
eyBzZXF1ZW5jZSwgdGV4dCwgY2hlY2tpbmdUeXBlcywgcHJvY2Vzc1R5cGUgfTsKKyAgICByZXF1
ZXN0ID0gVGV4dENoZWNraW5nUmVxdWVzdERhdGEgeyBpZGVudGlmaWVyLCB0ZXh0LCBjaGVja2lu
Z1R5cGVzLCBwcm9jZXNzVHlwZSB9OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCmluZGV4IGUyMjhmM2VmZTM1NDE2YmUyZjBhNzY0M2I1ODQwMjM0YTZiNTQyNjguLjg0NTZm
MjZiN2FhNWVmMzU5OTYxNjVlYWI4ODc1MmYxYjg0MGNiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1w
b3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvV2Vha1B0ci5oPgpAQCAtNTAsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgdmlydHVh
bCB+V2ViRWRpdG9yQ2xpZW50KCk7CiAKLSAgICB2b2lkIGRpZENoZWNrU3VjY2VlZChpbnQgc2Vx
dWVuY2UsIE5TQXJyYXkgKnJlc3VsdHMpOworICAgIHZvaWQgZGlkQ2hlY2tTdWNjZWVkKFdlYkNv
cmU6OlRleHRDaGVja2luZ1JlcXVlc3RJZGVudGlmaWVyLCBOU0FycmF5ICpyZXN1bHRzKTsKIAog
cHJpdmF0ZToKICAgICBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpIGZpbmFsOwpAQCAt
MTk1LDcgKzE5Niw4IEBAIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIFJl
dGFpblB0cjxXZWJFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiAgICAgYm9vbCBtX2hh
dmVVbmRvUmVkb09wZXJhdGlvbnMgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdSZXF1ZXN0PiBtX3RleHRDaGVja2luZ1JlcXVlc3Q7CisgICAgCisgICAgSGFzaE1h
cDxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlRl
eHRDaGVja2luZ1JlcXVlc3Q+PiBtX3JlcXVlc3RzSW5GbGlnaHQ7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGJvb2wgbV9kZWxheWluZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25z
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBlYTc2Y2Q3OGQ3MDE2ZjFjMjNkYzVi
N2YwNmQwZTJmMTMyMGExNTMyLi4yZmRhNzY0ZTBjYjlhMjFjZGJjYWE2MmNhMmEzODRhOTE0YWRm
MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC0xMjEyLDIxICsxMjEyLDIxIEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRD
aGVja2luZ1Jlc3VsdCBhCiBAaW50ZXJmYWNlIFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIg
OiBOU09iamVjdAogewogICAgIFdlYWtQdHI8V2ViRWRpdG9yQ2xpZW50PiBfY2xpZW50OwotICAg
IGludCBfc2VxdWVuY2U7CisgICAgVGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXIgX2lkZW50
aWZpZXI7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9yZXN1bHRzOwogfQotLSAoaWQpaW5pdFdp
dGhDbGllbnQ6KFdlYWtQdHI8V2ViRWRpdG9yQ2xpZW50PiljbGllbnQgc2VxdWVuY2U6KGludClz
ZXF1ZW5jZSByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzOworLSAoaWQpaW5pdFdpdGhDbGllbnQ6
KFdlYWtQdHI8V2ViRWRpdG9yQ2xpZW50PiljbGllbnQgaWRlbnRpZmllcjooVGV4dENoZWNraW5n
UmVxdWVzdElkZW50aWZpZXIpaWRlbnRpZmllciByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzOwog
LSAodm9pZClwZXJmb3JtOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViRWRpdG9yU3BlbGxD
aGVja1Jlc3BvbmRlcgotLSAoaWQpaW5pdFdpdGhDbGllbnQ6KFdlYWtQdHI8V2ViRWRpdG9yQ2xp
ZW50PiljbGllbnQgc2VxdWVuY2U6KGludClzZXF1ZW5jZSByZXN1bHRzOihOU0FycmF5KilyZXN1
bHRzCistIChpZClpbml0V2l0aENsaWVudDooV2Vha1B0cjxXZWJFZGl0b3JDbGllbnQ+KWNsaWVu
dCBpZGVudGlmaWVyOihUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRlbnRpZmllcilpZGVudGlmaWVyIHJl
c3VsdHM6KE5TQXJyYXkqKXJlc3VsdHMKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAg
IGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBfY2xpZW50ID0gY2xpZW50Owot
ICAgIF9zZXF1ZW5jZSA9IHNlcXVlbmNlOworICAgIF9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
ICAgICBfcmVzdWx0cyA9IHJlc3VsdHM7CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMjM0LDMz
ICsxMjM0LDQwIEBAIC0gKGlkKWluaXRXaXRoQ2xpZW50OihXZWFrUHRyPFdlYkVkaXRvckNsaWVu
dD4pY2xpZW50IHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgcmVzCiAtICh2b2lkKXBlcmZvcm0KIHsK
ICAgICBpZiAoX2NsaWVudCkKLSAgICAgICAgX2NsaWVudC0+ZGlkQ2hlY2tTdWNjZWVkKF9zZXF1
ZW5jZSwgX3Jlc3VsdHMuZ2V0KCkpOworICAgICAgICBfY2xpZW50LT5kaWRDaGVja1N1Y2NlZWQo
X2lkZW50aWZpZXIsIF9yZXN1bHRzLmdldCgpKTsKIH0KIAogQGVuZAogCi12b2lkIFdlYkVkaXRv
ckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgTlNBcnJheSogcmVzdWx0cykK
K3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRDaGVja1N1Y2NlZWQoVGV4dENoZWNraW5nUmVxdWVz
dElkZW50aWZpZXIgaWRlbnRpZmllciwgTlNBcnJheSogcmVzdWx0cykKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKHNlcXVlbmNlLCBzZXF1ZW5jZSA9PSBtX3RleHRDaGVja2luZ1JlcXVlc3QtPmRhdGEo
KS5zZXF1ZW5jZSgpKTsKLSAgICBtX3RleHRDaGVja2luZ1JlcXVlc3QtPmRpZFN1Y2NlZWQoY29y
ZShyZXN1bHRzLCBtX3RleHRDaGVja2luZ1JlcXVlc3QtPmRhdGEoKS5jaGVja2luZ1R5cGVzKCkp
KTsKLSAgICBtX3RleHRDaGVja2luZ1JlcXVlc3QgPSBudWxscHRyOworICAgIGF1dG8gcmVxdWVz
dE9wdGlvbmFsID0gbV9yZXF1ZXN0c0luRmxpZ2h0LnRha2UoaWRlbnRpZmllcik7CisgICAgQVNT
RVJUKHJlcXVlc3RPcHRpb25hbCk7CisgICAgaWYgKCFyZXF1ZXN0T3B0aW9uYWwpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBhdXRvIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3RPcHRpb25h
bC52YWx1ZSgpKTsKKyAgICBBU1NFUlQoaWRlbnRpZmllciA9PSByZXF1ZXN0LT5kYXRhKCkuaWRl
bnRpZmllcigpLnZhbHVlKCkpOworICAgIHJlcXVlc3QtPmRpZFN1Y2NlZWQoY29yZShyZXN1bHRz
LCByZXF1ZXN0LT5kYXRhKCkuY2hlY2tpbmdUeXBlcygpKSk7CiB9CiAKICNlbmRpZgogCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNl
bGVjdGlvbikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhU
ZXh0Q2hlY2tpbmdSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBjdXJy
ZW50U2VsZWN0aW9uKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEFTU0VSVCgh
bV90ZXh0Q2hlY2tpbmdSZXF1ZXN0KTsKLSAgICBtX3RleHRDaGVja2luZ1JlcXVlc3QgPSAmcmVx
dWVzdDsKKyAgICBBU1NFUlQocmVxdWVzdC5kYXRhKCkuaWRlbnRpZmllcigpKTsKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSByZXF1ZXN0LmRhdGEoKS5pZGVudGlmaWVyKCkudmFsdWUoKTsKIAotICAg
IGludCBzZXF1ZW5jZSA9IG1fdGV4dENoZWNraW5nUmVxdWVzdC0+ZGF0YSgpLnNlcXVlbmNlKCk7
Ci0gICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIG1fdGV4dENoZWNraW5nUmVxdWVz
dC0+ZGF0YSgpLnRleHQoKS5sZW5ndGgoKSk7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzSW5GbGln
aHQuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fcmVxdWVzdHNJbkZsaWdodC5hZGQoaWRl
bnRpZmllciwgbWFrZVJlZihyZXF1ZXN0KSk7CisKKyAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtl
UmFuZ2UoMCwgcmVxdWVzdC5kYXRhKCkudGV4dCgpLmxlbmd0aCgpKTsKICAgICBOU1J1bkxvb3Aq
IGN1cnJlbnRMb29wID0gW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF07CiAgICAgV2Vha1B0cjxX
ZWJFZGl0b3JDbGllbnQ+IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAgIE5TRGlj
dGlvbmFyeSAqb3B0aW9ucyA9IEB7IE5TVGV4dENoZWNraW5nSW5zZXJ0aW9uUG9pbnRLZXkgOiAg
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludGVnZXI6aW5zZXJ0aW9uUG9pbnRGcm9tQ3Vy
cmVudFNlbGVjdGlvbihjdXJyZW50U2VsZWN0aW9uKV0gfTsKLSAgICBbW05TU3BlbGxDaGVja2Vy
IHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVxdWVzdENoZWNraW5nT2ZTdHJpbmc6bV90ZXh0Q2hlY2tp
bmdSZXF1ZXN0LT5kYXRhKCkudGV4dCgpIHJhbmdlOnJhbmdlIHR5cGVzOk5TVGV4dENoZWNraW5n
QWxsU3lzdGVtVHlwZXMgb3B0aW9uczpvcHRpb25zIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6MCBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdlciwgTlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dy
YXBoeSosIE5TSW50ZWdlcikgewotICAgICAgICBSZXRhaW5QdHI8V2ViRWRpdG9yU3BlbGxDaGVj
a1Jlc3BvbmRlcj4gcmVzcG9uZGVyID0gYWRvcHROUyhbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNw
b25kZXIgYWxsb2NdIGluaXRXaXRoQ2xpZW50OndlYWtUaGlzIHNlcXVlbmNlOnNlcXVlbmNlIHJl
c3VsdHM6cmVzdWx0c10pOworICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7IE5TVGV4dENo
ZWNraW5nSW5zZXJ0aW9uUG9pbnRLZXkgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50
ZWdlcjppbnNlcnRpb25Qb2ludEZyb21DdXJyZW50U2VsZWN0aW9uKGN1cnJlbnRTZWxlY3Rpb24p
XSB9OworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZzpyZXF1ZXN0LmRhdGEoKS50ZXh0KCkgcmFuZ2U6cmFuZ2UgdHlwZXM6TlNU
ZXh0Q2hlY2tpbmdBbGxTeXN0ZW1UeXBlcyBvcHRpb25zOm9wdGlvbnMgaW5TcGVsbERvY3VtZW50
V2l0aFRhZzowIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyLCBOU0FycmF5KiByZXN1bHRz
LCBOU09ydGhvZ3JhcGh5KiwgTlNJbnRlZ2VyKSB7CisgICAgICAgIFJldGFpblB0cjxXZWJFZGl0
b3JTcGVsbENoZWNrUmVzcG9uZGVyPiByZXNwb25kZXIgPSBhZG9wdE5TKFtbV2ViRWRpdG9yU3Bl
bGxDaGVja1Jlc3BvbmRlciBhbGxvY10gaW5pdFdpdGhDbGllbnQ6d2Vha1RoaXMgaWRlbnRpZmll
cjppZGVudGlmaWVyIHJlc3VsdHM6cmVzdWx0c10pOwogICAgICAgICBbY3VycmVudExvb3AgcGVy
Zm9ybUJsb2NrOl57CiAgICAgICAgICAgICBbcmVzcG9uZGVyIHBlcmZvcm1dOwogICAgICAgICB9
XTsK
</data>
<flag name="review"
          id="408477"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>