<?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>199988</bug_id>
          
          <creation_ts>2019-07-21 03:01:55 -0700</creation_ts>
          <short_desc>AX: CrashTracer: com.apple.WebKit.WebContent at WebKit: WebKit::WebSpeechSynthesisClient::speak</short_desc>
          <delta_ts>2019-07-23 16:25:06 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>pvollan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1554571</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-21 03:01:55 -0700</bug_when>
    <thetext>50 WebKit: WebKit::WebSpeechSynthesisClient::speak(WTF::RefPtr&lt;WebCore::PlatformSpeechSynthesisUtterance, WTF::DumbPtrTraits&lt;WebCore::PlatformSpeechSynthesisUtterance&gt; &gt;) &lt;==
        49 WebKit: WebKit::WebSpeechSynthesisClient::speak(WTF::RefPtr&lt;WebCore::PlatformSpeechSynthesisUtterance, WTF::DumbPtrTraits&lt;WebCore::PlatformSpeechSynthesisUtterance&gt; &gt;)
        | 49 WebCore: WebCore::SpeechSynthesis::startSpeakingImmediately(WebCore::SpeechSynthesisUtterance&amp;)
        |   26 WebCore: WebCore::jsSpeechSynthesisPrototypeFunctionSpeakBody(JSC::ExecState*, WebCore::JSSpeechSynthesis*, JSC::ThrowScope&amp;)

&lt;rdar://problem/53235469&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554572</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-21 03:03:10 -0700</bug_when>
    <thetext>One issue I don&apos;t know how to work around... the didFinish completion handler.. if you close a window while it&apos;s talking, obviously that handler won&apos;t be fired, but in debug we assert if the handlers are ever called

ASSERTION FAILED: Completion handler should always be called
!m_function
/Volumes/data/web/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/CompletionHandler.h(55) : WTF::CompletionHandler&lt;void ()&gt;::~CompletionHandler()
1   0x11162c1b9 WTFCrash
2   0x1173ab933 WTF::CompletionHandler&lt;void ()&gt;::~CompletionHandler()
3   0x1173a9fe5 WTF::CompletionHandler&lt;void ()&gt;::~CompletionHandler()
4   0x117d247e3 WebKit::WebPageProxy::SpeechSynthesisData::~SpeechSynthesisData()
5   0x117d017b5 WebKit::WebPageProxy::SpeechSynthesisData::~SpeechSynthesisData()
6   0x117d1024d WTF::Optional_base&lt;WebKit::WebPageProxy::SpeechSynthesisData&gt;::~Optional_base()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554592</commentid>
    <comment_count>2</comment_count>
      <attachid>374573</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-21 12:32:05 -0700</bug_when>
    <thetext>Created attachment 374573
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554593</commentid>
    <comment_count>3</comment_count>
      <attachid>374574</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-21 12:35:58 -0700</bug_when>
    <thetext>Created attachment 374574
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554594</commentid>
    <comment_count>4</comment_count>
      <attachid>374575</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-21 12:43:05 -0700</bug_when>
    <thetext>Created attachment 374575
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554757</commentid>
    <comment_count>5</comment_count>
      <attachid>374575</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-07-22 11:28:06 -0700</bug_when>
    <thetext>Comment on attachment 374575
patch

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

&gt; Source/WebCore/platform/PlatformSpeechSynthesizer.h:76
&gt; +    virtual void resetState();

If this is overriding a virtual method, should we use the &apos;override&apos; keyword instead of &apos;virtual&apos;?

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:261
&gt; +    m_speechSynthesisData-&gt;speakingStartedCompletionHandler();

Is it possible for &apos;m_speechSynthesisData&apos; to be null?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9144
&gt; +    synthesisData.speakingFinishedCompletionHandler = nullptr;

Maybe just use &apos;m_speechSynthesisData&apos; here?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9148
&gt; +    synthesisData.synthesizer-&gt;resetState();

Is it possible for the &apos;synthesizer&apos; member to be null?

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp:82
&gt; +    m_page.sendWithAsyncReply(Messages::WebPageProxy::SpeechSynthesisSetFinishedCallback(), WTFMove(finishedCompletionHandler));
&gt; +    m_page.sendWithAsyncReply(Messages::WebPageProxy::SpeechSynthesisSpeak(utterance-&gt;text(), utterance-&gt;lang(), utterance-&gt;volume(), utterance-&gt;rate(), utterance-&gt;pitch(), utterance-&gt;startTime(), voiceURI, name, lang, localService, isDefault), WTFMove(startedCompletionHandler));

Instead of creating a new message for setting the finished callback, could we add the completion handler as a parameter in the &apos;SpeechSynthesisSpeak&apos; message? Also, didn&apos;t the WebProcess get a message from the UI process when speaking had finished, previously?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554761</commentid>
    <comment_count>6</comment_count>
      <attachid>374575</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-22 11:34:50 -0700</bug_when>
    <thetext>Comment on attachment 374575
patch

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

&gt;&gt; Source/WebCore/platform/PlatformSpeechSynthesizer.h:76
&gt;&gt; +    virtual void resetState();
&gt; 
&gt; If this is overriding a virtual method, should we use the &apos;override&apos; keyword instead of &apos;virtual&apos;?

yes

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:261
&gt;&gt; +    m_speechSynthesisData-&gt;speakingStartedCompletionHandler();
&gt; 
&gt; Is it possible for &apos;m_speechSynthesisData&apos; to be null?

it is possible that its null, but not expected. it would only be null if no speech job was ever started. however we wouldn&apos;t get these callbacks in that case.

perhaps we should call speechSynthesisData() in these callbacks instead, which ensures its created

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9148
&gt;&gt; +    synthesisData.synthesizer-&gt;resetState();
&gt; 
&gt; Is it possible for the &apos;synthesizer&apos; member to be null?

it shouldn&apos;t be, but we should check

&gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp:82
&gt;&gt; +    m_page.sendWithAsyncReply(Messages::WebPageProxy::SpeechSynthesisSpeak(utterance-&gt;text(), utterance-&gt;lang(), utterance-&gt;volume(), utterance-&gt;rate(), utterance-&gt;pitch(), utterance-&gt;startTime(), voiceURI, name, lang, localService, isDefault), WTFMove(startedCompletionHandler));
&gt; 
&gt; Instead of creating a new message for setting the finished callback, could we add the completion handler as a parameter in the &apos;SpeechSynthesisSpeak&apos; message? Also, didn&apos;t the WebProcess get a message from the UI process when speaking had finished, previously?

it did not seem possible with the format of this message passing API possible to have two asynchronous callbacks.

previously we passed in the didFinish callback to startSpeaking. but then we weren&apos;t getting the &quot;real&quot; start speaking callback. so I changed the startSpeaking method to take the start speaking callback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554855</commentid>
    <comment_count>7</comment_count>
      <attachid>374633</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-22 14:21:10 -0700</bug_when>
    <thetext>Created attachment 374633
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554856</commentid>
    <comment_count>8</comment_count>
      <attachid>374634</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-22 14:22:08 -0700</bug_when>
    <thetext>Created attachment 374634
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554915</commentid>
    <comment_count>9</comment_count>
      <attachid>374634</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-07-22 16:32:45 -0700</bug_when>
    <thetext>Comment on attachment 374634
patch

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

R=me.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:261
&gt; +    speechSynthesisData().speakingStartedCompletionHandler();

Do we need to guard against the completion handler not being set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554916</commentid>
    <comment_count>10</comment_count>
      <attachid>374634</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-22 16:33:59 -0700</bug_when>
    <thetext>Comment on attachment 374634
patch

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

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:261
&gt;&gt; +    speechSynthesisData().speakingStartedCompletionHandler();
&gt; 
&gt; Do we need to guard against the completion handler not being set?

we probably have the issue for all of them. we should probably check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554933</commentid>
    <comment_count>11</comment_count>
      <attachid>374656</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-22 17:01:35 -0700</bug_when>
    <thetext>Created attachment 374656
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555132</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-07-23 13:39:06 -0700</bug_when>
    <thetext>trying cq again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555203</commentid>
    <comment_count>13</comment_count>
      <attachid>374656</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-23 16:25:04 -0700</bug_when>
    <thetext>Comment on attachment 374656
patch

Clearing flags on attachment: 374656

Committed r247755: &lt;https://trac.webkit.org/changeset/247755&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555204</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-23 16:25:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374573</attachid>
            <date>2019-07-21 12:32:05 -0700</date>
            <delta_ts>2019-07-21 12:35:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>2921</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWNjIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5j
cHAKaW5kZXggNDA1NGI0ZjBhY2MsYjVkYWI1ZGE1YzkuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGE3MWM2NGVmZDU2Li5kZmM2MTU2MmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE5LTA3LTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQVg6IENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgV2ViS2l0
OiBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWsKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTk4OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgcmVzZXQgc3Rh
dGUgdG8gY2FuY2VsIGN1cnJlbnQgc3BlZWNoIGpvYnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhl
c2lzOjpzdGFydFNwZWFraW5nSW1tZWRpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
U3ludGhlc2lzOjpjYW5jZWwpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6
OnJlc2V0U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6cmVzZXRTdGF0ZSk6CisKIDIwMTktMDctMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBDaGVja2VyIG5lZWRzIHRvIHNldEVycm9yKCkgd2hl
biBhIHByb3BlcnR5IGFjY2VzcyBub2RlIGNhbid0IGNvbW1pdCBpdHMgYmFzZSB0eXBlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDNmM2IwNGFkMjgyLi5jNDNhYzg1MjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAxOS0wNy0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisg
ICAgICAgIEFYOiBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IGF0IFdl
YktpdDogV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk5ODgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlbWVudHMgdG8gV2Vi
U3BlZWNoU3ludGhlc2lzIHRvIGF2b2lkIGNyYXNoaW5nIGFuZCBpbXByb3ZlIGNvcnJlY3RuZXNz
LgorICAgICAgICAtIFJlc2V0IGFuZCBjYW5jZWwgc3BlZWNoIGpvYnMgb24gcGFnZSBjbG9zZSBv
ciByZWxvYWQgKG90aGVyd2lzZSB0aGUgc3ludGhlc2l6ZXIga2VlcHMgdGFsa2luZyBhZnRlciB5
b3VyIHBhZ2UgaXMgZ29uZSkKKyAgICAgICAgLSBIYXZlIGEgc2VwYXJhdGUgc3BlZWNoIGZpbmlz
aCBjYWxsYmFjayBtZWNoYW5pc20sIHVzZSB0aGUgc3RhcnQgc3BlYWtpbmcgY2FsbGJhY2sgd2hl
biB0aGUgc3ludGhlc2l6ZXIgdGVsbHMgdXMuCisgICAgICAgIC0gTW92ZSBhbiBhc3NlcnQgb24g
dXR0ZXJhbmNlIHN0YXRlIHRvIG9ubHkgYXBwbHkgd2hlbiB3ZSB1c2UgdGhlIGluIHByb2Nlc3Mg
c3ludGhlc2l6ZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRTcGVha2luZyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZXNldFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFNwZWVjaFN5
bnRoZXNpemVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVz
aXNTZXRGaW5pc2hlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
cGVlY2hTeW50aGVzaXNTcGVhayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKToKKwog
MjAxOS0wNy0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNw
ZWVkIHVwIEhhc2hUYWJsZSBkZWNvZGluZyBieSByZXNlcnZpbmcgY2FwYWNpdHkgYW5kIGF2b2lk
aW5nIHJlaGFzaGluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374574</attachid>
            <date>2019-07-21 12:35:58 -0700</date>
            <delta_ts>2019-07-21 12:43:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>file_199988.txt</filename>
            <type>text/plain</type>
            <size>14042</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZw0KaW5kZXggYTcxYzY0ZWZkNTYuLmRmYzYxNTYyZGY4IDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBA
