<?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>182705</bug_id>
          
          <creation_ts>2018-02-12 12:54:37 -0800</creation_ts>
          <short_desc>REGRESSION(225695) : com.apple.WebKit.WebContent at com.apple.JavaScriptCore: JSC::RegExp::match + 630 :: stack overflow</short_desc>
          <delta_ts>2018-02-14 12:37:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1398437</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-02-12 12:54:37 -0800</bug_when>
    <thetext>Looks like adding the YARR JIT 8K buffer as a stack variable in https://trac.webkit.org/changeset/225695/webkit (relanded in https://trac.webkit.org/changeset/225930/webkit) causes an out of stack crash.  This buffer should be moved to the owning VM.

Crashes look similar to:
Thread 0 Crashed ↩:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff5c5f4afe __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff5c7b3150 pthread_kill + 333
2   libsystem_c.dylib             	0x00007fff5c55024d __abort + 144
3   libsystem_c.dylib             	0x00007fff5c550af8 __stack_chk_fail + 205
4   com.apple.JavaScriptCore      	0x00007fff370da396 JSC::RegExp::match(JSC::VM&amp;, WTF::String const&amp;, unsigned int) + 630
5   com.apple.JavaScriptCore      	0x00007fff37b1929b JSC::RegExpObject::matchInline(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*) + 235
6   com.apple.JavaScriptCore      	0x00007fff37b1cd6b JSC::regExpProtoFuncTestFast(JSC::ExecState*) + 267
7   ???                           	0x00005db07fa01178 0 + 103012636823928
8   ???                           	0x00005db08054fc08 0 + 103012648680456
9   ???                           	0x00005db08054e42e 0 + 103012648674350
10  ???                           	0x00005db08055139b 0 + 103012648686491
11  ???                           	0x00005db0803e53c2 0 + 103012647195586
12  ???                           	0x00005db0805271d3 0 + 103012648514003
13  ???                           	0x00005db0804f1c31 0 + 103012648295473
14  com.apple.JavaScriptCore      	0x00007fff372384be llint_entry + 28860
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398438</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-02-12 12:55:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/36940735&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398741</commentid>
    <comment_count>2</comment_count>
      <attachid>333718</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-02-13 13:20:31 -0800</bug_when>
    <thetext>Created attachment 333718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398748</commentid>
    <comment_count>3</comment_count>
      <attachid>333718</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-13 13:38:36 -0800</bug_when>
    <thetext>Comment on attachment 333718
Patch

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

r=me with suggested improvements.

&gt; Source/JavaScriptCore/runtime/RegExpInlines.h:122
&gt; +        if (m_regExpJITCode.usesPatternContextBuffer()) {
&gt; +            patternContextBuffer = vm.acquireRegExpPatternContexBuffer();
&gt; +            patternContextBufferSize = VM::patternContextBufferSize;
&gt; +        }
&gt;  #define EXTRA_JIT_PARAMS  , patternContextBuffer, patternContextBufferSize

This seems like a prime candidate for using the RAII pattern.  How about something like this:

    RegExpPatternContextBuffer buffer(vm);
    #define EXTRA_JIT_PARAMS  , buffer.buffer(), buffer.size()

You can either make RegExpPatternContextBuffer an embedded class in VM, or make it a friend of VM so that it can do the real work.

&gt; Source/JavaScriptCore/runtime/RegExpInlines.h:135
&gt; +#if ENABLE(YARR_JIT_ALL_PARENS_EXPRESSIONS)
&gt; +        if (m_regExpJITCode.usesPatternContextBuffer())
&gt; +            vm.releaseRegExpPatternContexBuffer();
&gt; +#endif

This can be handled automatically by the RAII object.

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:102
&gt; +#endif
&gt; +
&gt; +#if ENABLE(YARR_JIT_ALL_PARENS_EXPRESSIONS)

Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398752</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-13 13:42:27 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; Comment on attachment 333718 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333718&amp;action=review
&gt; 
&gt; r=me with suggested improvements.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/RegExpInlines.h:122
&gt; &gt; +        if (m_regExpJITCode.usesPatternContextBuffer()) {
&gt; &gt; +            patternContextBuffer = vm.acquireRegExpPatternContexBuffer();
&gt; &gt; +            patternContextBufferSize = VM::patternContextBufferSize;
&gt; &gt; +        }
&gt; &gt;  #define EXTRA_JIT_PARAMS  , patternContextBuffer, patternContextBufferSize
&gt; 
&gt; This seems like a prime candidate for using the RAII pattern.  How about
&gt; something like this:
&gt; 
&gt;     RegExpPatternContextBuffer buffer(vm);
&gt;     #define EXTRA_JIT_PARAMS  , buffer.buffer(), buffer.size()

Better yet, just pass a reference to the RAII object:
    #define EXTRA_JIT_PARAMS  , buffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399117</commentid>
    <comment_count>5</comment_count>
      <attachid>333813</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-02-14 10:27:49 -0800</bug_when>
    <thetext>Created attachment 333813
Patch updated after reviewer&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399118</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-02-14 10:28:40 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; Comment on attachment 333718 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333718&amp;action=review
&gt; 
&gt; r=me with suggested improvements.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/RegExpInlines.h:122
&gt; &gt; +        if (m_regExpJITCode.usesPatternContextBuffer()) {
&gt; &gt; +            patternContextBuffer = vm.acquireRegExpPatternContexBuffer();
&gt; &gt; +            patternContextBufferSize = VM::patternContextBufferSize;
&gt; &gt; +        }
&gt; &gt;  #define EXTRA_JIT_PARAMS  , patternContextBuffer, patternContextBufferSize
&gt; 
&gt; This seems like a prime candidate for using the RAII pattern.  How about
&gt; something like this:
&gt; 
&gt;     RegExpPatternContextBuffer buffer(vm);
&gt;     #define EXTRA_JIT_PARAMS  , buffer.buffer(), buffer.size()
&gt; 
&gt; You can either make RegExpPatternContextBuffer an embedded class in VM, or
&gt; make it a friend of VM so that it can do the real work.

I added a RAII class to RegExpInlines.h.

&gt; &gt; Source/JavaScriptCore/runtime/RegExpInlines.h:135
&gt; &gt; +#if ENABLE(YARR_JIT_ALL_PARENS_EXPRESSIONS)
&gt; &gt; +        if (m_regExpJITCode.usesPatternContextBuffer())
&gt; &gt; +            vm.releaseRegExpPatternContexBuffer();
&gt; &gt; +#endif
&gt; 
&gt; This can be handled automatically by the RAII object.
&gt; 
&gt; &gt; Source/JavaScriptCore/yarr/YarrJIT.h:102
&gt; &gt; +#endif
&gt; &gt; +
&gt; &gt; +#if ENABLE(YARR_JIT_ALL_PARENS_EXPRESSIONS)
&gt; 
&gt; Why is this needed?

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399119</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-14 10:29:20 -0800</bug_when>
    <thetext>Attachment 333813 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/RegExpInlines.h:147:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/RegExpInlines.h:257:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399148</commentid>
    <comment_count>8</comment_count>
      <attachid>333813</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-14 10:38:53 -0800</bug_when>
    <thetext>Comment on attachment 333813
Patch updated after reviewer&apos;s comments

r=me if EWS bots show no issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399219</commentid>
    <comment_count>9</comment_count>
      <attachid>333813</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-14 12:37:15 -0800</bug_when>
    <thetext>Comment on attachment 333813
Patch updated after reviewer&apos;s comments

Clearing flags on attachment: 333813

Committed r228481: &lt;https://trac.webkit.org/changeset/228481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399220</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-14 12:37:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333718</attachid>
            <date>2018-02-13 13:20:31 -0800</date>
            <delta_ts>2018-02-14 10:27:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>182705.patch</filename>
            <type>text/plain</type>
            <size>16604</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI4NDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE4LTAyLTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04oMjI1Njk1KSA6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBj
b20uYXBwbGUuSmF2YVNjcmlwdENvcmU6IEpTQzo6UmVnRXhwOjptYXRjaCArIDYzMCA6OiBzdGFj
ayBvdmVyZmxvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgyNzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZWQgdGhlIHBhdHRlcm4gY29udGV4dCBidWZmZXIgdXNlZCBieSBZQVJSIEpJVCdlZCBj
b2RlIGZyb20gYSBzdGFjayBsb2NhbCB0byBhIGxhemlseSBhbGxvY2F0ZWQKKyAgICAgICAgYnVm
ZmVyIG9uIHRoZSBWTS4gIEV4cG9zZWQgd2hlbiB0aGUgYnVmZmVyIGlzIG5lZWRlZCB0byByZWR1
Y2UgbGlrZWxpaG9vZCB0aGF0IHdlJ2QgYWxsb2NhdGVkIGl0LgorICAgICAgICBHdWFyZGVkIHVz
ZSBvZiB0aGUgYnVmZmVyIHdpdGggYSBsb2NrIHNpbmNlIHRoZSBERkcgY29tcGlsZXIgbWF5IGNh
bGwgaW50byBZQVJSIEpJVCdlZCBjb2RlIG9uIGEKKyAgICAgICAgY29tcGlsYXRpb24gdGhyZWFk
LgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJl
Z0V4cDo6bWF0Y2hJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29u
dGV4QnVmZmVyKToKKyAgICAgICAgKEpTQzo6Vk06OnJlbGVhc2VSZWdFeHBQYXR0ZXJuQ29udGV4
QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogeWFyci9ZYXJySklU
LmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpiYWNrdHJhY2spOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpvcENvbXBpbGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4pOgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZUVudGVyKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGVSZXR1cm4pOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpZYXJyR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyckdlbmVyYXRvcjo6Y29tcGlsZSk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnVzZXNQYXR0ZXJuQ29udGV4dEJ1
ZmZlcik6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldFVzZXNQYXRlcm5D
b250ZXh0QnVmZmVyKToKKwogMjAxOC0wMi0xMyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtKU0NdIGNhY2hlIFRhZ2dlZFRlbXBsYXRlIGFycmF5cyBieSBj
YWxsc2l0ZSByYXRoZXIgdGhhbiBieSBjb250ZW50cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAkocmV2aXNpb24gMjI4NDIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTAsMTkgKzExMCwzMCBAQCBBTFdBWVNfSU5MSU5FIGludCBSZWdFeHA6Om1hdGNoSW5s
aW5lKFZNCiAKICAgICBpbnQgcmVzdWx0OwogI2lmIEVOQUJMRShZQVJSX0pJVCkKLSNpZmRlZiBK
SVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUwotICAgIGNoYXIgcGF0dGVybkNvbnRleHRCdWZmZXJb
cGF0dGVybkNvbnRleHRCdWZmZXJTaXplXTsKKyAgICBpZiAobV9zdGF0ZSA9PSBKSVRDb2RlKSB7
CisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCisgICAgICAgIHZv
aWQqIHBhdHRlcm5Db250ZXh0QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgdW5zaWduZWQgcGF0
dGVybkNvbnRleHRCdWZmZXJTaXplID0gMDsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3JlZ0V4
cEpJVENvZGUudXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkpIHsKKyAgICAgICAgICAgIHBhdHRl
cm5Db250ZXh0QnVmZmVyID0gdm0uYWNxdWlyZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsK
KyAgICAgICAgICAgIHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA9IFZNOjpwYXR0ZXJuQ29udGV4
dEJ1ZmZlclNpemU7CisgICAgICAgIH0KICNkZWZpbmUgRVhUUkFfSklUX1BBUkFNUyAgLCBwYXR0
ZXJuQ29udGV4dEJ1ZmZlciwgcGF0dGVybkNvbnRleHRCdWZmZXJTaXplCiAjZWxzZQogI2RlZmlu
ZSBFWFRSQV9KSVRfUEFSQU1TCiAjZW5kaWYKIAotICAgIGlmIChtX3N0YXRlID09IEpJVENvZGUp
IHsKICAgICAgICAgaWYgKHMuaXM4Qml0KCkpCiAgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4
cEpJVENvZGUuZXhlY3V0ZShzLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgp
LCBvZmZzZXRWZWN0b3IgRVhUUkFfSklUX1BBUkFNUykuc3RhcnQ7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS5leGVjdXRlKHMuY2hhcmFjdGVyczE2
KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IgRVhUUkFfSklUX1BBUkFN
Uykuc3RhcnQ7CiAKKyNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykK
KyAgICAgICAgaWYgKG1fcmVnRXhwSklUQ29kZS51c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSkK
KyAgICAgICAgICAgIHZtLnJlbGVhc2VSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCk7CisjZW5k
aWYKKwogICAgICAgICBpZiAocmVzdWx0ID09IFlhcnI6OkpTUmVnRXhwSklUQ29kZUZhaWx1cmUp
IHsKICAgICAgICAgICAgIC8vIEpJVCdlZCBjb2RlIGNvdWxkbid0IGhhbmRsZSBleHByZXNzaW9u
LCBzbyBwdW50IGJhY2sgdG8gdGhlIGludGVycHJldGVyLgogICAgICAgICAgICAgYnl0ZUNvZGVD
b21waWxlSWZOZWNlc3NhcnkoJnZtKTsKQEAgLTIxMywyMSArMjI0LDMyIEBAIEFMV0FZU19JTkxJ
TkUgTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaEkKICAgICBjb21waWxlSWZOZWNlc3NhcnlNYXRj
aE9ubHkodm0sIHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNik7CiAKICNp
ZiBFTkFCTEUoWUFSUl9KSVQpCi0jaWZkZWYgSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKLSAg
ICBjaGFyIHBhdHRlcm5Db250ZXh0QnVmZmVyW3BhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZV07Cisg
ICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworCisgICAgaWYgKG1fc3RhdGUgPT0gSklUQ29kZSkgewor
I2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQorICAgICAgICB2b2lk
KiBwYXR0ZXJuQ29udGV4dEJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHVuc2lnbmVkIHBhdHRl
cm5Db250ZXh0QnVmZmVyU2l6ZSA9IDA7CisgICAgICAgIAorICAgICAgICBpZiAobV9yZWdFeHBK
SVRDb2RlLnVzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcigpKSB7CisgICAgICAgICAgICBwYXR0ZXJu
Q29udGV4dEJ1ZmZlciA9IHZtLmFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCk7Cisg
ICAgICAgICAgICBwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUgPSBWTTo6cGF0dGVybkNvbnRleHRC
dWZmZXJTaXplOworICAgICAgICB9CiAjZGVmaW5lIEVYVFJBX0pJVF9QQVJBTVMgICwgcGF0dGVy
bkNvbnRleHRCdWZmZXIsIHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZQogI2Vsc2UKICNkZWZpbmUg
RVhUUkFfSklUX1BBUkFNUwogI2VuZGlmCiAKLSAgICBNYXRjaFJlc3VsdCByZXN1bHQ7Ci0KLSAg
ICBpZiAobV9zdGF0ZSA9PSBKSVRDb2RlKSB7CiAgICAgICAgIGlmIChzLmlzOEJpdCgpKQogICAg
ICAgICAgICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFyYWN0ZXJzOCgp
LCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSBFWFRSQV9KSVRfUEFSQU1TKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFyYWN0
ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCkgRVhUUkFfSklUX1BBUkFNUyk7CiAKKyNp
ZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKKyAgICAgICAgaWYgKG1f
cmVnRXhwSklUQ29kZS51c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSkKKyAgICAgICAgICAgIHZt
LnJlbGVhc2VSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCk7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShSRUdFWFBfVFJBQ0lORykKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBtX3J0
TWF0Y2hPbmx5Rm91bmRDb3VudCsrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAkocmV2aXNpb24gMjI4NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzYsNiArNTM2LDEyIEBAIFZNOjp+Vk0oKQogCiAg
ICAgZGVsZXRlIGNsaWVudERhdGE7CiAgICAgZGVsZXRlIG1fcmVnRXhwQ2FjaGU7CisKKyNpZiBF
TkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKKyAgICBpZiAobV9yZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyKQorICAgICAgICBkZWxldGVbXSBtX3JlZ0V4cFBhdHRlcm5Db250
ZXhCdWZmZXI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBkZWxl
dGUgbV9ydFRyYWNlTGlzdDsKICNlbmRpZgpAQCAtODk1LDYgKzkwMSwyNSBAQCB2b2lkIGxvZ1Nh
bml0aXplU3RhY2soVk0qIHZtKQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShZQVJSX0pJVF9BTExf
UEFSRU5TX0VYUFJFU1NJT05TKQorY2hhciogVk06OmFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4
QnVmZmVyKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVnRXhwUGF0dGVybkNvbnRleHRMb2NrLmlzTG9j
a2VkKCkpOworCisgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4dExvY2subG9jaygpOworICAgIGlm
ICghbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKQorICAgICAgICBtX3JlZ0V4cFBhdHRlcm5D
b250ZXhCdWZmZXIgPSBuZXcgY2hhcltWTTo6cGF0dGVybkNvbnRleHRCdWZmZXJTaXplXTsKKyAg
ICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyOworfQorCit2b2lkIFZNOjpyZWxl
YXNlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpCit7CisgICAgQVNTRVJUKG1fcmVnRXhwUGF0
dGVybkNvbnRleHRMb2NrLmlzTG9ja2VkKCkpOworCisgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4
dExvY2sudW5sb2NrKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykK
IHZvaWQgVk06OmFkZFJlZ0V4cFRvVHJhY2UoUmVnRXhwKiByZWdFeHApCiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIyODQyMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4NCw2ICs2ODQsMTUg
QEAgcHVibGljOgogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOwog
ICAgIENvbmN1cnJlbnRKU0xvY2sgbV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCisjaWYgRU5BQkxF
KFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgcGF0dGVybkNvbnRleHRCdWZmZXJTaXplID0gODE5MjsgLy8gU3BhY2UgYWxsb2NhdGVk
IHRvIHNhdmUgbmVzdGVkIHBhcmVudGhlc2lzIGNvbnRleHQKKyAgICBjaGFyKiBtX3JlZ0V4cFBh
dHRlcm5Db250ZXhCdWZmZXIgeyBudWxscHRyIH07CisgICAgTG9jayBtX3JlZ0V4cFBhdHRlcm5D
b250ZXh0TG9jazsKKyAgICBjaGFyKiBhY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigp
OworICAgIHZvaWQgcmVsZWFzZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsKKyNlbmRpZgor
CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzT3duUHJvcGVydHlDYWNoZT4gbV9oYXNPd25Qcm9w
ZXJ0eUNhY2hlOwogICAgIEFMV0FZU19JTkxJTkUgSGFzT3duUHJvcGVydHlDYWNoZSogaGFzT3du
UHJvcGVydHlDYWNoZSgpIHsgcmV0dXJuIG1faGFzT3duUHJvcGVydHlDYWNoZS5nZXQoKTsgfQog
ICAgIEhhc093blByb3BlcnR5Q2FjaGUqIGVuc3VyZUhhc093blByb3BlcnR5Q2FjaGUoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCShyZXZpc2lvbiAyMjg0MjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3Jv
QXNzZW0KICNkZWZpbmUgSklUX1VOSUNPREVfRVhQUkVTU0lPTlMKICNlbmRpZgogCi0jaWZkZWYg
SklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVO
U19FWFBSRVNTSU9OUykKICAgICBzdHJ1Y3QgUGFyZW5Db250ZXh0U2l6ZXMgewogICAgICAgICBz
aXplX3QgbV9udW1TdWJwYXR0ZXJuczsKICAgICAgICAgc2l6ZV90IG1fZnJhbWVTbG90czsKQEAg
LTIxNzMsNyArMjE3Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNz
ZW0KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVzZSBub2RlcyBzdXBwb3J0IGdl
bmVyaWMgc3VicGF0dGVybnMuCiAgICAgICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0
ZXJuQmVnaW46IHsKLSNpZmRlZiBKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworI2lmIEVOQUJM
RShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICAgICAgICAgIFBhdHRl
cm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVu
dGhlc2VzRnJhbWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247CiAKQEAgLTIyMzAsMTMg
KzIyMzAsMTMgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1YnBh
dHRlcm5TdGFydChpbmRleCwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAg
ICAgICAgICAgICB9Ci0jZWxzZSAvLyAhSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNlbHNl
IC8vICFZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCiAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0dGVy
bkVuZDogewotI2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlB
UlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgICAgICAgICAgICAgUGF0dGVyblRl
cm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVz
ZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKIApAQCAtMjI4OCw3ICsyMjg4
LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAg
ICAgICAgICAgICBZYXJyT3AmIGJlZ2luT3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwogICAg
ICAgICAgICAgICAgICAgICBiZWdpbk9wLm1fanVtcHMubGluayh0aGlzKTsKICAgICAgICAgICAg
ICAgICB9Ci0jZWxzZSAvLyAhSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNlbHNlIC8vICFZ
QVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MjgzNyw3ICsyODM3LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3Nl
bQogICAgICAgICAgICAgLy8gb3V0IG9mIHRoZSBzdGFydCBvZiB0aGUgcGFyZW50aGVzZXMsIG9y
IGp1bXAgYmFjayB0byB0aGUgZm9yd2FyZHMKICAgICAgICAgICAgIC8vIG1hdGNoaW5nIHN0YXJ0
LCBkZXBlbmRpbmcgb2Ygd2hldGhlciB0aGUgbWF0Y2ggaXMgR3JlZWR5IG9yIE5vbkdyZWVkeS4K
ICAgICAgICAgICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbjogewotI2lmZGVm
IEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJF
TlNfRVhQUkVTU0lPTlMpCiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5t
X3Rlcm07CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9u
ID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKIApAQCAtMjg4MCwxMyArMjg4MCwxMyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAKICAgICAgICAgICAgICAgICAgICAg
bV9iYWNrdHJhY2tpbmdTdGF0ZS5mYWxsdGhyb3VnaCgpOwogICAgICAgICAgICAgICAgIH0KLSNl
bHNlIC8vICFKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworI2Vsc2UgLy8gIVlBUlJfSklUX0FM
TF9QQVJFTlNfRVhQUkVTU0lPTlMKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5kOiB7Ci0jaWZkZWYg
SklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVO
U19FWFBSRVNTSU9OUykKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1f
dGVybTsKIAogICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRp
ZmllckZpeGVkQ291bnQpIHsKQEAgLTI5MTcsNyArMjkxNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmFwcGVuZChvcC5tX2p1bXBzKTsKLSNlbHNlIC8vICFK
SVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworI2Vsc2UgLy8gIVlBUlJfSklUX0FMTF9QQVJFTlNf
RVhQUkVTU0lPTlMKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDIyLDcgKzMwMjIsNyBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICBwYXJl
bnRoZXNlc0JlZ2luT3BDb2RlID0gT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2lu
OwogICAgICAgICAgICAgcGFyZW50aGVzZXNFbmRPcENvZGUgPSBPcFBhcmVudGhlc2VzU3VicGF0
dGVyblRlcm1pbmFsRW5kOwogICAgICAgICB9IGVsc2UgewotI2lmZGVmIEpJVF9BTExfUEFSRU5T
X0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMp
CiAgICAgICAgICAgICAvLyBXZSBvbmx5IGhhbmRsZSBnZW5lcmljIHBhcmVudGhlc2lzIHdpdGgg
Z3JlZWR5IGNvdW50cy4KICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVh
bnRpZmllckdyZWVkeSkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgc3VicGF0dGVybiBpcyBu
b3Qgc3VwcG9ydGVkIGJ5IHRoZSBKSVQuCkBAIC0zMjczLDcgKzMyNzMsNyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgIGlmIChtX3BhdHRlcm4ubV9z
YXZlSW5pdGlhbFN0YXJ0VmFsdWUpCiAgICAgICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWJ4
KTsKIAotI2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJf
SklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgICAgIGlmIChtX2NvbnRhaW5zTmVzdGVk
U3VicGF0dGVybnMpIHsKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICAgICAgcHVzaChYODZSZWdp
c3RlcnM6OmVkaSk7CkBAIC0zMzU5LDcgKzMzNTksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDog
cHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjpyMTMpOwog
ICAgICAgICB9CiAKLSNpZmRlZiBKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworI2lmIEVOQUJM
RShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICBpZiAobV9jb250YWlu
c05lc3RlZFN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjpyMTIp
OwogI2lmIE9TKFdJTkRPV1MpCkBAIC0zMzk4LDcgKzMzOTgsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICwgbV9kZWNvZGVTdXJyb2dhdGVQYWlycyhtX2NoYXJTaXplID09IENoYXIxNiAmJiBtX3BhdHRl
cm4udW5pY29kZSgpKQogICAgICAgICAsIG1fdW5pY29kZUlnbm9yZUNhc2UobV9wYXR0ZXJuLnVu
aWNvZGUoKSAmJiBtX3BhdHRlcm4uaWdub3JlQ2FzZSgpKQogICAgICAgICAsIG1fY2Fub25pY2Fs
TW9kZShtX3BhdHRlcm4udW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6VW5pY29kZSA6IENhbm9u
aWNhbE1vZGU6OlVDUzIpCi0jaWZkZWYgSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNpZiBF
TkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICAgICAgLCBtX2NvbnRh
aW5zTmVzdGVkU3VicGF0dGVybnMoZmFsc2UpCiAgICAgICAgICwgbV9wYXJlbkNvbnRleHRTaXpl
cyhjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMgPyBtX3BhdHRlcm4ubV9udW1TdWJw
YXR0ZXJucyA6IDAsIG1fcGF0dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZSkKICNlbmRpZgpA
QCAtMzQxNCw2ICszNDE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKKyAgICAgICAgaWYgKG1fY29u
dGFpbnNOZXN0ZWRTdWJwYXR0ZXJucykKKyAgICAgICAgICAgIGppdE9iamVjdC5zZXRVc2VzUGF0
ZXJuQ29udGV4dEJ1ZmZlcigpOworI2VuZGlmCisKICAgICAgICAgLy8gV2UgbmVlZCB0byBjb21w
aWxlIGJlZm9yZSBnZW5lcmF0aW5nIGNvZGUgc2luY2Ugd2Ugc2V0IGZsYWdzIGJhc2VkIG9uIGNv
bXBpbGF0aW9uIHRoYXQKICAgICAgICAgLy8gYXJlIHVzZWQgZHVyaW5nIGdlbmVyYXRpb24uCiAg
ICAgICAgIG9wQ29tcGlsZUJvZHkobV9wYXR0ZXJuLm1fYm9keSk7CkBAIC0zNDI5LDcgKzM0MzQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGdlbmVyYXRlRmFpbFJldHVybigpOwogICAgICAgICBoYXNJ
bnB1dC5saW5rKHRoaXMpOwogCi0jaWZkZWYgSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNp
ZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICAgICAgaWYgKG1f
Y29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJucykKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMy
KG1hdGNoTGltaXQpLCByZW1haW5pbmdNYXRjaENvdW50KTsKICNlbmRpZgpAQCAtMzQ0NCw3ICsz
NDQ5LDcgQEAgcHVibGljOgogCiAgICAgICAgIGluaXRDYWxsRnJhbWUoKTsKIAotI2lmZGVmIEpJ
VF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNf
RVhQUkVTU0lPTlMpCiAgICAgICAgIGlmIChtX2NvbnRhaW5zTmVzdGVkU3VicGF0dGVybnMpCiAg
ICAgICAgICAgICBpbml0UGFyZW5Db250ZXh0RnJlZUxpc3QoKTsKICNlbmRpZgpAQCAtMzUwOCw3
ICszNTEzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGVjb2RlU3Vycm9nYXRlUGFpcnM7CiAg
ICAgYm9vbCBtX3VuaWNvZGVJZ25vcmVDYXNlOwogICAgIENhbm9uaWNhbE1vZGUgbV9jYW5vbmlj
YWxNb2RlOwotI2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlB
UlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgYm9vbCBtX2NvbnRhaW5zTmVzdGVk
U3VicGF0dGVybnM7CiAgICAgUGFyZW5Db250ZXh0U2l6ZXMgbV9wYXJlbkNvbnRleHRTaXplczsK
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAkocmV2aXNpb24g
MjI4NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw4ICszOCw3IEBACiAjZGVmaW5lIFlBUlJfQ0FMTAogI2VuZGlmCiAKLSNp
ZiBDUFUoQVJNNjQpIHx8IChDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykpCi0jZGVmaW5lIEpJ
VF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNf
RVhQUkVTU0lPTlMpCiBjb25zdGV4cHIgc2l6ZV90IHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA9
IDgxOTI7IC8vIFNwYWNlIGNhbGxlciBhbGxvY2F0ZXMgdG8gc2F2ZSBuZXN0ZWQgcGFyZW50aGVz
aXMgY29udGV4dAogI2VuZGlmCiAKQEAgLTYxLDcgKzYwLDcgQEAgZW51bSBjbGFzcyBKSVRGYWls
dXJlUmVhc29uIDogdWludDhfdCB7CiAKIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogI2lmIENQVShY
ODZfNjQpIHx8IENQVShBUk02NCkKLSNpZmRlZiBKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUwor
I2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgIHR5cGVkZWYg
TWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZTgpKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIHZvaWQqIGZyZWVQYXJlbkNvbnRl
eHQsIHVuc2lnbmVkIHBhcmVuQ29udGV4dFNpemUpIFlBUlJfQ0FMTDsKICAgICB0eXBlZGVmIE1h
dGNoUmVzdWx0ICgqWWFyckpJVENvZGUxNikoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgdm9pZCogZnJlZVBhcmVuQ29udGV4
dCwgdW5zaWduZWQgcGFyZW5Db250ZXh0U2l6ZSkgWUFSUl9DQUxMOwogICAgIHR5cGVkZWYgTWF0
Y2hSZXN1bHQgKCpZYXJySklUQ29kZU1hdGNoT25seTgpKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCosIHZvaWQqIGZyZWVQYXJlbkNvbnRl
eHQsIHVuc2lnbmVkIHBhcmVuQ29udGV4dFNpemUpIFlBUlJfQ0FMTDsKQEAgLTk1LDcgKzk0LDEy
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBtYXRjaE9ubHkpIHsgbV9tYXRjaE9ubHk4ID0gbWF0Y2hPbmx5OyB9CiAgICAgdm9p
ZCBzZXQxNkJpdENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1hdGNoT25seSkg
eyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5OyB9CiAKLSNpZmRlZiBKSVRfQUxMX1BBUkVOU19F
WFBSRVNTSU9OUworI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQor
ICAgIGJvb2wgdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkgeyByZXR1cm4gbV91c2VzUGF0dGVy
bkNvbnRleHRCdWZmZXI7IH0KKyAgICB2b2lkIHNldFVzZXNQYXRlcm5Db250ZXh0QnVmZmVyKCkg
eyBtX3VzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlciA9IHRydWU7IH0KKyNlbmRpZgorCisjaWYgRU5B
QkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgTWF0Y2hSZXN1bHQgZXhl
Y3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IGludCogb3V0cHV0LCB2b2lkKiBmcmVlUGFyZW5Db250ZXh0LCB1bnNpZ25lZCBwYXJlbkNvbnRl
eHRTaXplKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhCaXRDb2RlKCkpOwpAQCAtMTk4LDYg
KzIwMiw5IEBAIHByaXZhdGU6CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fcmVmMTY7CiAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fbWF0Y2hPbmx5ODsKICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbV9tYXRjaE9ubHkxNjsKKyNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19F
WFBSRVNTSU9OUykKKyAgICBib29sIG1fdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyOworI2VuZGlm
CiAgICAgc3RkOjpvcHRpb25hbDxKSVRGYWlsdXJlUmVhc29uPiBtX2ZhaWx1cmVSZWFzb247CiB9
OwogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L0NoYW5nZUxvZwkocmV2aXNpb24gMjI4NDIzKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMi0xMyAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKDIyNTY5NSkgOiBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlOiBKU0M6
OlJlZ0V4cDo6bWF0Y2ggKyA2MzAgOjogc3RhY2sgb3ZlcmZsb3cKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjcwNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIHRoZSBzZXR0aW5nIG9mIEVOQUJM
RV9ZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TIHRvIFBsYXRmb3JtLmggc2luY2UgbW9y
ZSB0aGFuIGp1c3QgdGhlIFlBUlIKKyAgICAgICAgY29kZSBuZWVkcyB0byBrbm93IGlmIHRoYXQg
ZmVhdHVyZSBpcyBlbmFibGVkLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgt
MDItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtb3Jl
IHN1cHBvcnQgZm9yIHBvaW50ZXIgcHJlcGFyYXRpb25zLgpJbmRleDogU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZp
c2lvbiAyMjg0MjMpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05ODAsNiArOTgwLDEzIEBACiAjZGVmaW5lIEVOQUJMRV9ZQVJSX0pJVF9ERUJVRyAwCiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShZQVJSX0pJVCkKKyNpZiBDUFUoQVJNNjQpIHx8IChDUFUoWDg2
XzY0KSAmJiAhT1MoV0lORE9XUykpCisvKiBFbmFibGUgSklUJ2luZyBSZWd1bGFyIEV4cHJlc3Np
b25zIHRoYXQgaGF2ZSBuZXN0ZWQgcGFyZW50aGVzaXMuICovCisjZGVmaW5lIEVOQUJMRV9ZQVJS
X0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TIDEKKyNlbmRpZgorI2VuZGlmCisKIC8qIElmIGVp
dGhlciB0aGUgSklUIG9yIHRoZSBSZWdFeHAgSklUIGlzIGVuYWJsZWQsIHRoZW4gdGhlIEFzc2Vt
YmxlciBtdXN0IGJlCiAgICBlbmFibGVkIGFzIHdlbGw6ICovCiAjaWYgRU5BQkxFKEpJVCkgfHwg
RU5BQkxFKFlBUlJfSklUKQo=
</data>
<flag name="review"
          id="352587"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333813</attachid>
            <date>2018-02-14 10:27:49 -0800</date>
            <delta_ts>2018-02-14 12:37:15 -0800</delta_ts>
            <desc>Patch updated after reviewer&apos;s comments</desc>
            <filename>182705-2.patch</filename>
            <type>text/plain</type>
            <size>17625</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI4NDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE4LTAyLTE0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04oMjI1Njk1KSA6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBj
b20uYXBwbGUuSmF2YVNjcmlwdENvcmU6IEpTQzo6UmVnRXhwOjptYXRjaCArIDYzMCA6OiBzdGFj
ayBvdmVyZmxvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgyNzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZWQgdGhlIHBhdHRlcm4gY29udGV4dCBidWZmZXIgdXNlZCBieSBZQVJSIEpJVCdlZCBj
b2RlIGZyb20gYSBzdGFjayBsb2NhbCB0byBhIGxhemlseSBhbGxvY2F0ZWQKKyAgICAgICAgYnVm
ZmVyIG9uIHRoZSBWTS4gIEV4cG9zZWQgd2hlbiB0aGUgYnVmZmVyIGlzIG5lZWRlZCB0byByZWR1
Y2UgbGlrZWxpaG9vZCB0aGF0IHdlJ2QgYWxsb2NhdGVkIGl0LgorICAgICAgICBHdWFyZGVkIHVz
ZSBvZiB0aGUgYnVmZmVyIHdpdGggYSBsb2NrIHNpbmNlIHRoZSBERkcgY29tcGlsZXIgbWF5IGNh
bGwgaW50byBZQVJSIEpJVCdlZCBjb2RlIG9uIGEKKyAgICAgICAgY29tcGlsYXRpb24gdGhyZWFk
LgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJl
Z0V4cDo6bWF0Y2hJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29u
dGV4QnVmZmVyKToKKyAgICAgICAgKEpTQzo6Vk06OnJlbGVhc2VSZWdFeHBQYXR0ZXJuQ29udGV4
QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogeWFyci9ZYXJySklU
LmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpiYWNrdHJhY2spOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpvcENvbXBpbGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4pOgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZUVudGVyKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGVSZXR1cm4pOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpZYXJyR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyckdlbmVyYXRvcjo6Y29tcGlsZSk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnVzZXNQYXR0ZXJuQ29udGV4dEJ1
ZmZlcik6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldFVzZXNQYXRlcm5D
b250ZXh0QnVmZmVyKToKKwogMjAxOC0wMi0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBwdXREaXJlY3RJbmRleFNsb3dPckJleW9uZFZlY3Rvckxlbmd0aCBu
ZWVkcyB0byBjb252ZXJ0IHRvIGRpY3Rpb25hcnkgaW5kZXhpbmcgbW9kZSBhbHdheXMgaWYgYXR0
cmlidXRlcyBhcmUgcHJlc2VudApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cElubGluZXMuaAkocmV2aXNpb24gMjI4NDY2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4
NSwzOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVnRXhwOjpoYXNDb2RlRm9yKFlhCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lP
TlMpCitjbGFzcyBQYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRlciB7CitwdWJsaWM6CisgICAgUGF0
dGVybkNvbnRleHRCdWZmZXJIb2xkZXIoVk0mIHZtLCBib29sIG5lZWRCdWZmZXIpCisgICAgICAg
IDogbV92bSh2bSkKKyAgICAgICAgLCBtX25lZWRCdWZmZXIobmVlZEJ1ZmZlcikKKyAgICB7Cisg
ICAgICAgIGlmIChtX25lZWRCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gbV92bS5h
Y3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpOworICAgICAgICAgICAgbV9zaXplID0g
Vk06OnBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fc2l6ZSA9IDA7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB+UGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIoKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fbmVlZEJ1ZmZlcikKKyAgICAgICAgICAgIG1fdm0ucmVsZWFzZVJlZ0V4cFBh
dHRlcm5Db250ZXhCdWZmZXIoKTsKKyAgICB9CisKKyAgICB2b2lkKiBidWZmZXIoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQorICAgIHVuc2lnbmVkIHNpemUoKSB7IHJldHVybiBtX3NpemU7IH0KKwor
cHJpdmF0ZToKKyAgICBWTSYgbV92bTsKKyAgICBib29sIG1fbmVlZEJ1ZmZlcjsKKyAgICB2b2lk
KiBtX2J1ZmZlcjsKKyAgICB1bnNpZ25lZCBtX3NpemU7Cit9OworI2VuZGlmCisKIEFMV0FZU19J
TkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJD
aGFyU2l6ZSBjaGFyU2l6ZSkKIHsKICAgICBpZiAoaGFzQ29kZUZvcihjaGFyU2l6ZSkpCkBAIC0x
MTAsMTggKzE0MywyMyBAQCBBTFdBWVNfSU5MSU5FIGludCBSZWdFeHA6Om1hdGNoSW5saW5lKFZN
CiAKICAgICBpbnQgcmVzdWx0OwogI2lmIEVOQUJMRShZQVJSX0pJVCkKLSNpZmRlZiBKSVRfQUxM
X1BBUkVOU19FWFBSRVNTSU9OUwotICAgIGNoYXIgcGF0dGVybkNvbnRleHRCdWZmZXJbcGF0dGVy
bkNvbnRleHRCdWZmZXJTaXplXTsKLSNkZWZpbmUgRVhUUkFfSklUX1BBUkFNUyAgLCBwYXR0ZXJu
Q29udGV4dEJ1ZmZlciwgcGF0dGVybkNvbnRleHRCdWZmZXJTaXplCisgICAgaWYgKG1fc3RhdGUg
PT0gSklUQ29kZSkgeworICAgICAgICB7CisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNf
RVhQUkVTU0lPTlMpCisgICAgICAgICAgICBQYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRlciBwYXR0
ZXJuQ29udGV4dEJ1ZmZlckhvbGRlcih2bSwgbV9yZWdFeHBKSVRDb2RlLnVzZXNQYXR0ZXJuQ29u
dGV4dEJ1ZmZlcigpKTsKKworI2RlZmluZSBFWFRSQV9KSVRfUEFSQU1TICAsIHBhdHRlcm5Db250
ZXh0QnVmZmVySG9sZGVyLmJ1ZmZlcigpLCBwYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRlci5zaXpl
KCkKICNlbHNlCiAjZGVmaW5lIEVYVFJBX0pJVF9QQVJBTVMKICNlbmRpZgogCi0gICAgaWYgKG1f
c3RhdGUgPT0gSklUQ29kZSkgewotICAgICAgICBpZiAocy5pczhCaXQoKSkKLSAgICAgICAgICAg
IHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS5leGVjdXRlKHMuY2hhcmFjdGVyczgoKSwgc3RhcnRP
ZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3RvciBFWFRSQV9KSVRfUEFSQU1TKS5zdGFydDsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1
dGUocy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3Rv
ciBFWFRSQV9KSVRfUEFSQU1TKS5zdGFydDsKKyAgICAgICAgICAgIGlmIChzLmlzOEJpdCgpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS5leGVjdXRlKHMuY2hhcmFj
dGVyczgoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3RvciBFWFRSQV9KSVRf
UEFSQU1TKS5zdGFydDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBtX3JlZ0V4cEpJVENvZGUuZXhlY3V0ZShzLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwg
cy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yIEVYVFJBX0pJVF9QQVJBTVMpLnN0YXJ0OworCisjdW5k
ZWYgRVhUUkFfSklUX1BBUkFNUworICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBZ
YXJyOjpKU1JlZ0V4cEpJVENvZGVGYWlsdXJlKSB7CiAgICAgICAgICAgICAvLyBKSVQnZWQgY29k
ZSBjb3VsZG4ndCBoYW5kbGUgZXhwcmVzc2lvbiwgc28gcHVudCBiYWNrIHRvIHRoZSBpbnRlcnBy
ZXRlci4KQEAgLTIxMywyMCArMjUxLDI1IEBAIEFMV0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQgUmVn
RXhwOjptYXRjaEkKICAgICBjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkodm0sIHMuaXM4Qml0
KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNik7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQp
Ci0jaWZkZWYgSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKLSAgICBjaGFyIHBhdHRlcm5Db250
ZXh0QnVmZmVyW3BhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZV07Ci0jZGVmaW5lIEVYVFJBX0pJVF9Q
QVJBTVMgICwgcGF0dGVybkNvbnRleHRCdWZmZXIsIHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZQor
ICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKworICAgIGlmIChtX3N0YXRlID09IEpJVENvZGUpIHsK
KyAgICAgICAgeworI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQor
ICAgICAgICAgICAgUGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIgcGF0dGVybkNvbnRleHRCdWZm
ZXJIb2xkZXIodm0sIG1fcmVnRXhwSklUQ29kZS51c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSk7
CisKKyNkZWZpbmUgRVhUUkFfSklUX1BBUkFNUyAgLCBwYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRl
ci5idWZmZXIoKSwgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIuc2l6ZSgpCiAjZWxzZQogI2Rl
ZmluZSBFWFRSQV9KSVRfUEFSQU1TCiAjZW5kaWYKIAotICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsK
KyAgICAgICAgICAgIGlmIChzLmlzOEJpdCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1f
cmVnRXhwSklUQ29kZS5leGVjdXRlKHMuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHMubGVu
Z3RoKCkgRVhUUkFfSklUX1BBUkFNUyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFyYWN0ZXJzMTYoKSwgc3Rh
cnRPZmZzZXQsIHMubGVuZ3RoKCkgRVhUUkFfSklUX1BBUkFNUyk7CiAKLSAgICBpZiAobV9zdGF0
ZSA9PSBKSVRDb2RlKSB7Ci0gICAgICAgIGlmIChzLmlzOEJpdCgpKQotICAgICAgICAgICAgcmVz
dWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNl
dCwgcy5sZW5ndGgoKSBFWFRSQV9KSVRfUEFSQU1TKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFyYWN0ZXJzMTYoKSwgc3Rh
cnRPZmZzZXQsIHMubGVuZ3RoKCkgRVhUUkFfSklUX1BBUkFNUyk7CisjdW5kZWYgRVhUUkFfSklU
X1BBUkFNUworICAgICAgICB9CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgICAg
IGlmICghcmVzdWx0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2
aXNpb24gMjI4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MzYsNiArNTM2LDEyIEBAIFZNOjp+Vk0oKQogCiAgICAgZGVsZXRl
IGNsaWVudERhdGE7CiAgICAgZGVsZXRlIG1fcmVnRXhwQ2FjaGU7CisKKyNpZiBFTkFCTEUoWUFS
Ul9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKKyAgICBpZiAobV9yZWdFeHBQYXR0ZXJuQ29u
dGV4QnVmZmVyKQorICAgICAgICBkZWxldGVbXSBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7
CisjZW5kaWYKKwogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBkZWxldGUgbV9ydFRy
YWNlTGlzdDsKICNlbmRpZgpAQCAtODk1LDYgKzkwMSwyNSBAQCB2b2lkIGxvZ1Nhbml0aXplU3Rh
Y2soVk0qIHZtKQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VY
UFJFU1NJT05TKQorY2hhciogVk06OmFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCkK
K3sKKyAgICBBU1NFUlQoIW1fcmVnRXhwUGF0dGVybkNvbnRleHRMb2NrLmlzTG9ja2VkKCkpOwor
CisgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4dExvY2subG9jaygpOworICAgIGlmICghbV9yZWdF
eHBQYXR0ZXJuQ29udGV4QnVmZmVyKQorICAgICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZm
ZXIgPSBuZXcgY2hhcltWTTo6cGF0dGVybkNvbnRleHRCdWZmZXJTaXplXTsKKyAgICByZXR1cm4g
bV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyOworfQorCit2b2lkIFZNOjpyZWxlYXNlUmVnRXhw
UGF0dGVybkNvbnRleEJ1ZmZlcigpCit7CisgICAgQVNTRVJUKG1fcmVnRXhwUGF0dGVybkNvbnRl
eHRMb2NrLmlzTG9ja2VkKCkpOworCisgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4dExvY2sudW5s
b2NrKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKIHZvaWQgVk06
OmFkZFJlZ0V4cFRvVHJhY2UoUmVnRXhwKiByZWdFeHApCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIyODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4NCw2ICs2ODQsMTUgQEAgcHVibGlj
OgogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOwogICAgIENvbmN1
cnJlbnRKU0xvY2sgbV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCisjaWYgRU5BQkxFKFlBUlJfSklU
X0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcGF0
dGVybkNvbnRleHRCdWZmZXJTaXplID0gODE5MjsgLy8gU3BhY2UgYWxsb2NhdGVkIHRvIHNhdmUg
bmVzdGVkIHBhcmVudGhlc2lzIGNvbnRleHQKKyAgICBjaGFyKiBtX3JlZ0V4cFBhdHRlcm5Db250
ZXhCdWZmZXIgeyBudWxscHRyIH07CisgICAgTG9jayBtX3JlZ0V4cFBhdHRlcm5Db250ZXh0TG9j
azsKKyAgICBjaGFyKiBhY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpOworICAgIHZv
aWQgcmVsZWFzZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsKKyNlbmRpZgorCisKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SGFzT3duUHJvcGVydHlDYWNoZT4gbV9oYXNPd25Qcm9wZXJ0eUNhY2hl
OwogICAgIEFMV0FZU19JTkxJTkUgSGFzT3duUHJvcGVydHlDYWNoZSogaGFzT3duUHJvcGVydHlD
YWNoZSgpIHsgcmV0dXJuIG1faGFzT3duUHJvcGVydHlDYWNoZS5nZXQoKTsgfQogICAgIEhhc093
blByb3BlcnR5Q2FjaGUqIGVuc3VyZUhhc093blByb3BlcnR5Q2FjaGUoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCShyZXZpc2lvbiAyMjg0NjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2
LDcgKzE1Niw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICNk
ZWZpbmUgSklUX1VOSUNPREVfRVhQUkVTU0lPTlMKICNlbmRpZgogCi0jaWZkZWYgSklUX0FMTF9Q
QVJFTlNfRVhQUkVTU0lPTlMKKyNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNT
SU9OUykKICAgICBzdHJ1Y3QgUGFyZW5Db250ZXh0U2l6ZXMgewogICAgICAgICBzaXplX3QgbV9u
dW1TdWJwYXR0ZXJuczsKICAgICAgICAgc2l6ZV90IG1fZnJhbWVTbG90czsKQEAgLTIxNzMsNyAr
MjE3Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVzZSBub2RlcyBzdXBwb3J0IGdlbmVyaWMgc3Vi
cGF0dGVybnMuCiAgICAgICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW46
IHsKLSNpZmRlZiBKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworI2lmIEVOQUJMRShZQVJSX0pJ
VF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0
ZXJtID0gb3AubV90ZXJtOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJh
bWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247CiAKQEAgLTIyMzAsMTMgKzIyMzAsMTMg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1YnBhdHRlcm5TdGFy
dChpbmRleCwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgICAg
ICB9Ci0jZWxzZSAvLyAhSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNlbHNlIC8vICFZQVJS
X0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0dGVybkVuZDogewot
I2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FM
TF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0g
PSBvcC5tX3Rlcm07CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxv
Y2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKIApAQCAtMjI4OCw3ICsyMjg4LDcgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAgICAgICAg
ICBZYXJyT3AmIGJlZ2luT3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwogICAgICAgICAgICAg
ICAgICAgICBiZWdpbk9wLm1fanVtcHMubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICB9Ci0j
ZWxzZSAvLyAhSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNlbHNlIC8vICFZQVJSX0pJVF9B
TExfUEFSRU5TX0VYUFJFU1NJT05TCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgzNyw3ICsy
ODM3LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAg
ICAgICAgLy8gb3V0IG9mIHRoZSBzdGFydCBvZiB0aGUgcGFyZW50aGVzZXMsIG9yIGp1bXAgYmFj
ayB0byB0aGUgZm9yd2FyZHMKICAgICAgICAgICAgIC8vIG1hdGNoaW5nIHN0YXJ0LCBkZXBlbmRp
bmcgb2Ygd2hldGhlciB0aGUgbWF0Y2ggaXMgR3JlZWR5IG9yIE5vbkdyZWVkeS4KICAgICAgICAg
ICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbjogewotI2lmZGVmIEpJVF9BTExf
UEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVT
U0lPTlMpCiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+
ZnJhbWVMb2NhdGlvbjsKIApAQCAtMjg4MCwxMyArMjg4MCwxMyBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAKICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJh
Y2tpbmdTdGF0ZS5mYWxsdGhyb3VnaCgpOwogICAgICAgICAgICAgICAgIH0KLSNlbHNlIC8vICFK
SVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworI2Vsc2UgLy8gIVlBUlJfSklUX0FMTF9QQVJFTlNf
RVhQUkVTU0lPTlMKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5kOiB7Ci0jaWZkZWYgSklUX0FMTF9Q
QVJFTlNfRVhQUkVTU0lPTlMKKyNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNT
SU9OUykKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKIAog
ICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZpeGVk
Q291bnQpIHsKQEAgLTI5MTcsNyArMjkxNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2
YXRlIE1hY3JvQXNzZW0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBtX2Jh
Y2t0cmFja2luZ1N0YXRlLmFwcGVuZChvcC5tX2p1bXBzKTsKLSNlbHNlIC8vICFKSVRfQUxMX1BB
UkVOU19FWFBSRVNTSU9OUworI2Vsc2UgLy8gIVlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lP
TlMKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlm
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDIyLDcgKzMwMjIsNyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICBwYXJlbnRoZXNlc0Jl
Z2luT3BDb2RlID0gT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOwogICAgICAg
ICAgICAgcGFyZW50aGVzZXNFbmRPcENvZGUgPSBPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1p
bmFsRW5kOwogICAgICAgICB9IGVsc2UgewotI2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJ
T05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgICAg
ICAgICAvLyBXZSBvbmx5IGhhbmRsZSBnZW5lcmljIHBhcmVudGhlc2lzIHdpdGggZ3JlZWR5IGNv
dW50cy4KICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckdy
ZWVkeSkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgc3VicGF0dGVybiBpcyBub3Qgc3VwcG9y
dGVkIGJ5IHRoZSBKSVQuCkBAIC0zMjczLDcgKzMyNzMsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgIGlmIChtX3BhdHRlcm4ubV9zYXZlSW5pdGlh
bFN0YXJ0VmFsdWUpCiAgICAgICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWJ4KTsKIAotI2lm
ZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9Q
QVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgICAgIGlmIChtX2NvbnRhaW5zTmVzdGVkU3VicGF0dGVy
bnMpIHsKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICAgICAgcHVzaChYODZSZWdpc3RlcnM6OmVk
aSk7CkBAIC0zMzYwLDcgKzMzNjAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBN
YWNyb0Fzc2VtCiAgICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjpyMTMpOwogICAgICAgICB9
CiAKLSNpZmRlZiBKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworI2lmIEVOQUJMRShZQVJSX0pJ
VF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICBpZiAobV9jb250YWluc05lc3RlZFN1
YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjpyMTIpOwogI2lmIE9T
KFdJTkRPV1MpCkBAIC0zNDAwLDcgKzM0MDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9kZWNv
ZGVTdXJyb2dhdGVQYWlycyhtX2NoYXJTaXplID09IENoYXIxNiAmJiBtX3BhdHRlcm4udW5pY29k
ZSgpKQogICAgICAgICAsIG1fdW5pY29kZUlnbm9yZUNhc2UobV9wYXR0ZXJuLnVuaWNvZGUoKSAm
JiBtX3BhdHRlcm4uaWdub3JlQ2FzZSgpKQogICAgICAgICAsIG1fY2Fub25pY2FsTW9kZShtX3Bh
dHRlcm4udW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6VW5pY29kZSA6IENhbm9uaWNhbE1vZGU6
OlVDUzIpCi0jaWZkZWYgSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNpZiBFTkFCTEUoWUFS
Ul9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICAgICAgLCBtX2NvbnRhaW5zTmVzdGVk
U3VicGF0dGVybnMoZmFsc2UpCiAgICAgICAgICwgbV9wYXJlbkNvbnRleHRTaXplcyhjb21waWxl
TW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMgPyBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyA6
IDAsIG1fcGF0dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZSkKICNlbmRpZgpAQCAtMzQxNiw2
ICszNDE2LDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoWUFS
Ul9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKKyAgICAgICAgaWYgKG1fY29udGFpbnNOZXN0
ZWRTdWJwYXR0ZXJucykKKyAgICAgICAgICAgIGppdE9iamVjdC5zZXRVc2VzUGF0ZXJuQ29udGV4
dEJ1ZmZlcigpOworI2VuZGlmCisKICAgICAgICAgLy8gV2UgbmVlZCB0byBjb21waWxlIGJlZm9y
ZSBnZW5lcmF0aW5nIGNvZGUgc2luY2Ugd2Ugc2V0IGZsYWdzIGJhc2VkIG9uIGNvbXBpbGF0aW9u
IHRoYXQKICAgICAgICAgLy8gYXJlIHVzZWQgZHVyaW5nIGdlbmVyYXRpb24uCiAgICAgICAgIG9w
Q29tcGlsZUJvZHkobV9wYXR0ZXJuLm1fYm9keSk7CkBAIC0zNDMxLDcgKzM0MzYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGdlbmVyYXRlRmFpbFJldHVybigpOwogICAgICAgICBoYXNJbnB1dC5saW5r
KHRoaXMpOwogCi0jaWZkZWYgSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyNpZiBFTkFCTEUo
WUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICAgICAgaWYgKG1fY29udGFpbnNO
ZXN0ZWRTdWJwYXR0ZXJucykKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKG1hdGNoTGlt
aXQpLCByZW1haW5pbmdNYXRjaENvdW50KTsKICNlbmRpZgpAQCAtMzQ0Niw3ICszNDUxLDcgQEAg
cHVibGljOgogCiAgICAgICAgIGluaXRDYWxsRnJhbWUoKTsKIAotI2lmZGVmIEpJVF9BTExfUEFS
RU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lP
TlMpCiAgICAgICAgIGlmIChtX2NvbnRhaW5zTmVzdGVkU3VicGF0dGVybnMpCiAgICAgICAgICAg
ICBpbml0UGFyZW5Db250ZXh0RnJlZUxpc3QoKTsKICNlbmRpZgpAQCAtMzUxMCw3ICszNTE1LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fZGVjb2RlU3Vycm9nYXRlUGFpcnM7CiAgICAgYm9vbCBt
X3VuaWNvZGVJZ25vcmVDYXNlOwogICAgIENhbm9uaWNhbE1vZGUgbV9jYW5vbmljYWxNb2RlOwot
I2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FM
TF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgYm9vbCBtX2NvbnRhaW5zTmVzdGVkU3VicGF0dGVy
bnM7CiAgICAgUGFyZW5Db250ZXh0U2l6ZXMgbV9wYXJlbkNvbnRleHRTaXplczsKICNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAkocmV2aXNpb24gMjI4NDY2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw4ICszOCw3IEBACiAjZGVmaW5lIFlBUlJfQ0FMTAogI2VuZGlmCiAKLSNpZiBDUFUoQVJN
NjQpIHx8IChDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykpCi0jZGVmaW5lIEpJVF9BTExfUEFS
RU5TX0VYUFJFU1NJT05TCisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lP
TlMpCiBjb25zdGV4cHIgc2l6ZV90IHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA9IDgxOTI7IC8v
IFNwYWNlIGNhbGxlciBhbGxvY2F0ZXMgdG8gc2F2ZSBuZXN0ZWQgcGFyZW50aGVzaXMgY29udGV4
dAogI2VuZGlmCiAKQEAgLTYxLDcgKzYwLDcgQEAgZW51bSBjbGFzcyBKSVRGYWlsdXJlUmVhc29u
IDogdWludDhfdCB7CiAKIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogI2lmIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkKLSNpZmRlZiBKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworI2lmIEVOQUJM
RShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgIHR5cGVkZWYgTWF0Y2hSZXN1
bHQgKCpZYXJySklUQ29kZTgpKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIHZvaWQqIGZyZWVQYXJlbkNvbnRleHQsIHVuc2ln
bmVkIHBhcmVuQ29udGV4dFNpemUpIFlBUlJfQ0FMTDsKICAgICB0eXBlZGVmIE1hdGNoUmVzdWx0
ICgqWWFyckpJVENvZGUxNikoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgdm9pZCogZnJlZVBhcmVuQ29udGV4dCwgdW5zaWdu
ZWQgcGFyZW5Db250ZXh0U2l6ZSkgWUFSUl9DQUxMOwogICAgIHR5cGVkZWYgTWF0Y2hSZXN1bHQg
KCpZYXJySklUQ29kZU1hdGNoT25seTgpKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCosIHZvaWQqIGZyZWVQYXJlbkNvbnRleHQsIHVuc2ln
bmVkIHBhcmVuQ29udGV4dFNpemUpIFlBUlJfQ0FMTDsKQEAgLTk1LDcgKzk0LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBt
YXRjaE9ubHkpIHsgbV9tYXRjaE9ubHk4ID0gbWF0Y2hPbmx5OyB9CiAgICAgdm9pZCBzZXQxNkJp
dENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1hdGNoT25seSkgeyBtX21hdGNo
T25seTE2ID0gbWF0Y2hPbmx5OyB9CiAKLSNpZmRlZiBKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9O
UworI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQorICAgIGJvb2wg
dXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkgeyByZXR1cm4gbV91c2VzUGF0dGVybkNvbnRleHRC
dWZmZXI7IH0KKyAgICB2b2lkIHNldFVzZXNQYXRlcm5Db250ZXh0QnVmZmVyKCkgeyBtX3VzZXNQ
YXR0ZXJuQ29udGV4dEJ1ZmZlciA9IHRydWU7IH0KKwogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUo
Y29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQq
IG91dHB1dCwgdm9pZCogZnJlZVBhcmVuQ29udGV4dCwgdW5zaWduZWQgcGFyZW5Db250ZXh0U2l6
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXM4Qml0Q29kZSgpKTsKQEAgLTE5OCw2ICsyMDAs
OSBAQCBwcml2YXRlOgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBtX3JlZjE2OwogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBtX21hdGNoT25seTg7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIG1fbWF0Y2hPbmx5MTY7CisjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVT
U0lPTlMpCisgICAgYm9vbCBtX3VzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcjsKKyNlbmRpZgogICAg
IHN0ZDo6b3B0aW9uYWw8SklURmFpbHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOwogfTsKIApJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIyODQ2NikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDItMTQgIE1pY2hhZWwgU2Fib2ZmICA8bXNh
Ym9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTigyMjU2OTUpIDogY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50IGF0IGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZTogSlNDOjpSZWdF
eHA6Om1hdGNoICsgNjMwIDo6IHN0YWNrIG92ZXJmbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgc2V0dGluZyBvZiBFTkFCTEVfWUFS
Ul9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUyB0byBQbGF0Zm9ybS5oIHNpbmNlIG1vcmUgdGhh
biBqdXN0IHRoZSBZQVJSCisgICAgICAgIGNvZGUgbmVlZHMgdG8ga25vdyBpZiB0aGF0IGZlYXR1
cmUgaXMgZW5hYmxlZC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE4LTAyLTEy
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbW9yZSBzdXBw
b3J0IGZvciBwb2ludGVyIHByZXBhcmF0aW9ucy4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24g
MjI4NDY2KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAt
OTgwLDYgKzk4MCwxMyBAQAogI2RlZmluZSBFTkFCTEVfWUFSUl9KSVRfREVCVUcgMAogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoWUFSUl9KSVQpCisjaWYgQ1BVKEFSTTY0KSB8fCAoQ1BVKFg4Nl82NCkg
JiYgIU9TKFdJTkRPV1MpKQorLyogRW5hYmxlIEpJVCdpbmcgUmVndWxhciBFeHByZXNzaW9ucyB0
aGF0IGhhdmUgbmVzdGVkIHBhcmVudGhlc2lzLiAqLworI2RlZmluZSBFTkFCTEVfWUFSUl9KSVRf
QUxMX1BBUkVOU19FWFBSRVNTSU9OUyAxCisjZW5kaWYKKyNlbmRpZgorCiAvKiBJZiBlaXRoZXIg
dGhlIEpJVCBvciB0aGUgUmVnRXhwIEpJVCBpcyBlbmFibGVkLCB0aGVuIHRoZSBBc3NlbWJsZXIg
bXVzdCBiZQogICAgZW5hYmxlZCBhcyB3ZWxsOiAqLwogI2lmIEVOQUJMRShKSVQpIHx8IEVOQUJM
RShZQVJSX0pJVCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>