IC0xLDMgKzEsMjEgQEANCisyMDE5LTA3LTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+DQorDQorICAgICAgICBBWDogQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudCBhdCBXZWJLaXQ6IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Ojpz
cGVhaw0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
OTk4OA0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAg
ICBJbXBsZW1lbnQgdGhlIHJlc2V0IHN0YXRlIHRvIGNhbmNlbCBjdXJyZW50IHNwZWVjaCBqb2Jz
Lg0KKw0KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOg0KKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6c3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5
KToNCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmNhbmNlbCk6DQorICAgICAg
ICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaDoNCisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW06DQorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzZXRTdGF0ZSk6DQorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tOg0KKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc2V0U3RhdGUpOg0KKw0KIDIw
MTktMDctMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+DQogDQogICAgICAgICBb
V0hMU0xdIENoZWNrZXIgbmVlZHMgdG8gc2V0RXJyb3IoKSB3aGVuIGEgcHJvcGVydHkgYWNjZXNz
IG5vZGUgY2FuJ3QgY29tbWl0IGl0cyBiYXNlIHR5cGUNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcA0KaW5kZXggNDA1NGI0ZjBhY2MuLjcy
YjU2M2U0YmJmIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzLmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzLmNwcA0KQEAgLTExMCw3ICsxMTAsNiBAQCBib29sIFNwZWVjaFN5bnRoZXNp
czo6cGF1c2VkKCkgY29uc3QNCiANCiB2b2lkIFNwZWVjaFN5bnRoZXNpczo6c3RhcnRTcGVha2lu
Z0ltbWVkaWF0ZWx5KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQ0KIHsNCi0g
ICAgQVNTRVJUKCFtX2N1cnJlbnRTcGVlY2hVdHRlcmFuY2UpOw0KICAgICB1dHRlcmFuY2Uuc2V0
U3RhcnRUaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKTsNCiAgICAgbV9jdXJyZW50U3BlZWNoVXR0
ZXJhbmNlID0gJnV0dGVyYW5jZTsNCiAgICAgbV9pc1BhdXNlZCA9IGZhbHNlOw0KQEAgLTE1Miwx
MiArMTUxLDEyIEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpjYW5jZWwoKQ0KICAgICBtX3V0dGVy
YW5jZVF1ZXVlLmNsZWFyKCk7DQogICAgIGlmIChtX3NwZWVjaFN5bnRoZXNpc0NsaWVudCkNCiAg
ICAgICAgIG1fc3BlZWNoU3ludGhlc2lzQ2xpZW50LT5jYW5jZWwoKTsNCi0gICAgZWxzZSBpZiAo
bV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQ0KKyAgICBlbHNlIGlmIChtX3BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIpIHsNCiAgICAgICAgIG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci0+
Y2FuY2VsKCk7DQorICAgICAgICAvLyBUaGUgcGxhdGZvcm0gc2hvdWxkIGhhdmUgY2FsbGVkIGJh
Y2sgaW1tZWRpYXRlbHkgYW5kIGNsZWFyZWQgdGhlIGN1cnJlbnQgdXR0ZXJhbmNlLg0KKyAgICAg
ICAgQVNTRVJUKCFtX2N1cnJlbnRTcGVlY2hVdHRlcmFuY2UpOw0KKyAgICB9DQogICAgIGN1cnJl
bnQgPSBudWxscHRyOw0KLQ0KLSAgICAvLyBUaGUgcGxhdGZvcm0gc2hvdWxkIGhhdmUgY2FsbGVk
IGJhY2sgaW1tZWRpYXRlbHkgYW5kIGNsZWFyZWQgdGhlIGN1cnJlbnQgdXR0ZXJhbmNlLg0KLSAg
ICBBU1NFUlQoIW1fY3VycmVudFNwZWVjaFV0dGVyYW5jZSk7DQogfQ0KIA0KIHZvaWQgU3BlZWNo
U3ludGhlc2lzOjpwYXVzZSgpDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplci5oDQppbmRleCA5NWI4YWUzYmI2Yi4uMGExZGY2MmJlOTkg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIuaA0KQEAgLTczLDYgKzczLDcgQEAgcHVibGljOg0KICAgICB2aXJ0dWFsIHZvaWQg
cmVzdW1lKCk7DQogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsNCiANCisgICAgdmlydHVhbCB2
b2lkIHJlc2V0U3RhdGUoKTsNCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCog
Y2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsgfQ0KIA0K
IHByb3RlY3RlZDoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tDQppbmRleCA0YjM3OGZhMTdlNi4uN2Nh
ZjQ4MmQ3MGYgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0NCkBAIC0yOTEsNiArMjkxLDExIEBA
IHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKCkNCiAgICAgW21fcGxhdGZv
cm1TcGVlY2hXcmFwcGVyLmdldCgpIGNhbmNlbF07DQogfQ0KIA0KK3ZvaWQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcjo6cmVzZXRTdGF0ZSgpDQorew0KKyAgICBbbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXIuZ2V0KCkgY2FuY2VsXTsNCit9DQorDQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQ0KIA0K
ICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tDQppbmRleCA1MzhkZGYyOTFiYy4uMGZhZWRmODRiZDUg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1hYy5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0NCkBAIC0yNzcsNiArMjc3LDExIEBAIHZvaWQgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKCkNCiAgICAgW21fcGxhdGZvcm1TcGVlY2hX
cmFwcGVyLmdldCgpIGNhbmNlbF07DQogfQ0KIA0KK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6cmVzZXRTdGF0ZSgpDQorew0KKyAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0
KCkgY2FuY2VsXTsNCit9DQorDQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQ0KIA0KICNlbmRpZiAv
LyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgJiYgUExBVEZPUk0oTUFDKQ0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCmluZGV4
IDNmM2IwNGFkMjgyLi5jNDNhYzg1MjExNSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KQEAgLTEsMyArMSwyOCBAQA0K
KzIwMTktMDctMjEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4NCisNCisg
ICAgICAgIEFYOiBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IGF0IFdl
YktpdDogV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrDQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTg4DQorDQorICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEltcHJvdmVtZW50cyB0
byBXZWJTcGVlY2hTeW50aGVzaXMgdG8gYXZvaWQgY3Jhc2hpbmcgYW5kIGltcHJvdmUgY29ycmVj
dG5lc3MuDQorICAgICAgICAtIFJlc2V0IGFuZCBjYW5jZWwgc3BlZWNoIGpvYnMgb24gcGFnZSBj
bG9zZSBvciByZWxvYWQgKG90aGVyd2lzZSB0aGUgc3ludGhlc2l6ZXIga2VlcHMgdGFsa2luZyBh
ZnRlciB5b3VyIHBhZ2UgaXMgZ29uZSkNCisgICAgICAgIC0gSGF2ZSBhIHNlcGFyYXRlIHNwZWVj
aCBmaW5pc2ggY2FsbGJhY2sgbWVjaGFuaXNtLCB1c2UgdGhlIHN0YXJ0IHNwZWFraW5nIGNhbGxi
YWNrIHdoZW4gdGhlIHN5bnRoZXNpemVyIHRlbGxzIHVzLg0KKyAgICAgICAgLSBNb3ZlIGFuIGFz
c2VydCBvbiB1dHRlcmFuY2Ugc3RhdGUgdG8gb25seSBhcHBseSB3aGVuIHdlIHVzZSB0aGUgaW4g
cHJvY2VzcyBzeW50aGVzaXplci4NCisNCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tOg0KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFy
dFNwZWFraW5nKToNCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6DQorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbG9hZCk6DQorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOg0KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXNldFNwZWVjaFN5bnRoZXNpemVyKToNCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3BlZWNoU3ludGhlc2lzU2V0RmluaXNoZWRDYWxsYmFjayk6DQorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc1NwZWFrKToNCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOg0KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5jcHA6DQorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQ6OnNwZWFrKToNCisNCiAyMDE5LTA3LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+DQogDQogICAgICAgICBTcGVlZCB1cCBIYXNoVGFibGUgZGVjb2RpbmcgYnkgcmVz
ZXJ2aW5nIGNhcGFjaXR5IGFuZCBhdm9pZGluZyByZWhhc2hpbmcNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tDQppbmRleCBhNDFjZDNh
MDA0ZC4uZWE5ODM3MjE5NDggMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQ0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0NCkBAIC0yNTgsNiArMjU4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXlt
ZW50Q29vcmRpbmF0b3INCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpDQogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFN0YXJ0U3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmKQ0KIHsNCisgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhLT5zcGVha2luZ1N0
YXJ0ZWRDb21wbGV0aW9uSGFuZGxlcigpOw0KIH0NCiANCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
KQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwDQppbmRleCA3YzgxNzg0
NzE5MS4uMjI5MzEyYmUzZTMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwDQpAQCAtMTM1OSw2ICsxMzU5LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wDQog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpLCBvcHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
LCBtX3BhZ2VJRCk7DQogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0
KCk7DQogDQorI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQ0KKyAgICByZXNldFNwZWVjaFN5
bnRoZXNpemVyKCk7DQorI2VuZGlmDQorDQogICAgIHJldHVybiBuYXZpZ2F0aW9uOw0KIH0NCiAN
CkBAIC03MDUzLDYgKzcwNTcsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVz
ZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQ0KICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQ0KICAgICByZXF1ZXN0UG9pbnRlclVubG9jaygpOw0KICNlbmRpZg0KKyAgICANCisjaWYgRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpDQorICAgIHJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKTsNCisj
ZW5kaWYNCiB9DQogDQogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NF
eGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0aW9uUmVhc29uKQ0KQEAgLTkx
MjYsNiArOTEzNCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bWFya0FkQ2xpY2tBdHRyaWJ1dGlv
bnNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPA0KIH0NCiANCiAjaWYgRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpDQorDQordm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNo
U3ludGhlc2l6ZXIoKQ0KK3sNCisgICAgaWYgKCFtX3NwZWVjaFN5bnRoZXNpc0RhdGEpDQorICAg
ICAgICByZXR1cm47DQorICAgIA0KKyAgICBhdXRvJiBzeW50aGVzaXNEYXRhID0gc3BlZWNoU3lu
dGhlc2lzRGF0YSgpOw0KKyAgICBzeW50aGVzaXNEYXRhLnNwZWFraW5nRmluaXNoZWRDb21wbGV0
aW9uSGFuZGxlciA9IG51bGxwdHI7DQorICAgIHN5bnRoZXNpc0RhdGEuc3BlYWtpbmdTdGFydGVk
Q29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOw0KKyAgICBzeW50aGVzaXNEYXRhLnNwZWFraW5n
UGF1c2VkQ29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOw0KKyAgICBzeW50aGVzaXNEYXRhLnNw
ZWFraW5nUmVzdW1lZENvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsNCisgICAgc3ludGhlc2lz
RGF0YS5zeW50aGVzaXplci0+cmVzZXRTdGF0ZSgpOw0KK30NCisNCiBXZWJQYWdlUHJveHk6OlNw
ZWVjaFN5bnRoZXNpc0RhdGEmIFdlYlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzRGF0YSgpDQog
ew0KICAgICBpZiAoIW1fc3BlZWNoU3ludGhlc2lzRGF0YSkNCkBAIC05MTQzLDYgKzkxNjUsMTEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc1ZvaWNlTGlzdChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJTcGUNCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQpKTsNCiB9DQogDQordm9pZCBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc1Nl
dEZpbmlzaGVkQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQ0KK3sNCisgICAgc3BlZWNoU3ludGhlc2lzRGF0YSgpLnNwZWFraW5nRmluaXNoZWRD
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOw0KK30NCisNCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzU3BlYWsoY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBTdHJpbmcmIGxhbmcsIGZsb2F0IHZvbHVtZSwgZmxvYXQgcmF0ZSwgZmxvYXQgcGl0
Y2gsIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lLCBjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25z
dCBTdHJpbmcmIHZvaWNlTmFtZSwgY29uc3QgU3RyaW5nJiB2b2ljZUxhbmcsIGJvb2wgbG9jYWxT
ZXJ2aWNlLCBib29sIGRlZmF1bHRWb2ljZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQ0KIHsNCiAgICAgYXV0byB2b2ljZSA9IFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSh2b2ljZVVSSSwgdm9pY2VOYW1lLCB2b2ljZUxh
bmcsIGxvY2FsU2VydmljZSwgZGVmYXVsdFZvaWNlKTsNCkBAIC05MTU0LDggKzkxODEsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzU3BlYWsoY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBTdHJpbmcmIGxhbmcsDQogICAgIHV0dGVyYW5jZS0+c2V0UGl0Y2gocGl0Y2gpOw0K
ICAgICB1dHRlcmFuY2UtPnNldFZvaWNlKCZ2b2ljZS5nZXQoKSk7DQogDQorICAgIHNwZWVjaFN5
bnRoZXNpc0RhdGEoKS5zcGVha2luZ1N0YXJ0ZWRDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOw0KICAgICBzcGVlY2hTeW50aGVzaXNEYXRhKCkudXR0ZXJhbmNl
ID0gV1RGTW92ZSh1dHRlcmFuY2UpOw0KLSAgICBzcGVlY2hTeW50aGVzaXNEYXRhKCkuc3BlYWtp
bmdGaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7
DQogICAgIHNwZWVjaFN5bnRoZXNpc0RhdGEoKS5zeW50aGVzaXplci0+c3BlYWsobV9zcGVlY2hT
eW50aGVzaXNEYXRhLT51dHRlcmFuY2UuZ2V0KCkpOw0KIH0NCiANCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oDQppbmRleCBmNTY3NzhkN2M2OS4uNTI3ZDhlNDc3NWIgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaA0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgNCkBAIC0xNTMzLDYgKzE1MzMsNyBA
QCBwdWJsaWM6DQogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQ0KICAgICB2b2lkIHNwZWVj
aFN5bnRoZXNpc1ZvaWNlTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZT4mJik+JiYpOw0KICAgICB2b2lkIHNwZWVjaFN5bnRoZXNpc1NwZWFr
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGZsb2F0IHZvbHVtZSwgZmxvYXQgcmF0ZSwg
ZmxvYXQgcGl0Y2gsIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lLCBjb25zdCBTdHJpbmcmIHZvaWNl
VVJJLCBjb25zdCBTdHJpbmcmIHZvaWNlTmFtZSwgY29uc3QgU3RyaW5nJiB2b2ljZUxhbmcsIGJv
b2wgbG9jYWxTZXJ2aWNlLCBib29sIGRlZmF1bHRWb2ljZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsNCisgICAgdm9pZCBzcGVlY2hTeW50aGVzaXNTZXRGaW5pc2hlZENhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7DQogICAgIHZvaWQgc3BlZWNoU3ludGhlc2lzQ2Fu
Y2VsKCk7DQogICAgIHZvaWQgc3BlZWNoU3ludGhlc2lzUGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsNCiAgICAgdm9pZCBzcGVlY2hTeW50aGVzaXNSZXN1bWUoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsNCkBAIC0yMDk2LDYgKzIwOTcsNyBAQCBwcml2YXRlOg0KIA0KICAg
ICBzdHJ1Y3QgU3BlZWNoU3ludGhlc2lzRGF0YTsNCiAgICAgU3BlZWNoU3ludGhlc2lzRGF0YSYg
c3BlZWNoU3ludGhlc2lzRGF0YSgpOw0KKyAgICB2b2lkIHJlc2V0U3BlZWNoU3ludGhlc2l6ZXIo
KTsNCiAjZW5kaWYNCiANCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkNCkBAIC0yNTMzLDYgKzI1
MzUsNyBAQCBwcml2YXRlOg0KICAgICBzdHJ1Y3QgU3BlZWNoU3ludGhlc2lzRGF0YSB7DQogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4g
c3ludGhlc2l6ZXI7DQogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZTsNCisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4gc3BlYWtpbmdTdGFydGVkQ29tcGxldGlvbkhhbmRsZXI7DQogICAgICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+IHNwZWFraW5nRmluaXNoZWRDb21wbGV0aW9uSGFuZGxlcjsNCiAg
ICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc3BlYWtpbmdQYXVzZWRDb21wbGV0aW9u
SGFuZGxlcjsNCiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc3BlYWtpbmdSZXN1
bWVkQ29tcGxldGlvbkhhbmRsZXI7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluDQppbmRleCBkZmJkMTY3ODhkOS4uZWNhZDk1ZTQ2YjUgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4NCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bg0KQEAgLTU1OCw2ICs1NTgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgew0KICNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykNCiAgICAgU3BlZWNoU3ludGhlc2lzVm9pY2VMaXN0KCkg
LT4gKFZlY3RvcjxXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlPiB2b2ljZUxpc3QpIFN5
bmNocm9ub3VzDQogICAgIFNwZWVjaFN5bnRoZXNpc1NwZWFrKFN0cmluZyB0ZXh0LCBTdHJpbmcg
bGFuZywgZmxvYXQgdm9sdW1lLCBmbG9hdCByYXRlLCBmbG9hdCBwaXRjaCwgTW9ub3RvbmljVGlt
ZSBzdGFydFRpbWUsIFN0cmluZyB2b2ljZVVSSSwgU3RyaW5nIHZvaWNlTmFtZSwgU3RyaW5nIHZv
aWNlTGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgZGVmYXVsdFZvaWNlKSAtPiAoKSBBc3lu
Yw0KKyAgICBTcGVlY2hTeW50aGVzaXNTZXRGaW5pc2hlZENhbGxiYWNrKCkgLT4gKCkgQXN5bmMN
CiAgICAgU3BlZWNoU3ludGhlc2lzQ2FuY2VsKCkNCiAgICAgU3BlZWNoU3ludGhlc2lzUGF1c2Uo
KSAtPiAoKSBBc3luYw0KICAgICBTcGVlY2hTeW50aGVzaXNSZXN1bWUoKSAtPiAoKSBBc3luYw0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hTeW50aGVzaXNDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHANCmluZGV4IGUzNWYzMjI5ZmU0
Li41MzAxZDkyZjlhNiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwDQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNw
cA0KQEAgLTU3LDcgKzU3LDE0IEBAIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NsaWVudE9ic2Vy
dmVyKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OmNvcmVQYWdlT2JzZXJ2DQogDQogdm9pZCBX
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQ0KIHsNCi0gICAgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgew0KKyAgICBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4gc3RhcnRlZENvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgew0KKyAgICAgICAgaWYgKCF3ZWFrVGhpcykN
CisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICBpZiAoYXV0byBvYnNlcnZlciA9IGNvcmVQ
YWdlT2JzZXJ2ZXIoKSkNCisgICAgICAgICAgICBvYnNlcnZlci0+ZGlkU3RhcnRTcGVha2luZygp
Ow0KKyAgICB9Ow0KKw0KKyAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gZmluaXNo
ZWRDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0oKSBtdXRhYmxlIHsNCiAgICAgICAgIGlmICghd2Vha1RoaXMpDQogICAgICAgICAgICAgcmV0
dXJuOw0KICAgICAgICAgaWYgKGF1dG8gb2JzZXJ2ZXIgPSBjb3JlUGFnZU9ic2VydmVyKCkpDQpA
QCAtNzAsMTAgKzc3LDkgQEAgdm9pZCBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKFJl
ZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGUNCiAgICAgYXV0byBsYW5n
ID0gdm9pY2UgPyB2b2ljZS0+bGFuZygpIDogIiI7DQogICAgIGF1dG8gbG9jYWxTZXJ2aWNlID0g
dm9pY2UgPyB2b2ljZS0+bG9jYWxTZXJ2aWNlKCkgOiBmYWxzZTsNCiAgICAgYXV0byBpc0RlZmF1
bHQgPSB2b2ljZSA/IHZvaWNlLT5pc0RlZmF1bHQoKSA6IGZhbHNlOw0KLQ0KLSAgICBtX3BhZ2Uu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNwZWVjaFN5bnRoZXNp
c1NwZWFrKHV0dGVyYW5jZS0+dGV4dCgpLCB1dHRlcmFuY2UtPmxhbmcoKSwgdXR0ZXJhbmNlLT52
b2x1bWUoKSwgdXR0ZXJhbmNlLT5yYXRlKCksIHV0dGVyYW5jZS0+cGl0Y2goKSwgdXR0ZXJhbmNl
LT5zdGFydFRpbWUoKSwgdm9pY2VVUkksIG5hbWUsIGxhbmcsIGxvY2FsU2VydmljZSwgaXNEZWZh
dWx0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOw0KLSAgICBpZiAoYXV0byBvYnNlcnZl
ciA9IGNvcmVQYWdlT2JzZXJ2ZXIoKSkNCi0gICAgICAgIG9ic2VydmVyLT5kaWRTdGFydFNwZWFr
aW5nKCk7DQorICAgIA0KKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNwZWVjaFN5bnRoZXNpc1NldEZpbmlzaGVkQ2FsbGJhY2soKSwgV1RGTW92
ZShmaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyKSk7DQorICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3BlZWNoU3ludGhlc2lzU3BlYWsodXR0ZXJh
bmNlLT50ZXh0KCksIHV0dGVyYW5jZS0+bGFuZygpLCB1dHRlcmFuY2UtPnZvbHVtZSgpLCB1dHRl
cmFuY2UtPnJhdGUoKSwgdXR0ZXJhbmNlLT5waXRjaCgpLCB1dHRlcmFuY2UtPnN0YXJ0VGltZSgp
LCB2b2ljZVVSSSwgbmFtZSwgbGFuZywgbG9jYWxTZXJ2aWNlLCBpc0RlZmF1bHQpLCBXVEZNb3Zl
KHN0YXJ0ZWRDb21wbGV0aW9uSGFuZGxlcikpOw0KIH0NCiANCiB2b2lkIFdlYlNwZWVjaFN5bnRo
ZXNpc0NsaWVudDo6Y2FuY2VsKCk=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374575</attachid>
            <date>2019-07-21 12:43:05 -0700</date>
            <delta_ts>2019-07-22 14:21:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14096</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNzFjNjRlZmQ1Ni4uZGZjNjE1NjJkZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxOS0wNy0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgorCisgICAgICAgIEFYOiBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50IGF0IFdlYktpdDogV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk5ODgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIHJlc2V0IHN0YXRlIHRvIGNhbmNlbCBjdXJyZW50IHNwZWVjaCBqb2JzLgorCisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpczo6c3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpyZXNldFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OnJlc2V0U3RhdGUpOgorCiAyMDE5LTA3LTIxICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gQ2hlY2tlciBuZWVkcyB0byBz
ZXRFcnJvcigpIHdoZW4gYSBwcm9wZXJ0eSBhY2Nlc3Mgbm9kZSBjYW4ndCBjb21taXQgaXRzIGJh
c2UgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpcy5jcHAKaW5kZXggNDA1NGI0ZjBhY2MuLjcyYjU2M2U0YmJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTExMCw3ICsx
MTAsNiBAQCBib29sIFNwZWVjaFN5bnRoZXNpczo6cGF1c2VkKCkgY29uc3QKIAogdm9pZCBTcGVl
Y2hTeW50aGVzaXM6OnN0YXJ0U3BlYWtpbmdJbW1lZGlhdGVseShTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmIHV0dGVyYW5jZSkKIHsKLSAgICBBU1NFUlQoIW1fY3VycmVudFNwZWVjaFV0dGVyYW5j
ZSk7CiAgICAgdXR0ZXJhbmNlLnNldFN0YXJ0VGltZShNb25vdG9uaWNUaW1lOjpub3coKSk7CiAg
ICAgbV9jdXJyZW50U3BlZWNoVXR0ZXJhbmNlID0gJnV0dGVyYW5jZTsKICAgICBtX2lzUGF1c2Vk
ID0gZmFsc2U7CkBAIC0xNTIsMTIgKzE1MSwxMiBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6Y2Fu
Y2VsKCkKICAgICBtX3V0dGVyYW5jZVF1ZXVlLmNsZWFyKCk7CiAgICAgaWYgKG1fc3BlZWNoU3lu
dGhlc2lzQ2xpZW50KQogICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0NsaWVudC0+Y2FuY2VsKCk7
Ci0gICAgZWxzZSBpZiAobV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQorICAgIGVsc2UgaWYg
KG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcikgewogICAgICAgICBtX3BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXItPmNhbmNlbCgpOworICAgICAgICAvLyBUaGUgcGxhdGZvcm0gc2hvdWxkIGhh
dmUgY2FsbGVkIGJhY2sgaW1tZWRpYXRlbHkgYW5kIGNsZWFyZWQgdGhlIGN1cnJlbnQgdXR0ZXJh
bmNlLgorICAgICAgICBBU1NFUlQoIW1fY3VycmVudFNwZWVjaFV0dGVyYW5jZSk7CisgICAgfQog
ICAgIGN1cnJlbnQgPSBudWxscHRyOwotCi0gICAgLy8gVGhlIHBsYXRmb3JtIHNob3VsZCBoYXZl
IGNhbGxlZCBiYWNrIGltbWVkaWF0ZWx5IGFuZCBjbGVhcmVkIHRoZSBjdXJyZW50IHV0dGVyYW5j
ZS4KLSAgICBBU1NFUlQoIW1fY3VycmVudFNwZWVjaFV0dGVyYW5jZSk7CiB9CiAKIHZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKaW5kZXggOTViOGFlM2JiNmIuLjBhMWRmNjJiZTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
dW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwogCisgICAgdmlydHVhbCB2b2lkIHJl
c2V0U3RhdGUoKTsKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50OyB9CiAKIHByb3RlY3Rl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KaW5kZXggNGIzNzhmYTE3ZTYuLjdjYWY0ODJkNzBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcklPUy5tbQpAQCAtMjkxLDYgKzI5MSwxMSBAQCB2b2lkIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVy
LmdldCgpIGNhbmNlbF07CiB9CiAKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVz
ZXRTdGF0ZSgpCit7CisgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIGNhbmNlbF07
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hf
U1lOVEhFU0lTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpp
bmRleCA1MzhkZGYyOTFiYy4uMGZhZWRmODRiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBA
IC0yNzcsNiArMjc3LDExIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2Vs
KCkKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgY2FuY2VsXTsKIH0KIAordm9p
ZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXNldFN0YXRlKCkKK3sKKyAgICBbbV9wbGF0
Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgY2FuY2VsXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICYmIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggM2YzYjA0YWQyODIuLmM0M2FjODUyMTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE5LTA3LTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5j
b20+CisKKyAgICAgICAgQVg6IENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQgYXQgV2ViS2l0OiBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWsKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTk4OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcHJvdmVtZW50
cyB0byBXZWJTcGVlY2hTeW50aGVzaXMgdG8gYXZvaWQgY3Jhc2hpbmcgYW5kIGltcHJvdmUgY29y
cmVjdG5lc3MuCisgICAgICAgIC0gUmVzZXQgYW5kIGNhbmNlbCBzcGVlY2ggam9icyBvbiBwYWdl
IGNsb3NlIG9yIHJlbG9hZCAob3RoZXJ3aXNlIHRoZSBzeW50aGVzaXplciBrZWVwcyB0YWxraW5n
IGFmdGVyIHlvdXIgcGFnZSBpcyBnb25lKQorICAgICAgICAtIEhhdmUgYSBzZXBhcmF0ZSBzcGVl
Y2ggZmluaXNoIGNhbGxiYWNrIG1lY2hhbmlzbSwgdXNlIHRoZSBzdGFydCBzcGVha2luZyBjYWxs
YmFjayB3aGVuIHRoZSBzeW50aGVzaXplciB0ZWxscyB1cy4KKyAgICAgICAgLSBNb3ZlIGFuIGFz
c2VydCBvbiB1dHRlcmFuY2Ugc3RhdGUgdG8gb25seSBhcHBseSB3aGVuIHdlIHVzZSB0aGUgaW4g
cHJvY2VzcyBzeW50aGVzaXplci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFNw
ZWFraW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0
U3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNwZWVj
aFN5bnRoZXNpc1NldEZpbmlzaGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNwZWVjaFN5bnRoZXNpc1NwZWFrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0Ns
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3Bl
YWspOgorCiAyMDE5LTA3LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3BlZWQgdXAgSGFzaFRhYmxlIGRlY29kaW5nIGJ5IHJlc2VydmluZyBjYXBhY2l0eSBh
bmQgYXZvaWRpbmcgcmVoYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGE0MWNkM2EwMDRkLi5lYTk4MzcyMTk0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KQEAgLTI1OCw2ICsyNTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvcgogI2lmIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0U3BlYWtp
bmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQogeworICAgIG1f
c3BlZWNoU3ludGhlc2lzRGF0YS0+c3BlYWtpbmdTdGFydGVkQ29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFNwZWFraW5nKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDdjODE3ODQ3MTkxLi5iZjNjZTAzZjUxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzU5LDYgKzEzNTksMTAgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNv
cmU6OlJlbG9hZE9wdGlvbj4gb3AKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlbG9hZChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgb3B0aW9ucy50b1JhdygpLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
KyAgICByZXNldFNwZWVjaFN5bnRoZXNpemVyKCk7CisjZW5kaWYKKwogICAgIHJldHVybiBuYXZp
Z2F0aW9uOwogfQogCkBAIC03MDUzLDYgKzcwNTcsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCiAgICAgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKICNlbmRpZgorICAgIAor
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIHJlc2V0U3BlZWNoU3ludGhlc2l6ZXIo
KTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYXRpb25SZWFzb24pCkBAIC05
MTI2LDEwICs5MTM0LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXJrQWRDbGlja0F0dHJpYnV0
aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8CiB9CiAKICNpZiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKKwordm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNoU3lu
dGhlc2l6ZXIoKQoreworICAgIGlmICghbV9zcGVlY2hTeW50aGVzaXNEYXRhKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgYXV0byYgc3ludGhlc2lzRGF0YSA9IHNwZWVjaFN5bnRoZXNpc0Rh
dGEoKTsKKyAgICBzeW50aGVzaXNEYXRhLnNwZWFraW5nRmluaXNoZWRDb21wbGV0aW9uSGFuZGxl
ciA9IG51bGxwdHI7CisgICAgc3ludGhlc2lzRGF0YS5zcGVha2luZ1N0YXJ0ZWRDb21wbGV0aW9u
SGFuZGxlciA9IG51bGxwdHI7CisgICAgc3ludGhlc2lzRGF0YS5zcGVha2luZ1BhdXNlZENvbXBs
ZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKKyAgICBzeW50aGVzaXNEYXRhLnNwZWFraW5nUmVzdW1l
ZENvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKKyAgICBzeW50aGVzaXNEYXRhLnN5bnRoZXNp
emVyLT5yZXNldFN0YXRlKCk7Cit9CisKIFdlYlBhZ2VQcm94eTo6U3BlZWNoU3ludGhlc2lzRGF0
YSYgV2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVzaXNEYXRhKCkKIHsKICAgICBpZiAoIW1fc3Bl
ZWNoU3ludGhlc2lzRGF0YSkKLSAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3BlZWNo
U3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICAgICAg
bV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICByZXR1cm4gKm1fc3BlZWNoU3ludGhl
c2lzRGF0YTsKIH0KIApAQCAtOTE0Myw2ICs5MTY1LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
cGVlY2hTeW50aGVzaXNWb2ljZUxpc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vi
U3BlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc1NldEZpbmlzaGVkQ2FsbGJhY2soQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNwZWVjaFN5bnRo
ZXNpc0RhdGEoKS5zcGVha2luZ0ZpbmlzaGVkQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNp
c1NwZWFrKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBsYW5nLCBmbG9hdCB2b2x1
bWUsIGZsb2F0IHJhdGUsIGZsb2F0IHBpdGNoLCBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSwgY29u
c3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiB2b2ljZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdm9pY2VMYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBkZWZhdWx0Vm9pY2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHZv
aWNlID0gV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKHZvaWNl
VVJJLCB2b2ljZU5hbWUsIHZvaWNlTGFuZywgbG9jYWxTZXJ2aWNlLCBkZWZhdWx0Vm9pY2UpOwpA
QCAtOTE1NCw4ICs5MTgxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc1Nw
ZWFrKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBsYW5nLAogICAgIHV0dGVyYW5j
ZS0+c2V0UGl0Y2gocGl0Y2gpOwogICAgIHV0dGVyYW5jZS0+c2V0Vm9pY2UoJnZvaWNlLmdldCgp
KTsKIAorICAgIHNwZWVjaFN5bnRoZXNpc0RhdGEoKS5zcGVha2luZ1N0YXJ0ZWRDb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHNwZWVjaFN5bnRoZXNp
c0RhdGEoKS51dHRlcmFuY2UgPSBXVEZNb3ZlKHV0dGVyYW5jZSk7Ci0gICAgc3BlZWNoU3ludGhl
c2lzRGF0YSgpLnNwZWFraW5nRmluaXNoZWRDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpOwogICAgIHNwZWVjaFN5bnRoZXNpc0RhdGEoKS5zeW50aGVzaXplci0+
c3BlYWsobV9zcGVlY2hTeW50aGVzaXNEYXRhLT51dHRlcmFuY2UuZ2V0KCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY1Njc3OGQ3YzY5Li41MjdkOGU0
Nzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1MzMsNiAr
MTUzMyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKICAgICB2b2lk
IHNwZWVjaFN5bnRoZXNpc1ZvaWNlTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mJik+JiYpOwogICAgIHZvaWQgc3BlZWNoU3ludGhlc2lz
U3BlYWsoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgZmxvYXQgdm9sdW1lLCBmbG9hdCBy
YXRlLCBmbG9hdCBwaXRjaCwgTW9ub3RvbmljVGltZSBzdGFydFRpbWUsIGNvbnN0IFN0cmluZyYg
dm9pY2VVUkksIGNvbnN0IFN0cmluZyYgdm9pY2VOYW1lLCBjb25zdCBTdHJpbmcmIHZvaWNlTGFu
ZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgZGVmYXVsdFZvaWNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgc3BlZWNoU3ludGhlc2lzU2V0RmluaXNoZWRDYWxsYmFj
ayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3BlZWNoU3ludGhlc2lz
Q2FuY2VsKCk7CiAgICAgdm9pZCBzcGVlY2hTeW50aGVzaXNQYXVzZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3BlZWNoU3ludGhlc2lzUmVzdW1lKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yMDk2LDYgKzIwOTcsNyBAQCBwcml2YXRlOgogCiAgICAg
c3RydWN0IFNwZWVjaFN5bnRoZXNpc0RhdGE7CiAgICAgU3BlZWNoU3ludGhlc2lzRGF0YSYgc3Bl
ZWNoU3ludGhlc2lzRGF0YSgpOworICAgIHZvaWQgcmVzZXRTcGVlY2hTeW50aGVzaXplcigpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjUzMyw2ICsyNTM1LDcgQEAg
cHJpdmF0ZToKICAgICBzdHJ1Y3QgU3BlZWNoU3ludGhlc2lzRGF0YSB7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPiBzeW50aGVzaXpl
cjsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPiB1dHRlcmFuY2U7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc3BlYWtp
bmdTdGFydGVkQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4gc3BlYWtpbmdGaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+IHNwZWFraW5nUGF1c2VkQ29tcGxldGlvbkhhbmRsZXI7CiAgICAg
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc3BlYWtpbmdSZXN1bWVkQ29tcGxldGlvbkhh
bmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggZGZiZDE2Nzg4ZDkuLmVjYWQ5NWU0NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NTgsNiArNTU4LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKICAgICBTcGVlY2hTeW50aGVzaXNWb2ljZUxpc3QoKSAtPiAoVmVjdG9yPFdlYktpdDo6V2Vi
U3BlZWNoU3ludGhlc2lzVm9pY2U+IHZvaWNlTGlzdCkgU3luY2hyb25vdXMKICAgICBTcGVlY2hT
eW50aGVzaXNTcGVhayhTdHJpbmcgdGV4dCwgU3RyaW5nIGxhbmcsIGZsb2F0IHZvbHVtZSwgZmxv
YXQgcmF0ZSwgZmxvYXQgcGl0Y2gsIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lLCBTdHJpbmcgdm9p
Y2VVUkksIFN0cmluZyB2b2ljZU5hbWUsIFN0cmluZyB2b2ljZUxhbmcsIGJvb2wgbG9jYWxTZXJ2
aWNlLCBib29sIGRlZmF1bHRWb2ljZSkgLT4gKCkgQXN5bmMKKyAgICBTcGVlY2hTeW50aGVzaXNT
ZXRGaW5pc2hlZENhbGxiYWNrKCkgLT4gKCkgQXN5bmMKICAgICBTcGVlY2hTeW50aGVzaXNDYW5j
ZWwoKQogICAgIFNwZWVjaFN5bnRoZXNpc1BhdXNlKCkgLT4gKCkgQXN5bmMKICAgICBTcGVlY2hT
eW50aGVzaXNSZXN1bWUoKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50LmNwcAppbmRleCBlMzVmMzIyOWZlNC4uNTMwMWQ5MmY5YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXND
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwCkBAIC01Nyw3ICs1NywxNCBAQCBXZWJDb3JlOjpT
cGVlY2hTeW50aGVzaXNDbGllbnRPYnNlcnZlciogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Ojpj
b3JlUGFnZU9ic2VydgogCiB2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWsoUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2Up
CiB7Ci0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
ID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgeworICAg
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBzdGFydGVkQ29tcGxldGlvbkhhbmRsZXIg
PSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChhdXRv
IG9ic2VydmVyID0gY29yZVBhZ2VPYnNlcnZlcigpKQorICAgICAgICAgICAgb2JzZXJ2ZXItPmRp
ZFN0YXJ0U3BlYWtpbmcoKTsKKyAgICB9OworCisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+IGZpbmlzaGVkQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChhdXRvIG9ic2VydmVyID0gY29yZVBhZ2VPYnNl
cnZlcigpKQpAQCAtNzAsMTAgKzc3LDkgQEAgdm9pZCBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6
OnNwZWFrKFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGUKICAgICBh
dXRvIGxhbmcgPSB2b2ljZSA/IHZvaWNlLT5sYW5nKCkgOiAiIjsKICAgICBhdXRvIGxvY2FsU2Vy
dmljZSA9IHZvaWNlID8gdm9pY2UtPmxvY2FsU2VydmljZSgpIDogZmFsc2U7CiAgICAgYXV0byBp
c0RlZmF1bHQgPSB2b2ljZSA/IHZvaWNlLT5pc0RlZmF1bHQoKSA6IGZhbHNlOwotCi0gICAgbV9w
YWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTcGVlY2hTeW50
aGVzaXNTcGVhayh1dHRlcmFuY2UtPnRleHQoKSwgdXR0ZXJhbmNlLT5sYW5nKCksIHV0dGVyYW5j
ZS0+dm9sdW1lKCksIHV0dGVyYW5jZS0+cmF0ZSgpLCB1dHRlcmFuY2UtPnBpdGNoKCksIHV0dGVy
YW5jZS0+c3RhcnRUaW1lKCksIHZvaWNlVVJJLCBuYW1lLCBsYW5nLCBsb2NhbFNlcnZpY2UsIGlz
RGVmYXVsdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBpZiAoYXV0byBvYnNl
cnZlciA9IGNvcmVQYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgb2JzZXJ2ZXItPmRpZFN0YXJ0U3Bl
YWtpbmcoKTsKKyAgICAKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNwZWVjaFN5bnRoZXNpc1NldEZpbmlzaGVkQ2FsbGJhY2soKSwgV1RGTW92
ZShmaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVzaXNTcGVhayh1dHRlcmFu
Y2UtPnRleHQoKSwgdXR0ZXJhbmNlLT5sYW5nKCksIHV0dGVyYW5jZS0+dm9sdW1lKCksIHV0dGVy
YW5jZS0+cmF0ZSgpLCB1dHRlcmFuY2UtPnBpdGNoKCksIHV0dGVyYW5jZS0+c3RhcnRUaW1lKCks
IHZvaWNlVVJJLCBuYW1lLCBsYW5nLCBsb2NhbFNlcnZpY2UsIGlzRGVmYXVsdCksIFdURk1vdmUo
c3RhcnRlZENvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50OjpjYW5jZWwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374633</attachid>
            <date>2019-07-22 14:21:10 -0700</date>
            <delta_ts>2019-07-22 14:22:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5861</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWNjIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5j
cHAKaW5kZXggNDA1NGI0ZjBhY2MsYjVkYWI1ZGE1YzkuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGE3MWM2NGVmZDU2Li5kZmM2MTU2MmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE5LTA3LTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQVg6IENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgV2ViS2l0
OiBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWsKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTk4OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgcmVzZXQgc3Rh
dGUgdG8gY2FuY2VsIGN1cnJlbnQgc3BlZWNoIGpvYnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhl
c2lzOjpzdGFydFNwZWFraW5nSW1tZWRpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
U3ludGhlc2lzOjpjYW5jZWwpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6
OnJlc2V0U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6cmVzZXRTdGF0ZSk6CisKIDIwMTktMDctMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBDaGVja2VyIG5lZWRzIHRvIHNldEVycm9yKCkgd2hl
biBhIHByb3BlcnR5IGFjY2VzcyBub2RlIGNhbid0IGNvbW1pdCBpdHMgYmFzZSB0eXBlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgK
aW5kZXggMGExZGY2MmJlOTkuLmI0YjhkMDhhMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCkBAIC03Myw3ICs3Myw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGNh
bmNlbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlc2V0U3RhdGUoKTsKKyAgICB2b2lkIHJlc2V0
U3RhdGUoKTsKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50OyB9CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggM2YzYjA0YWQyODIuLmM0M2FjODUyMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDE5LTA3LTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+
CisKKyAgICAgICAgQVg6IENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQg
YXQgV2ViS2l0OiBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWsKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTk4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcHJvdmVtZW50cyB0
byBXZWJTcGVlY2hTeW50aGVzaXMgdG8gYXZvaWQgY3Jhc2hpbmcgYW5kIGltcHJvdmUgY29ycmVj
dG5lc3MuCisgICAgICAgIC0gUmVzZXQgYW5kIGNhbmNlbCBzcGVlY2ggam9icyBvbiBwYWdlIGNs
b3NlIG9yIHJlbG9hZCAob3RoZXJ3aXNlIHRoZSBzeW50aGVzaXplciBrZWVwcyB0YWxraW5nIGFm
dGVyIHlvdXIgcGFnZSBpcyBnb25lKQorICAgICAgICAtIEhhdmUgYSBzZXBhcmF0ZSBzcGVlY2gg
ZmluaXNoIGNhbGxiYWNrIG1lY2hhbmlzbSwgdXNlIHRoZSBzdGFydCBzcGVha2luZyBjYWxsYmFj
ayB3aGVuIHRoZSBzeW50aGVzaXplciB0ZWxscyB1cy4KKyAgICAgICAgLSBNb3ZlIGFuIGFzc2Vy
dCBvbiB1dHRlcmFuY2Ugc3RhdGUgdG8gb25seSBhcHBseSB3aGVuIHdlIHVzZSB0aGUgaW4gcHJv
Y2VzcyBzeW50aGVzaXplci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFNwZWFr
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3Bl
ZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNwZWVjaFN5
bnRoZXNpc1NldEZpbmlzaGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNwZWVjaFN5bnRoZXNpc1NwZWFrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWsp
OgorCiAyMDE5LTA3LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgU3BlZWQgdXAgSGFzaFRhYmxlIGRlY29kaW5nIGJ5IHJlc2VydmluZyBjYXBhY2l0eSBhbmQg
YXZvaWRpbmcgcmVoYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGVhOTgzNzIxOTQ4Li43YjM2NmM1MGI3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KQEAgLTI1OCwyMiArMjU4LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yCiAjaWYgRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRTcGVha2lu
ZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7Ci0gICAgbV9z
cGVlY2hTeW50aGVzaXNEYXRhLT5zcGVha2luZ1N0YXJ0ZWRDb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgIHNwZWVjaFN5bnRoZXNpc0RhdGEoKS5zcGVha2luZ1N0YXJ0ZWRDb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU3BlYWtpbmcoV2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQogewotICAgIG1fc3BlZWNoU3ludGhl
c2lzRGF0YS0+c3BlYWtpbmdGaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgc3BlZWNo
U3ludGhlc2lzRGF0YSgpLnNwZWFraW5nRmluaXNoZWRDb21wbGV0aW9uSGFuZGxlcigpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGF1c2VTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7Ci0gICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhLT5z
cGVha2luZ1BhdXNlZENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgc3BlZWNoU3ludGhlc2lzRGF0
YSgpLnNwZWFraW5nUGF1c2VkQ29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJlc3VtZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlJikKIHsKLSAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEtPnNwZWFraW5nUmVzdW1l
ZENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgc3BlZWNoU3ludGhlc2lzRGF0YSgpLnNwZWFraW5n
UmVzdW1lZENvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzcGVh
a2luZ0Vycm9yT2NjdXJyZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjI5MzEy
YmUzZTMuLjEwYThhM2E1YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTkxNDUsMTMgKzkxNDUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3Bl
ZWNoU3ludGhlc2l6ZXIoKQogICAgIHN5bnRoZXNpc0RhdGEuc3BlYWtpbmdTdGFydGVkQ29tcGxl
dGlvbkhhbmRsZXIgPSBudWxscHRyOwogICAgIHN5bnRoZXNpc0RhdGEuc3BlYWtpbmdQYXVzZWRD
b21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7CiAgICAgc3ludGhlc2lzRGF0YS5zcGVha2luZ1Jl
c3VtZWRDb21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7Ci0gICAgc3ludGhlc2lzRGF0YS5zeW50
aGVzaXplci0+cmVzZXRTdGF0ZSgpOworICAgIGlmIChzeW50aGVzaXNEYXRhLnN5bnRoZXNpemVy
KQorICAgICAgICBzeW50aGVzaXNEYXRhLnN5bnRoZXNpemVyLT5yZXNldFN0YXRlKCk7CiB9CiAK
IFdlYlBhZ2VQcm94eTo6U3BlZWNoU3ludGhlc2lzRGF0YSYgV2ViUGFnZVByb3h5OjpzcGVlY2hT
eW50aGVzaXNEYXRhKCkKIHsKICAgICBpZiAoIW1fc3BlZWNoU3ludGhlc2lzRGF0YSkKLSAgICAg
ICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0g
U3BlZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIgfTsKICAgICByZXR1cm4gKm1fc3BlZWNoU3ludGhlc2lzRGF0YTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374634</attachid>
            <date>2019-07-22 14:22:08 -0700</date>
            <delta_ts>2019-07-22 17:01:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14783</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNzFjNjRlZmQ1Ni4uZGZjNjE1NjJkZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxOS0wNy0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgorCisgICAgICAgIEFYOiBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50IGF0IFdlYktpdDogV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk5ODgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIHJlc2V0IHN0YXRlIHRvIGNhbmNlbCBjdXJyZW50IHNwZWVjaCBqb2JzLgorCisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpczo6c3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpyZXNldFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OnJlc2V0U3RhdGUpOgorCiAyMDE5LTA3LTIxICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gQ2hlY2tlciBuZWVkcyB0byBz
ZXRFcnJvcigpIHdoZW4gYSBwcm9wZXJ0eSBhY2Nlc3Mgbm9kZSBjYW4ndCBjb21taXQgaXRzIGJh
c2UgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpcy5jcHAKaW5kZXggNDA1NGI0ZjBhY2MuLjcyYjU2M2U0YmJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTExMCw3ICsx
MTAsNiBAQCBib29sIFNwZWVjaFN5bnRoZXNpczo6cGF1c2VkKCkgY29uc3QKIAogdm9pZCBTcGVl
Y2hTeW50aGVzaXM6OnN0YXJ0U3BlYWtpbmdJbW1lZGlhdGVseShTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmIHV0dGVyYW5jZSkKIHsKLSAgICBBU1NFUlQoIW1fY3VycmVudFNwZWVjaFV0dGVyYW5j
ZSk7CiAgICAgdXR0ZXJhbmNlLnNldFN0YXJ0VGltZShNb25vdG9uaWNUaW1lOjpub3coKSk7CiAg
ICAgbV9jdXJyZW50U3BlZWNoVXR0ZXJhbmNlID0gJnV0dGVyYW5jZTsKICAgICBtX2lzUGF1c2Vk
ID0gZmFsc2U7CkBAIC0xNTIsMTIgKzE1MSwxMiBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6Y2Fu
Y2VsKCkKICAgICBtX3V0dGVyYW5jZVF1ZXVlLmNsZWFyKCk7CiAgICAgaWYgKG1fc3BlZWNoU3lu
dGhlc2lzQ2xpZW50KQogICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0NsaWVudC0+Y2FuY2VsKCk7
Ci0gICAgZWxzZSBpZiAobV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQorICAgIGVsc2UgaWYg
KG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcikgewogICAgICAgICBtX3BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXItPmNhbmNlbCgpOworICAgICAgICAvLyBUaGUgcGxhdGZvcm0gc2hvdWxkIGhh
dmUgY2FsbGVkIGJhY2sgaW1tZWRpYXRlbHkgYW5kIGNsZWFyZWQgdGhlIGN1cnJlbnQgdXR0ZXJh
bmNlLgorICAgICAgICBBU1NFUlQoIW1fY3VycmVudFNwZWVjaFV0dGVyYW5jZSk7CisgICAgfQog
ICAgIGN1cnJlbnQgPSBudWxscHRyOwotCi0gICAgLy8gVGhlIHBsYXRmb3JtIHNob3VsZCBoYXZl
IGNhbGxlZCBiYWNrIGltbWVkaWF0ZWx5IGFuZCBjbGVhcmVkIHRoZSBjdXJyZW50IHV0dGVyYW5j
ZS4KLSAgICBBU1NFUlQoIW1fY3VycmVudFNwZWVjaFV0dGVyYW5jZSk7CiB9CiAKIHZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKaW5kZXggOTViOGFlM2JiNmIuLmI0YjhkMDhhMGNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
dW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwogCisgICAgdm9pZCByZXNldFN0YXRl
KCk7CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVySU9TLm1tCmluZGV4IDRiMzc4ZmExN2U2Li43Y2FmNDgyZDcwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJJT1MubW0KQEAgLTI5MSw2ICsyOTEsMTEgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpjYW5jZWwoKQogICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBj
YW5jZWxdOwogfQogCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc2V0U3RhdGUo
KQoreworICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBjYW5jZWxdOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KaW5kZXggNTM4
ZGRmMjkxYmMuLjBmYWVkZjg0YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpAQCAtMjc3LDYg
KzI3NywxMSBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCiAgICAg
W21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIGNhbmNlbF07CiB9CiAKK3ZvaWQgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcjo6cmVzZXRTdGF0ZSgpCit7CisgICAgW21fcGxhdGZvcm1TcGVl
Y2hXcmFwcGVyLmdldCgpIGNhbmNlbF07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKSAmJiBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDNmM2IwNGFkMjgyLi5jNDNhYzg1MjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAxOS0wNy0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisg
ICAgICAgIEFYOiBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IGF0IFdl
YktpdDogV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk5ODgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlbWVudHMgdG8gV2Vi
U3BlZWNoU3ludGhlc2lzIHRvIGF2b2lkIGNyYXNoaW5nIGFuZCBpbXByb3ZlIGNvcnJlY3RuZXNz
LgorICAgICAgICAtIFJlc2V0IGFuZCBjYW5jZWwgc3BlZWNoIGpvYnMgb24gcGFnZSBjbG9zZSBv
ciByZWxvYWQgKG90aGVyd2lzZSB0aGUgc3ludGhlc2l6ZXIga2VlcHMgdGFsa2luZyBhZnRlciB5
b3VyIHBhZ2UgaXMgZ29uZSkKKyAgICAgICAgLSBIYXZlIGEgc2VwYXJhdGUgc3BlZWNoIGZpbmlz
aCBjYWxsYmFjayBtZWNoYW5pc20sIHVzZSB0aGUgc3RhcnQgc3BlYWtpbmcgY2FsbGJhY2sgd2hl
biB0aGUgc3ludGhlc2l6ZXIgdGVsbHMgdXMuCisgICAgICAgIC0gTW92ZSBhbiBhc3NlcnQgb24g
dXR0ZXJhbmNlIHN0YXRlIHRvIG9ubHkgYXBwbHkgd2hlbiB3ZSB1c2UgdGhlIGluIHByb2Nlc3Mg
c3ludGhlc2l6ZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRTcGVha2luZyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZXNldFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFNwZWVjaFN5
bnRoZXNpemVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVz
aXNTZXRGaW5pc2hlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
cGVlY2hTeW50aGVzaXNTcGVhayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKToKKwog
MjAxOS0wNy0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNw
ZWVkIHVwIEhhc2hUYWJsZSBkZWNvZGluZyBieSByZXNlcnZpbmcgY2FwYWNpdHkgYW5kIGF2b2lk
aW5nIHJlaGFzaGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQppbmRleCBhNDFjZDNhMDA0ZC4uN2IzNjZjNTBiNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBA
IC0yNTgsMjEgKzI1OCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9y
UmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvcgogI2lmIEVOQUJMRShT
UEVFQ0hfU1lOVEhFU0lTKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0U3BlYWtpbmcoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQogeworICAgIHNwZWVjaFN5
bnRoZXNpc0RhdGEoKS5zcGVha2luZ1N0YXJ0ZWRDb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UmKQogewotICAgIG1fc3BlZWNoU3ludGhlc2lzRGF0YS0+c3Bl
YWtpbmdGaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgc3BlZWNoU3ludGhlc2lzRGF0
YSgpLnNwZWFraW5nRmluaXNoZWRDb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUGF1c2VTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYpCiB7Ci0gICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhLT5zcGVha2luZ1BhdXNl
ZENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgc3BlZWNoU3ludGhlc2lzRGF0YSgpLnNwZWFraW5n
UGF1c2VkQ29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
c3VtZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikK
IHsKLSAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEtPnNwZWFraW5nUmVzdW1lZENvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgc3BlZWNoU3ludGhlc2lzRGF0YSgpLnNwZWFraW5nUmVzdW1lZENvbXBs
ZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzcGVha2luZ0Vycm9yT2Nj
dXJyZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2M4MTc4NDcxOTEuLjEwYThh
M2E1YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEz
NTksNiArMTM1OSwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJl
bG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcAogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCBvcHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7CiAg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAorI2lmIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIHJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKTsKKyNlbmRp
ZgorCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKQEAgLTcwNTMsNiArNzA1NywxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVS
ZWFzb24pCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICByZXF1ZXN0UG9pbnRlclVubG9j
aygpOwogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgcmVz
ZXRTcGVlY2hTeW50aGVzaXplcigpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJt
aW5hdGlvblJlYXNvbikKQEAgLTkxMjYsMTAgKzkxMzQsMjUgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjwKIH0KIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzZXRTcGVlY2hTeW50aGVzaXplcigpCit7CisgICAgaWYgKCFtX3NwZWVjaFN5bnRo
ZXNpc0RhdGEpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhdXRvJiBzeW50aGVzaXNEYXRh
ID0gc3BlZWNoU3ludGhlc2lzRGF0YSgpOworICAgIHN5bnRoZXNpc0RhdGEuc3BlYWtpbmdGaW5p
c2hlZENvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKKyAgICBzeW50aGVzaXNEYXRhLnNwZWFr
aW5nU3RhcnRlZENvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKKyAgICBzeW50aGVzaXNEYXRh
LnNwZWFraW5nUGF1c2VkQ29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOworICAgIHN5bnRoZXNp
c0RhdGEuc3BlYWtpbmdSZXN1bWVkQ29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOworICAgIGlm
IChzeW50aGVzaXNEYXRhLnN5bnRoZXNpemVyKQorICAgICAgICBzeW50aGVzaXNEYXRhLnN5bnRo
ZXNpemVyLT5yZXNldFN0YXRlKCk7Cit9CisKIFdlYlBhZ2VQcm94eTo6U3BlZWNoU3ludGhlc2lz
RGF0YSYgV2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVzaXNEYXRhKCkKIHsKICAgICBpZiAoIW1f
c3BlZWNoU3ludGhlc2lzRGF0YSkKLSAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3Bl
ZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICAg
ICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICByZXR1cm4gKm1fc3BlZWNoU3lu
dGhlc2lzRGF0YTsKIH0KIApAQCAtOTE0Myw2ICs5MTY2LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzcGVlY2hTeW50aGVzaXNWb2ljZUxpc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViU3BlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAordm9p
ZCBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc1NldEZpbmlzaGVkQ2FsbGJhY2soQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNwZWVjaFN5
bnRoZXNpc0RhdGEoKS5zcGVha2luZ0ZpbmlzaGVkQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRo
ZXNpc1NwZWFrKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBsYW5nLCBmbG9hdCB2
b2x1bWUsIGZsb2F0IHJhdGUsIGZsb2F0IHBpdGNoLCBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSwg
Y29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiB2b2ljZU5hbWUsIGNvbnN0IFN0
cmluZyYgdm9pY2VMYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBkZWZhdWx0Vm9pY2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
IHZvaWNlID0gV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKHZv
aWNlVVJJLCB2b2ljZU5hbWUsIHZvaWNlTGFuZywgbG9jYWxTZXJ2aWNlLCBkZWZhdWx0Vm9pY2Up
OwpAQCAtOTE1NCw4ICs5MTgyLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNp
c1NwZWFrKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBsYW5nLAogICAgIHV0dGVy
YW5jZS0+c2V0UGl0Y2gocGl0Y2gpOwogICAgIHV0dGVyYW5jZS0+c2V0Vm9pY2UoJnZvaWNlLmdl
dCgpKTsKIAorICAgIHNwZWVjaFN5bnRoZXNpc0RhdGEoKS5zcGVha2luZ1N0YXJ0ZWRDb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHNwZWVjaFN5bnRo
ZXNpc0RhdGEoKS51dHRlcmFuY2UgPSBXVEZNb3ZlKHV0dGVyYW5jZSk7Ci0gICAgc3BlZWNoU3lu
dGhlc2lzRGF0YSgpLnNwZWFraW5nRmluaXNoZWRDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIHNwZWVjaFN5bnRoZXNpc0RhdGEoKS5zeW50aGVzaXpl
ci0+c3BlYWsobV9zcGVlY2hTeW50aGVzaXNEYXRhLT51dHRlcmFuY2UuZ2V0KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY1Njc3OGQ3YzY5Li41Mjdk
OGU0Nzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1MzMs
NiArMTUzMyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKICAgICB2
b2lkIHNwZWVjaFN5bnRoZXNpc1ZvaWNlTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mJik+JiYpOwogICAgIHZvaWQgc3BlZWNoU3ludGhl
c2lzU3BlYWsoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgZmxvYXQgdm9sdW1lLCBmbG9h
dCByYXRlLCBmbG9hdCBwaXRjaCwgTW9ub3RvbmljVGltZSBzdGFydFRpbWUsIGNvbnN0IFN0cmlu
ZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgdm9pY2VOYW1lLCBjb25zdCBTdHJpbmcmIHZvaWNl
TGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgZGVmYXVsdFZvaWNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc3BlZWNoU3ludGhlc2lzU2V0RmluaXNoZWRDYWxs
YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3BlZWNoU3ludGhl
c2lzQ2FuY2VsKCk7CiAgICAgdm9pZCBzcGVlY2hTeW50aGVzaXNQYXVzZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3BlZWNoU3ludGhlc2lzUmVzdW1lKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yMDk2LDYgKzIwOTcsNyBAQCBwcml2YXRlOgogCiAg
ICAgc3RydWN0IFNwZWVjaFN5bnRoZXNpc0RhdGE7CiAgICAgU3BlZWNoU3ludGhlc2lzRGF0YSYg
c3BlZWNoU3ludGhlc2lzRGF0YSgpOworICAgIHZvaWQgcmVzZXRTcGVlY2hTeW50aGVzaXplcigp
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjUzMyw2ICsyNTM1LDcg
QEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgU3BlZWNoU3ludGhlc2lzRGF0YSB7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPiBzeW50aGVz
aXplcjsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPiB1dHRlcmFuY2U7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc3Bl
YWtpbmdTdGFydGVkQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4gc3BlYWtpbmdGaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+IHNwZWFraW5nUGF1c2VkQ29tcGxldGlvbkhhbmRsZXI7CiAg
ICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc3BlYWtpbmdSZXN1bWVkQ29tcGxldGlv
bkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggZGZiZDE2Nzg4ZDkuLmVjYWQ5NWU0NmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NTgsNiArNTU4
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKICAgICBTcGVlY2hTeW50aGVzaXNWb2ljZUxpc3QoKSAtPiAoVmVjdG9yPFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IHZvaWNlTGlzdCkgU3luY2hyb25vdXMKICAgICBTcGVl
Y2hTeW50aGVzaXNTcGVhayhTdHJpbmcgdGV4dCwgU3RyaW5nIGxhbmcsIGZsb2F0IHZvbHVtZSwg
ZmxvYXQgcmF0ZSwgZmxvYXQgcGl0Y2gsIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lLCBTdHJpbmcg
dm9pY2VVUkksIFN0cmluZyB2b2ljZU5hbWUsIFN0cmluZyB2b2ljZUxhbmcsIGJvb2wgbG9jYWxT
ZXJ2aWNlLCBib29sIGRlZmF1bHRWb2ljZSkgLT4gKCkgQXN5bmMKKyAgICBTcGVlY2hTeW50aGVz
aXNTZXRGaW5pc2hlZENhbGxiYWNrKCkgLT4gKCkgQXN5bmMKICAgICBTcGVlY2hTeW50aGVzaXND
YW5jZWwoKQogICAgIFNwZWVjaFN5bnRoZXNpc1BhdXNlKCkgLT4gKCkgQXN5bmMKICAgICBTcGVl
Y2hTeW50aGVzaXNSZXN1bWUoKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhl
c2lzQ2xpZW50LmNwcAppbmRleCBlMzVmMzIyOWZlNC4uNTMwMWQ5MmY5YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwCkBAIC01Nyw3ICs1NywxNCBAQCBXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXNDbGllbnRPYnNlcnZlciogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50
Ojpjb3JlUGFnZU9ic2VydgogCiB2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWso
UmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFu
Y2UpCiB7Ci0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5k
bGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgewor
ICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBzdGFydGVkQ29tcGxldGlvbkhhbmRs
ZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChh
dXRvIG9ic2VydmVyID0gY29yZVBhZ2VPYnNlcnZlcigpKQorICAgICAgICAgICAgb2JzZXJ2ZXIt
PmRpZFN0YXJ0U3BlYWtpbmcoKTsKKyAgICB9OworCisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+IGZpbmlzaGVkQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChhdXRvIG9ic2VydmVyID0gY29yZVBhZ2VP
YnNlcnZlcigpKQpAQCAtNzAsMTAgKzc3LDkgQEAgdm9pZCBXZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQ6OnNwZWFrKFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGUKICAg
ICBhdXRvIGxhbmcgPSB2b2ljZSA/IHZvaWNlLT5sYW5nKCkgOiAiIjsKICAgICBhdXRvIGxvY2Fs
U2VydmljZSA9IHZvaWNlID8gdm9pY2UtPmxvY2FsU2VydmljZSgpIDogZmFsc2U7CiAgICAgYXV0
byBpc0RlZmF1bHQgPSB2b2ljZSA/IHZvaWNlLT5pc0RlZmF1bHQoKSA6IGZhbHNlOwotCi0gICAg
bV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTcGVlY2hT
eW50aGVzaXNTcGVhayh1dHRlcmFuY2UtPnRleHQoKSwgdXR0ZXJhbmNlLT5sYW5nKCksIHV0dGVy
YW5jZS0+dm9sdW1lKCksIHV0dGVyYW5jZS0+cmF0ZSgpLCB1dHRlcmFuY2UtPnBpdGNoKCksIHV0
dGVyYW5jZS0+c3RhcnRUaW1lKCksIHZvaWNlVVJJLCBuYW1lLCBsYW5nLCBsb2NhbFNlcnZpY2Us
IGlzRGVmYXVsdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBpZiAoYXV0byBv
YnNlcnZlciA9IGNvcmVQYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgb2JzZXJ2ZXItPmRpZFN0YXJ0
U3BlYWtpbmcoKTsKKyAgICAKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNwZWVjaFN5bnRoZXNpc1NldEZpbmlzaGVkQ2FsbGJhY2soKSwgV1RG
TW92ZShmaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVzaXNTcGVhayh1dHRl
cmFuY2UtPnRleHQoKSwgdXR0ZXJhbmNlLT5sYW5nKCksIHV0dGVyYW5jZS0+dm9sdW1lKCksIHV0
dGVyYW5jZS0+cmF0ZSgpLCB1dHRlcmFuY2UtPnBpdGNoKCksIHV0dGVyYW5jZS0+c3RhcnRUaW1l
KCksIHZvaWNlVVJJLCBuYW1lLCBsYW5nLCBsb2NhbFNlcnZpY2UsIGlzRGVmYXVsdCksIFdURk1v
dmUoc3RhcnRlZENvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViU3BlZWNoU3ludGhl
c2lzQ2xpZW50OjpjYW5jZWwoKQo=
</data>
<flag name="review"
          id="390418"
          type_id="1"
          status="+"
          setter="pvollan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374656</attachid>
            <date>2019-07-22 17:01:35 -0700</date>
            <delta_ts>2019-07-23 16:25:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15061</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNzFjNjRlZmQ1Ni4uMDU1MTI3NzE4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxOS0wNy0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgorCisgICAgICAgIEFYOiBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50IGF0IFdlYktpdDogV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk5ODgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBQZXIgQXJuZSBWb2xsYW4uCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSByZXNldCBzdGF0ZSB0byBjYW5jZWwgY3VycmVudCBzcGVlY2ggam9icy4KKworICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXM6OnN0YXJ0U3BlYWtpbmdJbW1lZGlhdGVseSk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmNhbmNlbCk6CisgICAgICAgICogcGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcjo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjpyZXNldFN0YXRlKToKKwogMjAxOS0wNy0yMSAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIENoZWNrZXIgbmVlZHMgdG8g
c2V0RXJyb3IoKSB3aGVuIGEgcHJvcGVydHkgYWNjZXNzIG5vZGUgY2FuJ3QgY29tbWl0IGl0cyBi
YXNlIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuY3BwCmluZGV4IDQwNTRiNGYwYWNjLi43MmI1NjNlNGJiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC0xMTAsNyAr
MTEwLDYgQEAgYm9vbCBTcGVlY2hTeW50aGVzaXM6OnBhdXNlZCgpIGNvbnN0CiAKIHZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpzdGFydFNwZWFraW5nSW1tZWRpYXRlbHkoU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlJiB1dHRlcmFuY2UpCiB7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRTcGVlY2hVdHRlcmFu
Y2UpOwogICAgIHV0dGVyYW5jZS5zZXRTdGFydFRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpOwog
ICAgIG1fY3VycmVudFNwZWVjaFV0dGVyYW5jZSA9ICZ1dHRlcmFuY2U7CiAgICAgbV9pc1BhdXNl
ZCA9IGZhbHNlOwpAQCAtMTUyLDEyICsxNTEsMTIgQEAgdm9pZCBTcGVlY2hTeW50aGVzaXM6OmNh
bmNlbCgpCiAgICAgbV91dHRlcmFuY2VRdWV1ZS5jbGVhcigpOwogICAgIGlmIChtX3NwZWVjaFN5
bnRoZXNpc0NsaWVudCkKICAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNDbGllbnQtPmNhbmNlbCgp
OwotICAgIGVsc2UgaWYgKG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcikKKyAgICBlbHNlIGlm
IChtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpIHsKICAgICAgICAgbV9wbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyLT5jYW5jZWwoKTsKKyAgICAgICAgLy8gVGhlIHBsYXRmb3JtIHNob3VsZCBo
YXZlIGNhbGxlZCBiYWNrIGltbWVkaWF0ZWx5IGFuZCBjbGVhcmVkIHRoZSBjdXJyZW50IHV0dGVy
YW5jZS4KKyAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRTcGVlY2hVdHRlcmFuY2UpOworICAgIH0K
ICAgICBjdXJyZW50ID0gbnVsbHB0cjsKLQotICAgIC8vIFRoZSBwbGF0Zm9ybSBzaG91bGQgaGF2
ZSBjYWxsZWQgYmFjayBpbW1lZGlhdGVseSBhbmQgY2xlYXJlZCB0aGUgY3VycmVudCB1dHRlcmFu
Y2UuCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRTcGVlY2hVdHRlcmFuY2UpOwogfQogCiB2b2lkIFNw
ZWVjaFN5bnRoZXNpczo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmluZGV4IDk1YjhhZTNiYjZiLi5iNGI4ZDA4YTBj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
c3VtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKIAorICAgIHZvaWQgcmVzZXRTdGF0
ZSgpOwogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7IH0KIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcklPUy5tbQppbmRleCA0YjM3OGZhMTdlNi4uN2NhZjQ4MmQ3MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVySU9TLm1tCkBAIC0yOTEsNiArMjkxLDExIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6Y2FuY2VsKCkKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkg
Y2FuY2VsXTsKIH0KIAordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXNldFN0YXRl
KCkKK3sKKyAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgY2FuY2VsXTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IDUz
OGRkZjI5MWJjLi4wZmFlZGY4NGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KQEAgLTI3Nyw2
ICsyNzcsMTEgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQogICAg
IFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBjYW5jZWxdOwogfQogCit2b2lkIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc2V0U3RhdGUoKQoreworICAgIFttX3BsYXRmb3JtU3Bl
ZWNoV3JhcHBlci5nZXQoKSBjYW5jZWxdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgJiYgUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAzZjNiMDRhZDI4Mi4uYjVlZDkyNmE0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTktMDctMjEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBWDogQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBX
ZWJLaXQ6IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50OjpzcGVhaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUGVyIEFybmUgVm9sbGFuLgorCisgICAgICAgIEltcHJvdmVtZW50cyB0byBX
ZWJTcGVlY2hTeW50aGVzaXMgdG8gYXZvaWQgY3Jhc2hpbmcgYW5kIGltcHJvdmUgY29ycmVjdG5l
c3MuCisgICAgICAgIC0gUmVzZXQgYW5kIGNhbmNlbCBzcGVlY2ggam9icyBvbiBwYWdlIGNsb3Nl
IG9yIHJlbG9hZCAob3RoZXJ3aXNlIHRoZSBzeW50aGVzaXplciBrZWVwcyB0YWxraW5nIGFmdGVy
IHlvdXIgcGFnZSBpcyBnb25lKQorICAgICAgICAtIEhhdmUgYSBzZXBhcmF0ZSBzcGVlY2ggZmlu
aXNoIGNhbGxiYWNrIG1lY2hhbmlzbSwgdXNlIHRoZSBzdGFydCBzcGVha2luZyBjYWxsYmFjayB3
aGVuIHRoZSBzeW50aGVzaXplciB0ZWxscyB1cy4KKyAgICAgICAgLSBNb3ZlIGFuIGFzc2VydCBv
biB1dHRlcmFuY2Ugc3RhdGUgdG8gb25seSBhcHBseSB3aGVuIHdlIHVzZSB0aGUgaW4gcHJvY2Vz
cyBzeW50aGVzaXplci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFNwZWFraW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNo
U3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRo
ZXNpc1NldEZpbmlzaGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNwZWVjaFN5bnRoZXNpc1NwZWFrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWspOgor
CiAyMDE5LTA3LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
U3BlZWQgdXAgSGFzaFRhYmxlIGRlY29kaW5nIGJ5IHJlc2VydmluZyBjYXBhY2l0eSBhbmQgYXZv
aWRpbmcgcmVoYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGE0MWNkM2EwMDRkLi5hMWFmOThkMjEwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
QEAgLTI1OCwyMSArMjU4LDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yCiAjaWYgRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRTcGVha2luZyhX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7CisgICAgaWYgKHNw
ZWVjaFN5bnRoZXNpc0RhdGEoKS5zcGVha2luZ1N0YXJ0ZWRDb21wbGV0aW9uSGFuZGxlcikKKyAg
ICAgICAgc3BlZWNoU3ludGhlc2lzRGF0YSgpLnNwZWFraW5nU3RhcnRlZENvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hTcGVha2luZyhXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7Ci0gICAgbV9zcGVlY2hTeW50
aGVzaXNEYXRhLT5zcGVha2luZ0ZpbmlzaGVkQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBpZiAo
c3BlZWNoU3ludGhlc2lzRGF0YSgpLnNwZWFraW5nRmluaXNoZWRDb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgc3BlZWNoU3ludGhlc2lzRGF0YSgpLnNwZWFraW5nRmluaXNoZWRDb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGF1c2VTcGVha2luZyhXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7Ci0gICAgbV9zcGVlY2hT
eW50aGVzaXNEYXRhLT5zcGVha2luZ1BhdXNlZENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgaWYg
KHNwZWVjaFN5bnRoZXNpc0RhdGEoKS5zcGVha2luZ1BhdXNlZENvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICBzcGVlY2hTeW50aGVzaXNEYXRhKCkuc3BlYWtpbmdQYXVzZWRDb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzdW1lU3BlYWtpbmcoV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQogewotICAgIG1fc3BlZWNoU3lu
dGhlc2lzRGF0YS0+c3BlYWtpbmdSZXN1bWVkQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBpZiAo
c3BlZWNoU3ludGhlc2lzRGF0YSgpLnNwZWFraW5nUmVzdW1lZENvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICBzcGVlY2hTeW50aGVzaXNEYXRhKCkuc3BlYWtpbmdSZXN1bWVkQ29tcGxldGlvbkhh
bmRsZXIoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNwZWFraW5nRXJyb3JPY2N1cnJlZChX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3YzgxNzg0NzE5MS4uMTBhOGEzYTVhZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTM1OSw2ICsx
MzU5LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9w
dGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG9wdGlv
bnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFnZUlEKTsKICAgICBtX3By
b2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCisjaWYgRU5BQkxFKFNQRUVD
SF9TWU5USEVTSVMpCisgICAgcmVzZXRTcGVlY2hTeW50aGVzaXplcigpOworI2VuZGlmCisKICAg
ICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIApAQCAtNzA1Myw2ICs3MDU3LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikK
ICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CiAj
ZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICByZXNldFNwZWVj
aFN5bnRoZXNpemVyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3Rh
dGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0aW9u
UmVhc29uKQpAQCAtOTEyNiwxMCArOTEzNCwyNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bWFya0Fk
Q2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPAog
fQogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXNldFNwZWVjaFN5bnRoZXNpemVyKCkKK3sKKyAgICBpZiAoIW1fc3BlZWNoU3ludGhlc2lzRGF0
YSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGF1dG8mIHN5bnRoZXNpc0RhdGEgPSBzcGVl
Y2hTeW50aGVzaXNEYXRhKCk7CisgICAgc3ludGhlc2lzRGF0YS5zcGVha2luZ0ZpbmlzaGVkQ29t
cGxldGlvbkhhbmRsZXIgPSBudWxscHRyOworICAgIHN5bnRoZXNpc0RhdGEuc3BlYWtpbmdTdGFy
dGVkQ29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOworICAgIHN5bnRoZXNpc0RhdGEuc3BlYWtp
bmdQYXVzZWRDb21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7CisgICAgc3ludGhlc2lzRGF0YS5z
cGVha2luZ1Jlc3VtZWRDb21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7CisgICAgaWYgKHN5bnRo
ZXNpc0RhdGEuc3ludGhlc2l6ZXIpCisgICAgICAgIHN5bnRoZXNpc0RhdGEuc3ludGhlc2l6ZXIt
PnJlc2V0U3RhdGUoKTsKK30KKwogV2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVzaXNEYXRhJiBX
ZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc0RhdGEoKQogewogICAgIGlmICghbV9zcGVlY2hT
eW50aGVzaXNEYXRhKQotICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50
aGVzaXNEYXRhIHsgc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0
aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgICAgICBtX3Nw
ZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHJldHVybiAqbV9zcGVlY2hTeW50aGVzaXNE
YXRhOwogfQogCkBAIC05MTQzLDYgKzkxNjYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNwZWVj
aFN5bnRoZXNpc1ZvaWNlTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJTcGUK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6c3BlZWNoU3ludGhlc2lzU2V0RmluaXNoZWRDYWxsYmFjayhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc3BlZWNoU3ludGhlc2lz
RGF0YSgpLnNwZWFraW5nRmluaXNoZWRDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzU3Bl
YWsoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGxhbmcsIGZsb2F0IHZvbHVtZSwg
ZmxvYXQgcmF0ZSwgZmxvYXQgcGl0Y2gsIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lLCBjb25zdCBT
dHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIHZvaWNlTmFtZSwgY29uc3QgU3RyaW5nJiB2
b2ljZUxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGRlZmF1bHRWb2ljZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gdm9pY2Ug
PSBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUodm9pY2VVUkks
IHZvaWNlTmFtZSwgdm9pY2VMYW5nLCBsb2NhbFNlcnZpY2UsIGRlZmF1bHRWb2ljZSk7CkBAIC05
MTU0LDggKzkxODIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzU3BlYWso
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGxhbmcsCiAgICAgdXR0ZXJhbmNlLT5z
ZXRQaXRjaChwaXRjaCk7CiAgICAgdXR0ZXJhbmNlLT5zZXRWb2ljZSgmdm9pY2UuZ2V0KCkpOwog
CisgICAgc3BlZWNoU3ludGhlc2lzRGF0YSgpLnNwZWFraW5nU3RhcnRlZENvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgc3BlZWNoU3ludGhlc2lzRGF0
YSgpLnV0dGVyYW5jZSA9IFdURk1vdmUodXR0ZXJhbmNlKTsKLSAgICBzcGVlY2hTeW50aGVzaXNE
YXRhKCkuc3BlYWtpbmdGaW5pc2hlZENvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgc3BlZWNoU3ludGhlc2lzRGF0YSgpLnN5bnRoZXNpemVyLT5zcGVh
ayhtX3NwZWVjaFN5bnRoZXNpc0RhdGEtPnV0dGVyYW5jZS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjU2Nzc4ZDdjNjkuLjUyN2Q4ZTQ3NzVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTUzMyw2ICsxNTMz
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogICAgIHZvaWQgc3Bl
ZWNoU3ludGhlc2lzVm9pY2VMaXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlPiYmKT4mJik7CiAgICAgdm9pZCBzcGVlY2hTeW50aGVzaXNTcGVh
ayhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBmbG9hdCB2b2x1bWUsIGZsb2F0IHJhdGUs
IGZsb2F0IHBpdGNoLCBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSwgY29uc3QgU3RyaW5nJiB2b2lj
ZVVSSSwgY29uc3QgU3RyaW5nJiB2b2ljZU5hbWUsIGNvbnN0IFN0cmluZyYgdm9pY2VMYW5nLCBi
b29sIGxvY2FsU2VydmljZSwgYm9vbCBkZWZhdWx0Vm9pY2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzcGVlY2hTeW50aGVzaXNTZXRGaW5pc2hlZENhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzcGVlY2hTeW50aGVzaXNDYW5j
ZWwoKTsKICAgICB2b2lkIHNwZWVjaFN5bnRoZXNpc1BhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzcGVlY2hTeW50aGVzaXNSZXN1bWUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKQEAgLTIwOTYsNiArMjA5Nyw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1
Y3QgU3BlZWNoU3ludGhlc2lzRGF0YTsKICAgICBTcGVlY2hTeW50aGVzaXNEYXRhJiBzcGVlY2hT
eW50aGVzaXNEYXRhKCk7CisgICAgdm9pZCByZXNldFNwZWVjaFN5bnRoZXNpemVyKCk7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yNTMzLDYgKzI1MzUsNyBAQCBwcml2
YXRlOgogICAgIHN0cnVjdCBTcGVlY2hTeW50aGVzaXNEYXRhIHsKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+IHN5bnRoZXNpemVyOwog
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
IHV0dGVyYW5jZTsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBzcGVha2luZ1N0
YXJ0ZWRDb21wbGV0aW9uSGFuZGxlcjsKICAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiBzcGVha2luZ0ZpbmlzaGVkQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4gc3BlYWtpbmdQYXVzZWRDb21wbGV0aW9uSGFuZGxlcjsKICAgICAgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBzcGVha2luZ1Jlc3VtZWRDb21wbGV0aW9uSGFuZGxl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBkZmJkMTY3ODhkOS4uZWNhZDk1ZTQ2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTU1OCw2ICs1NTgsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQog
ICAgIFNwZWVjaFN5bnRoZXNpc1ZvaWNlTGlzdCgpIC0+IChWZWN0b3I8V2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZT4gdm9pY2VMaXN0KSBTeW5jaHJvbm91cwogICAgIFNwZWVjaFN5bnRo
ZXNpc1NwZWFrKFN0cmluZyB0ZXh0LCBTdHJpbmcgbGFuZywgZmxvYXQgdm9sdW1lLCBmbG9hdCBy
YXRlLCBmbG9hdCBwaXRjaCwgTW9ub3RvbmljVGltZSBzdGFydFRpbWUsIFN0cmluZyB2b2ljZVVS
SSwgU3RyaW5nIHZvaWNlTmFtZSwgU3RyaW5nIHZvaWNlTGFuZywgYm9vbCBsb2NhbFNlcnZpY2Us
IGJvb2wgZGVmYXVsdFZvaWNlKSAtPiAoKSBBc3luYworICAgIFNwZWVjaFN5bnRoZXNpc1NldEZp
bmlzaGVkQ2FsbGJhY2soKSAtPiAoKSBBc3luYwogICAgIFNwZWVjaFN5bnRoZXNpc0NhbmNlbCgp
CiAgICAgU3BlZWNoU3ludGhlc2lzUGF1c2UoKSAtPiAoKSBBc3luYwogICAgIFNwZWVjaFN5bnRo
ZXNpc1Jlc3VtZSgpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQuY3BwCmluZGV4IGUzNWYzMjI5ZmU0Li41MzAxZDkyZjlhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKQEAgLTU3LDcgKzU3LDE0IEBAIFdlYkNvcmU6OlNwZWVj
aFN5bnRoZXNpc0NsaWVudE9ic2VydmVyKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OmNvcmVQ
YWdlT2JzZXJ2CiAKIHZvaWQgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50OjpzcGVhayhSZWZQdHI8
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsK
LSAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IHN0YXJ0ZWRDb21wbGV0aW9uSGFuZGxlciA9IFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGF1dG8gb2Jz
ZXJ2ZXIgPSBjb3JlUGFnZU9ic2VydmVyKCkpCisgICAgICAgICAgICBvYnNlcnZlci0+ZGlkU3Rh
cnRTcGVha2luZygpOworICAgIH07CisKKyAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4gZmluaXNoZWRDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgaWYgKGF1dG8gb2JzZXJ2ZXIgPSBjb3JlUGFnZU9ic2VydmVy
KCkpCkBAIC03MCwxMCArNzcsOSBAQCB2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3Bl
YWsoUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZQogICAgIGF1dG8g
bGFuZyA9IHZvaWNlID8gdm9pY2UtPmxhbmcoKSA6ICIiOwogICAgIGF1dG8gbG9jYWxTZXJ2aWNl
ID0gdm9pY2UgPyB2b2ljZS0+bG9jYWxTZXJ2aWNlKCkgOiBmYWxzZTsKICAgICBhdXRvIGlzRGVm
YXVsdCA9IHZvaWNlID8gdm9pY2UtPmlzRGVmYXVsdCgpIDogZmFsc2U7Ci0KLSAgICBtX3BhZ2Uu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNwZWVjaFN5bnRoZXNp
c1NwZWFrKHV0dGVyYW5jZS0+dGV4dCgpLCB1dHRlcmFuY2UtPmxhbmcoKSwgdXR0ZXJhbmNlLT52
b2x1bWUoKSwgdXR0ZXJhbmNlLT5yYXRlKCksIHV0dGVyYW5jZS0+cGl0Y2goKSwgdXR0ZXJhbmNl
LT5zdGFydFRpbWUoKSwgdm9pY2VVUkksIG5hbWUsIGxhbmcsIGxvY2FsU2VydmljZSwgaXNEZWZh
dWx0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmIChhdXRvIG9ic2VydmVy
ID0gY29yZVBhZ2VPYnNlcnZlcigpKQotICAgICAgICBvYnNlcnZlci0+ZGlkU3RhcnRTcGVha2lu
ZygpOworICAgIAorICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3BlZWNoU3ludGhlc2lzU2V0RmluaXNoZWRDYWxsYmFjaygpLCBXVEZNb3ZlKGZp
bmlzaGVkQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNwZWVjaFN5bnRoZXNpc1NwZWFrKHV0dGVyYW5jZS0+
dGV4dCgpLCB1dHRlcmFuY2UtPmxhbmcoKSwgdXR0ZXJhbmNlLT52b2x1bWUoKSwgdXR0ZXJhbmNl
LT5yYXRlKCksIHV0dGVyYW5jZS0+cGl0Y2goKSwgdXR0ZXJhbmNlLT5zdGFydFRpbWUoKSwgdm9p
Y2VVUkksIG5hbWUsIGxhbmcsIGxvY2FsU2VydmljZSwgaXNEZWZhdWx0KSwgV1RGTW92ZShzdGFy
dGVkQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQ6OmNhbmNlbCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>